.[ ČeskéHry.cz ].
OpenGL Bindless Graphics + pointery v shaderu

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Novinky / Zprávičky
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Marek



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

PříspěvekZaslal: 1. květen 2009, 17:42:52    Předmět: OpenGL Bindless Graphics + pointery v shaderu Odpovědět s citátem

NVIDIA přišla se dvěma rozšířeními do OpenGL, které jsou svým způsobem revoluční. Mám pocit, že tohle je jedna z nejzásadnějších novinek, jaká se kdy v 3D API objevila a není ani v DX11. Jména extenzí jsou docela matoucí a jejich specifikace taky, takže je raději popíšu.

První extenze GL_NV_vertex_buffer_unified_memory upravuje API pro renderování modelů s vertex buffery. Z objektu Vertex Buffer jde nyní získat pointer přímo do VRAM. Paměť na GPU z něj není přímo přistupná tzn. nemapuje se do virtuální paměti, ale dá se přímo vložit do všech funkcí pro rendering vertexů. Jednoduše řečeno, namísto ID bufferů se používají GPU pointery a je možno k nim přičíst libovolný offset. Kvůli přimějšímu přístupu k paměti ve VRAM je třeba si dát pozor, zda je načtený buffer residentní (glMakeBufferResidentNV), aby jej vůbec bylo možno použít, protože driver kvůli efektivitě nedělá žádné kontroly ohledně validnosti GPU pointeru vkládaného do funkcí a zároveň neví, které buffery se použivají tzn. které je třeba držet ve VRAM. Lidé z NVIDIA tvrdí, že jejich interní testy dávají 7,5x navýšení rychlosti v aplikacích s vysokým počtem renderovaných modelů (batch count), kde je limitujícím faktorem CPU.

Buffery v OpenGL se dají použít i pro jiné účely. Toho využívá druhá extenze GL_NV_shader_buffer_load, která přidavá pointery do OpenGL Shading Language. V shaderu se deklaruje pointer a k němu je možno přiřadit libovolný buffer (zejména jeho GPU pointer pro menší režii v driveru). Nejsou dána žádná omezení na to, jak se mohou pointery v shaderech používat, což otevírá možnost pro využití složitějších datových struktur (spojové seznamy, stromy...)

Viz:
Bindless Graphics Tutorial
Official Bindless Graphics feedback thread
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Vilem Otte



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

PříspěvekZaslal: 4. květen 2009, 20:38:57    Předmět: Odpovědět s citátem

Mno, tak toto už je sakra velký ... Laughing

Otázkou je, zda pro tak komplexní modely - pro které je CPU skutečným limitujícím faktorem je rozumné používat rasterizaci, přece jenom náročnost renderingu trojúhelníku v rasterizaci roste lineárně (tj. na x trojúhelníků je potřeba y výkonu, na 2x trojúhelníků je potřeba 2y výkonu), ovšem u raytracingu toto roste logaritmicky (a také VRAM není tak velká jako RAM) ... takže pro řekněme 500 milionů trojúhelníků už budu mnohonásobně s raytracingem rychlejší než rasterizace (i přesto že je hardwarová).

Na to druhé rozšíření opravdu WOW - teď bych snad jen doporučil Intel corp. co nejrychleji vydat Larabee ... jinak na něj ani nebudu muset čekat a vše napíšu na NVidiích Laughing

(a po nějakém měsíci práce zjistím že na CPU to mám mnohem rychleji a účinněji napsáno Laughing)
_________________
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
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Novinky / Zprávičky Č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