Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Khaj
Založen: 16. 01. 2008 Příspěvky: 49
|
Zaslal: 20. únor 2008, 19:37:25 Předmět: hlubiny HLSL |
|
|
Zdravim, potreboval bych vedet jestli lze nejak v HLSL pristupovat primo k registrum, rekneme jako k poli - nemyslim napsat pri deklaraci ":register(c0)" ale napsat c[0] nebo ekvivalenty (v,s,o) samozrejme se zachovanim pravidel (write only o[] atd...) |
|
Návrat nahoru |
|
|
Marek
Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 20. únor 2008, 21:58:22 Předmět: |
|
|
Na přepisovatelných registrech (lokální proměnné, parametry funkcí) to jde až od SM4.0 a bohužel to znemožní některé optimalizace v compileru. Konstatní registry se dají bez problému indexovat od SM2.0. Tohle se týká jenom těch konstrukcí, kde se nedá výraz array[index] převést na konkrétní registr už v době překladu.
Většinou to ale jde a pokud to nejde, je možné z parametru v shaderu udělat literal, což znamená, že pro každou použitou hodnotu proměnné se shader zkompiluje znovu tak, že se každý výskyt proměnné nahradí tou hodnotou. Jelikož možných hodnot je příliš mnoho a kompilace všech možností by trvala neúnosně dlouho, shader se pro konkrétní hodnotu proměnné zkompiluje jen tehdy, když se ta hodnota použije a pokud už jednou použita byla, použije se již dříve zkompilovaná verze. Aby ti to za běhu moc neškubalo, když se ti budou shadery překompilovávat, je lepší je na konci loadingu použít s konkrétníma hodnotama, tzn. něco vyrenderovat do off-screen bufferu, třeba trojúhelník. Tím vynutíš kompilaci pro tvoje hodnoty hned. Je možné, že některé knihovny to řeší pohodlněji. Mimochodem některé verze nVidia driveru na to jdou dost agresivně a dělají z parametrů v shaderu literal parametry automaticky, typicky jen pro hodnoty 0 a 1 (jelikož to jsou neutrální prvky pro operace + a *, je možno snížit počet instrukcí tím, že se daná operace nebude provádět vůbec, aniž by se změnil výsledek) a pro jiné hodnoty se použije původní - kompletní verze shaderu. _________________ AMD Open Source Graphics Driver Developer |
|
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