.[ ČeskéHry.cz ].
+1 nepoužitá instrukce = fps poloviční
Jdi na stránku Předchozí  1, 2
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
klapauciusk



Založen: 08. 08. 2007
Příspěvky: 76

PříspěvekZaslal: 23. leden 2010, 20:00:11    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 23. leden 2010, 20:25:54    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
klapauciusk



Založen: 08. 08. 2007
Příspěvky: 76

PříspěvekZaslal: 23. leden 2010, 22:26:01    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 24. leden 2010, 00:26:06    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 24. leden 2010, 10:13:15    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
klapauciusk



Založen: 08. 08. 2007
Příspěvky: 76

PříspěvekZaslal: 24. leden 2010, 15:09:13    Předmět: Odpovědět s citátem

]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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2
Strana 2 z 2

 
Přejdi na:  
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