Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 6. listopad 2012, 16:18:02 Předmět: Gpu skinning :: GLSL |
|
|
Zdravím,
dneska jsem se hecnul a naimplementoval GPU skinning do enginu. Napsal jsem to nejjednodušeji, jak jen to šlo, ale přes všechny mé pokusy se skinning ve vertex shaderu počítá pomaleji než na CPU. Zajímavé je, že když jsem z vertex shaderu vyhodil všechny výpočty (a vypnul počítání animací), tak se statický model (resp. kupa cca. 50 modelů) renderoval stejně pomaleji, než přes fixní pipelinu. Vůbec to nechápu...
Je možné, že by ta shitská GMA X3100 měla tak podělané drivery, že by i zpracování vertexů ve vertex shaderu bylo tak pomalé? Nemáte někdo naimplementované CPU a GPU skinning v OpenGL, abych to mohl na svém PC zkusit? Docela by mě zajímalo, jestli dělám někde chybu já a nebo Intel...
Jinak takhle vypadá Vertex Shader:
kód: |
uniform mat4 skinMatrices[50];
void main(void)
{
vec4 pos = vec4(0.0, 0.0, 0.0, 0.0);
vec4 vData = gl_MultiTexCoord1;
for(int i=0; i < 4; i++)
{
int index = int(vData[i]);"
float weight = fract(vData[i]);
pos += (skinMatrices[index] * gl_Vertex) * weight;
}
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_FrontColor = gl_Color;
gl_BackColor = gl_Color;
gl_Position = gl_ModelViewProjectionMatrix*pos;
} |
_________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 6. listopad 2012, 17:58:49 Předmět: |
|
|
Dělají to drivery grafiky...teď jsme to vyzkoušeli s Pokym na jeho notesu... GPU skinning byl 9x rychlejší pro 50 postaviček Zoji než CPU skinning.
Ach jo...jdu si koupit novej notes.  _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 6. listopad 2012, 20:38:26 Předmět: |
|
|
Co čekáš, GMA X3100 byl první Intel, co měl HW T&L a VS. A v těch hrách to byla bomba, běžely nejmíň 2x rychlejc na stejné grafice, než s původními drivery, co jely vertexy přes CPU (výkonem proto byla původně dokonce jen minimálně rychlejší než předchozí GMA 950). BTW kdyby sis novej notes koupil opět s Intelem (HD 3000, nebo lépe současný HD 4000), tak už tyhle problémy nemáš . _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 7. listopad 2012, 10:08:43 Předmět: |
|
|
Trochu oftopic, ale musím :-)
Pro tvoje účely by bylo lepší zůstat u toho CPU. Udělat pro vertex buffer double buffering a animovat to bez blokování renderingu. Nejlépe na jiným jádře (v jiném vlákně). A bude to zdaleka nejrychlejší - když tam běhá jen Zoja a pár věcí okolo :-). Vím, že nemáš rád cizí knihovny, proto na vlákna doporučuju http://tinythreadpp.bitsnbites.eu/ (je to jen jedno krátký .cpp a dvě .hčka, takže to velmi snadno prozkoumáš).
...tohle co píšu, máš hotový za půl dne :-) A oprostíš se od sraní s shaderama (přidává kombinace, když chceš model s nějakým speciálním shaderem, ...někde něco nejede, ... apod.) _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 7. listopad 2012, 10:36:11 Předmět: |
|
|
Tak v enginu jsem nechal podporu jak CPU tak GPU skinningu, jen stačí změnit flag, jde to změnit i za běhu.
Pokud jde o vlákna, tak ty v enginu mám rovněž implementované, takže bych nemusel ani do těch TinyThread++.
Pro Sollertii bude CPU skinning v pohodě stačit, neměla by nastat situace, že na scéně bude více jak 10 postav a to ještě pořád jede poměrně rychle.
Ale třeba kdybych chtěl ze své semestrálky na GRG (grafické rozhraní a GPU) udělat nějakou "větší" hru (strategie ~ hodně jednotek), tak už by se GPU skinning vyplatil.
Nicméně jsem rád, že se nakonec ukázalo, že jsem to naimplementoval dobře a že chyba je v Intel-kartě. Navíc mě to donutilo implementovat něco, co už jsem docela dlouho implementovat chtěl. _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 7. listopad 2012, 11:48:53 Předmět: |
|
|
V Intel kartě je vždycky chyba :-). _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 7. listopad 2012, 13:41:38 Předmět: |
|
|
citace: |
Pro Sollertii bude CPU skinning v pohodě stačit, neměla by nastat situace, že na scéně bude více jak 10 postav a to ještě pořád jede poměrně rychle. |
No že to jede pro 10 postav na CPU je fajn... ale vem si, že to CPU nic jiného náročného nedělá... takže to tak fajn není (nebo tam máš puštěno dalších x věco na pozadí ?) _________________ Perry.cz |
|
Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 7. listopad 2012, 13:44:53 Předmět: |
|
|
Ten, kdo bude mít puštěnej render v maxku a k tomu bude chtít hrát hru, by s drobným poškubáváním měl počítat :-D. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 7. listopad 2012, 14:04:30 Předmět: |
|
|
Jenže Ti co budou chtít hrát se spuštěným maxkem, jistě mají lepší grafickou kartu a proto si v konfiguráku zvolí raději HW skinning...  _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 7. listopad 2012, 14:25:18 Předmět: |
|
|
Myslel jsem třeba počítání AI, dekomprese zvuku apod  _________________ Perry.cz |
|
Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 7. listopad 2012, 15:23:47 Předmět: |
|
|
Jasně, ale většinou máš aspoň ty dvě jádra a v případě potíží s výkonem něco hodíš do jinýho threadu. Ani nemusíš bejt kouzelník. Ale nemyslím, že by menší hra, psaná v C++, vytížila CPU tak moc, aby bylo nutné přistupovat k nějakým větším optimalizacím.
Naproti tomu GPU skinning přináší další možné kombinace do shader systému, což můžu komplikovat produkční pipeline. Pokud teda nepoužíváš uber-shader. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 7. listopad 2012, 15:53:49 Předmět: |
|
|
Ten CPU toho utáhne dost. Možná si pamatujete doby, kdy CPU počítal nejen všechno o vertexech, ale dokonce i filloval pixely . U nenáročných her, které už teď dobře běží na stařičké GMA X3100, na které Voda vyvíjí, nemá smysl tyhle věci řešit (a místo toho se soustředit na obsah hry). _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 7. listopad 2012, 16:09:08 Předmět: |
|
|
GPU skinning jsem začal řešit hlavně kvůli semestrálce do školy, no a když už, tak jsem to dodal do Airy. Na Sollertii teď nemám moc čas, spousta práce do školy, spousta jiných milých aktivit mimo školu...ale už se opět chystám si k Sollertii sednout. Takže jsem tak nějak rád, že jsem alespoň přidal těch několik věcí do enginu, a udělal několik oprav... _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
|