Keresés

Új hozzászólás Aktív témák

  • Abu85

    HÁZIGAZDA

    válasz keIdor #40261 üzenetére

    Nem csak annak a kérdése. A trükk alapvetően a wave programozás. A mai PC-s játékok többsége még mindig az elavult shader programozást követi, nagyrészt a legacy kódok miatt, amit nyilván elfogadnak az API-k, de a mai hardverekre ezek nem optimálisak. Viszont ha mondjuk két explicit API-t célzol, akkor azt nyilván egy shader nyelvből akarod megtenni, jelen esetben a HLSL-ből, és ott például olyan kód kell, amit a SPIR-V-re elég jól le tud fordítani a Glslang. Ez nagyjából a shader modell 5.x-et foglalja magába. Ennél jobb shader modellre a Spiregg kellene, ami ugyan létezik, de még messze nem olyan jó, mint a Glslang, tehát egy nagyobb projektnél meggondolandó, hogy a wave programozást, mint lehetőséget választod, vagy azt, hogy legyen egy stabil rendszer a HLSL kódok D3BC-re és SPIR-V-re fordítására. Utóbbi kifizetődőbb, mert kevesebb lesz vele a szopás. Viszont a shader modell 5.x nem definiálja a wave-level operációkat, vagyis effektíve csak egy szálra levetített feldolgozási modellt kínál, amit ugyan megesznek a mai GPU-k, de explicit erőforrás-korlátozások kellenek ahhoz, hogy a feldolgozás párhuzamosítása garantálható legyen. Emiatt jött be a shader modell 6, aminél már erre nincs szükség, pusztán a wave terminológia garantálja, hogy a lane-ek egymás mellett futhatnak, és ehhez semmilyen direkt beavatkozás nem szükséges. Na most konzolon ez egyszerű, már a kezdeti évek óta így lehet ezeket a gépeket programozni. PC-n is lehetséges, de legalább HLSL shader nyelv 2016-os specifikációja kell, ami nem lenne nagy gond, ha a program csak DirectX 12-t támogatna, ugyanis csak annyi változna, hogy a bájtkód nem D3BC-ben, hanem DXIL-ben lenne szállítva. Viszont azzal, hogy a Vulkan is támogatott, már át kellene konvertálni a wave terminológiát is az újabb SPIR-V-re. Maga az API támogatja ezt, a subgroup utasítások néven fut a funkció, és a World War Z már használja is: [link]. Csak ehhez ők elég sok shadert direkten módosítottak, és valószínűleg az RDR2 annyira nagy projekt, hogy ez önmagában nem éri meg. De abszolút nem a konzol fixfunkciós hardvere dönt jelenleg, hanem az, hogy a Rockstar nem akar a Spireggre menni, így a PC-re szállított shaderek jóval lassabbak, mint a konzolon futók.

Új hozzászólás Aktív témák

Hirdetés