.[ ČeskéHry.cz ].
D3D - Rozmazané textůry při změně projekce

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Crypton



Založen: 14. 05. 2009
Příspěvky: 306
Bydliště: The Void

PříspěvekZaslal: 18. květen 2009, 15:17:45    Předmět: D3D - Rozmazané textůry při změně projekce Odpovědět s citátem

Zdravím ve spolek,

Jak ted kutím tu 2D hru, tak jsem chtěl přidat funkci zoomovaní, a taky se mi nakonec povedlo změnou matice projekce.

Problém je v tom že když tu textůru přiblížím tak je dost pixelizovaná, vypadá jako vyříznutá z okna dosu Smile

Napadlo mě že to vyřeším tím že omezím rozsahu toho zoomu, stalo se, a výsledek je lepší, už to není tak kostičkované Razz

Takže mě napadlo použít nějaký filtr:
kód:
SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_ANISOTROPIC);
SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_ANISOTROPIC);


Výsledek vypadá opravdu dobře, jen mám problém s tím že ty textůry k sobě přestanou přiléhat když přiblížím projekci, tedy vidím rámeček kolem té textůry v barvě pozadí, a k tomu se ty texůry rozmažou.

Ty textůry vykresluji pomocí texturovaných obdelníků a odečítám hodnotu 0.5 od pozice každého vertexu.

Normálně s tím problém nemám, jen když zazoomuji.

Věděl by někde kde by mohla být chyba ?Smile Může být problém v textůrách ? Děkuji za případné odpovědi...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Ladis



Založen: 18. 09. 2007
Příspěvky: 1537
Bydliště: u Prahy

PříspěvekZaslal: 18. květen 2009, 15:50:01    Předmět: Odpovědět s citátem

Zkus poslat obrazek, at vidime, o co jde.
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Crypton



Založen: 14. 05. 2009
Příspěvky: 306
Bydliště: The Void

PříspěvekZaslal: 18. květen 2009, 16:04:10    Předmět: Odpovědět s citátem

Ted jsem zjistil že když típnu screenshot přímo z dx a né pomocí PrintScreen tak ta chyba jde vidět úplně....

Naposledy upravil Crypton dne 19. květen 2009, 01:09:04, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
ladik-BigBoss



Založen: 28. 07. 2007
Příspěvky: 162

PříspěvekZaslal: 18. květen 2009, 19:19:37    Předmět: Odpovědět s citátem

v OpenGL by pomohlo asi nastavit clamp, tak zkus neco podobneho v DX. taky mozna pomuze nedavat koordinaty textur uplne do kraje, ale trochu nechat mezeru. anizotropni filtr bere pro urceni pixelu mnozinu texelu a asi bere mimo texturu i nejaky jednobarevny ramecek...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
Khaj



Založen: 16. 01. 2008
Příspěvky: 49

PříspěvekZaslal: 18. květen 2009, 19:22:27    Předmět: Odpovědět s citátem

Pri zoomu nad pomer 1:1 (velikost okna:velikost textury) se samozrejme zacnou dopocitavat pixely mezi pruhlednejma a nepruhlednejma (na polopruhledny) a ty se pak zakonite zobrazi.
...
reseni: alfa test (cokoli polopruhlednyho odsmiknout) Pokud ale chces i pruhlednost, tak nevim.
Tyjo nevite nekdo, jak by se to resilo (bez ohavnyho pixlovaciho zvetsovaciho filtru), kdyz bych chtel vsechny stupne pruhlednosti a zaroven ostrost pri zoomu?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Crypton



Založen: 14. 05. 2009
Příspěvky: 306
Bydliště: The Void

PříspěvekZaslal: 18. květen 2009, 19:57:50    Předmět: Odpovědět s citátem

Já tam právě žádné mezi stupně průhlednosti nemám, bud je pixel úplně průhledný (0x00FFFFFF) a nebo je plně viditelný (0xFFFFFFFF).


Jinak jsem vyzkoušel všechny filtry, ani jeden tu chybu neodstanil, kromě toho D3DTEXF_POINT který je vlastně nastavený defaultně.


Jestli myslíš "Clamp Texture Address Mode", tak jsem to našel ale nevím jak to použít a zda to vůbec pomůže Smile
http://msdn.microsoft.com/en-us/library/bb204826(VS.85).aspx
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
quas4



Založen: 18. 10. 2007
Příspěvky: 199

PříspěvekZaslal: 18. květen 2009, 23:10:48    Předmět: Odpovědět s citátem

Khaj napsal:
Pri zoomu nad pomer 1:1 (velikost okna:velikost textury) se samozrejme zacnou dopocitavat pixely mezi pruhlednejma a nepruhlednejma (na polopruhledny) a ty se pak zakonite zobrazi.
...
reseni: alfa test (cokoli polopruhlednyho odsmiknout) Pokud ale chces i pruhlednost, tak nevim.
Tyjo nevite nekdo, jak by se to resilo (bez ohavnyho pixlovaciho zvetsovaciho filtru), kdyz bych chtel vsechny stupne pruhlednosti a zaroven ostrost pri zoomu?


zkus si precist tohle: http://www.valvesoftware.com/publications/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Crypton



Založen: 14. 05. 2009
Příspěvky: 306
Bydliště: The Void

PříspěvekZaslal: 19. květen 2009, 11:31:05    Předmět: Odpovědět s citátem

Opravdu by někdo nevěděl co s tím ?

Vypadá to totiž že tam totiž nějaké pixely chybí, myslím si že když se ta textůra prožene tím zvětšovacím filtrem (D3DSAMP_MAGFILTER) tak se na hranách kde je rozdíl alfa kanálu 255 (alfa jednoho pixelu je 0 a druhý pixel má 255), se udělá průměr, takže se tam nastaví alfa kanál na 128.

Protože používám jen dva stavy průhledností (0 a 255, nic mezi) tak jsem vypnul ten alfa test (D3DRS_ALPHATESTENABLE), no tak jsem ho zkusil ted zapnout a nastavil jsem tam aby se všechny pixely která mají nějakou alfu tak aby se smazaly, no a výsledek je stejný nic se nezměnilo.

Takže alfa testem se to nevyřeší....
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
johnnash



Založen: 30. 07. 2007
Příspěvky: 80

PříspěvekZaslal: 19. květen 2009, 12:01:59    Předmět: Odpovědět s citátem

Nemas nahodou vic textur v jedne velke? Pokud jo tak kazdy texturovaci koordinat zvetsi/zmensi o nejaky maly cislo(idealne si to prepocti aby to byl zhruba jeden pixel). Proste namapujes texturu o jeden pixel posunutou od okraju. Pripadne muzes zkusit zvetsit posunuti v zavislosti na filtru.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Crypton



Založen: 14. 05. 2009
Příspěvky: 306
Bydliště: The Void

PříspěvekZaslal: 19. květen 2009, 12:30:32    Předmět: Odpovědět s citátem

Právě že ten texture atlas nepoužívám, každá ta textůra je samostatná, nejsou v ní žádné další textůry.

No a jinak jsem zkoušel hýbat s tou textůrou, normálně jsem odečítal 0.5 od pozice každého vertexu, a zkoušel jsem z jiný hodnoty, zvětšit ten vertex apod. Ale nic nepomohlo....

Když jsem se kouknul ale na ten screenshot pořádně, všimnul jsem si že všechny textůry mají problém právě s tou průhledností, a to na přechodu 0-255, zkusím tam upravit nějakou textůru a udělat tam přechod né 0-255 ale 128-255... no a s tím rozmazáním nevím, kde by mohl být problém.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna