Search Issue Tracker

By Design

Votes

0

Found in

6000.0.58f1

6000.2.6f1

6000.3.0b3

6000.4.0a1

Issue ID

UUM-120144

Regression

No

Ambient occlusion appears incorrect when character is rendered with a fixed FOV using Render Objects

-

Reproduction steps:
1. Open the attached “IN-113002” project
2. Open the “Scenes/SampleScene” Scene
3. Enter the Play Mode
4. Observe the character hands in the Game View

Expected result: Character’s hands remain visible at a fixed FOV, and ambient occlusion shadows are correctly applied based on the character’s projected depth.
Actual result: Character’s hands are visible, but ambient occlusion appears incorrect, showing shadows from other objects through the hands

Reproducible with: 6000.0.58f1, 6000.2.6f1, 6000.3.0b3, 6000.4.0a1

Reproducible on: Ubuntu 25.04, Windows 11
Not reproducible on: No other environments tested

Notes:
- As a workaround, under “Settings/PC_Renderer” set the “Screen Space Ambient Occlusion” Render Feature source to "Depth" and check the "After Opaque" option.

  1. Resolution Note:

    In URP, the prepass layer mask can’t render different layers with different camera settings. Given that limitation, your current setup behaves as expected:
    - The depth prepass correctly includes the Character layer.
    - The ScriptableRendererFeature Render Objects feature correctly renders the Character layer after Opaque using user-defined camera settings.

    However, because SSAO relies on the depth buffer produced by the depth prepass, it will produce visual artifacts on the Character objects rendered with a different FOV.

    Recommendations:
    - Disable SSAO if it isn’t required for the scene or target platform.
    - Add an additional Render Objects pass for the Character layer that writes to the depth buffer before the URP depth prepass, using camera settings aligned with the Character rendering (e.g., different FOV). In this case:
    * Remove the Character layer from the prepass layer mask.
    * Be aware this approach increases overdraw and requires enabling Depth Priming.
    * Note that Render Objects does not write to the normal buffer, so SSAO will not correctly affect Character objects.
    - The preferred solution is to implement and inject a custom depth–normal prepass prior to the standard URP prepass to render Character objects into both the depth and normal buffers with the correct user-specified camera settings. This ensures SSAO considers the adjusted FOV and applies correctly to the Character layer.

    Thanks for reporting this, we will take it into account for our roadmap and see if we can facilitate this use-case.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.