2017. november 23., csütörtök

Conservative depth output

  • (p)
Írta: Abu85 | Utoljára frissítve: 2013-07-19 18:48

A conservative depth output a DirectX 11-es API egyik legérdekesebb újítása, hiszen lehetővé teszi a raszterizálás irányítását. Ennek köszönhetően a fejlesztő egy olyan pixel shadert írhat, ami manuálisan kiértékeli az adott képponthoz tartozó mélységértéket.

Az API két paramétert kínál erre. Az SV_DepthGreater arra szolgál, hogy a számítások legyenek elhagyva, ha a kinyert mélységérték nagyobb a mélységpufferben szereplő adatnál, míg az SV_DepthLessEqual akkor veti el a kalkulációt, ha a mélységérték kisebb vagy egyenlő a mélységpufferben tárolt információnál. Gyakorlatilag az eljárás alkalmazásával a GPU a felesleges számítások alól menti fel magát, mivel a conservative depth mellett végrehajtható egy irányított mélységteszt, ami ott vezet eredményre, ahol a hagyományos SV_Depth paraméter már nem képes meghatározni, hogy mely képpontok esetében érdemes elhagyni a további számításokat.

Egy conservative depth output demonstráció. Képminőségre nincs hatással, de nagyobb lesz a teljesítmény.
Egy conservative depth output demonstráció. Képminőségre nincs hatással, de nagyobb lesz a teljesítmény.

Az eljárás jó eredményeket tud felmutatni, ugyanis a mérések szerint a conservative depth alkalmazása – függően a jelenet komplexitásától – 5-20%-os teljesítménynövekedést eredményezhet a hagyományos feldolgozáshoz viszonyítva. A DirectX 11 már támogatja ezt a funkciót, sőt az implementáció úgy lett megoldva, hogy a régebbi DirectX 10-es és 10.1-es kártyák is profitáljanak belőle.

A conservative depth output azonban egy opcionálisan támogatható szolgáltatás, így ha az adott hardver a funkciót nem támogatja, akkor a grafikus meghajtó emulálhatja azt a korai mélységteszt (Early Z) letiltása mellett. Ilyenkor a program működőképes lesz és a végeredmény sem változik, de elmarad a sebességnövekedés.

Jelen pillanatban csak a DirectX 10, 10.1, 11 és 11.1 API-t kezelő Radeonok támogatják hardveresen a conservative depth outputot. A többi termék szoftveres emulációt használ rá.

Az OpenGL-en belül ez a funkció a GL_ARB_conservative_depth kiterjesztéssel érhető el, ami a GL_AMD_conservative_depth másolata.

Ha pontatlanságot találsz a cikkben, kérjük, írd meg a szerzőnek!
A bejegyzés utolsó frissítésének időpontja: 2013-07-19 18:48

Hi​rdetés​

H​i​rd​et​és

Copyright © 2000-2017 PROHARDVER Informatikai Kft.