오늘의 트러블 슈팅
문제발생
Unity URP 환경에서 인벤토리 캐릭터 미리보기를 구현하기 위해
다음과 같은 구조를 사용했다.
PreviewCamera + RenderTexture
UI RawImage에 RenderTexture 출력
캐릭터 전용 Layer(CharacterPreview) 사용
lilToon Shader 사용
하지만 특정 문제가 발생했다.
문제 증상
캐릭터 Layer를 CharacterPreview로 변경하는 순간 캐릭터가 투명해짐
Camera Culling Mask를 Everything으로 해도 동일
Light Culling Mask, Additional Light, Depth Texture 등을 바꿔도 해결 안 됨
Player, Water, Interact, Test 같은 기존 레이어에서는 정상 표시
다른 오브젝트도 CharacterPreview 레이어로 바꾸면 전부 투명
-> 처음엔 Layer 문제 / Shader 문제처럼 보였음
잘못된 추측들 (삽질 포인트)
RenderTexture 설정 문제
Camera Culling Mask 문제
Light Culling Mask 문제
lilToon Shader의 Rendering Mode 문제
URP Renderer Feature(Render Objects) 문제
전부 원인이 아니었다.
진짜 원인: PreviewCamera가 “다른 Renderer”를 사용하고 있었던 것
URP에서는 하나의 프로젝트에 여러 Renderer를 가질 수 있다.
URP Asset
├ Renderer 0 : Ultra_PipelineAsset_Forward (월드용)
└ Renderer 1 : StencilRenderer (특수 효과용)
문제 상황
메인 카메라 → Renderer 0 사용
PreviewCamera → Renderer = Default (Renderer 1)
Renderer 1은:
Stencil / 특수 효과 전용
lilToon + 특정 Layer(CharacterPreview)를 제대로 처리하지 못함
결과적으로 렌더 단계에서 캐릭터가 날아가면서 투명처럼 보임
그래서:
레이어를 바꾸는 순간만 문제 발생
카메라 문제처럼 보이지 않았음
Everything이어도 소용없었음
해결 방법: PreviewCamera의 Renderer를 명시적으로 지정
PreviewCamera Inspector에서:
Rendering
├ Render Type : Base
└ Renderer : 0 : Ultra_PipelineAsset_Forwar
Default 사용 금지
메인 카메라와 동일한 Renderer를 직접 지정
이렇게 하자:
CharacterPreview 레이어에서도 캐릭터 정상 출력
lilToon Shader 정상 작동
RenderTexture 정상 출력
왜 레이어 문제처럼 보였나?
Renderer 단계는 Layer 필터보다 먼저 적용
Renderer가 해당 Shader / Layer 조합을 처리하지 못하면
→ Camera와 Light 설정과 상관없이 렌더되지 않음
즉:
Layer를 바꿨을 때 투명해진 게 아니라
“그 Layer가 Renderer 1에서 처리되지 않았던 것”
최종구조
Main Camera
PreviewCamera
교훈
URP에서는 Camera의 Renderer 설정이 매우 중요
Default Renderer는 프로젝트마다 의미가 다를 수 있음
RenderTexture + PreviewCamera 사용 시
반드시 Renderer를 명시적으로 지정해야 함
Layer 문제처럼 보이는 버그의 원인이
Renderer 선택 문제일 수 있다
요약 한 줄
Unity URP에서 특정 Layer만 투명해진다면
Camera가 어떤 Renderer를 쓰고 있는지 반드시 확인하자