Performance Optimization
This document provides a collection of useful hints on how to optimize the performance of an OpenGL ES 2.0 application created with CGI Studio.
Many of these hints will apply to any graphic chip; these are listed first. Later sections describe properties and corresponding hints specific to some given hardware.
Some information is based on the document Optimizing OpenGL Applications1 , while the document at hand focuses more on possible performance optimizations for applications based on the CGI Studio Candera Engine instead of native OpenGL applications.
Quick Guide
This chapter aggregates recommendations concerning major points explained very shortly.
Optimize Number of Nodes
A reduced number of nodes lead to fewer node-related render state activations that have to be pro...
Avoid Buffer Clearing
Clear only buffers that need to be cleared. Color buffer: The color buffer does not have t...
Disable Depth Test and Adjust Depth Range
Disable Depth Test if Not Required If it can be easily predicted that an object is not occluded ...
Vertex Buffer Optimization
Vertex Buffer Editor Loading of vertex geometry has impact on the bandwidth and on the performan...
Startup Time
Loading Data Asset Tool can be used to partition an asset for a startup scene in a faster flash ...
Optimization at Application Design Level
This section discusses performance optimizations in the scope of 3D scene modelling and applicati...
Simplify Meshes
Reduce the number of vertices in a mesh in order to improve runtime and memory performance. If vi...
Optimize Number of Nodes
A reduced number of nodes lead to fewer node-related render state activations that have to be pro...
Draw Visible Objects Only
Nodes, even when attempting to render them, might be not be visible in various circumstances. Nev...
Use LOD(Level of Detail) Management
Performance gains can be achieved by using simplified models with less complex geometry, texture,...
Imposters
Billboards or point sprites are quite often used as "imposters" pretending to be a 3D geometry by...
Lighting
Use as few dynamic light sources as possible. Light sources in order of their impact on rendering...
Avoid Buffer Clearing
Clear only buffers that need to be cleared. Color buffer: The color buffer does not have t...
Disable Depth Test and Adjust Depth Range
Disable Depth Test if Not Required If it can be easily predicted that an object is not o...
Disable Blending If Not Required
Disable blending for opaque objects, as blending is a demanding computation (See Render-Mode). ...
Minimize Render State Changes
Minimize render state changes within a single frame. A render state change often comes with a per...
Textures
Draw Objects Sorted by Texture This way the texture cache isn't flushed between objects. See als...
CGI Studio Optimization Techniques
This chapter describes performance optimization techniques for Candera based applications.
Rendering Only Updated Content
Description This chapter briefly describes how to achieve performance optimization by rendering ...
Multi Frequency Rendering
Description This chapter briefly describes the Multi Frequency Rendering technique supported by C...
VRAM Upload Culling
Description This chapter briefly describes how to use scope masks for uploading only dedicated c...
Occlusion Queries and Occlusion Culling
Description In scenes containing nodes with lots of vertices or expensive fragment shaders, the ...
Bitmap Compression
Introduction Bitmap compression aims to improve the application performance by reducing the band...
Drawcall Batching/Geometry Instancing
Description This chapter describes how Candera's Drawcall Batching utilizes Geometry Instancing ...
Courier Specific
MFR - Multi-Frequency Rendering in Courier Multi-Frequency rendering in Courier can be used to ...
CGI Analyzer
Optimizing Shader Programs
The goal of shader optimizations is to increase its throughput (vertices/sec, fragments/sec) with...
Surface Effects and Combinations
Draw Objects Sorted by Texture Spherical Environment mapping for static surface reflections is s...
Use Specialized Shaders
Texture Cache Use Shaders that are customized to fit exactly your special situation. Reference ...
Carefully Design your Lighting
Use Texture Compression Per-vertex lighting is less expensive than per-fragment lighting. ...
Optimize Shader Program Coding
Avoid if-else Constructs in the Shader The use of if-else statements for non-constant variables ...
PowerVR GPU Specific Best Practices
The following rules are a set of performance recommendations that developers should seek to imple...