.[ ČeskéHry.cz ].
OpenGL - blending - jak to vlastně funguje :)

 
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
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 4. říjen 2013, 17:12:06    Předmět: OpenGL - blending - jak to vlastně funguje :) Odpovědět s citátem

Dělám něco s blendingem a nemůžu nikde najít, jak vlastně funguje. Jasně, chápu jak funguje kombinování barev.

Modelová situace. Prázdná scéna. Mám model v modelu a kreslím ho na jeden draw-call. Chci vnější objekt průhledný abych viděl to uvnitř.
Jakým způsobem se potom rozhoduje, co je "venku" a "vevnitř" ? A co se má zakrýt čím. Bere to podle pořadí vrcholů směrem k pozorovateli ?
Průhlednosti na objektech řídím tím, že kazdý má jinou texturu. Vnejší má alpha kanál na 0.5 a vnitřní má např. 0.7. Tím pádem by mělo být při pohledu "zvenku" vidět obal, pak to vevnitř, ale zároveň i to "vzadu" (pokud je jasný, jak to myslím Smile)
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
mar



Založen: 16. 06. 2012
Příspěvky: 610

PříspěvekZaslal: 4. říjen 2013, 17:56:30    Předmět: Re: OpenGL - blending - jak to vlastně funguje :) Odpovědět s citátem

perry napsal:
Jakým způsobem se potom rozhoduje, co je "venku" a "vevnitř" ? A co se má zakrýt čím.

No rozhoduje, jestli máš zapnutý z-buffer test. Pokud ne, pak by se to mělo prostě vykreslit v pořadí, v jakém to pošleš.
EDIT: asi bych to vyřešil tak, že bych vypnul z-write.
nejdřív bych vykreslil vnější model s obráceným cullingem, pak vnitřní s obráceným a pak s normálním a přes to vnější s normálním (doufám, že to dává smysl Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 4. říjen 2013, 18:15:32    Předmět: Odpovědět s citátem

No, jasně.. pokud mám z-buffer a z-test tak je to jasné. Jenomže když kreslím na jeden zátah něco v něčem, tak nemám žádné info o hloubce a z-buffer je prázdný. Můžu to kreslit rozdělené, to jo... ale zajímalo mě, jak se to chová právě když to kreslím najednou. Protože co jsem zkoušel, tak mi ten výsledek přišel relativně OK... ale nevím proč a jak to v tomhle případě funguje.
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
mar



Založen: 16. 06. 2012
Příspěvky: 610

PříspěvekZaslal: 4. říjen 2013, 18:30:40    Předmět: Odpovědět s citátem

Aha myslel jsem, že to kreslíš ve dvou, tak to se omlouvám. No pokud ti to přijde ok, tak bych to asi neřešil. Určitě bych neřekl, že ti to driver a/nebo GPU bude sortovat Smile Prostě to tam nahrne jak to je a hotovo.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



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

PříspěvekZaslal: 4. říjen 2013, 19:02:43    Předmět: Odpovědět s citátem

Depth peeling
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
nou



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

PříspěvekZaslal: 4. říjen 2013, 19:41:52    Předmět: Odpovědět s citátem

poradie vykreslenia jednotlivych je myslim ze zachovane. teda ak kreslis jednotlive trojuholniky spravne zoradene tak by si mal dostat korektne vysledky.
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



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

PříspěvekZaslal: 4. říjen 2013, 21:19:25    Předmět: Odpovědět s citátem

Pro řazení bude nutné duplikovat funkcionalitu vertex shaderu pro CPU (ztransformovat vertexy před řazením). Spíš než kreslit po trojúhelníku raději setřídit indexy primitiv. Ale i tak to CPU část a opakovaný upload indexů v každém framu zpomalí. Navíc to ani nebude 100% spolehlivé (např. při prolínání trojúhelníků).

Stojí to za to?
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 4. říjen 2013, 21:21:34    Předmět: Odpovědět s citátem

Prolínání tam není.. je to čistě objekt v objektu. S protínáním by to samozřejmě bylo pak horší.
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 7. říjen 2013, 11:02:45    Předmět: Odpovědět s citátem

Můžeš to vykreslit jako jeden objekt, ale musíš zajistit, aby ty vnitřní trojúhleníky byly na začátku index bufferu. Můžeš ten objekt mít jako dva objekty, ale po načtení z nich udělat jeden (tak, aby trojúhleníky z vnitřího objektu byly na začátku).

A dost dobrá věc na kreslení blendovaných objektů je kreslit ve dvou průchodech; první s front-face cullingem, druhý s back-bace cullingem.
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 7. říjen 2013, 11:05:38    Předmět: Odpovědět s citátem

frca napsal:
Pro řazení bude nutné duplikovat funkcionalitu vertex shaderu pro CPU (ztransformovat vertexy před řazením).

Jen poznámka: neni nutný transformovat vertexy. Vhodnější je naopak transformovat pozici pozorovatele inverzní maticí modelu.
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



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

PříspěvekZaslal: 7. říjen 2013, 11:27:49    Předmět: Odpovědět s citátem

Možná jsem detailista, ale není pro řazení rozhodující vzdálenost od roviny pozorovatele (resp. near plane), a ne od pozice pozorovatele?
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 7. říjen 2013, 12:54:17    Předmět: Odpovědět s citátem

Jo, to je pravda. No ale i tak lze transformovat rovinu (pozice, normála). Ale možná to pak vyjde skoro nastejno :-)
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 7. říjen 2013, 19:14:04    Předmět: Odpovědět s citátem

No nakonec jsem to trochu poupravil a místo modelu v modelu budu kreslit jenom roviny.. jedna za druhou. Tím odpadne problém s back-face cullingem a i sort bude k dispozici.
(Možná někoho napadlo... je to určené na volume rendering, kde se sice používá běžně raycast, ale jeho výkon na mobilním zařízení je dost žalostný, takže chci zkusit něco jiného)
_________________
Perry.cz
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