- AMD GPU-k jövője - amit tudni vélünk
- Projektor topic
- Hobby elektronika
- Milyen notebookot vegyek?
- Mikrokontrollerek Arduino környezetben (programozás, építés, tippek)
- Milyen videókártyát?
- Intel Core Ultra 3, Core Ultra 5, Ultra 7, Ultra 9 "Arrow Lake" LGA 1851
- Apple notebookok
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Nvidia GPU-k jövője - amit tudni vélünk
Új hozzászólás Aktív témák
-
pzg
tag
válasz #88750080 #13 üzenetére
Az übershader nem a sok lefordított variáns elkerülésére van, hanem hogy a sok variánst mégis egyetlen forráskódban megírt fájlban lehessen kezelni/áttekinteni. Tehát nem futáskori if() {...} else {...} elágazóblokkokkal van tele, hanem fordításkori #ifdef-#else-#endif-ekkel. Ezáltal ha a programozók használnak mondjuk tizenötfajta #define címkét egy übershaderben, akkor a játék indulásakor le lehet ennek a 15-nek mindenfajta kombinációjára fordíttatni a géppel egy-egy shadert, és a játék minden helyzetben meg tudja hívni a még éppen "legrövidebbet és leggyorsabbat". Mégis forráskód szinten csak egy közös überváltozat létezik.
Úgy kell elképzelni, hogy mondjuk valakinek van A, B és C változója, és kell neki egy program (shader), ami kiszámolja A*B*C értékét. De mivel a hardvere lassú, ezért ha előre tudja, hogy most éppen B=1, akkor érdemes egy olyan programot futtatnia, ami csak A*C értékét számolja ki. Ezért, hogy ne kelljen hétfajta programot írnia, ezt így írja meg:
float ret = 1;
#ifdef A
ret = ret * a;
#endif
#ifdef B
ret = ret * b;
#endif
#ifdef C
ret = ret * c;
#endif
return ret;És így egy ilyen übershaderből tud hétféle shadert fordítani.
Új hozzászólás Aktív témák
- Fair Áron / NVIDIA GeForce Videókártya Felvásárlás / ORSZÁGOSAN
- BONTATLAN! ASUS ProArt GeForce RTX 4070 OC 12GB GDDR6X Videokártya! BeszámítOK
- AKCIÓ! ZOTAC Trinity RTX 3070 Ti OC 8GB videokártya garanciával hibátlan működéssel
- EVGA Nvidia GTX 1080 Ti FTW3 ICX 11Gb
- Pcie 5.0 ATX 3.0 12Pin - 16Pin Moduláris Kábelek És Adapterek 12VHPWR 12v2x6 Egyedi Harisnya Nvidia
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest