Reduce work according to what is visible and what changes. Capture scheduling and display-shader animation are separate.
Schedule capture work#
| Field | Behavior |
|---|---|
| Updates Per Second | Positive values cap eligible captures. Zero requests every eligible frame; shader waves can animate between captures. |
| Skip When Off Screen | Skip when destination is outside the source camera's relevant view. Scene View preview also uses that frustum. |
| Share Compatible Captures | Conservative reuse of a matching fresh capture. Camera/geometry/content must match; Hybrid and object/sorting-filtered captures are excluded. |
| Editor Preview | Throttled capture outside Play Mode. Disable when only runtime output is needed. |
| Cache Invalidation | Manual, On Configuration Change or Interval for stored/static content. |
| Cache Refresh Interval | Seconds between refreshes for Interval policy. |
| Dynamic Layers | Hybrid moving layers inside the effective included mask; remaining included layers form static content. |
First reduce capture area, resolution, update rate and unnecessary included geometry. Use static caches for content that stays static. Pooling/sharing does not establish zero allocations or a measured device speedup.
Cached mode#
- Choose Cached for mostly static scenery. The first eligible request captures it; subsequent frames show the stored result.
- Choose Manual when gameplay knows content or lighting changed, then call
RefreshCachedReflection(). - Choose On Configuration Change for configuration changes. It does not detect every moving renderer or changed source light.
- Choose Interval for periodic refreshes and set the interval in seconds.
Display effects can continue animating over a frozen source image. Refreshing is necessary when static lighting/scenery changes should appear.
Hybrid mode#
- Separate scenery and actors onto distinct object layers. Include both; exclude decoration.
- Select Hybrid and choose the actor layer in Dynamic Layers. Both effective static and dynamic groups must be nonempty.
- Static is cached; dynamic follows the update schedule. Refresh static when its scenery/lights change.
water.SetReflectionMode(ReflectionMode.Hybrid);
water.Settings.Optimization.DynamicLayers =
LayerMask.GetMask("Actors");
water.NotifySettingsChanged();
// After changing static scenery or its lights:
water.RefreshCachedReflection();The sorting tradeoff#
Hybrid composites dynamic content above static as two captures. Static transparent foreground cannot interleave in front of one actor and behind another. Use Planar when scene ordering, depth or stencil interaction requires that composition.