Skip to Content
DocumentationBasicsPerformance Budgeting

Performance Budgeting

Genesis is feature-dense. That is both the appeal and the trap — every toggle you flip adds shader instructions, sampler bindings, and a keyword variant. This page gives you a mental model for how much each feature costs, where the cliffs are, and how to ship a material that performs on your platform.

The budget model

Think of a Genesis material as a budget of texture samples, math ops, and variants. Mobile GPUs cap out around 6–8 samples per fragment before performance drops sharply. Variant count drives build size and warm-up stutter. Math ops mostly matter at high overdraw.

As a reference point, a kitchen-sink material (Lit + Cel + Rim + MatCap + Triplanar + Stochastic + Dissolve + Outline) runs roughly 412 ALU, 11 samples, and 8 keywords. Trimmed for mobile (Toon + Cel Single + Outline) the same silhouette costs about 138 ALU, 3 samples, and 2 keywords — close to a 3x reduction per fragment at the same gameplay-distance read.

Cost rules of thumb

Inspector labelShader propertyTypeDefaultDescription
Albedo + Normal_BaseMap / _BumpMapBaseline2 samples. Required cost — keep.
Cel Shading (Single)_CEL_SHADING_ONLighting+4 ALU, no samples. Always affordable.
Cel Shading (Ramp)_CEL_MODE_RAMPLighting+1 sample. Affordable on mobile.
Rim Lighting_RIM_ONLighting+8 ALU. No samples. Mobile-safe.
MatCap_MATCAP_ONLighting+1 sample + transform. Mobile OK if albedo res is dropped.
Triplanar_TRIPLANAR_ONSurface3x sample multiplier on every map used.
Stochastic Triplanar_STOCHASTIC_ONSurface9x sample multiplier. Desktop / console only.
Layer Textures (3)_LAYER_TEX_ONSurface+3 samples + blend math. Use sparingly on mobile.
Dissolve_DISSOLVE_ONEffect+1 sample (noise) + clip. Cheap when noise is small.
Hologram_HOLOGRAM_ONEffectSeveral ALU + scene-color sample if interaction is on.
Outline (Inverted Hull)_OUTLINE_ONEffectDoubles vertex pass cost. Free on fragment.
Outline (Screen-Space)Renderer featureEffectFull-screen pass. Use the renderer feature, not per-material.
Vertex Animation_VERTEX_ANIM_ONAnimation+10–40 ALU on vertex pass. Negligible on fragment.
UV Animation_UV_ANIM_ONAnimation+4 ALU per affected sample.
PCSS Shadow ModuleRenderer featureModuleFull-screen filter. Desktop / console only.

Tactics

  1. Pick a Rendering Mode first. Unlit is the cheapest, Toon is mid, Lit costs the most. Choose by look, but know the floor.
  2. Disable features instead of zeroing them. Setting Outline Width to 0 still runs the vertex pass. Use the toggle.
  3. Share materials across props. Instancing is automatic when keyword sets match. Diverging materials breaks batching.
  4. Avoid Stochastic on mobile. Use plain triplanar or break tiling with a detail map instead.
  5. Ship a Mobile preset. The Feature Configurator can strip keyword sets from the build for platforms you do not target.

Variant explosion is the most common cause of long mobile build times. Audit your material set with Tools > Genesis > Shader Tools Window > Variant Audit before every release.

Last updated on