Open-source project
JasonMa0012/MooaToon avatar
JasonMa0012/MooaToon

MooaToon: toon rendering and outlines for Unreal Engine 5

The Ultimate Solution for Cinematic Toon Rendering in UE5

754 stars82 forksPythonNOASSERTION

At a glance

What is it?
MooaToon is an Unreal Engine 5 plugin that puts a toon shading system, a screen space outline, and a cinematic post chain under the control of a material editor, with Lumen and shadow parameters exposed as artist-facing controls. It ships as a Windows batch install workflow against a custom engine build, and it is distributed under a custom licence rather than an open source one.
Who is it for?
Use MooaToon if you are shipping a stylised Unreal Engine 5 project and want toon shading, outlines and a cinematic post chain without building all of that from scratch in the shader editor. Do not adopt it expecting an open source plugin, because the repository publishes a custom licence on the vendor's own site, and note that the installation path is a set of Windows batch scripts that install Git, Visual Studio and a custom engine build, which is a heavy setup.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 37 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 25, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A toon shading system aimed at UE5's weak points

MooaToon describes itself as a plugin that aims to completely solve the shortcomings of UE5 toon rendering, combining UE5 built-in lighting features with a powerful shading system to unlock the potential of artists. The project description is bilingual, with the Chinese text making the same point about addressing the pain points of three-render-two in UE5.

The scope is a rendering stack rather than a single shader. It covers lighting, shadows, translucency, the shaders themselves, outlines, post processing and a few odds and ends, and it is aimed at Unreal Engine 5 with a topic list that names Lumen, ray tracing, cel shading and toon shading explicitly.

The homepage is mooatoon.com, the primary language of the repository is Python, which reflects the tooling rather than the shader code, and the release tags follow a scheme of engine version plus date, with 5.7-2026.09.10 as the most recent. The repository is not archived and the last push was on 2026-09-18.

The claim worth examining is the Lumen and shadow part. Stylised rendering and modern real-time global illumination have usually been in tension, because toon shading wants discrete, controlled bands of light while Lumen wants a continuous solution. MooaToon's approach is to keep Lumen in the pipeline and expose its intensity and blending as artist controls, which is a different bargain from switching global illumination off.

Lighting and shadow parameters handed to the artist

The lighting section of the feature list is where the plugin's approach to real-time rendering shows.

Under Lumen, there is free control of global illumination intensity and blending, and free control of reflection intensity. Under shadow, there is Virtual Shadow Map support and ray traced shadow support, and the ray traced path adds support for ignoring arbitrary partial self-shadow and a controllable hair shadow width.

The self-shadow control and the hair shadow width are the two that stand out for a character-focused stylised project. Partial self-shadowing is one of the artefacts that makes a stylised render look wrong, because a hard toon terminator on a face is not a stylistic choice but a shadow bias problem. Hair shadow width matters for the same reason: toon hair usually wants a solid, readable shadow shape rather than the thin, noisy one a physically based setup produces.

The translucency section is similarly concrete. There is forward shading for lit transparent surfaces, dithered opacity, and dithered translucency shadow. Dithered opacity is the standard trick for a transparent surface that still has to write depth, so it can be sorted and receive shadows in a deferred renderer, and the dithered translucency shadow is the same idea applied to the light passing through a leaf or a piece of cloth.

The result is a lighting model that a stylised project can steer without abandoning the engine's own renderer.

The shader layer: two art directions in one graph

The shading system is described as combining freely through a Material Layer, and it can create materials containing a specific set of features.

The first of those features is a choice between two art directions. The Japanese animation style is mainly pure colour, fast and clear light and shadow, and is often used to restore animation and hand-painted effects. The American cartoon style usually uses global illumination with a softer shading. Those are recognisably different looks, and building them in the stock engine means rewriting the shaders from scratch each time.

The second group is customisation: base colour, shadow colour and specular colour are all adjustable, and there is a customisable light and shadow range, with support for a Ramp Map still listed as a to-do. Highlight range is adjustable too, with support for anisotropic highlight, and there is a Kajiya-Kay based dynamic stylised hair highlighter, which is the classic hair shading model adapted for a toon look rather than a physically based one.

The remaining features are aimed at production. There is a per light screen space depth test rimlight, which lets a rim light appear only where the geometry is thin enough, and a face shadow based on spherical mapped vertex normal, normal map or another method, which is how a toon character gets a clean shadow across the eyes and nose without a shadow map.

The README's last word on the shading system is that you can freely create and modify any feature you need in the editor, which is the right goal for a system that has to be extended per project.

Outlines by overlay material, front and back

Outlines are handled with a single overlay material rather than by a post process, and the plugin offers two ways to draw them.

The traditional option is a back face outline, where the mesh is expanded and inverted so the silhouette shows. The other is a screen space depth normal convolution based front face outline, which works from the depth and normal buffers and therefore does not need extra geometry.

The screen space option comes with two production details that make the difference between a usable outline and a demo. It outputs velocity, so the outline can be used with TSR anti-aliasing, which is how it avoids the shimmering that plagues naive screen space outlines when the camera moves. And there is a one-click baking tool for smooth normal, because a depth and normal convolution outline is only as clean as the normal buffer it reads, and the default vertex normals are often too noisy for it.

For the normal problem specifically, the plugin ships a Houdini sample file for handling normals and vertex colours, which tells you the intended workflow: preprocess the mesh, bake the smooth normals, then let the screen space outline read the improved buffer.

The references table credits VRM4U by ruyo and UnityChan by UTJ and UCL, which is a pointer to the character and hair assets the workflow was designed around.

Installing it: a set of numbered Windows batch files

There is no pip install and no plugin marketplace entry in the README. The installation path is a collection of numbered batch scripts at the repository root, and the numbering is a task list.

The early scripts set up the machine rather than the plugin. _0_0_Install_Latest_MooaToon_Precompiled_And_Override_All_Modified_Files.bat installs the latest precompiled version, _0_1_Run_MooaToon_Precompiled_Project.bat runs the precompiled project, and _0_2_Set_CMD_And_Git_Proxy.bat and _0_3_Cancel_CMD_And_Git_Proxy.bat set and unset a proxy for the command line and for Git, which is a strong hint about the network conditions the installer expects.

Then there are machine preparation steps: _1_1_Install_Git.bat, _1_2_Install_VisualStudio.bat and _1_3_Restart_Computer.bat. The main installation is _2_0_Install_And_Run_MooaToon.bat, followed by _2_1_Install_MooaToon_Engine.bat, _2_2_Install_MooaToon_Project.bat, _2_3_Setup_Unreal_Engine.bat and _2_4_Fetch_Fastest_Github_IPs.bat.

From there the workflow is update, clean, branch switch and build. There are _3_0_Update_And_Run_MooaToon.bat and separate engine and project update scripts, clean scripts for both, and _3_7_Switch_Engine_Branch.bat and _3_8_Switch_Project_Branch.bat. The build group starts at _4_0_Build_And_Run_MooaToon.bat with a debug variant, and separate engine build and installed build and run scripts.

The existence of an engine install and update script, and of branch switching for the engine separately from the project, is the key structural fact. This plugin expects a matching, custom Unreal Engine build, not a stock installation.

Cinematic post effects and a LookDev tool

The post processing section is short but addresses a real gap in stylised work, where a toon render often looks flat once it reaches the camera.

There is correct automatic exposure and manual exposure, so you can choose whether the camera behaves like a physical camera or like an animator's exposure decision, and a globally controlled exposure compensation. There is globally controlled saturation, contrast and other adjustments, and a LookDev tool for checking how the shading reads under different lighting.

The miscellaneous section has one entry, morph targets normal intensity, which handles the case where a character's face blends between shapes and the normals need to be scaled to keep the shading consistent.

Taken together, the plugin is a pipeline opinion rather than a set of disconnected shaders. Lighting, shadow, shading, outline and post are all meant to be adjusted from the same place, and the toon look is produced by steering the engine's own renderer rather than by replacing it, which is the difference between a plugin that survives an engine upgrade and one that does not.

Licensing, references and what is still missing

The licence is not an open source one. The README links to mooatoon.com/docs/Licence rather than embedding a licence file summary, and the repository is classified as having a custom licence that GitHub cannot categorise. The LICENSE file sits in the repository root, and the README points at the vendor's own documentation as the authoritative statement, so anyone planning to ship a project using this plugin needs to read that page.

The references are the toon-style assets the workflow was built against. VRM4U by ruyo, and UnityChan, copyright UTJ and UCL, are the standard VRM and anime character models that most toon shader experiments start from, and the Houdini sample file for normals and vertex colours is part of the same toolchain.

The open item in the feature list is ramp map support, which is marked as a to-do next to the customisable light and shadow range. That is the most requested feature in this family of shaders, because a ramp texture is how an artist paints the tone curve directly rather than relying on a numeric range, and its absence is what pushes teams to write their own material functions.

The repository also carries an AGENTS.md and a .codex directory, and separate InstallationTools, ReleaseTools and OtherTools directories alongside the batch scripts, so the tooling around the plugin is versioned with it rather than distributed as loose downloads.

Editorial conclusion

Use MooaToon if you are shipping a stylised Unreal Engine 5 project and want toon shading, outlines and a cinematic post chain without building all of that from scratch in the shader editor. Do not adopt it expecting an open source plugin, because the repository publishes a custom licence on the vendor's own site, and note that the installation path is a set of Windows batch scripts that install Git, Visual Studio and a custom engine build, which is a heavy setup. Before you commit, read the licence page at mooatoon.com/docs/Licence, check that your engine branch and the plugin branch are switched to matching versions, and expect to finish the toon ramp map yourself, since the README still lists ramp map support as a to-do.

Frequently asked questions

What is MooaToon?

MooaToon is an Unreal Engine 5 plugin for toon rendering that combines the engine's built-in lighting features with a material system, and it also provides outlines and cinematic post effects. The README describes it as aiming to completely solve the shortcomings of UE5 toon rendering.

What does MooaToon give an artist control over?

Lumen global illumination intensity and blending, reflection intensity, Virtual Shadow Map and ray traced shadows including partial self-shadow ignoring and hair shadow width, translucency through forward shading and dithered opacity, customisable base, shadow and specular colours, light and shadow range, highlight range with anisotropic highlight, per light rimlight and face shadow.

How is MooaToon installed?

Through numbered Windows batch scripts at the repository root, starting with _0_0_Install_Latest_MooaToon_Precompiled_And_Override_All_Modified_Files.bat, with machine setup steps that install Git and Visual Studio and a main script _2_0_Install_And_Run_MooaToon.bat that installs a matching engine build and the project, plus update, clean, branch switch and build scripts.

Is MooaToon open source?

No. The repository is listed as having a custom licence that GitHub cannot classify, and the README points to mooatoon.com/docs/Licence for the terms rather than embedding an open source licence summary.

Official sources

  1. Issues
  2. JasonMa0012/MooaToon on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/jasonma0012-mooatoon.svg)](https://hysenlabs.com/projects/jasonma0012-mooatoon)

Was this useful?