Performance Guide¶
The foundation of Crest is architected for performance from the ground up with an innovative LOD system. It is tweaked to achieve a good balance between quality and performance in the general case, but getting the most out of the system requires tweaking the parameters for the particular use case. These are documented below.
Tip
Tooltips will often mention if a feature has a significant performance cost.
Quality Parameters¶
These are available for tweaking out of the box and should be explored on every project:
See parameters under which directly control how much detail is in the water, and therefore the work required to update and render it. These are the primary quality settings from a performance point of view.
Adjust resolution of simulations on a per-simulation basis.
Persistent simulations can have their frequency reduced to improve performance.
Features¶
The water shader has accrued a number of features, and has become a reasonably heavy shader. Where possible these are on toggles which can be disabled to will help the rendering cost.
Disable any unused simulations under will help.
By default, there are several extra passes to accomodate the Collision Layers feature. If this feature is not needed, performance can be improved by disabling it.
Rendering features under like Motion Vectors, Write Color and Write Depth can be expensive (especially for BIRP).
Mobile Performance¶
Mobile is not the primary target for Crest, but the following are some hints on getting better performance:
Crest can be draw call heavy which mobile platforms can be sensitive to. Together, reducing the and increasing the minimum can significantly reduce draw calls.
For demanding platforms that use tile rendering (like the Meta Quest), consider setting the water to opaque, as it will net a significant performance gain. Transparency does not add a lot of value to open ocean scenes.
Please see the subheadings below for alternative rendering modes for mobile.
Simple Transparency¶
Preview
This feature is in preview and may be subject to changes or needs refinement.
The water surface shader has a simple transparency mode which does not require sampling from the Opaque Texture or Depth Texture. This can noticeably improve performance for tile-based rendering GPUs like the Meta Quest. This option is available under .
This feature requires the Depth Simulation.
Example
Enable Simple Transparency in the Main sample to see it functioning, as this scene has the Depth Simulation set up with a Depth Probe.
Tip
To take full advantage of the performance this feature can bring: ensure the opaque and depth texture are not being generated. Other effects can still force them to generate. This includes, currently, our own underwater effect, but may change in the future.
Quad Mesh Mode¶
Preview
This feature is in preview and may be subject to changes or needs refinement.
Renders the water surface using a quad instead of numerous chunks. This can save on draw calls and triangles at the cost of losing displacement. Waves can still contribute to the look of the water with normals and refraction.