Android Programjaim

Android fejlesztes, java, kotlin, web.. miegymas:)

GLES20 Android és FBO optimalizáció jegyzet

2013. július 03. 11:27 - lacas82

- culling mindenhol
- compressed textures (max 1024) .pkm (ETC1)
- shaderekben csínján bánni a sin,cos, stb math-al, ezt inkább CPU-val végeztetni
- shaderekben kevés sampler használat, texture2D
- shaderekben nem támogatja minden (a legtöbb) gpu a ciklusokat, ezért ezt kerüljük el
- lowp, mediump, és highp
- kevesebb TRI használat nagyobb textúráknál és FBO-nál okozhat nagyobb FPS-t
- FBO méretcsökkentése felére legalább egy 1200as device-en. (Quality.MEDIUM), ennél kisebb már csúnyán néz ki
- közelebb nyilván kevesebb lesz az FPS :) ezért ne nagyon zoomoljunk kamerával nagyon rá semmire
- kerüljük a discard használatát, performance hit
- shadow stb realtime, nem túl szép és szintén performance hit
- általában a bake-elt dolgok a jók, tehát árnyék, fény, de van ahol kell számított fény

++

  1. Draw opaque objects first.

  2. Next draw objects that require alpha testing (or in an OpenGL ES 2.0 based application, objects that require the use of discard in the fragment shader). Note that these operations have a performance penalty, as described in “Avoid Alpha Test and Discard.”

  3. Finally, draw alpha-blended objects.

++

teszt adatok:

Test device: Galaxy Note2, android 4.1+

FBO-val MEDIUM Q.-val custom shaderrel (animációk, )
- 22-27 fps 6430 tris

FBO nélkül
- 31-50 fps 6430 tris

nyilván az objektumok közelségétől/sokaságától, valamint a shaderekben lévő textúrák számától/fényektől és alkalmazásuktól is számít

plusz nyilván ez egy nem agyonoptimalizált kód, Rajawali framework