OpenGL ES 2
There is some overhead for OpenGLES 2.0 on SGX hardware. Even the simplest ES 2.0 shader works better using the ES 1.1 pipeline. This is not the case on Adreno or Tegra GPUs. Now, it’s true that if you are using some fancy options (per pixel lighting, normal maps, etc.) the ES 2.0 renderer will take them into account, unlike the ES 1.X renderer that will just ignore them.
For now only directional ones are supported in OpenGL ES 2.0 (and only with one cascade, no PCF, no screen space blur). Normal attenuation is supported but adds some additional shader instructions. That said, on current devices, point shadows would be too expensive. But anyway we will support them, will be up to you to use them or not.
Improving Performance on SGX GPUs
- in your materials, uncheck “use z shell” when possible (when using alpha)
- in your materials, do not use “alpha ref” when possible (leave it to 0) (when using alpha)
- in your materials, uncheck “depth write” when possible (when using alpha)
- in your materials, use vertex lighting when possible
- in your materials, avoid specular when possible
- use only one light per object when possible
Texture and Alpha Tips
- Avoid Alpha Blending whenever possible.
- Unlike on PCs, on PowerVR chipsets 1 bit alpha is as slow as 8 bits alpha (if not slower).
- Use Texture Compression.On iDevices, PVR is used, and it’s pretty good. We recently compared texture compressed and uncompressed scenes and noticed a 50% gain on a test scene with dual texturing and lot of tiling, just by using texture compression.
- Fast Texture Filtering. The fastest mode is “Nearest” (with mipmaps), then “bilinear” (again with mipmaps).
- Use Texture Atlases for all objects in your scene.