3D Live/MV 제작 도구¶
3D Live/Concert MV 프로젝트에서 사용할 수 있는 도구 목록이에요.
DLSS4.5 - AA / 4K Upscale¶
GPU bound 상태라면, NVIDIA RTX GPU를 사용하는 경우 DLSS4.5를 강력히 권장해요. RenderScale 0.333 ~ 1 범위에서 최고의 upscale + anti-aliasing 도구이며, URP의 Camera AA(FXAA/SMAA/TAA)를 대체해요:
- Upscaling 없이 사용 시 (RenderScale = 1): DLSS.NativeAA를 '훨씬 나은 TAA'로 사용할 수 있어요
- Upscaling과 함께 사용 시 (RenderScale = 0.333 ~ 0.833): 주로 4K/8K Game Window로 upscale할 때 사용하며, RenderScale을 낮춰 GPU 성능을 향상시킬 수 있어요
- MSAA를 DLSS4.5와 함께 사용하여 캐릭터의 Classic Outline을 더 안정적으로 만들 수 있지만, 일반적으로 DLSS4.5 사용 시 MSAA는 불필요해요 (VRAM 부담이 크고 품질 향상은 적음)
추천 에셋¶
| 에셋 | 설명 |
|---|---|
| DLSS4.5 | 최고 그래픽 결과, RenderScale=1에서 최고 AA. NVIDIA RTX GPU 전용 |
| XeSS2 | FSR3보다 나은 시각적 품질, 모든 GPU(Windows x64, DX12 필요) |
| FSR 3 | 괜찮은 품질, 모든 GPU 및 플랫폼 (VR & WebGL 제외) |
| SGSR2 Mobile | 모바일용 upscale 도구 |
Planar Reflection¶
3D Live 콘서트 스테이지 바닥의 거울과 같은 선명한 반사 렌더링에 주로 사용돼요.
장점:
- 완벽하게 선명한 반사를 생성할 수 있어요
- Screen space reflection의 아티팩트가 없어요
단점:
- 각 평면 표면에 추가 카메라가 필요하여 CPU와 GPU 성능 비용이 높아요
- 반사를 흐리게 하면 추가 GPU 성능 비용이 발생해요
추천 에셋:
- PIDI : Planar Reflections 6 - URP Edition (권장 솔루션)
- Mirrors and reflections (더 나은 성능 가능)
- kMirrors (무료)
Screen Space Reflection¶
3D Live 스테이지 바닥의 거칠거나 흐린 반사 렌더링에 사용돼요. 단일 평면 표면에 국한되지 않으며, 모든 형태의 오브젝트에 사용할 수 있어요.
장점:
- 낮은 CPU 성능 비용
- 확장 가능한 GPU 성능 비용
- 흐린 바닥 반사 생성 가능
단점:
- 화면에 누락/차단된 정보가 있을 때 반사 아티팩트 발생 (screen space 방식의 한계)
- 결과가 상당히 노이즈할 수 있음
- Forward/Forward+에서 Deferred보다 렌더링 비용이 높음
추천 에셋:
Volumetric Light & Fog¶
3DLive 스포트라이트용 volumetric fog/light가 필요한 경우 사용할 수 있는 솔루션이에요:
| 에셋 | 설명 |
|---|---|
| Volumetric Light Beam | 스포트라이트에 간단한 cone 효과 메시 추가. 제어가 쉽고 빠른 렌더링. 권장 |
| Volumetric Fog & Mist 2 | 모든 스포트라이트에 자동으로 volumetric fog 추가. 캐릭터가 스포트라이트를 가릴 때 그림자 효과 |
| Volumetric Lights 2 | Volumetric Light Beam과 유사하지만 더 복잡한 옵션 제공 |
| Buto | URP용 Volumetric Fog 및 Volumetric Lighting |
| Lux URP Essentials | 가장 빠른 fog shape shader (box/sphere). 배경 gradient fog/light에 사용 |
캐릭터 픽셀에 대한 additive 효과 제어
NiloToon 캐릭터 픽셀에 대한 additive 효과만 줄이고 싶다면 캐릭터 마스크 섹션을 참조해 주세요.
VFX Graph - 6-way Lighting¶
콘서트에서 조명에 반응하는 연기 VFX를 만드는 데 매우 강력한 도구이에요.
Light Beam / Laser Performance System¶
Timeline에서 스포트라이트 회전과 조명 색상 애니메이션을 제어하는 시스템이에요.
- Unity_StageLightManeuver (무료. 가장 강력하고 완전한 옵션이지만, 수백 개의 스포트라이트 사용 시 Timeline track 업데이트로 인해 CPU 비용이 높음)
- Unity_LightBeamPerformance (무료)
Light Timeline Track¶
간단한 조명 색상 Timeline track만 필요한 경우:
- Default Playables (무료. 자체 Timeline 도구를 작성하기 위한 좋은 예제 코드)
Material Timeline Track¶
머티리얼 속성(예: emission)의 Timeline track이 필요한 경우:
- material-timeline (무료)
LaserLightShader¶
3DLive 스테이지 조명에 유용해요:
Skylight Window LightShaft Shader¶
3DLive 스테이지 조명에 유용해요:
Motion Blur¶
NiloToonMotionBlur Volume은 Unity6의 URP motion blur보다 높은 품질의 대안이에요.
- 실시간 사용 시, NiloToonMotionBlur Volume이 더 나은 결과를 제공하지만 GPU 비용이 훨씬 높아요
- 오프라인 영상 렌더링 시, Windows/NiloToon/MotionBlurBaker도 함께 사용하면 완벽한 품질의 motion blur를 생성해요
자세한 내용은 NiloToon Motion Blur 도구를 참조해 주세요.
Utility PostProcess¶
| 에셋 | 설명 |
|---|---|
| Beautify 3 | 수평 플레어 형태의 bloom 등 |
| SC postprocess | 다양한 포스트 프로세스 효과 |

Beautify 설정 주의
- Beautify는 NiloToon의 renderer feature 아래에 배치해야 해요. 그렇지 않으면 extra thick outline 같은 NiloToon 기능이 작동하지 않아요 (Beautify가 stencil buffer 값을 클리어할 수 있기 때문)
- Beautify는 renderer feature를 추가하는 것만으로도 기본적으로 채도가 약간 증가해요
Bloom with Shape¶
Glare가 있는 Bloom (예: X 형태 / * Sharp / Star 형태). 스타일라이즈드 광원 bloom과 specular reflection bloom에 적합해요:
World Space GI¶
HTrace WSGI는 URP에서 가장 안정적인 실시간 GI 솔루션이에요. Screen space GI의 한계가 없으며, 작거나 화면 밖의 emissive 오브젝트도 노이즈/고스팅 없이 정확하게 광원으로 캡처해요.
- HTrace: World Space Global Illumination URP (권장. 매우 높은 GPU 비용이지만 매우 높은 품질의 안정적인 실시간 WSGI)
더 빠른 대안:
- LUMINA GI (더 빠름. 사실적 스타일이 아닌 GI, 초기 설정이 어려울 수 있음)
- AdaptiveGI (가장 빠름. 모바일 타겟 시 사용. 성능 중심이지만 GI 품질은 낮음)
Screen Space GI¶
주로 emissive 머티리얼, directional light, skybox가 있는 씬의 실시간 GI에 사용돼요.
- HTrace: Screen Space Global Illumination URP (권장)
- Radiant Global Illumination (더 빠르지만 노이즈할 수 있음)
Radiant GI 설정
Radiant Global Illumination을 사용할 경우, Radiant Renderer Feature를 NiloToon All In One Renderer feature 위에 배치하여 NiloToonTonemap 순서를 올바르게 유지해 주세요.
Ambient Occlusion¶
URP SSAO의 대안으로, 느리지만 훨씬 좋은 결과를 제공해요. 캐릭터의 간접 그림자에 적합해요.
- HTrace: Ambient Occlusion URP (권장. 합리적인 GPU 비용으로 고품질 실시간 AO)
- NiloToon 캐릭터 픽셀은 AO를 받지/표시하지 않지만, AO를 캐스팅해요
- 아티팩트 없는 AO가 필요하면 RTAO 옵션을 사용해 주세요 (RTX 카드 필요)
Cloth, Hair, Breast Physics¶
- Magica Cloth 2 (권장 솔루션)
Mouth AIUEO Animation¶
노래 오디오(bake) 또는 마이크(실시간)에서 AIUEO 입 모양 애니메이션을 생성해요:
- uLipSync (무료)
- Oculus LipSync (무료)
Performant Video Player¶
Timeline preview + Recorder와 함께 작동하는 영상 플레이어이에요. 주로 3D Live 스테이지 뒤의 대형 스크린에 영상을 재생하는 데 사용돼요.
- KlakHap (무료. HAP .mov 영상만 지원)
자세한 내용은 VideoPlayer & Recorder 동기화 문제를 참조해 주세요.
UniVRM¶
.vrm을 캐릭터 prefab으로 가져오는 도구이에요. VRM/MToon shader와 VRM BlendShapeProxy 스크립트를 포함해요.
- UniVRM (무료, vrm 0.x 및 vrm 1.0 모두 지원)
기타 유용한 도구¶
| 카테고리 | 에셋 | 설명 |
|---|---|---|
| 테스트 애니메이션 | Anime Girl Idle Animations Free | 무료 캐릭터 아이들 애니메이션 |
| Lightmap Baking | Bakery | GPU Lightmapper |
| IK Animation | Final IK | 런타임 IK 애니메이션 생성 |
| 스테이지 Prefab | Stage Constructor | 콘서트 스테이지 제작용 |
| Skybox | Fantasy Skybox FREE | 무료 Skybox |
| 동적 Skybox | Enviro 3 | 런타임 동적 Skybox |
| FPS Counter | Advanced FPS Counter | FPS 오버레이 |
| Shader Graph 대안 | Amplify Shader Editor | Shader Graph에 없는 기능 보완 |
| 유리 굴절 | Reflect It! | URP Glass & Refraction Shader |
| Hierarchy UI | vHierarchy 2 | 복잡한 씬 정리용 |
| PMX 변환 | MMD4Mecanim | .pmx를 .fbx prefab으로 변환 |
| Volume 애니메이션 | AnimatableVolumeComponent | Animation clip으로 Volume profile 제어 |
| 아웃라인 대안 | Pencil+ for Unity | 더 2D/애니메 스타일의 아웃라인 (CPU 솔루션, 실시간 부적합) |
캐릭터 마스크 Shader 적용¶
이 섹션은 HLSL / CG shader 프로그래밍에 대한 기본 지식이 필요해요.
전제 조건
NiloToonBloom 또는 NiloToonTonemapping이 활성화되어 있거나, NiloToonRendererFeature에서 Force Prepass가 활성화되어 있어야 해요.

그렇지 않으면 NiloToon이 편집하려는 shader용 global RenderTexture _NiloToonPrepassBufferTex를 렌더링하지 않아요.
다른 에셋의 특정 additive 효과가 NiloToon 캐릭터 픽셀에 적용되지 않도록 해야 하는 상황이 있어요. 이러한 효과는 캐릭터를 과도하게 밝게 만들어 좋지 않은 결과를 초래해요.
예를 들어:
- Volumetric Light Beam / Volumetric Light의 additive lighting이 캐릭터 픽셀에 적용되지 않도록
- Screen Space / World Space GI의 additive lighting이 캐릭터 픽셀에 적용되지 않도록
- AmbientOcclusion의 색상 변경이 캐릭터 픽셀에 적용되지 않도록
- 캐릭터 픽셀에 대한 효과 적용 강도를 제어 (0%~100%)
대상 에셋(NiloToon이 아닌)의 shader 소스 코드를 수정해야 해요. 다음 HLSL 코드를 대상 에셋의 shader에 추가해 주세요:
// 대상 shader의 fragment shader 위 아무 곳에나 추가
TEXTURE2D_X(_NiloToonPrepassBufferTex);
// 대상 shader의 fragment shader 내부에 추가
// NiloToon 캐릭터 마스크 RenderTexture 샘플링
half characterArea = SAMPLE_TEXTURE2D_X(_NiloToonPrepassBufferTex, sampler_LinearClamp, uv).g;
// 캐릭터 마스크를 사용하여 캐릭터 픽셀에 대한 원치 않는 효과 제거/감소
half NiloToonCharacterAreaReceiveEffectStrength = 0; // 0~1 (0% ~ 100%)
anyAdditiveEffect.rgb *= lerp(1, NiloToonCharacterAreaReceiveEffectStrength, characterArea);
VolumetricLightBeam 수정 예시¶
VolumetricLightBeam\Shaders\VolumetricLightBeamSharedHD.cginc > fragShared 함수에서:
// fragment shader 위에 추가
TEXTURE2D_X(_NiloToonPrepassBufferTex);
// "return color;" 바로 위에 추가
float2 uv = i.projPos.xy / i.projPos.w;
half characterArea = SAMPLE_TEXTURE2D_X(_NiloToonPrepassBufferTex, sampler_LinearClamp, uv).g;
half NiloToonCharacterAreaReceiveEffectStrength = 0; // 0~1 (0% ~ 100%)
color *= lerp(1, NiloToonCharacterAreaReceiveEffectStrength, characterArea);
HTrace SSGI/WSGI 수정 예시¶
ColorComposeURP.hlsl > "Final Output" pass > FragmentStage 함수에서:
// fragment shader 위에 추가
TEXTURE2D_X(_NiloToonPrepassBufferTex);
// "float3 FinalIndirectLighting = ..." 바로 위에 추가
half characterArea = SAMPLE_TEXTURE2D_X(_NiloToonPrepassBufferTex, sampler_LinearClamp, input.TexCoord).g;
half characterAreaReceiveGIStrength = 0; // 0~1 (0% ~ 100%)
IndirectLighting.rgb *= lerp(1, characterAreaReceiveGIStrength, characterArea);
캐릭터/환경 조명 분리¶
URP의 Main Light 설계로 인해, 캐릭터와 환경에 단일 Main Light (Directional light)를 사용해야 해요 (분리된 레이어로 2개의 directional light를 사용하지 마세요). 이렇게 해야 환경 오브젝트(예: 바닥)에 올바른 캐릭터 그림자가 캐스팅돼요.
Sun 설정¶
URP에서:
- SunLight(RenderSettings.sun)이 있으면, URP의 Main Light로 사용돼요
- SunLight가 없으면, 가장 밝은 directional light가 URP의 Main Light로 처리돼요

NiloToon은 캐릭터를 올바르게 라이팅하기 위해 URP의 Main Light 정보가 필요해요.
NiloVolume을 통한 오버라이드¶
캐릭터 전용 조명 방향 오버라이드가 필요한 경우, NiloToonCharRenderingControlVolume의 OverrideMain Light Direction 섹션에서:
- Strength를 1로 설정해요
- UpDownAngle을 다른 값으로 설정해요 (선택)

이렇게 하면 캐릭터에만 조명 방향이 오버라이드되며, 조명 방향은 카메라에 상대적이에요. 카메라 트랜스폼의 자식인 directional light를 상상하면 돼요.
이 설정은 고정된 world space 조명 방향을 원하지 않을 때 유용해요. 예를 들어 게임 실내 환경, VTuber 3D Live, MV에서 캐릭터 조명을 모든 카메라 앵글에서 안정적이고 좋게 유지하고, 얼굴 그림자를 방지하는 데 적합해요.
MainLightOverrider¶
NiloToonCharacterMainLightOverrider 스크립트는 URP의 directional light를 편집하지 않고도, 게임 오브젝트를 통해 캐릭터의 main light 색상과 방향을 오버라이드할 수 있어요.

이 NiloToonCharacterMainLightOverrider 게임 오브젝트를 NiloToon 캐릭터에만 영향을 미치는 Directional Light로 취급할 수 있어요.
스크립트가 작동하지 않으면, 다른 Override Timing을 사용해 보세요.


위 이미지는 NiloToonCharacterMainLightOverrider가 캐릭터의 조명 색상과 조명 방향만 오버라이드하고, 환경이나 다른 non-NiloToon shader에는 영향을 미치지 않는 것을 보여줘요.