This repository has been archived by the owner on Oct 20, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 202
Performance Todo list
Cedric Pinson edited this page Aug 29, 2017
·
6 revisions
- If only camera and uniform change (no node dirty, no StateAttribute dirty) after a viewer update, just apply last frame glcalls with uniform update. (only the glcalls, no cull, no draw)
- CullVisitor Node cache (only compute/transform node with modified children)
- State Graph Cache: reuse scene previous state attached to geometry, when no change in hierarchy above
- Store compute bounds dirty flags generalized to visitor with specific flags or a way to tell that this frame not bounds change at all was needed. (shadow compute bound visitor recomputed each frame because specific flags.)
- Reuse frustum culling info from last frame (coherent culling algorithms)
- prune unnecessary calls: glViewport
- Only bind uniform on Shader program change and/or value Change
- Only bind texture null if render texture is the texture slot being null Binded
- Only bind texture if not already Binded
- Uniform packing
- Texture unit dynamic binding (using texture unit int uniform)
- Resources cache: identify duplicate resources (Mesh, Textures, Shader) and reuse them
- Always enable frustum culling
- Do not reset states to zero between frames when single viewer #399
- Fix Vertex Attribute and Material absence of link so that Shader Compiler know really what VA are needed
- Use/allow Vertex Array Object extension
- Use/allow UINT index buffer
- Compress Vertex Atribute (vertex color = 8bits, normal => 16bits, etc.)
- If Rigid Body Transforms only, enable "Uniform scaling" mode: only Compute and Bind NormalMatrix shader parameter if using non-uniform scaling
- Shader Program Uniform cache: don't set uniform values if already set.
- Shader Program Uniform: don't copy, use directly arrays.
- Cull empty viewport/camera completely (no FrameBuffer binding)
- Intersection Visitors: add matrix stack support #107
- Double check any mem-leaks and use memory pools whenever possible
- Enhance getWorldMatrices to getWorldMatrix usage in Examples