I'm new to Unity and I've been frustrated for the last 5 days. I'm trying to apply a toon / cel shader to my object which I've imported from Blender. It already has a default material called Player Material which stores the texture of the mesh as imported from Blender.

How do I add a separate material on top which simply "toons" the object, without having to modify the existing materials and other properties?

Inspector window

Note: All youtube tutorials, docs, articles involve shaders of a single color, or (at best) have to import the texture image into that shader directly.

Things I've tried but didn't work due to previously mentioned reasons:

  • 2
    \$\begingroup\$ 'How do I add a separate material on top which simply "toons" the object without having to do anything extra to the already existing materials' — you don't. That's not how game rendering engines work. The shading calculations have already been performed by the object's existing materials, so another material rendered later cannot retroactively alter those calculations. You could apply a posterization effect on top, but that would not give a convincing/high-quality "toon" effect. The closest you could get, if using built-in lit shaders, is to change the game-wide lighting functions they use. \$\endgroup\$
    – DMGregory
    Mar 19 at 21:32
  • 1
    \$\begingroup\$ If you don't want to dig into the guts of changing all lighting functions used across URP to make them "toony", then making a dedicated toon material for each object that needs distinct material settings, replacing, not stacking on top of those existing materials, is the way to go. You can find existing toon shader assets you can use for these materials instead of creating your own, if you need support with that part. \$\endgroup\$
    – DMGregory
    Mar 19 at 21:34
  • \$\begingroup\$ @DMGregory would it be possible to import a toon shader from blender itself? Does unity support that? i.e. I make a single material in blender with texture & toon effect and import it in unity? \$\endgroup\$
    – cak3_lover
    Mar 20 at 4:25
  • \$\begingroup\$ Blender's renderer does not work the same as Unity's, so while you can import something, it probably won't maintain the look you want. \$\endgroup\$
    – DMGregory
    Mar 20 at 10:01


You must log in to answer this question.