.[ ČeskéHry.cz ].
Gpu skinning :: GLSL

 
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
VODA



Založen: 29. 07. 2007
Příspěvky: 1721
Bydliště: Plzeň

PříspěvekZaslal: 6. listopad 2012, 16:18:02    Předmět: Gpu skinning :: GLSL Odpovědět s citátem

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



Založen: 29. 07. 2007
Příspěvky: 1721
Bydliště: Plzeň

PříspěvekZaslal: 6. listopad 2012, 17:58:49    Předmět: Odpovědět s citátem

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. Laughing
_________________
Opravdovost se pojí s trýzní...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



Založen: 18. 09. 2007
Příspěvky: 1537
Bydliště: u Prahy

PříspěvekZaslal: 6. listopad 2012, 20:38:26    Předmět: Odpovědět s citátem

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áš Wink.
_________________
Award-winning game 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: 7. listopad 2012, 10:08:43    Předmět: Odpovědět s citátem

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



Založen: 29. 07. 2007
Příspěvky: 1721
Bydliště: Plzeň

PříspěvekZaslal: 7. listopad 2012, 10:36:11    Předmět: Odpovědět s citátem

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



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

PříspěvekZaslal: 7. listopad 2012, 11:48:53    Předmět: Odpovědět s citátem

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



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 7. listopad 2012, 13:41:38    Předmět: Odpovědět s citátem

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í Twisted Evil (nebo tam máš puštěno dalších x věco na pozadí ?)
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



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

PříspěvekZaslal: 7. listopad 2012, 13:44:53    Předmět: Odpovědět s citátem

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



Založen: 29. 07. 2007
Příspěvky: 1721
Bydliště: Plzeň

PříspěvekZaslal: 7. listopad 2012, 14:04:30    Předmět: Odpovědět s citátem

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... Laughing
_________________
Opravdovost se pojí s trýzní...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 7. listopad 2012, 14:25:18    Předmět: Odpovědět s citátem

Myslel jsem třeba počítání AI, dekomprese zvuku apod Wink
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



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

PříspěvekZaslal: 7. listopad 2012, 15:23:47    Předmět: Odpovědět s citátem

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



Založen: 18. 09. 2007
Příspěvky: 1537
Bydliště: u Prahy

PříspěvekZaslal: 7. listopad 2012, 15:53:49    Předmět: Odpovědět s citátem

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



Založen: 29. 07. 2007
Příspěvky: 1721
Bydliště: Plzeň

PříspěvekZaslal: 7. listopad 2012, 16:09:08    Předmět: Odpovědět s citátem

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
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
Strana 1 z 1

 
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