yum-archive/Tooner
A toon shader for Unity's BIRP.
git clone https://git.yummers.dev/yum-archive/Tooner
4880e41
master
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