3D Live/MV Production Tools¶
A list of tools that can be used in 3D Live/Concert MV projects.
DLSS4.5 - AA / 4K Upscale¶
If you are GPU bound, DLSS4.5 is highly recommended for NVIDIA RTX GPUs. It provides the best upscale + anti-aliasing in the RenderScale 0.333 ~ 1 range and replaces URP's Camera AA (FXAA/SMAA/TAA):
- Without upscaling (RenderScale = 1): Use DLSS.NativeAA as a 'much better TAA'
- With upscaling (RenderScale = 0.333 ~ 0.833): Primarily for upscaling to 4K/8K Game Window; lower RenderScale to improve GPU performance
- MSAA can be used together with DLSS4.5 to make the character's Classic Outline more stable, but generally MSAA is unnecessary with DLSS4.5 (heavy VRAM cost with minimal quality improvement)
Recommended Assets¶
| Asset | Description |
|---|---|
| DLSS4.5 | Best graphics result, best AA at RenderScale=1. NVIDIA RTX GPU only |
| XeSS2 | Better visual quality than FSR3, all GPUs (Windows x64, DX12 required) |
| FSR 3 | Decent quality, all GPUs and platforms (except VR & WebGL) |
| SGSR2 Mobile | Mobile upscaling tool |
Planar Reflection¶
Primarily used for rendering sharp, mirror-like reflections on 3D Live concert stage floors.
Pros:
- Can produce perfectly sharp reflections
- No screen space reflection artifacts
Cons:
- Requires an additional camera per planar surface, resulting in high CPU and GPU performance cost
- Blurring reflections incurs additional GPU performance cost
Recommended Assets:
- PIDI : Planar Reflections 6 - URP Edition (recommended solution)
- Mirrors and reflections (better performance possible)
- kMirrors (free)
Screen Space Reflection¶
Used for rendering rough or blurred reflections on 3D Live stage floors. Not limited to a single planar surface; works on any object shape.
Pros:
- Low CPU performance cost
- Scalable GPU performance cost
- Can produce blurry floor reflections
Cons:
- Reflection artifacts when screen information is missing/occluded (inherent screen space limitation)
- Results can be quite noisy
- Higher rendering cost in Forward/Forward+ than Deferred
Recommended Asset:
Volumetric Light & Fog¶
Solutions for volumetric fog/light effects for 3DLive spotlights:
| Asset | Description |
|---|---|
| Volumetric Light Beam | Adds a simple cone effect mesh to spotlights. Easy to control and fast to render. Recommended |
| Volumetric Fog & Mist 2 | Automatically adds volumetric fog to all spotlights. Produces shadow effects when characters block spotlights |
| Volumetric Lights 2 | Similar to Volumetric Light Beam but with more complex options |
| Buto | Volumetric Fog and Volumetric Lighting for URP |
| Lux URP Essentials | Fastest fog shape shader (box/sphere). Used for background gradient fog/light |
Controlling Additive Effects on Character Pixels
To reduce additive effects only on NiloToon character pixels, see the Character Mask section.
VFX Graph - 6-way Lighting¶
A very powerful tool for creating smoke VFX that responds to lighting in concerts.
Light Beam / Laser Performance System¶
Systems for controlling spotlight rotation and light color animation in Timeline.
- Unity_StageLightManeuver (free. Most powerful and complete option, but high CPU cost due to Timeline track updates when using hundreds of spotlights)
- Unity_LightBeamPerformance (free)
Light Timeline Track¶
For simple light color Timeline tracks:
- Default Playables (free. Good example code for writing your own Timeline tools)
Material Timeline Track¶
For Timeline tracks controlling material properties (e.g., emission):
- material-timeline (free)
LaserLightShader¶
Useful for 3DLive stage lighting:
Skylight Window LightShaft Shader¶
Useful for 3DLive stage lighting:
Motion Blur¶
NiloToonMotionBlur Volume is a higher quality alternative to Unity6's URP motion blur.
- For real-time use, NiloToonMotionBlur Volume produces better results but at much higher GPU cost
- For offline video rendering, using Windows/NiloToon/MotionBlurBaker together produces perfect quality motion blur
For details, see NiloToon Motion Blur Tools.
Utility PostProcess¶
| Asset | Description |
|---|---|
| Beautify 3 | Horizontal flare bloom, etc. |
| SC postprocess | Various post-process effects |

Beautify Setup Notes
- Beautify must be placed below NiloToon's renderer feature. Otherwise, NiloToon features like extra thick outline will not work (Beautify may clear stencil buffer values)
- Beautify slightly increases saturation by default just by adding its renderer feature
Bloom with Shape¶
Bloom with glare (e.g., X shape / * sharp / star shape). Suitable for stylized light source bloom and specular reflection bloom:
World Space GI¶
HTrace WSGI is the most stable real-time GI solution in URP. Free from screen space GI limitations, it accurately captures even small or off-screen emissive objects as light sources without noise/ghosting.
- HTrace: World Space Global Illumination URP (recommended. Very high GPU cost but very high quality stable real-time WSGI)
Faster alternatives:
- LUMINA GI (faster. Non-realistic style GI, initial setup can be difficult)
- AdaptiveGI (fastest. Use for mobile targets. Performance-focused but lower GI quality)
Screen Space GI¶
Primarily used for real-time GI in scenes with emissive materials, directional lights, and skyboxes.
- HTrace: Screen Space Global Illumination URP (recommended)
- Radiant Global Illumination (faster but can be noisy)
Radiant GI Setup
When using Radiant Global Illumination, place the Radiant Renderer Feature above NiloToon All In One Renderer Feature to maintain correct NiloToonTonemap ordering.
Ambient Occlusion¶
A slower but much better alternative to URP SSAO. Suitable for character indirect shadows.
- HTrace: Ambient Occlusion URP (recommended. High quality real-time AO at reasonable GPU cost)
- NiloToon character pixels do not receive/display AO, but they do cast AO
- For artifact-free AO, use the RTAO option (requires an RTX card)
Cloth, Hair, Breast Physics¶
- Magica Cloth 2 (recommended solution)
Mouth AIUEO Animation¶
Generates AIUEO mouth shape animation from song audio (baked) or microphone (real-time):
- uLipSync (free)
- Oculus LipSync (free)
Performant Video Player¶
A video player that works with Timeline preview + Recorder. Primarily used for playing video on large screens behind 3D Live stages.
- KlakHap (free. Supports HAP .mov videos only)
For details, see VideoPlayer & Recorder Sync Problem.
UniVRM¶
A tool for importing .vrm as character prefabs. Includes VRM/MToon shader and VRM BlendShapeProxy script.
- UniVRM (free, supports both vrm 0.x and vrm 1.0)
Other Useful Tools¶
| Category | Asset | Description |
|---|---|---|
| Test Animation | Anime Girl Idle Animations Free | Free character idle animations |
| Lightmap Baking | Bakery | GPU Lightmapper |
| IK Animation | Final IK | Runtime IK animation |
| Stage Prefab | Stage Constructor | Concert stage construction |
| Skybox | Fantasy Skybox FREE | Free Skybox |
| Dynamic Skybox | Enviro 3 | Runtime dynamic Skybox |
| FPS Counter | Advanced FPS Counter | FPS overlay |
| Shader Graph Alt. | Amplify Shader Editor | Supplements features missing from Shader Graph |
| Glass Refraction | Reflect It! | URP Glass & Refraction Shader |
| Hierarchy UI | vHierarchy 2 | For organizing complex scenes |
| PMX Conversion | MMD4Mecanim | Converts .pmx to .fbx prefab |
| Volume Animation | AnimatableVolumeComponent | Control Volume profiles via Animation clips |
| Outline Alternative | Pencil+ for Unity | More 2D/anime-style outlines (CPU solution, not suitable for real-time) |
Character Mask Shader Application¶
This section requires basic knowledge of HLSL / CG shader programming.
Prerequisites
NiloToonBloom or NiloToonTonemapping must be enabled, or Force Prepass must be enabled in NiloToonRendererFeature.

Otherwise, NiloToon will not render the global RenderTexture _NiloToonPrepassBufferTex needed for the shader you want to edit.
There are situations where specific additive effects from other assets should not apply to NiloToon character pixels. Such effects can make characters excessively bright, producing poor results.
For example:
- Preventing Volumetric Light Beam / Volumetric Light additive lighting from applying to character pixels
- Preventing Screen Space / World Space GI additive lighting from applying to character pixels
- Preventing AmbientOcclusion color changes from applying to character pixels
- Controlling effect application intensity on character pixels (0%~100%)
You need to modify the shader source code of the target asset (not NiloToon). Add the following HLSL code to the target asset's shader:
// Add above the target shader's fragment shader
TEXTURE2D_X(_NiloToonPrepassBufferTex);
// Add inside the target shader's fragment shader
// Sample NiloToon character mask RenderTexture
half characterArea = SAMPLE_TEXTURE2D_X(_NiloToonPrepassBufferTex, sampler_LinearClamp, uv).g;
// Use character mask to remove/reduce unwanted effects on character pixels
half NiloToonCharacterAreaReceiveEffectStrength = 0; // 0~1 (0% ~ 100%)
anyAdditiveEffect.rgb *= lerp(1, NiloToonCharacterAreaReceiveEffectStrength, characterArea);
VolumetricLightBeam Modification Example¶
In VolumetricLightBeam\Shaders\VolumetricLightBeamSharedHD.cginc > fragShared function:
// Add above the fragment shader
TEXTURE2D_X(_NiloToonPrepassBufferTex);
// Add just before "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 Modification Example¶
In ColorComposeURP.hlsl > "Final Output" pass > FragmentStage function:
// Add above the fragment shader
TEXTURE2D_X(_NiloToonPrepassBufferTex);
// Add just before "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);
Separating Character/Environment Lighting¶
Due to URP's Main Light design, you must use a single Main Light (Directional Light) for both characters and the environment (do not use 2 directional lights on separate layers). This ensures correct character shadows are cast on environment objects (e.g., floors).
Sun Setting¶
In URP:
- If a SunLight (RenderSettings.sun) exists, it is used as URP's Main Light
- If no SunLight exists, the brightest directional light is treated as URP's Main Light

NiloToon requires URP's Main Light information to light characters correctly.
Override via NiloVolume¶
If you need a character-specific lighting direction override, in NiloToonCharRenderingControlVolume's OverrideMain Light Direction section:
- Set Strength to 1
- Set UpDownAngle to a different value (optional)

This overrides the lighting direction for characters only, and the lighting direction is relative to the camera. Think of it as a directional light that is a child of the camera transform.
This is useful when you don't want a fixed world space lighting direction. For example, in game interiors, VTuber 3D Live, and MVs, it keeps character lighting stable and attractive from all camera angles, preventing face shadows.
MainLightOverrider¶
The NiloToonCharacterMainLightOverrider script allows overriding the character's main light color and direction via a game object, without editing URP's directional light.

Treat this NiloToonCharacterMainLightOverrider game object as a Directional Light that only affects NiloToon characters.
If the script doesn't work, try a different Override Timing.


The images above show that NiloToonCharacterMainLightOverrider overrides only the character's lighting color and lighting direction, without affecting the environment or other non-NiloToon shaders.