Skip to content

t1k:unity:rendering:mk-toon-shader

FieldValue
Modulerendering
Version3.1.7
Efforthigh
Tools

Keywords: cel shading, rendering, stylized, toon shader

/t1k:unity:rendering:mk-toon-shader

MK Toon v5.x by Michael Kremmel — comprehensive toon/stylized shader for Unity URP.

URP ONLY — Always use MK/Toon/URP/ shader paths. Never use Built-in RP variants. Related: unity-urp (pipeline config), dots-graphics (ECS rendering), amplify-impostors (impostor baking)

Shader PathUse Case
MK/Toon/URP/Standard/Physically BasedFull PBR + all stylize features
MK/Toon/URP/Standard/SimpleSimpler — no anisotropic specular
MK/Toon/URP/Standard/UnlitNo lighting, stylize only
MK/Toon/URP/Standard/Simple + OutlineSimple + per-object outlines
MK/Toon/URP/Standard/Physically Based + OutlinePBS + outlines
MK/Toon/URP/Standard/Physically Based + RefractionGlass/crystal effects

Performance-first: use Simple (no outline) or Simple + Outline.

Outline variants require MKToonPerObjectOutlines ScriptableRendererFeature:

  1. Select your URP Renderer Asset (Assets/Settings/ForwardRenderer.asset)
  2. Add Renderer Feature: MKToonPerObjectOutlines
  3. Set Layer Mask to include outlined layers

Menu helpers: Window/MK/Toon/Select Default URP Renderer Asset

var mat = new Material(Shader.Find("MK/Toon/URP/Standard/Simple"));
mat.SetColor("_AlbedoColor", Color.white);
mat.SetTexture("_AlbedoMap", albedoTex);
mat.EnableKeyword("_MK_ALBEDO_MAP");
mat.SetInt("_Light", 1); // Cel mode
mat.SetFloat("_LightBands", 3);
mat.SetFloat("_DiffuseSmoothness", 0.05f);
mat.SetFloat("_LightThreshold", 0.5f);
mat.EnableKeyword("_MK_LIGHT_CEL");
// REQUIRED after setting albedo/alpha properties:
MK.Toon.Properties.UpdateSystemProperties(mat);
  1. Run Install Wizard: Window/MK/Toon/Install Wizard → select Universal
  2. Add MKToonPerObjectOutlines to ForwardRenderer.asset (if using outlines)
  3. Create material using MK/Toon/URP/Standard/Simple
  4. Set _Light = Cel(1), _LightBands = 3, _DiffuseSmoothness = 0.05
  5. Copy Synty _Albedo_Map_AlbedoMap (rename only)
  6. Update impostor baking code to handle _AlbedoMap_BaseMap mapping
  7. Call MK.Toon.Properties.UpdateSystemProperties(mat) after property changes
  • Outline requires RendererFeature — Outline variants do nothing without MKToonPerObjectOutlines added to URP Renderer Asset
  • _AlbedoMap NOT _BaseMap — MK Toon uses different property name from URP standard; update all migration code
  • _AlbedoColor NOT _BaseColor — same naming difference
  • Keywords are _MK_* — must EnableKeyword("_MK_ALBEDO_MAP") etc. when setting properties programmatically
  • UpdateSystemProperties() required — after changing _AlbedoMap / _AlphaCutoff, copies to Unity system properties for shadow/SRP compat
  • ECS/Entities Graphics — works with per-instance MaterialPropertyOverride for _AlbedoColor, _DissolveAmount, etc.
FileContents
references/material-property-mapping.mdFull property tables (Input, Stylize, Outline, Dissolve, Rim, Gooch, Iridescence), Synty→MK migration, workflow enums
references/artistic-styles-guide.mdDrawn/Hatching/Sketch modes, Gooch ramp, iridescence, global shader features, dissolve animation