yum-archive/Tooner

A toon shader for Unity's BIRP.

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

yumBegin adding gimmicks for downstairs map4880e41

master
4.0 KiB146 linesraw
1#ifndef LTCGI_UNIFORM_INCLUDED
2#define LTCGI_UNIFORM_INCLUDED
3
4// global sampler (trilinear)
5#ifndef LTCGI_SAMPLER
6SamplerState sampler_LTCGI_trilinear_clamp_sampler;
7#define LTCGI_SAMPLER sampler_LTCGI_trilinear_clamp_sampler
8#define LTCGI_SAMPLER_RAW _LTCGI_trilinear_clamp_sampler
9#endif
10
11// LUTs
12#ifndef SHADER_TARGET_SURFACE_ANALYSIS_MOJOSHADER
13#ifndef LTCGI_DISABLE_LUT2
14uniform Texture2D<float4> _Udon_LTCGI_lut2;
15#endif
16uniform Texture2D<float4> _Udon_LTCGI_lut1;
17#endif
18
19#ifndef SHADER_TARGET_SURFACE_ANALYSIS_MOJOSHADER
20uniform Texture2D<float4> _Udon_LTCGI_static_uniforms;
21#endif
22
23#ifdef LTCGI_STATIC_UNIFORMS
24
25float4 _Udon_LTCGI_Vertices_0_get(uint i) {
26    return _Udon_LTCGI_static_uniforms[uint2(0, i)];
27}
28float4 _Udon_LTCGI_Vertices_1_get(uint i) {
29    return _Udon_LTCGI_static_uniforms[uint2(1, i)];
30}
31float4 _Udon_LTCGI_Vertices_2_get(uint i) {
32    return _Udon_LTCGI_static_uniforms[uint2(2, i)];
33}
34float4 _Udon_LTCGI_Vertices_3_get(uint i) {
35    return _Udon_LTCGI_static_uniforms[uint2(3, i)];
36}
37
38#else
39
40// vertices in object space; w component is UV (legacy)
41uniform float4 _Udon_LTCGI_Vertices_0[MAX_SOURCES];
42uniform float4 _Udon_LTCGI_Vertices_1[MAX_SOURCES];
43uniform float4 _Udon_LTCGI_Vertices_2[MAX_SOURCES];
44uniform float4 _Udon_LTCGI_Vertices_3[MAX_SOURCES];
45
46float4 _Udon_LTCGI_Vertices_0_get(uint i) {
47    return _Udon_LTCGI_Vertices_0[i];
48}
49float4 _Udon_LTCGI_Vertices_1_get(uint i) {
50    return _Udon_LTCGI_Vertices_1[i];
51}
52float4 _Udon_LTCGI_Vertices_2_get(uint i) {
53    return _Udon_LTCGI_Vertices_2[i];
54}
55float4 _Udon_LTCGI_Vertices_3_get(uint i) {
56    return _Udon_LTCGI_Vertices_3[i];
57}
58
59#endif
60
61// light source count, maximum is MAX_SOURCES
62uniform uint _Udon_LTCGI_ScreenCount;
63
64// per-renderer mask to select sources,
65// for max perf update _Udon_LTCGI_ScreenCount too
66uniform bool _Udon_LTCGI_Mask[MAX_SOURCES];
67
68// extra data per light source, layout:
69//  color.r   color.g   color.b   flags*
70// * b0=double-sided, b1=diffuse-from-lightmap, b2=specular, b3=diffuse,
71//   b4-b7=texture index (0=video, (n>0)=n-1)
72//   b8-b9=color mode
73//   b10-b11=lightmap channel (0=disabled, 1=r, 2=g, 3=b)
74//   b12=cylinder
75//   b13-14=audio link band
76//   b15=lightmap diffuse only
77// (color black = fully disabled)
78uniform float4 _Udon_LTCGI_ExtraData[MAX_SOURCES];
79
80ltcgi_flags ltcgi_parse_flags(uint val, bool noLmDiff)
81{
82    ltcgi_flags ret = (ltcgi_flags)0;
83    ret.doublesided = (val & 1) == 1;
84
85    #ifdef LTCGI_ALWAYS_LTC_DIFFUSE
86    ret.diffFromLm  = false;
87    #else
88    ret.diffFromLm  = !noLmDiff && (val & 2) == 2;
89    #endif
90
91    ret.diffuse     = (val & 8) == 8;
92
93    ret.specular    = (val & 4) == 4;
94    ret.texindex    = (val & 0xf0) >> 4;
95    ret.colormode   = (val & 0x300) >> 8;
96
97    #ifdef LTCGI_ALWAYS_LTC_DIFFUSE
98    ret.lmch        = 0;
99    #else
100    ret.lmch        = (val & 0xC00) >> 10;
101    #endif
102
103    ret.cylinder    = (val & (1 << 12)) == (1 << 12);
104
105    #ifdef LTCGI_AUDIOLINK
106    ret.alBand      = (val & 0x6000) >> 13;
107    #endif
108
109    ret.lmdOnly     = (val & (1 << 15)) == (1 << 15);
110
111    return ret;
112}
113
114// video input
115#ifndef SHADER_TARGET_SURFACE_ANALYSIS_MOJOSHADER
116uniform Texture2D<float4> _Udon_LTCGI_Texture_LOD0;
117#ifndef LTCGI_FAST_SAMPLING
118uniform Texture2D<float4> _Udon_LTCGI_Texture_LOD1;
119uniform Texture2D<float4> _Udon_LTCGI_Texture_LOD2;
120uniform Texture2D<float4> _Udon_LTCGI_Texture_LOD3;
121#endif
122#endif
123
124// static textures
125#ifdef LTCGI_STATIC_TEXTURES
126UNITY_DECLARE_TEX2DARRAY_NOSAMPLER(_Udon_LTCGI_Texture_LOD0_arr);
127#ifndef LTCGI_FAST_SAMPLING
128UNITY_DECLARE_TEX2DARRAY_NOSAMPLER(_Udon_LTCGI_Texture_LOD1_arr);
129UNITY_DECLARE_TEX2DARRAY_NOSAMPLER(_Udon_LTCGI_Texture_LOD2_arr);
130UNITY_DECLARE_TEX2DARRAY_NOSAMPLER(_Udon_LTCGI_Texture_LOD3_arr);
131#endif
132#endif
133
134// lightmap
135#ifndef SHADER_TARGET_SURFACE_ANALYSIS_MOJOSHADER
136#ifndef LTCGI_ALWAYS_LTC_DIFFUSE
137uniform Texture2D<float4> _Udon_LTCGI_Lightmap;
138#endif
139#endif
140uniform float3 _Udon_LTCGI_LightmapMult;
141uniform float4 _Udon_LTCGI_LightmapST;
142
143// global toggle
144uniform float _Udon_LTCGI_GlobalEnable;
145
146#endif