Rendering Path¶
NiloToon은 URP의 모든 Rendering Path를 지원해요:
- Forward
- Forward+
- Deferred
- Deferred+ (Unity6.2 이상)
NiloToon의 권장 설정:
- Rendering Path = Forward / Forward+
- Depth Priming Mode = Disabled

조명 제한 사항¶
-
Forward+ + Depth Priming Mode = Off: NiloToon의 모든 기능을 완전히 렌더링할 수 있으며, 화면에 256개의 Visible Light를 지원해요 (씬에는 무제한, Renderer당 Light 수 제한 없음)
-
Forward + Depth Priming Mode = Off: NiloToon의 모든 기능을 완전히 렌더링할 수 있으며, Renderer당 8개의 Additional Light를 지원해요 (씬에는 무제한)
Deferred / Deferred+ Rendering Path를 사용하거나 Depth Priming Mode를 켜야 하는 경우, 아래 정보를 확인하여 다음 기능의 제한 사항을 이해해 주세요:
- Stencil (Render Queue <= 2500)
- Alpha Blending (Render Queue <= 2500)
- ZOffset (Render Queue <= 2500)
- Shadow 2D on Face (Render Queue <= 2500)
참고
이러한 기능은 보통 반투명 앞머리와 눈썹 렌더링과 관련돼요.
Stencil¶

| Rendering Path | 지원 여부 |
|---|---|
| Forward (Depth Priming = Off) | ✅ 지원 |
| Forward+ (Depth Priming = Off) | ✅ 지원 |
| Forward (Depth Priming = On) | ✅ 지원 |
| Forward+ (Depth Priming = On) | ✅ 지원 |
| Deferred | ❌ URP에 의해 차단 |
| Deferred+ | ❌ URP에 의해 차단 |
URP에서 Deferred / Deferred+ 사용 시, 불투명 큐 Material (Render Queue <= 2500)은 Material의 Stencil 설정을 무시하고, Opaque Color Pass (LightMode = UniversalForwardOnly) 그리기 시 아래 Stencil 설정으로 대체해요.

이는 URP의 설계이며, 모든 커스텀 Shader (NiloToon, Amplify Shader Editor, 커스텀 코드 기반 Shader 등)에 적용돼요. URP가 향후 변경하지 않는 한 할 수 있는 것이 없어요.
해결 방법:
불투명 큐 Material (Render Queue <= 2500)에서 Stencil이 필요한 경우:
- Deferred/Deferred+ 대신 Forward/Forward+를 사용하세요
- 또는 Material의 Surface Type을 Transparent/**로 전환해 보세요
- 또는 Material의 Render Queue를 >=2501로 변경해 보세요
Alpha Blending¶
| Rendering Path | 지원 여부 |
|---|---|
| Forward (Depth Priming = Off) | ✅ 지원 |
| Forward+ (Depth Priming = Off) | ✅ 지원 |
| Forward (Depth Priming = On) | ❌ URP에 의해 차단 |
| Forward+ (Depth Priming = On) | ❌ URP에 의해 차단 |
| Deferred | ✅ 지원 (Unity6.2+) |
| Deferred+ | ✅ 지원 (Unity6.2+) |
Material의 RenderQueue <= 2500인 경우, URP는 이를 반투명으로 기대하지 않으며 항상 불투명으로 취급해요. Depth Priming이 불투명 큐 Material 뒤의 픽셀 렌더링을 거부하므로, Alpha Blending할 올바른 색상이 없을 수 있어요.
해결 방법:
불투명 큐 Material (Render Queue <= 2500)에서 Alpha Blending이 필요한 경우:
- Unity 버전에 따라 지원되는 Rendering Path로 전환하세요
- 또는 Material의 Surface Type을 Transparent/**로 전환해 보세요
- 또는 Material의 Render Queue를 >=2501로 변경해 보세요
ZOffset¶
| Rendering Path | 지원 여부 |
|---|---|
| Forward (Depth Priming = Off) | ✅ 지원 |
| Forward+ (Depth Priming = Off) | ✅ 지원 |
| Forward (Depth Priming = On) | ❌ NiloToon에서 아직 미지원 |
| Forward+ (Depth Priming = On) | ❌ NiloToon에서 아직 미지원 |
| Deferred | ✅ 지원 |
| Deferred+ | ✅ 지원 |
Depth Priming = On인 경우, Material (Render Queue <= 2500)은 Depth Priming Depth Buffer와 일치하는 깊이만 그릴 수 있어요 (ZTest가 Depth Priming 후 Equal로 강제 오버라이드). ZOffset을 활성화하면 최종 ZOffset이 0이 아닌 경우 Material을 렌더링할 수 없게 돼요.
해결 방법:
- Forward/Forward+에서 불투명 큐 Material에 ZOffset이 필요한 경우, Depth Priming을 끄세요
Shadow 2D on Face¶
| Rendering Path | 지원 여부 |
|---|---|
| Forward (Depth Priming = Off) | ✅ 지원 |
| Forward+ (Depth Priming = Off) | ✅ 지원 |
| Forward (Depth Priming = On) | ❌ NiloToon에서 아직 미지원 |
| Forward+ (Depth Priming = On) | ❌ NiloToon에서 아직 미지원 |
| Deferred | ✅ 지원 |
| Deferred+ | ✅ 지원 |
Depth Priming = On인 경우, NiloToon은 이 기능이 얼굴 영역의 Depth Texture에 대한 Depth Offset에 의존하므로 Shadow 2D on Face를 비활성화해요.
해결 방법:
- Forward/Forward+에서 얼굴의 Shadow 2D를 렌더링해야 하는 경우, Depth Priming을 끄세요
요약 테이블¶
불투명 큐 Material (Render Queue <= 2500)에 대한 NiloToon Material 기능 제한 사항 요약:
| Rendering Path | Stencil | Alpha Blending | Shadow2D on Face | ZOffset |
|---|---|---|---|---|
| Forward (Depth Priming = Off) | ✅ 지원 | ✅ 지원 | ✅ 지원 | ✅ 지원 |
| Forward+ (Depth Priming = Off) | ✅ 지원 | ✅ 지원 | ✅ 지원 | ✅ 지원 |
| Forward (Depth Priming = On) | ✅ 지원 | ❌ URP 차단 | ✅ 지원 (NiloToon 0.18.x+) | ❌ 미지원 |
| Forward+ (Depth Priming = On) | ✅ 지원 | ❌ URP 차단 | ✅ 지원 (NiloToon 0.18.x+) | ❌ 미지원 |
| Deferred | ❌ URP 차단 | ✅ 지원 (Unity6.2+) | ✅ 지원 | ✅ 지원 |
| Deferred+ | ❌ URP 차단 | ✅ 지원 (Unity6.2+) | ✅ 지원 | ✅ 지원 |
권장 설정
Forward 및 Forward+ (Depth Priming = Off)는 모든 NiloToon 기능을 지원하므로 권장 설정이에요.
PC 프로젝트 설정 예시¶
이 섹션에서는 Unity6.0 PC 콘서트 데모 템플릿 프로젝트의 예시 설정을 보여줘요. 이 설정을 그대로 복사할 필요는 없으며, 콘서트 프로젝트 작업 시 참고용이에요.
Camera¶
- TAA 전용 (RenderScale = 2), 또는 DLSS.NativeAA 전용 (RenderScale = 1)
- MSAA = off (4K/8K에서 VRAM 제한). FXAA/SMAA는 미사용
- 볼류메트릭 라이트에서 Color Banding이 발생하면 Dithering 활성화 가능

참고
- 왼쪽 이미지 = TAA 전용 (RenderScale = 2), 1080p, 1440p 또는 좋은 GPU (RTX 4080 이상)에서 4K에도 적합
- 오른쪽 이미지 = DLSS 전용 (RenderScale = 1), 4K ~ 8K 같은 고해상도 전용
URP Asset¶
| 설정 | 값 | 설명 |
|---|---|---|
| GPU Resident Drawer | Off | 높은 CPU 기본 비용. 대량의 인스턴싱이 있는 경우에만 활성화 (예: 총 인스턴스 수 >10k) |
| SRP Batcher | On | 비활성화할 이유가 없는 한 |
| HDR | On | 콘서트 타입 HDR 조명 + Bloom에 필요 |
| MSAA | Off | VRAM 제한 또는 TAA 요구사항 |
| RenderScale | 가능한 높게 (1~2) | Anti-aliasing 품질을 크게 향상! RenderScale > 1이면 URP가 내부적으로 Super Sampling (SSAA)을 수행. RenderScale = 2이면 2x2 = 4배 GPU 비용 (VRAM 및 Fragment Shading) |
주의
DLSS 사용 시 RenderScale은 항상 DLSS의 Quality 옵션에 따라 0.3333~1로 잠겨요. DLSS와 RenderScale > 1을 함께 사용할 수 없어요.

Renderer¶
- Rendering Path = Forward+: 최대 255개의 Visible Realtime Light 지원. 캐릭터를 향하는 Light에는 Soft Shadow도 활성화하여 캐릭터 및 스테이지 바닥의 조명 품질 향상. 중요하지 않은 Light는 CPU 성능 비용으로 인해 Shadow 비활성화
- Depth Priming Mode = Disabled (얼굴 2D Shadow 생성용)
- Native RenderPass = Off

Project Setting > Player¶
중요 설정:
| 설정 | 값 |
|---|---|
| ColorSpace | Linear |
| GraphicsAPI | DX12 |
| GPU Skinning | Batched |
| Graphics Jobs | enable + Split |
| Scripting Backend | IL2CPP |
| Incremental GC | On |
참고
DX12는 필수는 아니지만 더 빠른 CPU 렌더 루프로 인해 강력히 권장해요. DX12가 작동하지 않으면 DX11로 폴백해요.

Project Setting > Editor¶
| 설정 | 값 | 설명 |
|---|---|---|
| Parallel Import | Off | 활성화하면 NiloToon FBX Prefab이 손상될 수 있습니다 |
| Enter Play Mode Setting | Do not reload Domain or Scene | 필수는 아니지만 Editor에서 Play Mode 진입 시간을 크게 절약. NiloToon은 지원하지만 다른 에셋은 지원하지 않을 수 있으니 주의 |

Project Setting > Quality¶
- Meshes > Skin Weights가 Unlimited인지 확인해 주세요. 캐릭터 스키닝 결과가 향상돼요.

Project Setting > Graphic¶
- Render Graph > Compatibility Mode = On 또는 Off 모두 작동해요. NiloToon 렌더링 결과가 둘 사이에서 다르면 개발팀에 문의해 주세요!
- 더 나은 성능을 위해 Compatibility Mode를 OFF (= RenderGraph ON)로 하는 것을 권장해요.
주의
Unity 6.4에서는 Compatibility Mode가 완전히 제거돼요.

주요 사용 에셋¶
| 번호 | 용도 | 에셋 |
|---|---|---|
| 1 | Character Shader | NiloToon (NiloToon_Character Shader) |
| 2 | Postprocess Volume | NiloToon (Bloom, Tonemapping, Cinematic RimLight 제어, 캐릭터 렌더 제어, Shadow 제어, Motion Blur 등) |
| 3 | 조명 스타일 제어 | NiloToon (NiloToonLightSourceModifier) |
| 4 | Realtime Motion Blur | NiloToon |
| 5 | Offline Motion Blur Baking | NiloToon |
Unity6 소개¶
Unity2022.3에서 Unity6로 업그레이드하려는 경우, 업그레이드 전 참고할 수 있는 주관적인 의견을 공유해요.
어떤 Unity6가 좋은가?¶
UnityHub에서 다운로드할 수 있는 최신 Unity6 LTS를 항상 권장해요. alpha/beta Unity6는 권장하지 않아요.
Unity6 안정성¶
| Unity 버전 | 안정성 |
|---|---|
| Unity2021.3 | 7/10 - 기능이 적어 상당히 안정적 |
| Unity2022.3 | 6/10 - 일부 초기 버전에서는 URP RenderTexture 메모리 누수 및 크래시로 0/10 |
| Unity6000.0 | 8/10 - 2024 Q3부터 사용, 놀랍게도 안정적 |
업그레이드 난이도¶
| 업그레이드 경로 | 난이도 |
|---|---|
| Unity2021.3 → Unity2022.3 | 고통스러움 - RTHandle 및 Renderer Feature 관련 많은 API 변경 |
| Unity2022.3 → Unity6000.0 | 비교적 쉬움 - RenderGraph Compatibility Mode 활성화 시 약간의 API 변경. 'RenderTargetHandle' is obsolete 문제가 발생할 수 있으며, RTHandle API로 업데이트 필요 |
| Unity6000.0 → Unity6000.3 | Renderer Feature가 Render Graph를 지원하지 않는 경우에만 고통스러움. Compatibility Mode가 숨겨지고 Deprecated됨 |
| Unity6000.3 → Unity6000.4 | Renderer Feature가 Render Graph를 지원하지 않는 경우에만 고통스러움. Compatibility Mode가 완전히 제거됨 |
Unity6의 새로운 기능¶
유용한 기능¶
Unity6의 새로운 기능 중 가장 유용한 기능들:
| 기능 | 설명 |
|---|---|
| 6-way Lighting Smoke VFX Graph | 조명에 의해 비추어지는 연기 VFX. 콘서트 프로젝트에서 많이 사용 |
| DX12 Split Graphics Jobs | 훨씬 더 나은 렌더 루프 CPU 성능. 시각적 결과에 부정적 영향 없음 |
| DX12 Graphics Jobs for Editor | Editor에서도 훨씬 더 나은 렌더 루프 CPU 성능 |
| Batched GPU Skinning | 캐릭터 모델에 많은 SkinnedMeshRenderer와 Blendshape가 있을 때 더 나은 GPU 성능 |
| GPU Resident Drawer | 대량 (>10K)의 같은 MeshRenderer를 포함한 GameObject 렌더링 시 CPU 성능 향상 가능. 프레임당 고정 CPU 비용이 있으므로 GPU 인스턴싱이 대량으로 활용되지 않으면 성능이 감소 |
| Adaptive Probe Volumes (APV) | 기존 Light Probe 시스템의 자동 개선 버전. 수동 Light Probe 배치 불필요. 조명 품질이 Renderer당이 아닌 픽셀당으로 향상 |
| Screen Space Lens Flare | 보통 콘서트 조명 효과에 사용 |
| VFX Graph Motion Vectors | 불투명 파티클 (예: 종이 조각)이 Motion Blur/TAA/DLSS에 올바르게 영향을 미치게 함 |
사용하지 않는 기능¶
성능에는 좋지만 대부분의 프로젝트가 PC 플랫폼이므로 더 나은 품질의 대안을 사용해요:
| 기능 | 이유 |
|---|---|
| URP Object Motion Blur | 빠르지만 품질이 충분하지 않음. 더 빠른 GPU 성능이 필요한 경우 (예: 모바일) 사용 가능 |
| STP | 움직임에서 좋지 않음. DLSS/XeSS가 항상 더 나은 시각적 결과. PC 플랫폼이 아닌 경우 (예: 모바일) 시도 가능 |
Unity6 변경 사항¶
NiloToon에 한해서는 Unity6에서 크게 변경된 것이 없어요. Unity2022.3에서 Unity6로 업그레이드한 후 주요 NiloToon 호환성 문제는 없어야 해요.
Unity6에서만 존재하는 NiloToon 개선 사항:
- 더 나은 캐릭터 Motion Vector Pass = 더 나은 올바른 Motion Vector 생성, DLSS/TAA/Motion Blur 시각 결과 향상
- 새로운 NiloToon Motion Blur Volume
Unity6 업그레이드 절차¶
Unity6로 업그레이드하려면 다음을 수행해 주세요:
- 프로젝트 백업 (버전 관리에서 커밋 / 프로젝트 파일 복사)
- 최신 NiloToon으로 업그레이드 (최소 NiloToon 0.16.x 최신)
- Editor에서 플레이하여 모든 것이 예상대로 작동하는지 확인
- 최신 Unity6 LTS로 프로젝트를 다시 시작
- 시각적 문제가 있으면 RenderGraph Compatibility Mode를 활성화/비활성화하여 차이 확인
- 오류 로그 확인 - 프로젝트 내의 일부 에셋/도구가 Unity6에는 너무 오래된 것일 수 있으므로 업데이트
- 남은 오류 로그 확인 - Unity6에는 Breaking C# API 변경이 있지만 많지 않으며 수정이 어렵지 않아야 함
- Editor에서 플레이하여 남은 오류 로그 확인
- 빌드 시도