.[ ČeskéHry.cz ].
Loading shaderů na Androidu

 
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
perry



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

PříspěvekZaslal: 14. prosinec 2017, 20:50:28    Předmět: Loading shaderů na Androidu Odpovědět s citátem

Zase já a nějaký dotaz Smile

Mám apku na Android, kde při startu builduju hromadu shaderů. Problém je, že to trvá dlouho (kolem 5s). Ideální by bylo je prebuildnout ale to jsem nějak nezjistil jak, resp. extension pro GL to nepodporuje.

Mám shadery každý ve dvou verzích (low, high) kdy v závislosti na FPS se přepínají. A pak pro každý image effect mám jiný, takže celkem asi 20 * 2 shaderů jenom na efekty. Pak dalších asi 10 je pro různé geometrie. Mohl bych udělat jeden monstr shader a ifovat, ale to se mi taky nelíbí, protože na mobilech hlavně ty podmínky nejsou moc ideální.

Jak tohle vyřešit? Jde to vůbec nějak...

Samozřejmě při loadu si cachuji shadery, které jsou stejné, takže např. veretx shadery pro ty efecty mám jen dva a zbytek jsou pixel shadery. Nicméně linking se pak provádí pro všechny.
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
mar



Založen: 16. 06. 2012
Příspěvky: 608

PříspěvekZaslal: 15. prosinec 2017, 00:34:23    Předmět: Re: Loading shaderů na Androidu Odpovědět s citátem

- nešlo by použít něco jako glShaderBinary/glProgramBinary/glGetProgramBinary (a udělat si cache při prvním spuštění)?
- kolik trvá jeden největší shader? on demand by bylo moc pomalé?
- případně to rozdělit do víc framů po startu po jednom?
- nebo kompilovat jenom nejpoužívanější a zbytek on demand?
- teoreticky by driver mohl umět samotný překlad paralelizovat, nestačilo by provést kompilaci a linkování a až teprve potom pro všechny otestovat GL_LINK_STATUS?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



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

PříspěvekZaslal: 15. prosinec 2017, 09:10:40    Předmět: Odpovědět s citátem

On demand by šlo blbě.. já ty shadery skládám dynamicky při startu podle konfiguráku. Uloženou mám jen šablonu a vyměňuji určité funkce, zbytek je stejný.
Více framů nejde, už při prvním nevím který budu potřebovat.
Na zbytek se podívám, ale myslím, že předkompilaci to nepodporuje.
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Radis



Založen: 29. 03. 2014
Příspěvky: 235

PříspěvekZaslal: 15. prosinec 2017, 09:46:23    Předmět: Odpovědět s citátem

Myslim, ze vetsina modernich zarizeni glGetProgramBinary (atd.) podporuje, i kdyz povinne to neni ani v ES 3. Na ostatnich holt budes mit fallback.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



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

PříspěvekZaslal: 15. prosinec 2017, 14:46:04    Předmět: Odpovědět s citátem

To glGetProgramBinary vypadá použitelně. Jak je to, pokud to zařízení nepodporuje.. resp. jde to nějak detekovat?

Přijde mi z dokumentace, že ES 3 by to měla umět v základu: https://www.khronos.org/registry/OpenGL-Refpages/es3.0/html/glGetProgramBinary.xhtml
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Radis



Založen: 29. 03. 2014
Příspěvky: 235

PříspěvekZaslal: 15. prosinec 2017, 14:54:14    Předmět: Odpovědět s citátem

Zeptas se na GL_NUM_PROGRAM_BINARY_FORMATS. Pokud implementace vrati 0, tak to nepodporuje.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



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

PříspěvekZaslal: 15. prosinec 2017, 17:14:12    Předmět: Odpovědět s citátem

Tak karta to podporuje, podle tutoriálu jsem to napsal, žádné errory to nepíše, vše se načte... a výsledek je prázdná obrazovka Very Happy
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
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