Surface Type¶

가장 먼저 확인해야 하는 가장 중요한 설정이에요!
URP Lit Shader의 Surface Type과 유사하게, NiloToon_Character Shader에도 Material 상단에 Surface Type이 있어요.
SurfaceType은 다음 속성의 기본값을 변경해요:
- _SrcBlend (Source Factor)
- _DstBlend (Destination Factor)

- _ZWrite (깊이 버퍼에 쓰기 여부)

- _RenderOutline (Classic Outline 그룹의 토글)

- _AlphaClip (Alpha Clipping 그룹의 토글)

- Render Queue

다른 속성을 편집하기 전에 먼저 Material의 올바른 Surface Type을 선택하는 것을 권장해요.
Opaque/Outline¶
새 Material을 생성할 때의 기본 Surface Type으로, Classic Outline이 포함된 불투명 타입이에요. 대부분의 Material이 이 타입을 사용해요.
사용 예시:
- Outline이 필요하고 반투명이 불필요한 모든 완전 불투명 헤어/바디/스킨/얼굴/의상 Material

| 속성 | 기본값 |
|---|---|
| _SrcBlend | One (1) |
| _DstBlend | Zero (0) |
| _ZWrite | On (1) |
| _RenderOutline | On (1) |
| _AlphaClip | Off (0) |
| Render Queue | 2000 |
Opaque¶
Opaque/Outline과 동일하지만 Outline이 없어요. Outline이 필요 없는 완전 불투명 Material에 적합해요.
사용 예시:
- 눈, 눈썹, 입, 이빨, 손톱, 가는 머리카락, 얇은 의상

| 속성 | 기본값 |
|---|---|
| _SrcBlend | One (1) |
| _DstBlend | Zero (0) |
| _ZWrite | On (1) |
| _RenderOutline | Off (0) |
| _AlphaClip | Off (0) |
| Render Queue | 2000 |
Opaque(Alpha)/Outline¶
Opaque/Outline과 동일하지만 반투명 Alpha Blending을 사용해요. 약간의 반투명 Alpha Blending이 있는 불투명 Material에 적합해요.
사용 예시:
- 반투명 앞머리, Alpha 값이 대체로 높아 시각적으로 Opaque/Outline에 가깝고 Shadow Map을 투사해야 하는 반투명 의상
| 속성 | 기본값 |
|---|---|
| _SrcBlend | Source Alpha (5) |
| _DstBlend | One minus Source Alpha (10) |
| _ZWrite | On (1) |
| _RenderOutline | On (1) |
| _AlphaClip | Off (0) |
| Render Queue | 2499 |
Transparent¶
ZWrite와 Outline이 없는 전통적인 Unity 투명 타입이에요. 대부분의 사용자가 '투명'이라고 이해하는 타입이에요. Outline이 필요 없고 Shadow Map을 투사하지 않는 투명 Material에 적합해요.
사용 예시:
- 안경의 반투명 유리 Material, 이모지, 얼굴 표정, VFX, 얼굴 헤어 그림자 Mesh의 메이크업, 반투명 눈 파트
| 속성 | 기본값 |
|---|---|
| _SrcBlend | Source Alpha (5) |
| _DstBlend | One minus Source Alpha (10) |
| _ZWrite | Off (0) |
| _RenderOutline | Off (0) |
| _AlphaClip | Off (0) |
| Render Queue | 3000 |
주의
이 Material은 Render Queue > 2499로 인해 Depth Texture에 기록되지 않으므로, Depth에 의존하는 효과가 작동하지 않아요 (예: Depth of Field, Decal, SSAO).
Transparent(ZWrite)/Outline¶
전통적인 Unity Transparent와 유사하지만 ZWrite와 Outline이 있어요.
사용 예시:
- Alpha 값이 대체로 매우 낮아 Shadow Map을 투사하지 않아야 하는 반투명 플라스틱 외투/의상
| 속성 | 기본값 |
|---|---|
| _SrcBlend | Source Alpha (5) |
| _DstBlend | One minus Source Alpha (10) |
| _ZWrite | On (1) |
| _RenderOutline | On (1) |
| _AlphaClip | On (1) |
| Render Queue | 3000 |
주의
이 Material은 Render Queue > 2499로 인해 Depth Texture에 기록되지 않으므로, Depth에 의존하는 효과가 작동하지 않아요 (예: Depth of Field, Decal, SSAO).
Outline 및 Alpha Clip 변형¶
다양한 Surface Type 옵션이 있으며, 대부분 Outline (켜기/끄기) 및 AlphaClip (켜기/끄기) 관련 확장 변형이에요.

- Classic Outline을 표시해야 하는 경우 /Outline 접미사가 있는 항목을 선택하세요. 그렇지 않으면 /No Outline 접미사가 있는 항목을 선택하세요.
| 속성 | 값 |
|---|---|
| _ZWrite | On (1) |
| _RenderOutline | On (1) |
- Alpha Clipping (Alpha CutOut)을 적용해야 하는 경우 (CutOut) 접미사가 있는 항목을 선택하세요. 그렇지 않으면 (CutOut) 접미사가 없는 항목을 선택하세요.
| 속성 | 값 |
|---|---|
| _AlphaClip | On (1) |
Render Queue 초기화¶
주의
SurfaceType을 변경하면 Render Queue가 선택한 SurfaceType의 기본 Render Queue로 초기화돼요. 특정 Render Queue가 필요한 경우 SurfaceType 변경 후 반드시 Render Queue를 다시 설정해 주세요!

Config 파일¶
각 SurfaceType의 세부 설정을 확인해야 하는 경우, 프로젝트에서 NiloToonCharacter_SurfaceType_LWGUI_ShaderPropertyPreset를 검색하여 열 수 있어요.
Is Skin? / Is Face?¶

중요한 설정이에요!
스킨과 얼굴 Material은 좋은 외관을 위해 특별한 관리가 필요해요. Material에서 다음 그룹이 이 작업에 유용해요:
- Is Skin?
- Is Face?
설정 및 효과¶
모든 스킨 Material (예: 얼굴, 입, 바디, 손, 다리)을 찾아 Is Skin?을 켜고, 그렇지 않은 것은 꺼 주세요. Material이 스킨과 비스킨 부분을 혼합하고 있다면 Is Skin? > Mask를 사용하여 마스킹하세요.

Is Skin을 활성화하면:
-
Material의 Shadow Color가 Shadow Color 그룹에서 오버라이드된 붉은색 스킨 그림자 색상을 사용해요 (Is Skin 그룹을 켜지 않으면 기본 그림자 색상이 스킨에 적합하지 않을 수 있어요)

참고
Is Skin이 활성화된 Material의 스킨 색상을 편집하려면 Shadow Color > Skin and Face Override를 사용하세요.
모든 얼굴 Material (예: 얼굴, 입, 눈 및 눈썹)을 찾아 Is Face?를 켜고, 그렇지 않은 것은 꺼 주세요. Material이 얼굴과 비얼굴 부분을 혼합하고 있다면 Is Face? > Mask를 사용하여 마스킹하세요.

Is Face를 활성화하면:
- Shader에서 얼굴의 셰이딩 법선을 편집해요 (셰이딩 법선이 평평/둥글게 되며, NiloToonPerCharacterRenderController Script의 fix face normal 슬라이더로 정의돼요)
- 표준 Lighting Style 그룹 대신 Lighting Style (face) 그룹의 값을 사용하도록 오버라이드해요
- Material의 Shadow Color가 Shadow Color 그룹에서 오버라이드된 붉은색 스킨 그림자 색상을 사용해요
주의
- 비스킨 Material에는 Is Skin?을 활성화하지 마세요
- 비얼굴 Material에는 Is Face?를 활성화하지 마세요
ShadowColor 스킨/얼굴¶
Material에서 Skin과 Face 영역을 표시한 후, 다음 섹션에서 스킨 및 얼굴 그림자 색상을 제어할 수 있어요:
Shadow Color > Skin and Face Override
현재 스킨/얼굴 그림자 색상이 마음에 들지 않는다면:
- 적합한 Color Preset (Red/Orange/Purple 및 변형)을 선택하세요. 그림자 색상의 Hue와 Saturation이 정의돼요.
- Brightness / Custom Tint를 스킨과 얼굴 모두에 대해 제어하세요. 그림자 색상을 더 어둡게 만들기 위해 Brightness를 0.8~1로 낮추는 것도 괜찮아요. 특히 남성 캐릭터나 더 사실적인 스타일의 캐릭터에 적합해요.

스킨/얼굴 영역 디버그¶
NiloToon의 디버그 창을 사용하여 캐릭터의 Skin 및 Face 영역을 디버그할 수 있어요. Window > NiloToonURP > Debug Window를 클릭하세요.

- Shading Debug case에서 Is Face 또는 Is Skin을 선택하세요
- Enable Shading Debug? 토글을 활성화하세요

표시된 영역은 흰색으로, 그렇지 않은 영역은 검은색으로 Grayscale 값으로 스킨 및 얼굴 영역을 디버그할 수 있어요.
목 그림자 분리 문제¶
이것은 고급 주제이며, 모델에서 문제가 되지 않는 경우 건너뛸 수 있어요.
표준 해결 방법¶
Is Skin?과 Is Face? 모두 추가 텍스처를 사용하여 Is Skin? 또는 Is Face?로 간주되지 않아야 하는 영역을 마스킹하기 위한 Mask Map 기능이 있어요.

일반적인 문제는 얼굴 Material (IsFace 활성화)과 바디 Material (IsFace 비활성화)이 목 주변에서 분리되어 목 주변에서 그림자가 분리되어 보이는 거예요 (목 영역에 가시적인 선이 나타남).

위 이미지는 목에서 그림자 분리 문제를 보여줘요.

위 이미지는 현재 Is Face 디버그 뷰예요. 머리 하단도 Is Face로 간주되지만 목은 Is Face가 아닌 것을 볼 수 있어요.
일반적인 해결 방법은 추가 Mask Map을 사용하여 머리 하단을 Is Face로 간주하지 않도록 만드는 거예요.

위 텍스처는 얼굴 BaseMap이에요. 아티스트는 보통 머리 하단에 그림자 색상을 페인팅해요.

위 텍스처는 추가 Is Face Mask Map이에요. BaseMap의 그림자 색상/머리 하단이 검은색으로 변환되고 나머지는 흰색으로 변환되어, 머리 하단이 더 이상 Is Face로 간주되지 않아요. 약간의 블러를 추가하면 전환이 더 부드러워져요.
위의 Is Face Mask Map을 할당하면 더 나은 그림자 렌더링 결과를 볼 수 있어요. Directional Light를 회전시켜 모든 조명 조건에서 잘 보이는지 확인해 보세요.


Occlusion Map¶
극단적인 조명 각도와 목 회전에서 목의 Shadow Map이 불안정하거나 날카로운 절단처럼 보일 수 있어요. 이 경우 부드러운 그라데이션의 Occlusion Map을 추가하여 목의 일부를 그림자로 강제할 수 있으며, 문제가 되는 영역을 쉽게 숨길 수 있어요.

위 이미지는 Occlusion Map 추가 전이에요. 3D 모델 형상으로 인해 날카로운 그림자 분리가 보여요.

위 이미지는 Occlusion Map 추가 후예요. 모든 방향의 조명이 잘 보이며, Shadow Map과 완벽하게 조화돼요.

위 이미지는 새로 페인팅된 Occlusion Map이에요.
간편 해결 방법¶
위의 Face Mask나 Occlusion Map은 수동 페인팅이나 PhotoShop, Clip Studio Paint 등의 도구 사용이 필요하여 비아티스트에게는 어려울 수 있어요.
간편 해결 방법의 아이디어는 표준 해결 방법의 반대 방향이에요. 목 전체 Material도 Is Face로 만들어 그림자 분리 선을 숨겨요. 이 방법은 의상이나 칼라 같은 액세서리가 목 하단을 덮고 있을 때만 잘 작동해요. 목 Material의 Is Face Mask를 사용하여 그림자 분리 선이 의상이나 액세서리 아래에서만 나타나도록 해요.

위 이미지에서는 간편 해결 방법을 적용하여 목과 머리 모두 Is Face를 활성화했으며, 그림자 분리 선은 흰색 의상 아래에 숨겨져 있어요.
Shadow Color 동기화¶
모든 얼굴 및 스킨 Material의 그림자 색상이 동일해야 하는 경우, 모든 얼굴 Material과 스킨 Material에 동일한 그림자 색상을 사용해야 해요.
