.[ ČeskéHry.cz ].
gui, filtering textur a shadery

 
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
micky



Založen: 28. 02. 2008
Příspěvky: 348
Bydliště: Plzeň, Praha

PříspěvekZaslal: 13. únor 2011, 23:38:18    Předmět: gui, filtering textur a shadery Odpovědět s citátem

Hola,

chtěl bych se zeptat, jak vyřešit problém s gui v directX. Objekty mapuju z jedné textury, která vypadá dejme tomu takhle (snad to wz.cz zobrazí):



Odtud mapuju všechna hejblátka a tlačítka. Funguje to krásně, akorát když zmenším/zvětším gui objekt, potřebuju nějak rozumně filtrovat texturu, aby to nebylo pixelované. A tady nastává kámen úrazu, protože filtering tahá k sobě okolní pixely mimo namapovanou oblast. Podobnou potíž jsem měl kdysi se skyboxem v OpenGL. Jde nějak oříznout filtering pomocí FFP pouze pro mapovanou oblast? Nebo budu muset dopsat shader?

Díky.
_________________
https://www.bluepulsar.cz/
https://twitter.com/11thDream_Game/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



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

PříspěvekZaslal: 13. únor 2011, 23:59:59    Předmět: Odpovědět s citátem

Nebylo by jednodušší si každý ten objekt dát do jedné textury?
_________________
www.FRANTICWARE.com
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: 14. únor 2011, 01:34:20    Předmět: Odpovědět s citátem

To se mu bude opakovat z druhé strany nebo jak si to nastaví, ale nic z toho to neřeší. Šlo by ale mít v textuře pixel tlustý okraj okolo Smile.
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 14. únor 2011, 02:13:49    Předmět: Odpovědět s citátem

Jde to řešit jenom shaderem. Nebo samostatnou texturou pro každý objekt. Nebo tlustým okrajem.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
if.then



Založen: 13. 04. 2008
Příspěvky: 579

PříspěvekZaslal: 14. únor 2011, 07:01:04    Předmět: Odpovědět s citátem

Jedno GUI to řeší tak, že specifikuješ rohy a okraje. Textura se pak na rozích zobrazí přirozeně, na okrajích se v jedné dimenzi roztáhne a uprostřed se úplně roztáhne. Taky by s tímhle postupem asi šlo udělat vícenásobné opakování textury.
_________________
For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 14. únor 2011, 07:53:24    Předmět: Odpovědět s citátem

No v shaderu můžeš udělat opakování libovolné části textury (=podtextura). Stačí k tomu věci jako frac a clamp na výpočet koordinátů a texture fetch s parciálníma derivacema na kontrolu filtrování zejména na okrajích podtextury.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mem



Založen: 28. 07. 2007
Příspěvky: 1959
Bydliště: Olomouc

PříspěvekZaslal: 14. únor 2011, 08:58:11    Předmět: Odpovědět s citátem

if.then napsal:
Jedno GUI to řeší tak, že specifikuješ rohy a okraje. Textura se pak na rozích zobrazí přirozeně, na okrajích se v jedné dimenzi roztáhne a uprostřed se úplně roztáhne.

Podobný systém nabízí i Android OS v drawable zvaném Nine-patch
http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch
Zní to docela rozumně, a v tomhle případě by tedy stačilo nakombinovat jednu texturu 1:1 pro okraje a vnitřek si pak roztáhnout s filtrováním, resp. opakovat
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 14. únor 2011, 10:01:05    Předmět: Odpovědět s citátem

Nebo je také možnost použít Summed are table filtrování Wink http://www.google.cz/search?client=opera&rls=en&q=summed+area+table+filtering&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest - princip je stejný jako u SAT variance shadow maps
_________________
Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
micky



Založen: 28. 02. 2008
Příspěvky: 348
Bydliště: Plzeň, Praha

PříspěvekZaslal: 15. únor 2011, 10:30:39    Předmět: Odpovědět s citátem

Díky za rady, pro začátek by to mohl vyřešit ten tlustej okraj. Smile Nebudu si to dělat zbytečně složitější, jde mi v podstatě jen o funkčnost a relativně slušný vzhled.

Panel s opakováním uvnitř už tam je. Wink
_________________
https://www.bluepulsar.cz/
https://twitter.com/11thDream_Game/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
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