Reflections & Settings
This page covers how to add reflections to your scenes and all available parameters in Shiny SSR 2, organized by category.
Forward vs. Deferred
| Feature | Forward | Deferred |
| Setup | Requires Reflections script on target objects | Automatic — reads from g-buffers |
| Per-object control | Full control via Reflections script | Global settings only (unless Mixed Mode is enabled) |
| Transparent objects | Supported via Reflections script | Requires Mixed Mode + Reflections script |
| Performance | Can be faster (processes only tagged objects) | Processes entire screen |
| PBR accuracy | Depends on material properties gathered by script | Per-pixel smoothness/metallic from g-buffers |
PBR Workflows (URP)
| Workflow | Behavior |
| Smoothness Only | A single value controls both reflection intensity and surface roughness. Simpler, good for stylized projects. |
| Metallic and Smoothness | Follows the PBR model: Metallic controls reflection intensity, Smoothness controls sharpness. More physically accurate. |
Reflections Script (Per-Object)
Add the Reflections component to objects that should receive reflections (required in Forward, optional in Deferred with Mixed Mode).
| Property | Description |
| Ignore | Excludes this object from reflections. Useful when the script is on a parent covering many children. |
| Scope | Apply reflections to this object only, include children, or filter by layer/name pattern/sub-meshes. |
| Use Material Smoothness | Reads the _Smoothness property from the object's PBR material. |
| Smoothness Map | Optional texture whose alpha channel provides per-pixel smoothness (use with Smoothness Source = Custom). |
| Per Sub Mesh Smoothness | Assigns different smoothness values to individual sub-meshes. |
| Smoothness | Manual smoothness value used when Use Material Smoothness is off or the material lacks the property. |
| Use Material Normal Map | Uses the material's normal map for reflection perturbation. |
| Material Property Names | Shader property names for smoothness map, normal map, and smoothness value. Customize for non-standard shaders. |
| Skybox Multiplier | Per-object multiplier applied to skybox reflections (0–1). Lets you dim or boost sky contribution on this object without changing global settings. |
| Override Global Settings | Enables per-object raytracing overrides (sample count, decay, jitter, etc.). |
Exclude Reflections (Per-Object)
Add the ExcludeReflections component to any GameObject whose visible surface should not receive reflections. When the component is enabled it registers itself with Shiny SSRR and the renderers of the GameObject (and its children) are masked out of the reflection composite, so no reflections are blended on top of those pixels. Works in both Forward and Deferred and on both URP and Built-in pipelines.
| Property | Description |
| (no properties) | The component captures all Renderer components in itself and its children at OnEnable time. Call Refresh() from script if you spawn or remove child renderers at runtime. |
What this does NOT do: ExcludeReflections only prevents reflections from being drawn over the tagged object. It does not stop the object from appearing in reflections cast by other surfaces (the object is still part of the screen image that SSR samples).
Preventing an object from appearing in other reflections
Because SSR samples the on-screen image, anything visible can be reflected. To keep an object (FPS weapon, in-world UI, decorative gizmo) out of every reflection, render it after Shiny SSRR has finished. Pick one of:
- Change the Shiny SSR Renderer Feature event to
BeforeRenderingTransparents (or AfterRenderingOpaques) and set the object's material/shader to the Transparent render queue, so it draws after the reflection composite.
- Use a Render Objects feature targeting the object's layer with an event set to
AfterRenderingTransparents, while excluding that layer from the camera's main culling mask used by Shiny SSRR.
- Camera stacking: render the object with an overlay camera whose Renderer asset has no Shiny SSR feature attached.
Typical case — first person weapon: put the weapon on its own layer, then either move the Shiny event to Before Transparents and push the weapon's shader to a transparent queue, or render the weapon with a Render Objects feature scheduled after Shiny. The ExcludeReflections component is not the right tool for this case — it would only prevent the weapon itself from receiving reflections.
General Settings
| Setting | Description |
| Reflections Style | Shiny Reflections for standard appearance or Dark Reflections for a stylized dark-toned look with better performance. |
| Workflow | Smoothness Only or Metallic and Smoothness (see PBR Workflows above). |
| Show In Scene View | Renders reflections in the Scene view window for easier editing. |
| Use Custom Bounds | Restricts reflection rendering to a defined volume. |
Quality Settings
| Setting | Description |
| Sample Count | Number of raymarching steps per pixel (4–256). Higher = better quality, more GPU cost. |
| Max Ray Length | Maximum reflection distance in meters. |
| Thickness | Assumed geometry thickness for hit detection. Increase if reflections disappear behind thin objects. |
| Binary Search Iterations | Refinement steps after initial hit (6–8 is usually sufficient). |
| Compute Back Faces | Runs a depth pre-pass to calculate true surface thickness. Improves accuracy for thin/complex meshes. |
| Max Thickness | Geometry thickness assumed before binary search. |
| Thickness Fine | Post-binary-search thickness threshold. Discards hits beyond this distance. Keep as low as possible. |
| Jitter | Random offset on ray start positions to reduce banding artifacts. |
| Animated Jitter | Changes jitter per pixel every frame to redistribute noise. |
| Temporal Filter | Reduces flickering by blending with previous frames. |
| Response Speed | How fast the temporal filter discards history. Higher = more responsive to changes. |
| Downsampling | Resolution multiplier for final blurred reflections (1 = full resolution). |
| Depth Bias | Bias for depth checking. Increase if reflections disappear at distance. |
Reflection Intensity
| Setting | Description |
| Intensity | Global multiplier for all reflections. |
| Min Intensity | Forces a minimum reflection level on all surfaces. |
| Max Intensity | Caps maximum reflection brightness. |
| Smoothness Threshold | Minimum smoothness required to receive reflections. |
| Fresnel | Reduces reflection intensity based on view angle. 1.0 = physically accurate. |
| Decay | Reduces intensity based on distance to the reflected point. |
| HDR Clamp | Clamps HDR reflection values to prevent overly bright spots (0.01–10). Default: 3. |
| Metal Boost | Enhances appearance of metallic surfaces in Deferred mode. |
| Specular Control | Reduces specular intensity in reflections to minimize flickering from certain materials. |
| Skybox Intensity | Master intensity of sky/background reflections on surfaces. 0 disables skybox reflections regardless of mode. |
| Start Distance | Attenuates reflections near the camera (in meters). |
| Far Fade Start / Range | Attenuates reflections far from the camera (distance + fade range in meters). |
| Vignette Mode | Falloff shape for screen-edge attenuation. Edge (box) uses the maximum distance to the screen edges (more coverage). Radial uses distance from the screen center. |
| Vignette Size | Controls reflection fade-out around screen borders. |
| Vignette Power | Controls the attenuation gradient at screen edges. |
Skybox Reflections
Skybox reflections fill in pixels where screen-space rays miss (sky, off-screen background). They work alongside the per-pixel SSR result and are gated by Skybox Intensity.
| Setting | Description |
| Skybox Reflection Mode | Disabled turns off skybox fallback. Visible Sky Only samples the rendered skybox only when sky is visible at the ray endpoint (cheapest, no off-screen sky). Automatic Cubemap bakes the scene skybox into a cubemap so off-screen sky is always available. User Defined Cubemap uses a cubemap you provide. |
| Skybox Custom Cubemap | Cubemap asset used when mode is User Defined Cubemap. |
| Skybox HDR | Bakes the cubemap in HDR color format. Enable for HDR skies and tone-mapped pipelines. |
| Skybox Layer Mask | Culling mask used while baking the cubemap. 0 captures only the default skybox set in Render Settings; otherwise includes objects on the selected layers. |
| Skybox Resolution | Resolution of the baked cubemap. Lower values reduce memory and bake cost. |
Tip: Use Visible Sky Only for outdoor scenes where the sky is on screen most of the time. Use a cubemap mode for interiors with windows or for stylized scenes where reflections should always show sky.
Reflection Sharpness
| Setting | Description |
| Fuzzyness | Distance-based blur multiplier. Distant reflections appear blurrier than contact reflections. |
| Contact Hardening | Increases sharpness of close-range (contact) reflections. |
| Minimum Blur | Minimum blur applied to all reflections. |
| Blur Downsampling | Resolution of blur buffers. Increase to improve performance slightly. |
| Blur Strength | Controls blur spread along X and Y axes. |
Advanced Options
| Setting | Description |
| Output Mode | Debug visualization of internal buffers (reflections only, depth, normals, etc.). |
| Low Precision | Uses RGBA32 instead of ARGBHalf for internal buffers. Faster on some devices, reduces accuracy. |
| Stop NaN | Clamps pixel values to valid range. Enable if you see black patches or rendering artifacts. |
| Stencil Check | Masks reflections based on stencil buffer contents. |
| Transparent Smoothness | Smoothness used for reflections at transparent pixels driven by the Screen Space Normals -> Transparents toggle on the Render Feature. Higher values give sharper, more mirror-like reflections; lower values blur them. Other transparency options (Depth Prepass, Screen Space Normals) live on the Shiny SSR Renderer Feature inspector since 32.3. |
| Use Reflections Scripts | Enables per-object Reflections scripts in Deferred mode (Mixed Mode). |
| Layer Mask | Which Reflections scripts are used when Mixed Mode is active. |