GL_HP_occlusion_test
Úgy látszik az occlusion query (hogy konkrétan mi is ez lásd lap alján) első implementálása nem az nVidia nevéhez, hanem a Hewlett-Packardhoz fűződik.
A registry-ben nem szerepel hozzá évszám (és ráadásul preliminary-ként van bejegyezve), de kb. a 2000 év körül jelenhetett meg (én még találkoztam vele).
A megjelenése óta (és a cikk írásának idejében) három leszármazottja készült el:
GL_NV_occlusion_query, GL_ARB_occlusion_query és GL_ARB_occlusion_query2.
Alapvetően eltér azonban a többiektől az alábbiakban:
- Csak azt képes megmondani, hogy a renderelt primitívek fragmentjei közül átment-e legalább egy a depth test-en vagy sem (vagyis egy boolean a végeredmény).
- A GPU egyszerre csak egy tesztet tud futtatni. Ahhoz, hogy egy következő tesztet lehessen kezdeni meg kell várni az előző mérés végét.
- Szinkronizálja a CPU-GPU kommunikációt.
Ezek után érthető miért nem terjedt el.
Megjegyzés:
A GL_ARB_occlusion_query2 extension annyiban hasonlít ehhez, hogy szintén annyit mond meg a renderelt primitívekről, hogy a mélység teszten átment-e belőlük legalább egy fragment. Valószínűleg az első átjutott fragment után leállítja a számolást vagyis nem kell megvárni a renderelés végét. Emiatt jelenleg ez a leggyorsabb hardveres occlusion query.
Röviden mi is az occlusion query.
A GPU képes számolni, hogy mennyi fragment megy át a depth test-en. Ezt jobbára láthatósági vizsgálathoz használják - ha akad legalább egy fragment ami átmegy a depth test-en akkor azt már láthatónak tekinthetjük.