콘텐츠로 이동

Rendering Path

NiloToon은 URP의 모든 Rendering Path를 지원해요:

  • Forward
  • Forward+
  • Deferred
  • Deferred+ (Unity6.2 이상)

NiloToon의 권장 설정:

  • Rendering Path = Forward / Forward+
  • Depth Priming Mode = Disabled

Rendering Path 설정


조명 제한 사항

  • 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

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 Deferred Stencil 오버라이드

이는 URP의 설계이며, 모든 커스텀 Shader (NiloToon, Amplify Shader Editor, 커스텀 코드 기반 Shader 등)에 적용돼요. URP가 향후 변경하지 않는 한 할 수 있는 것이 없어요.

해결 방법:

불투명 큐 Material (Render Queue <= 2500)에서 Stencil이 필요한 경우:

  • Deferred/Deferred+ 대신 Forward/Forward+를 사용하세요
  • 또는 Material의 Surface TypeTransparent/**로 전환해 보세요
  • 또는 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 TypeTransparent/**로 전환해 보세요
  • 또는 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 활성화 가능

Camera 설정 - TAA Camera 설정 - DLSS

참고

  • 왼쪽 이미지 = 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을 함께 사용할 수 없어요.

URP Asset 설정 1 URP Asset 설정 2


Renderer

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

Renderer 설정


Project Setting > Player

중요 설정:

설정
ColorSpace Linear
GraphicsAPI DX12
GPU Skinning Batched
Graphics Jobs enable + Split
Scripting Backend IL2CPP
Incremental GC On

참고

DX12는 필수는 아니지만 더 빠른 CPU 렌더 루프로 인해 강력히 권장해요. DX12가 작동하지 않으면 DX11로 폴백해요.

Player 설정 1 Player 설정 2


Project Setting > Editor

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

Editor 설정


Project Setting > Quality

  • Meshes > Skin WeightsUnlimited인지 확인해 주세요. 캐릭터 스키닝 결과가 향상돼요.

Quality 설정


Project Setting > Graphic

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

주의

Unity 6.4에서는 Compatibility Mode가 완전히 제거돼요.

Graphic 설정


주요 사용 에셋

번호 용도 에셋
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로 업그레이드하려면 다음을 수행해 주세요:

  1. 프로젝트 백업 (버전 관리에서 커밋 / 프로젝트 파일 복사)
  2. 최신 NiloToon으로 업그레이드 (최소 NiloToon 0.16.x 최신)
  3. Editor에서 플레이하여 모든 것이 예상대로 작동하는지 확인
  4. 최신 Unity6 LTS로 프로젝트를 다시 시작
  5. 시각적 문제가 있으면 RenderGraph Compatibility Mode를 활성화/비활성화하여 차이 확인
  6. 오류 로그 확인 - 프로젝트 내의 일부 에셋/도구Unity6에는 너무 오래된 것일 수 있으므로 업데이트
  7. 남은 오류 로그 확인 - Unity6에는 Breaking C# API 변경이 있지만 많지 않으며 수정이 어렵지 않아야 함
  8. Editor에서 플레이하여 남은 오류 로그 확인
  9. 빌드 시도