Skip to content

Mobile and VR Guide

This section covers NiloToon's mobile/VR optimization, the NiloToon(Lite) shader, XR settings, and build procedures.


NiloToon(Lite) - For Mobile/VR

The full version of NiloToonURP contains many features for PC and console. Even if those features are not used on mobile/VR, they add significant rendering overhead.

If the full version of NiloToonURP is too slow for your mobile/VR game project and you are willing to use a shader developed specifically for mobile and VR, try the NiloToon(Lite) shader.

Provided separately to license holders.

Performance Comparison

You can expect 3-5x GPU speed improvement compared to the full version of NiloToonURP.

Shader GPU Cost Example
NiloToonURP (full version) 10ms
NiloToon(Lite) 2-3ms

Scales much better with many characters, objects, and high-resolution rendering.

Advantages

  • An extremely fast shader built on past experience in the mobile game industry. Designed to run well on weak-GPU phones and Quest 2
  • Simpler to use than the full version of NiloToonURP (far fewer features and options)
  • Can be used on all renderers, not just characters

Disadvantages

  • Work in progress and in early development stage. Shader names or property names may change in future updates
  • Very low priority in the development plan. Updates are expected to be very slow
  • Far fewer features than the full version of NiloToon
  • No documentation - only Help Boxes and Tooltips within the Material Inspector
  • Contains only 1 shader and 1 Renderer Feature. No auto-install or auto-setup buttons
  • Not affected by scripts, Renderer Features, or Volumes from NiloToon (full version) - runs as a completely standalone shader outside the full NiloToon system to achieve the best performance

Avoiding LWGUI Duplicates

If your project already has NiloToonURP imported, do not import the LWGUI folder inside the NiloToonURP(Lite) folder when importing NiloToon(Lite). Only one LWGUI is needed.

Minimal Default Settings

NiloToon(Lite) uses minimal default settings (most feature defaults = off). This is because the sole goal is the fastest GPU performance on mobile/VR. Only enable features you truly need in the material. The fewer feature groups you enable, the better the GPU performance.

Material Inspector

NiloToon(Lite) Material Inspector

Rendering Example

NiloToon(Lite) rendering result - multiple characters on mobile

Classic Outline Setup

To create a Classic Outline with NiloToon(Lite), you must manually add the NiloToonLiteRendererFeature. This is not the same Renderer Feature as the full version of NiloToon.

Adding NiloToonLiteRendererFeature

Optimal Performance

If you are using only the Lite shader, it is recommended to disable the full version NiloToonURP Renderer Feature to reduce workload.


Running PCVR in Play Mode

To run PCVR in Play Mode from NiloToon's demo project:

  1. Find Assets/XR/XRGeneralSettingsPerBuildTarget in the Project, click Standalone Settings, and enable Init Manager On Start.

    XR settings

  2. Enable OpenXR in Project Settings under XR Plug-in Management.

    Enable OpenXR

  3. Ensure your VR device (e.g., Quest 2's AirLink/SteamVR/VirtualDesktop) is ready and connected to your PC.

  4. Open a NiloToon scene and click Play in the Editor. You should be able to control camera movement with your headset in the VR device.
  5. You can still change the scene in Play Mode using your mouse (there is no control from VR controllers).

Turning Off VR

To turn off VR, revert all the above changes:

  • Disable Init Manager On Start
  • Or disable OpenXR in XR Plug-in Management

Features Disabled in XR

Some features are disabled in XR as they may be inappropriate:

  • NiloToon Anime PostProcess
  • NiloToon Motion Blur
  • Perspective Removal

Building the Demo Project (APK/iOS)

  1. Switch the platform to Android/iOS.

    Switch platform

  2. (Optional) Exclude NiloToonEnviJPStreetScene from Build Settings. This step can reduce build time and runtime shader memory usage.

    Exclude scene setting

  3. Connect your Android/iOS phone to your computer via USB, then click Build and Run (or Ctrl+B). Ensure USB Debugging is enabled on your Android device.

  4. Results:

    • Android: After the build completes, the .apk will run on your Android phone
    • iOS: Continue the build in the XCode window

Building the Demo Project (Web)

Web build

  1. Switch the platform to Web.

  2. Delete the following folders in the Project window:

    • Assets/MMD4Mecanim
    • Assets/SteamVR
    • Assets/SteamVR_Input
    • Assets/ThirdParty(GitHub)/uLipSync
  3. Click Build and Run (or Ctrl+B).

  4. After the build completes, verify that the demo runs in your web browser.

Loading Issues

If the browser is stuck at loading (0%) after a successful build, close the web page, exclude NiloToonEnviJPStreetScene from Build Settings, and build again.

Note

The VideoPlayer in the Dance! scene (NiloToonDancingDemo) will not work in Web builds. This is expected behavior.


GLES 2.0 Not Supported

NiloToon and URP shaders use the SRP Batcher, so the recommended OpenGLES version is OpenGLES 3.1 or above.

OpenGLES Version Support Status
OpenGLES 3.1+ Recommended
OpenGLES 3.0 Supported (e.g., very old Android devices / WebGL 2.0)
OpenGLES 2.0 No longer supported by NiloToon or Unity2022 LTS