yum-archive/Tooner
A toon shader for Unity's BIRP.
git clone https://git.yummers.dev/yum-archive/Tooner
afc2e44
master
Tooner
My toon shader for VRChat. I use this on my personal and commercial models. It's semi optimized and a little scuffed.

NOTE: this repo is archived. Development has moved to 2ner.
Features (maybe out of date):
- PBR
- Emissions
- Outlines
- With/without stenciling
- Glitter
- Explosion
- PBR detail maps x4
- Albedo, emission, normal, metallic, roughness, mask
- Decals x4
- Albedo, emission, angle
- Matcaps x2
- Add, mul, replace, sub, min, max
- Quantization
- Rim lighting x2
- Add, mul, replace, sub, min, max
- Glitter
- Quantization
- Rendering modes: opaque, cutout, fade, transparent, transclipping
- Culling modes: front, back, none
- OKLCH color adjustment
- Reflection probe (cubemap) override
- Lighting min/max
- Flat/realistic normals
- Geometry scroll (similar to Poiyomi's shatterwave)
- UV scroll
- Clones
- LTCGI
- Shadows (both casting and receiving)
- Gimmicks
- Vertex location quantization (object space)
- Vertex location scaling (object space)
Disclaimers:
- This is a WIP.
- I am not a graphics expert.
- Stability is a non-goal. Keywords are likely to change in the interest of performance and simplicity.
- This is not a supported product. Support is only provided when used in conjunction with one of my commercially available products.
To use it, import the git repo into your project's Assets folder then select
the shader yum_food/tooner_inlined. To generate a new inlined shader from
sources, select Tools/yum_food/Shader Inliner and point it at your
Tooner.shader.
Strawman FAQ
- Why create another toon shader?
To deepen my understanding of lighting and to have a "simple" foundation on top of which to create bespoke shader effects. lilToon and Poiyomi are both way too fucking huge and complicated to fit my needs.
- Does it work?
Yes.
- Is it optimized?
Somewhat.
I use static keywords on every feature, so you don't pay for anything you don't use. I use branchless programming wherever appropriate. I do make extensive use of dynamic branching where I know it won't induce thread divergence.
The goal is to strike a balance between performance and readability. Golfing away nanoseconds is not something I want to spend my limited time on Earth doing.
- Demos?
TODO. See the screenshot at the top of the page for now.
1## Tooner 2 3My toon shader for VRChat. I use this on my personal and commercial models. 4It's semi optimized and a little scuffed. 5 6 7 8NOTE: this repo is archived. Development has moved to 9[2ner](https://github.com/yum-food/2ner). 10 11Features (maybe out of date): 12* PBR 13* Emissions 14* Outlines 15* With/without stenciling 16* Glitter 17* Explosion 18* PBR detail maps x4 19* Albedo, emission, normal, metallic, roughness, mask 20* Decals x4 21* Albedo, emission, angle 22* Matcaps x2 23* Add, mul, replace, sub, min, max 24* Quantization 25* Rim lighting x2 26* Add, mul, replace, sub, min, max 27* Glitter 28* Quantization 29* Rendering modes: opaque, cutout, fade, transparent, transclipping 30* Culling modes: front, back, none 31* OKLCH color adjustment 32* Reflection probe (cubemap) override 33* Lighting min/max 34* Flat/realistic normals 35* Geometry scroll (similar to Poiyomi's shatterwave) 36* UV scroll 37* Clones 38* LTCGI 39* Shadows (both casting and receiving) 40* Gimmicks 41* Vertex location quantization (object space) 42* Vertex location scaling (object space) 43 44Disclaimers: 451. This is a WIP. 462. I am not a graphics expert. 473. Stability is a non-goal. Keywords are likely to change in the interest of 48performance and simplicity. 494. This is not a supported product. Support is only provided when used in 50conjunction with one of my commercially available products. 51 52To use it, import the git repo into your project's Assets folder then select 53the shader `yum_food/tooner_inlined`. To generate a new inlined shader from 54sources, select `Tools/yum_food/Shader Inliner` and point it at your 55Tooner.shader. 56 57### Strawman FAQ 58 591. Why create another toon shader? 60 61To deepen my understanding of lighting and to have a "simple" foundation on 62top of which to create bespoke shader effects. lilToon and Poiyomi are both way 63too fucking huge and complicated to fit my needs. 64 652. Does it work? 66 67Yes. 68 693. Is it optimized? 70 71Somewhat. 72 73I use static keywords on every feature, so you don't pay for anything you don't 74use. I use branchless programming wherever appropriate. I do make extensive use 75of dynamic branching where I know it won't induce thread divergence. 76 77The goal is to strike a balance between performance and readability. Golfing 78away nanoseconds is not something I want to spend my limited time on Earth 79doing. 80 814. Demos? 82 83TODO. See the screenshot at the top of the page for now. 84