Shadow 설정¶
NiloToon에서의 그림자 렌더링에 관한 종합 가이드예요. NiloToon은 여러 가지 그림자 기법을 제공하며, 각각 다양한 사용 사례에 적합해요.
Shadow 개요¶
NiloToon에서는 캐릭터의 그림자를 다양한 방법으로 제어할 수 있어요:
| 그림자 유형 | 설명 |
|---|---|
| Shadow 2D on Face | 얼굴에 2D 스타일의 그림자를 드리우는 기능. Depth Offset을 사용하여 얼굴 영역에 그림자를 생성해요. |
| NiloToon Self Shadow | NiloToon 전용 Self Shadow Map으로, 캐릭터의 자체 그림자를 렌더링해요. |
| URP Shadow Map | Unity URP의 표준 Shadow Map으로, 다른 오브젝트로부터의 그림자를 수신해요. |
Shadow 2D on Face¶
얼굴에 2D 스타일의 그림자를 드리우는 NiloToon 고유 기능이에요. 이 기능은 Depth Texture에 대한 Depth Offset을 사용하여 얼굴 영역에 그림자를 생성해요.
Rendering Path별 지원 상태¶
| 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인 경우, Depth Priming 후 ZTest가 Equal로 강제 오버라이드되어 이 기능이 작동하지 않아요. Forward/Forward+에서 얼굴의 Shadow 2D를 렌더링해야 하는 경우 Depth Priming을 꺼 주세요.
안경에 의한 2D Shadow¶
기본적으로 NiloToon은 안경에 의해 얼굴에 2D Shadow를 드리워요. 대부분의 경우 이 그림자가 원하지 않는 결과를 만들 수 있어요.
안경에 의한 2D Shadow를 제거하려면 안경 Material에서:
- Is Face? 활성화
- Is Face? > Face Normal fix를 0으로 설정
자세한 내용은 Eyeglasses 설정을 참조해 주세요.
NiloToon Self Shadow¶
NiloToon Self Shadow는 캐릭터 전용 Shadow Map으로, 캐릭터의 자체 그림자를 고품질로 렌더링해요.
Render Face와 Self Shadow¶
NiloToon Self Shadow Map 렌더링 시, 기본적으로 Back Face Only로 렌더링하여 Shadow Acne을 줄여요. 이는 Mesh가 폐쇄형 3D Mesh라는 가정에 기반해요.
단면 Mesh (예: 스커트, 의상)에서 Self Shadow Map이 깨져 보이거나 불완전한 경우:
- Render Face 프리셋을 Both로 변경해 주세요
- 이렇게 하면 완전한 그림자가 렌더링되어 대부분의 문제가 해결돼요
자세한 내용은 Render Face(Cull) 설정을 참조해 주세요.
URP Shadow 수신¶
NiloToon 캐릭터가 다른 Shader의 Shadow Map 그림자를 수신하게 하려면, NiloToon의 Renderer Feature에서 Should Receive URP Shadows를 활성화하세요.
참고
기본적으로 NiloToonSelfShadow가 활성화되어 있으므로 Should Receive URP Shadows는 비활성화되어 있어요.
Self Shadow 제거하고 먼 오브젝트 Shadow만 수신¶
캐릭터의 URP Self Shadow를 제거하고 먼 오브젝트 (예: 건물, 나무)의 Shadow만 수신하려면:
| 설정 | 값 | 설명 |
|---|---|---|
| Depth Bias | 2 | 2m Depth Bias, 모든 캐릭터 Self Shadow 제거에 충분 |
| Normal Bias | 0 | Normal Bias 비활성화. Shadow 구멍 방지 |
자세한 내용은 Renderer Feature - URP Shadow 수신을 참조해 주세요.
Shadow Control Volume¶
Volume에 NiloToonShadowControlVolume을 추가하여 그림자 비주얼을 글로벌로 제어할 수 있어요.
주요 사용법¶
- Shadow Tint Color를 글로벌로 제어해요
- Non Skin/Face에 더 깊은 Shadow Tint Color와 Skin/Face에 더 밝은 Shadow Tint Color를 조합하면 더 좋은 시각적 결과를 얻을 수 있어요
URP Shadow Map 제어¶
캐릭터가 URP의 Shadow Map을 받는 경우:
- Receive URP's Shadow Map > As DirectLight Multiplier: URP Shadow Map이 메인 조명을 얼마나 차단하는지 제어해요
자세한 내용은 NiloToon Volumes - Shadow Control을 참조해 주세요.
Shadow Color (Material)¶
Material의 Shadow Color 그룹에서 그림자 색상을 직접 제어할 수 있어요.
비스킨/비얼굴 영역¶
- Tint Color, HSV Strength, H, S, V 파라미터로 제어
스킨/얼굴 영역¶
- Color Preset, Brightness (Skin Override), Brightness (Face Override)로 제어
팁
- 캐릭터의 2D 아트를 색상 참조로 사용하여 스킨 그림자 색상을 선택하는 것을 권장해요
- Brightness의 일반적인 범위는 0.8~1이에요
자세한 내용은 Material - Shadow Color를 참조해 주세요.
목 그림자 분리 문제¶
얼굴 Material (Is Face 활성화)과 바디 Material (Is Face 비활성화)이 목 주변에서 분리되어 가시적인 그림자 선이 나타나는 문제예요.
해결 방법¶
| 방법 | 설명 |
|---|---|
| 표준 해결 방법 | Is Face의 Mask Map을 사용하여 머리 하단을 Is Face에서 제외 |
| Occlusion Map | 부드러운 그라데이션의 Occlusion Map을 추가하여 목 부분을 그림자로 강제 |
| 간편 해결 방법 | 목 전체를 Is Face로 만들고, 의상이나 액세서리로 그림자 분리 선을 숨김 |
자세한 내용은 Surface Type - 목 그림자 분리 문제를 참조해 주세요.