12. Troubleshooting / FAQ
This chapter organizes frequently encountered problems while using URP/SRP/shader into “Symptoms → Causes → Resolution Procedures.”
Q1. I created a Render Feature, but nothing happens.
check
- Is Feature added to the Renderer Asset (Forward Renderer, etc.)?
- Does the camera use a URP Asset that uses the Renderer?
- Is the pass
EnqueuePass(breakpoint/log)?
Common Causes
AddRenderPassesis not executed due to conditional statements.- Pass event is too early/late and not at the expected timing.
Q2. Texture comes out black in RenderGraph / always 0
check
- Is the read/write declaration in builder correct? (
UseTexture/SetRenderAttachment) - Is the render target actually bound?
- Is the sampling/bullet correct in the pass function?
Common Causes
- Sample texture without “read declaration” → missing resource preparation/barrier
- Setting source and destination to the same texture (especially bullets) → undefined behavior
Q3. Additional light is not used in Forward+
check
- Includes
#pragma multi_compile _ _CLUSTER_LIGHT_LOOP - Whether to activate Forward+ (URP Asset settings)
- Whether to include additional light keywords (
_ADDITIONAL_LIGHTS*)
Related: 07. Forward/Forward+/Lights
Q4. Missing Depth/Normals textures (or zero samples) breaks screen-based effects
Symptoms
- Outline/SSAO always appears off or the edges are strange.
- Depth-based calculations always come out as 0 or 1.
- Normal-based calculations result in meaningless values.
Check (Priority)
- Is Depth/Normals generation really turned on in that camera/renderer?
- If Full Screen Pass Renderer Feature, check Depth/Normal in Requirements.
- If it is a custom pass, check the source/document to see what the request/creation flow is in URP.
- Are Depth/Normals resources actually created in RenderGraph Viewer?
- Are the include/sampling/linearization correct in the shader?
- Did you convert Raw depth to Linear depth?
Related: 08. URP HLSL 라이브러리 지도, 10. 포스트/풀스크린 패스
Q5. SRP Batcher seems to be turned off / performance suddenly drops
check
- Are the material properties organized in
UnityPerMaterialCBUFFER? - Doesn’t the CBUFFER layout change with conditional compilation?
- Did you excessively mix instancing/batching-related keywords such as
UNITY_DOTS_INSTANCING_*?
Related: 09. URP 호환 셰이더 작성
Q6. My pass only works in scene view/game view/specific cameras
check
CameraTypeAren't you doing filtering?- Are the URP Asset settings the same in scene view and game view?
- If you are using camera stacking/overlay cameras, which camera did you apply the pass to?
Related: 03. URP 아키텍처
Q7. Resolution/scale is incorrect (shake, blur, pixel offset)
Candidate cause
- Generate RT without considering whether or not to apply URP Render Scale (dynamic resolution)
- Ignores target size differences by XR/camera
- Set RTHandle/TextureHandle desc differently from camera color
Resolution Procedure
- Create temporary texture based on camera color texture desc (RenderGraph)
- If possible, use RTHandle to match URP scale.
Related: 05. 텍스처/ID/핸들