Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
klapauciusk
Založen: 08. 08. 2007 Příspěvky: 76
|
Zaslal: 23. leden 2010, 20:00:11 Předmět: |
|
|
Eosie napsal: |
Nevím, jestlis to tu psal, ale jaký je počet instrukcí a temporaries obou variant shaderů? Na sedmičkovou řadu použij profil vp40. |
Přes CGC:
profil VP40: 313 instructions, 8 R-regs (http://nopaste.ceske-hry.cz/222869)
profil gp4vp: 268 instructions, 8 R-regs (http://nopaste.ceske-hry.cz/222868)
Přes GLSL:
profil VP40 : 196 instructions, 6 R-regs
profil gp4vp: 238 instructions, 7 R-regs |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 23. leden 2010, 20:25:54 Předmět: |
|
|
Nechápu to "přes CGC" a "přes GLSL". Myslel jsem, že to stejně píšeš v GLSL.
Pokud se počet temporaries (registrů) zvýší, může se snížit paralelismus na GPU, proto se obvykle shadery optimalizují pro co nejmenší počet temporaries. Větvení kódu je taky drahá operace, ale 2x zpomalení by se tam dít nemělo, i když uznávám, že chování GPU je někdy dost divné. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
klapauciusk
Založen: 08. 08. 2007 Příspěvky: 76
|
Zaslal: 23. leden 2010, 22:26:01 Předmět: |
|
|
Eosie napsal: |
Nechápu to "přes CGC" a "přes GLSL". Myslel jsem, že to stejně píšeš v GLSL. |
jj, píšu to v GLSL. Pro jistotu jsem ale uvedl všechny informace, které jsem zatím zjistil. Tj. jednou je GLSL shader zkompilován klasicky, na dvou různých grafikách (GLSL), a jednou přes cgc. Docela mne překvapilo, že GLSL optimalizuje lépe, ale možná tam cgc má další nastavení.
Eosie napsal: |
Pokud se počet temporaries (registrů) zvýší, může se snížit paralelismus na GPU, proto se obvykle shadery optimalizují pro co nejmenší počet temporaries. Větvení kódu je taky drahá operace, ale 2x zpomalení by se tam dít nemělo, i když uznávám, že chování GPU je někdy dost divné. |
Optimalizace se provádí jen na úrovni assembleru, nebo lze počet registrů ovlivnit i při psaní shaderu samotného?
Neví někdo, zda lze GLSL psát přímo v assembleru? Přesněji, jak se pak posílá na GPU? Předpokládám, že klasickou cestou to nebude. |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 24. leden 2010, 00:26:06 Předmět: |
|
|
GLSL je v OpenGL oficiálně jediný způsob psaní shaderů, assembler tam standardizovaný není. Pak jsou vendor-specific extenze na assemblery, a pak je zastaralý arbvp1/arbfp1 assembler taky přes extenze.
Počet registrů závisí od toho, jak napíšeš shader, ale neřekl bych, že tady něco sám zmůžeš. Driver provádí optimalizace všude od GLSL shaderu až po strojový kód a sám moc dobře ví, co je pro hardware nejlepší (občas ale dělá blbosti). _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 24. leden 2010, 10:13:15 Předmět: |
|
|
klapauciusk: jedna hloupá otázka, která tě doufám neurazí!
Když používáš ten složitější shader, přestože to do onoho IFu nevleze, nepřipravuje tvůj program nějaká data navíc? _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
 |
klapauciusk
Založen: 08. 08. 2007 Příspěvky: 76
|
Zaslal: 24. leden 2010, 15:09:13 Předmět: |
|
|
]semo[ napsal: |
Když používáš ten složitější shader, přestože to do onoho IFu nevleze, nepřipravuje tvůj program nějaká data navíc? |
To, že APPLY_SKINNING je nastaven na 0 a do shaderu se nevleze, mám teď z experimentálních důvodů. Nechápal jsem, proč je shader tak pomalí a tak jsem si v aplikaci skinning přes tuto uniform proměnnou vypnul. Důsledkem bylo zjištění, že problém není ve výpočetní složitosti, ale někde jinde... A proto vznikl celý tento thread, abych se pokusil zjistit v čem je tedy problém. |
|
Návrat nahoru |
|
 |
|