yum-archive/Tooner

A toon shader for Unity's BIRP.

git clone https://git.yummers.dev/yum-archive/Tooner

yumUpdate READMEafc2e44

master
2.3 KiB84 linesraw

Tooner

My toon shader for VRChat. I use this on my personal and commercial models. It's semi optimized and a little scuffed.

Bistro demo

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:

  1. This is a WIP.
  2. I am not a graphics expert.
  3. Stability is a non-goal. Keywords are likely to change in the interest of performance and simplicity.
  4. 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

  1. 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.

  1. Does it work?

Yes.

  1. 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.

  1. 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![Bistro demo](Textures/bistro_demo.png)
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
48   performance and simplicity.
494. This is not a supported product. Support is only provided when used in
50   conjunction 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