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
|
Zaslal: 1. květen 2009, 17:42:52 Předmět: OpenGL Bindless Graphics + pointery v shaderu |
|
|
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 |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 4. květen 2009, 20:38:57 Předmět: |
|
|
Mno, tak toto už je sakra velký ...
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
(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 ) _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
 |
|
|
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