Package Installation & Setup¶
To use NiloToon's .unitypackage in your existing or new project, follow these steps:
0a. Convert to URP¶
Important Step
Before importing NiloToonURP's .unitypackage, you must ensure your Unity project is using URP.
See the Unity official documentation to learn how to convert a Built-in RP project to a URP project. If URP is not set up, you will see a pink error shader and NiloToon will not compile.
0b. Backup Project¶
(Optional) Before any update, back up your project. Commit using any version control tool such as Unity Version Control, GitHub Desktop, or Plastic SCM, or simply make a copy of your project folder. This ensures you can safely recover if something goes wrong.
1a. Delete Old NiloToon¶
(Optional) To avoid all update problems:
- Open an empty scene in Unity Editor
- Delete your project's existing NiloToonURP folder for a clean reinstall in the next step
Tip
If you are familiar with the update process, deleting the entire NiloToonURP folder may not be necessary. Most of the time, only deleting Assets\NiloToonURP\Editor\ShaderGUI\LWGUI-main is sufficient. However, if NiloToon has changed its internal folder structure, you will need to delete the old NiloToonURP folder completely.

1b. Import .unitypackage¶
Important Step
Import the NiloToonURP_[version].unitypackage.

1c. Auto Dependency¶
(No action needed) NiloToon will automatically install Collections (1.2.4 or higher) via the Package Manager. You do not need to open Package Manager manually.
1d. Auto Install Window¶
Important Step
When the NiloToonURP Auto install window appears, we highly recommend clicking Yes to let NiloToon automatically install all required Renderer Features for your project's active Renderer. (Click No if you prefer to install them manually later)

1e. Render Graph¶
(Unity 6.0 - Unity 6.3 only)
NiloToon works correctly with both Render Graph and Compatibility Mode. If some of your tools do not support Render Graph, you can enable Compatibility Mode:
Project Settings > Graphics > Compatibility Mode = On

Note
In Unity 6.3, URP plans to remove Compatibility Mode, so we recommend keeping Compatibility Mode Off if possible for any projects you plan to upgrade to Unity 6.3 or later. In Unity 6.4, Compatibility Mode is completely removed, and only Render Graph can be used.
1f. Preserve Config in HLSL¶
Tip
In most cases, this step is not required, so you can safely skip it. It is only needed if you are using VertExmotion with NiloToon.
(Optional) If you need VertExmotion to work with NiloToon, open NiloToonCharacter_ExtendDefinesForExternalAsset.hlsl and re-enable the required settings.
1g. Restart Unity¶
Important Step
Basic NiloToon file installation and update is complete. We recommend restarting the editor to ensure NiloToon update correctness.
2a. Retrigger Auto Install¶
(Only if you clicked No in step 1d)

Click Window > NiloToonURP > Auto Install RendererFeatures to let NiloToon automatically add all Renderer Features again.
2b. Manually Add NiloRendererFeature¶
(If you skipped both step 1d and step 2a)
If you do not want NiloToon to auto-install Renderer Features, you can add them manually. Select your active URP 3D Renderer (search for t:UniversalRendererData in the Project window) and manually add NiloToonAllInOneRendererFeature.

Note
You should also add NiloToonAllInOneRendererFeature to other active Renderers if needed. For example, there may be separate Renderers for each quality setting in Project Settings > Quality.
3a. Disable Parallel Import¶
Very Important Step
Set Project Settings > Editor > Asset Pipeline > Parallel Import = false. Otherwise, Prefabs generated from .fbx files may become invalid. NiloToon requires single-thread (non-parallel) FBX import.

3b. Disable Depth Priming¶
Very Important Step
Select all URP Renderers that use NiloToonAllInOneRendererFeature. (Search for t:UniversalRendererData in the Project window)
Apply the following settings:
- Depth Priming Mode = Disabled (if not disabled, face materials using NiloToon_Character shader cannot render 2D Shadow on the face)
- NativeRenderPass = Off (NiloToon Renderer Feature may not work correctly with NativeRenderPass)

4a. Add VolumePresetPicker¶
(Optional) Add a NiloToonVolumePresetPicker to the scene:
+ > Volume > NiloToon > NiloToonVolumePresetPicker

NiloToonVolumePresetPicker allows you to pick a Volume from a group of Volume presets provided by NiloToon. After the setup in the later steps is complete, you can try different Volumes when setting up your character. Picking Volume ID = 1 or 2 (Nilo001 or Nilo002) is a good starting choice.
- Drag Volume ID or click Next/Previous to switch between Volume presets
- Drag Weight to control the effect intensity

Tip
If you want to use or edit a Volume, always clone the Volume Profile as your own Volume Profile asset. This prevents future NiloToon updates from overwriting your Volume Profile edits inside the NiloToonURP folder.
Concert Volume
If you are looking for a Volume for concerts, try starting with: Nilo032-Concert005v2_StyleDark_ACES_AnyMainLightIntensity(NiloToonVolumePreset) - ID = 032 in NiloToonVolumePresetPicker
4b. NiloToon Tonemap¶
Disable URP Tonemap¶
Very Important Step
We highly recommend always disabling URP Tonemapping in your Post-process Volume Profile. (Check the Volume in your scene, the default Volume settings in the URP Asset, and Project Settings > Graphics)

Technically there is no conflict with NiloToon, but URP Tonemapping usually destroys your character's NPR color design, especially ACES. In the VTuber/idol industry, since the character usually has a much higher priority than the environment, it is very common to disable tone mapping completely to protect the character's original NPR color design, so the 3D character model's color looks similar to the Live2D reference color or the 3D BaseMap color.
Note
You can keep URP Tonemapping turned on if tone mapping is needed in your project, although we do not recommend it. If possible, use NiloToon Tonemapping to produce better tone mapping results for both the character and the environment.
Use NiloToon Tonemap¶
It is perfectly fine to not use any tone mapping if you control the lighting intensity carefully (keeping it low enough to avoid clamping). You can skip this section if enabling tone mapping is not helpful in your project.
If tone mapping is absolutely needed for a realistic PBR environment (e.g., your scene has very bright HDR volumetric light beams), and URP Tonemapping makes your character color look dirty and bad, you can disable URP Tonemapping and use NiloToonTonemapping instead.

NiloToonTonemapping is similar to URP Tonemapping, but provides extra options and controls, and does not apply to NiloToon character areas by default.
For example, when using URP's Tonemapping(ACES), the environment looks great but the character color becomes dark, gray, desaturated, and unappealing:

(Image above = using URP Tonemapping(ACES), skin color is not ideal, gray and dark)
Switching to NiloToonTonemapping(ACES), tone mapping will not apply to the character area by default, but still affects other non-character areas as usual, which greatly improves the character's color result:

(Image above = character color becomes much better after switching from URP Tonemapping(ACES) to NiloToonTonemapping(ACES))
Note
Applying tone mapping to non-character areas only may make the character area appear overly bright compared to the environment, especially when additive effects like volumetric light beams, volumetric fog, or HDR particles are applied on top of the character. For solutions, see Nilo Neutral Setup or Nilo Hybrid ACES Setup.
Nilo Neutral Setup¶
If you need to apply the exact same tone mapping to both environment and character, and the HDR range/light intensity is not very high, try these first:
- Use KhronosPBRNeutral or NiloNPRNeutral
- Set Intensity (Tonemap) > Chara to 1

(Images above show an example of applying KhronosPBRNeutral or NiloNPRNeutral to the whole screen. Setting Intensity(Tonemap) > Chara to 1 applies the same tonemapping to both non-character and character pixels)
These tone mapping modes are designed to produce a result color that is closer to no tone mapping, with the disadvantage of only supporting a very limited HDR brightness range.
Nilo Hybrid ACES Setup¶
If you need ACES for a realistic PBR scene (e.g., realistic 3D live concert or Archviz scene) with extremely bright HDR lights, light beams, smoke, and volumetrics, we recommend NiloToon Hybrid ACES:
- Use NiloToon Hybrid ACES
- Set Intensity (Tonemap) > Chara to 1

Using the above setup means:
- Applying ACES to non-character pixels = great for PBR or realistic environment pixels
- Applying NiloToon Hybrid ACES to character pixels = produces much better character colors in the LDR range compared to regular ACES, and produces colors similar to regular ACES in the HDR range
You can also edit Pre-Tonemap Brightness, which is a simple brightness multiplier (a.k.a. Exposure) applied right before tonemapping. It is typically used to bring the brightness/color of non-character and character pixels closer to each other, helping the character merge more naturally into a realistic scene.
Recommended Concert Volume
Try this Volume preset first: Nilo032-Concert005v2_StyleDark_ACES_AnyMainLightIntensity(NiloToonVolumePreset) - ID = 032 in NiloToonVolumePresetPicker. It is a generic Volume for concerts with bright volumetric spot lights and emissive surfaces. We typically copy this as a starting Volume and edit the copy for each concert.
Limitations¶
When using NiloToonTonemapping in any mode other than None, the following rules must be observed:
- Do not use URP's Tonemapping
- Use NiloToon's Bloom instead of URP's Bloom
Using URP's Bloom when NiloToonTonemapping is active will result in the Bloom effect being significantly reduced.
Technical Reason
The rendering order is as follows:
- URP renders all 3D objects' HDR color as usual (result: HDR)
- NiloToon applies NiloToonBloom on top of the HDR color (result: still HDR)
- NiloToon applies NiloToonTonemapping (result: LDR)
- URP applies Bloom - using LDR as input but expecting HDR input (this is why URP Bloom is significantly reduced)
- URP applies Tonemapping - using LDR as input but expecting HDR input (this is why URP Tonemapping should be disabled when using NiloToon Tonemapping)
5. Project Setup Complete¶
Per-project setup is complete. Now you should focus on Set Up a New Character (Auto) and the Volume Profile. We recommend doing a quick and minimal character setup first, then placing your character prefab in the target environment to get an early look at the overall color.