Quality¶
Rendering quality is a budget choice, not a shader-identity switch. The
RenderingQualitySettings resource owns budgets that affect all GPU-backed
views. USD remains the authority for the scene's ShaderLook and authored WESL
source.
A scene can therefore keep its authored lunar terrain and starfield shaders while the High preset supplies the largest renderer budgets around them.
Presets¶
| Preset | Intent |
|---|---|
Low |
Lowest-cost shadow and lighting budgets |
Balanced |
The default interactive balance |
High |
Largest shipped shadow, lighting, derived-map, rock, and tessellation budgets |
The stable policy keys are low, balanced, and high. The Graphics settings
menu presents the same three choices. The CLI can select one for a process:
The setting is persisted with the other graphics settings. It is not a per-material property and it does not replace the shader authored by the scene.
What the preset budgets¶
RenderingQualitySettings covers:
| Family | Examples |
|---|---|
| Shadow maps | Directional, point, and spot map sizes; cascade count; caster limits; shadow storage budget |
| Shadow filtering | Hardware 2×2 or Gaussian 5×5 |
| Horizon cache | Enablement, sun-angle invalidation threshold, march steps, bake supersampling |
| Camera | MSAA, tone mapping, exposure, bloom |
| Sky | Dome cubemap face size |
| Terrain LOD | Tile resolution, pixel error, maximum depth, tile budget, bake cadence, hysteresis, morph band |
| Terrain derived maps | Roughness/AO/normal resolution, AO directions and steps, anisotropy |
| Terrain rocks | Maximum instances, mesh buckets, LOD fade distances |
| Geometry | Sphere, cylinder, capsule, NURBS, and curve tessellation |
| Editor preview | Preview key light, local-light defaults, render-failure recovery |
The exact numeric values belong to the shipped profile and may change between releases. Read the current settings in Settings → Graphics rather than copying a table from a version of the documentation.
Shadow filtering¶
The Graphics settings expose two shadow filters:
| Filter | Character |
|---|---|
| Hardware 2×2 | Four comparison samples with hardware filtering; lower cost |
| Gaussian 5×5 | A wider nine-sample footprint; highest quality without temporal anti-aliasing |
The default is Gaussian. The terrain material's normal bias is scaled by the shadow texel size so grazing-angle terrain does not sample its own surface inside the filter footprint.
Terrain quality¶
The High preset keeps the interactive terrain CDLOD envelope at the proven Balanced bound: 49-vertex tiles, depth 8, a 768-tile cover, and the corresponding sampling and bake cadence. High increases the surrounding lighting, derived-map, rock, and tessellation budgets; it does not double terrain cover merely to spend the frame budget on duplicate geometry.
Per-tile texture quality is authored separately. A near tile can use a 2048² albedo and a far tile a 256² one, with the same roles and different images. This is the right way to spend quality where the camera actually looks.
Quality does not change material identity¶
The quality preset does not rewrite a ShaderLook. It changes renderer budgets
around the authored material. A material that is invalid at Low is still invalid
at High; a shader that fails to compile is a shader error, not a quality
setting.
Likewise, changing a quality setting does not repair a missing texture or a malformed parameter. Those are authoring errors and remain visible.
Measuring cost¶
A deterministic recording run is not a profiling run. Use a separate session when measuring frame time:
--log-diag reports FPS, frame time, and physics diagnostics. Compare presets
in the same scene, camera, and resolution; a different view invalidates the
comparison.
For a headless gate, keep the deterministic --threads 1 --jitter 0 profile.
Graphics assertions are a separate serial offscreen pass because GPU state and
driver behavior are not part of the fixed-step determinism contract.
Material sharing and quality¶
Identical looks share one material and one bind group. The look key includes texture handles, so two tiles at different texture resolutions correctly get two materials, while tiles at the same quality share one.
Varying a scalar per instance mints a material per instance. If a quality choice must vary continuously, bucket it into a small set of values rather than giving every instance a unique float.
Related sections¶
- Settings — the Graphics settings page
- Terrain — LOD, shadow, and derived-map budgets
- Texture layers — per-tile texture quality
- Command line — render-quality flags