Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
michalferko
Založen: 29. 09. 2008 Příspěvky: 83
|
Zaslal: 12. březen 2013, 17:26:33 Předmět: OpenGL render do 2d texture array |
|
|
Zdravim, je mozne attachnut jeden TEXTURE_2D_ARRAY do depth attachmentu a jeden do color0 attachmentu a nasledne po geometry shader cloningu (a nastaveni gl_Layer = 0, 1, ...) simulovat viacero depth bufferov naraz. Tj. mam napriklad dve shadow mapy, a takto by sa dali jednym prechodom vyratat obe, ze by FBO malo dva separatne depth buffery a cloningom by sa vlastne simulovali dva rozne pohlady na scenu.
Ide to? Nieco take spominaju pri D3D10 hardveri tu: http://http.developer.nvidia.com/GPUGems3/gpugems3_ch10.html v casti DirectX 10-Level Acceleration. Ale dosial som myslel, ze v OpenGL nieco taketo nejde.
Napadlo mi simulovat to tak, ze rozseknem attachmenty na dve casti a na kazdej renderujem iny pohlad. Ten prvy sposob sa mi ale zda byt elegantnejsi.
Alebo pomocou GL4 a shader image load store, ale to je podla mna trochu overkill. A tiez zatial nemam GL4 hardver na testovanie.
Dik za odpovede. _________________ Moje minihry a ine projekty |
|
Návrat nahoru |
|
 |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 12. březen 2013, 17:40:03 Předmět: |
|
|
Nestudoval som to velmi v GL3+, ale v DX10+ to ide. Takto sa renderuje napriklad do cubemapy pripadne do dual paraboloidu. Cubemapa je uplne obyc texture array so 6 slicami. Aj color target aj depth target su takyto array.
V GS si vyberies, do ktoreho slicu z texture array zapises a mas (zapises na vystup GS do SV_RenderTargetArrayIndex hodnotu 0 az 5). V GL to musi ist uplne fpoho tiez, to je ten gl_Layer (pozor ale na to indexovanie, nejako som to presne nepochopil, nechcelo sa mi)  _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
 |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 12. březen 2013, 17:46:46 Předmět: |
|
|
Samozrejme sa da takto pocitat viacero shadowmap naraz, preco nie, ale to klonovanie pomocou GS ma svoje limity v zmysle, ze to nie je velmi rychle. Tiez bude velky tlak na interpolatory -- medzi GS a PS stage mozes preniest v interpolatoroch karty len urcite mnozstvo dat pre kazdy fragment (aj ked pri shadowmape to asi nebude mnoho). Kazdopadne uplne nekvalifikovane odhadujem, ze ak sa budes takto snazit renderovat napriklad 20 shadowmap naraz, tak benefit, ze mas jediny draw call a jediny krat sa prenesu data z input assemblera do vertex shaderu moze byt prevazeny tym, aky pomaly je ten GS. Chcelo by to benchmark  _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
 |
michalferko
Založen: 29. 09. 2008 Příspěvky: 83
|
Zaslal: 12. březen 2013, 18:54:20 Předmět: |
|
|
No mozno popri tom nejaky ten benchmark spravim.
Este som si vsimol ze v GL4 je mozno spravit viacero viewportov naraz a pouzit v GS gl_ViewportIndex. To by ulahcilo metodu s rozdelenim attachmentov na viacero casti, nemusel by som tolko programovat.
Ked budem mat nieco behajuce, tak sa mozno ozvem s nejakymi vysledkami. _________________ Moje minihry a ine projekty |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 12. březen 2013, 20:27:23 Předmět: |
|
|
ak som to dobre pochopil tak treba pripojit 3D alebo array texturu do FBO pomodou glFramebufferTexture() a nassledne pouzit gl_Layer. taktiez by to malo byt mozne spravit na GL3 HW kedze viac menej DX10==GL3. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
|