diff options
| -rw-r--r-- | 2ner.shader | 81 | ||||
| -rw-r--r-- | features.cginc | 16 | ||||
| -rw-r--r-- | globals.cginc | 40 | ||||
| -rw-r--r-- | matcaps.cginc | 64 | ||||
| -rw-r--r-- | yum_lighting.cginc | 3 |
5 files changed, 188 insertions, 16 deletions
diff --git a/2ner.shader b/2ner.shader index f4c4db9..0619ddb 100644 --- a/2ner.shader +++ b/2ner.shader @@ -77,8 +77,8 @@ Shader "yum_food/2ner" [HideInInspector] m_end_Matcap0("Matcaps", Float) = 0 [HideInInspector] m_end_Matcaps("Matcaps", Float) = 0 //endex - //ifex _Rim_Lighting0_Enabled==0 [HideInInspector] m_start_Rim_Lighting("Rim lighting", Float) = 0 + //ifex _Rim_Lighting0_Enabled==0 [HideInInspector] m_start_Rim_Lighting0("Rim lighting 0", Float) = 0 [ThryToggle(_RIM_LIGHTING0)]_Rim_Lighting0_Enabled("Enable", Float) = 0 _Rim_Lighting0_Center("Center", Range(0, 0.5)) = 0.5 @@ -102,8 +102,10 @@ Shader "yum_food/2ner" [ThryToggle(_RIM_LIGHTING0_QUANTIZATION)]_Rim_Lighting0_Quantization_Enabled("Enable", Float) = 0 _Rim_Lighting0_Quantization_Steps("Steps", Float) = 1 [HideInInspector] m_end_Rim_Lighting0_Quantization("Quantization", Float) = 0 - [HideInInspector] m_end_Rim_Lighting0("Rim lighting", Float) = 0 + //endex + + //ifex _Rim_Lighting1_Enabled==0 [HideInInspector] m_start_Rim_Lighting1("Rim lighting 1", Float) = 0 [ThryToggle(_RIM_LIGHTING1)]_Rim_Lighting1_Enabled("Enable", Float) = 0 _Rim_Lighting1_Center("Center", Range(0, 0.5)) = 0.5 @@ -116,9 +118,76 @@ Shader "yum_food/2ner" [ThryToggle(_RIM_LIGHTINg1_MASK)]_Rim_Lighting1_Mask_Enabled("Enable", Float) = 0 _Rim_Lighting1_Mask("Mask", 2D) = "white" {} [HideInInspector] m_end_Rim_Lighting1_Mask("Mask", Float) = 0 + + [HideInInspector] m_start_Rim_Lighting1_Angle_Limit("Angle limit", Float) = 0 + [ThryToggle(_RIM_LIGHTING1_ANGLE_LIMIT)]_Rim_Lighting1_Angle_Limit_Enabled("Enable", Float) = 0 + _Rim_Lighting1_Angle_Limit_Target_Vector("Target vector", Vector) = (0, -1, 0, 0) + _Rim_Lighting1_Angle_Limit_Power("Power", Float) = 1 + [HideInInspector] m_end_Rim_Lighting1_Angle_Limit("Angle limit", Float) = 0 + + [HideInInspector] m_start_Rim_Lighting1_Quantization("Quantization", Float) = 0 + [ThryToggle(_RIM_LIGHTING1_QUANTIZATION)]_Rim_Lighting1_Quantization_Enabled("Enable", Float) = 0 + _Rim_Lighting1_Quantization_Steps("Steps", Float) = 1 + [HideInInspector] m_end_Rim_Lighting1_Quantization("Quantization", Float) = 0 [HideInInspector] m_end_Rim_Lighting1("Rim lighting", Float) = 0 + //endex + + //ifex _Rim_Lighting2_Enabled==0 + [HideInInspector] m_start_Rim_Lighting2("Rim lighting 2", Float) = 0 + [ThryToggle(_RIM_LIGHTING2)]_Rim_Lighting2_Enabled("Enable", Float) = 0 + _Rim_Lighting2_Center("Center", Range(0, 0.5)) = 0.5 + _Rim_Lighting2_Power("Power", Float) = 5 + _Rim_Lighting2_Color("Color", Color) = (1, 1, 1, 1) + _Rim_Lighting2_Brightness("Brightness", Float) = 1 + [ThryWideEnum(Replace, 0, Add, 1, Multiply, 2, Subtract, 3, AddProduct, 4)] + _Rim_Lighting2_Mode("Mode", Int) = 0 + [HideInInspector] m_start_Rim_Lighting2_Mask("Mask", Float) = 0 + [ThryToggle(_RIM_LIGHTING2_MASK)]_Rim_Lighting2_Mask_Enabled("Enable", Float) = 0 + _Rim_Lighting2_Mask("Mask", 2D) = "white" {} + [HideInInspector] m_end_Rim_Lighting2_Mask("Mask", Float) = 0 + + [HideInInspector] m_start_Rim_Lighting2_Angle_Limit("Angle limit", Float) = 0 + [ThryToggle(_RIM_LIGHTING2_ANGLE_LIMIT)]_Rim_Lighting2_Angle_Limit_Enabled("Enable", Float) = 0 + _Rim_Lighting2_Angle_Limit_Target_Vector("Target vector", Vector) = (0, -1, 0, 0) + _Rim_Lighting2_Angle_Limit_Power("Power", Float) = 1 + [HideInInspector] m_end_Rim_Lighting2_Angle_Limit("Angle limit", Float) = 0 + + [HideInInspector] m_start_Rim_Lighting2_Quantization("Quantization", Float) = 0 + [ThryToggle(_RIM_LIGHTING2_QUANTIZATION)]_Rim_Lighting2_Quantization_Enabled("Enable", Float) = 0 + _Rim_Lighting2_Quantization_Steps("Steps", Float) = 1 + [HideInInspector] m_end_Rim_Lighting2_Quantization("Quantization", Float) = 0 + [HideInInspector] m_end_Rim_Lighting2("Rim lighting", Float) = 0 + //endex + + //ifex _Rim_Lighting3_Enabled==0 + [HideInInspector] m_start_Rim_Lighting3("Rim lighting 3", Float) = 0 + [ThryToggle(_RIM_LIGHTING3)]_Rim_Lighting3_Enabled("Enable", Float) = 0 + _Rim_Lighting3_Center("Center", Range(0, 0.5)) = 0.5 + _Rim_Lighting3_Power("Power", Float) = 5 + _Rim_Lighting3_Color("Color", Color) = (1, 1, 1, 1) + _Rim_Lighting3_Brightness("Brightness", Float) = 1 + [ThryWideEnum(Replace, 0, Add, 1, Multiply, 2, Subtract, 3, AddProduct, 4)] + _Rim_Lighting3_Mode("Mode", Int) = 0 + [HideInInspector] m_start_Rim_Lighting3_Mask("Mask", Float) = 0 + [ThryToggle(_RIM_LIGHTING3_MASK)]_Rim_Lighting3_Mask_Enabled("Enable", Float) = 0 + _Rim_Lighting3_Mask("Mask", 2D) = "white" {} + [HideInInspector] m_end_Rim_Lighting3_Mask("Mask", Float) = 0 + + [HideInInspector] m_start_Rim_Lighting3_Angle_Limit("Angle limit", Float) = 0 + [ThryToggle(_RIM_LIGHTING3_ANGLE_LIMIT)]_Rim_Lighting3_Angle_Limit_Enabled("Enable", Float) = 0 + _Rim_Lighting3_Angle_Limit_Target_Vector("Target vector", Vector) = (0, -1, 0, 0) + _Rim_Lighting3_Angle_Limit_Power("Power", Float) = 1 + [HideInInspector] m_end_Rim_Lighting3_Angle_Limit("Angle limit", Float) = 0 + + [HideInInspector] m_start_Rim_Lighting3_Quantization("Quantization", Float) = 0 + [ThryToggle(_RIM_LIGHTING3_QUANTIZATION)]_Rim_Lighting3_Quantization_Enabled("Enable", Float) = 0 + _Rim_Lighting3_Quantization_Steps("Steps", Float) = 1 + [HideInInspector] m_end_Rim_Lighting3_Quantization("Quantization", Float) = 0 + [HideInInspector] m_end_Rim_Lighting3("Rim lighting", Float) = 0 + //endex + [HideInInspector] m_end_Rim_Lighting("Rim lighting", Float) = 0 - //endex + //ifex _Vertex_Domain_Warping_Enabled==0 [HideInInspector] m_start_Vertex_Domain_Warping("Vertex domain warping", Float) = 0 [ThryToggle(_VERTEX_DOMAIN_WARPING)]_Vertex_Domain_Warping_Enabled("Enable", Float) = 0 @@ -154,6 +223,12 @@ Shader "yum_food/2ner" _Min_Brightness("Value", Range(0, 1)) = 0 [HideInInspector] m_end_Min_Brightness("Minimum brightness", Float) = 0 //endex + //ifex _Quantize_NoL_Enabled==0 + [HideInInspector] m_start_Quantize_NoL("Quantize NoL", Float) = 0 + [ThryToggle(_QUANTIZE_NOL)] _Quantize_NoL_Enabled("Enable", Float) = 0 + _Quantize_NoL_Steps("Steps", Float) = 1 + [HideInInspector] m_end_Quantize_NoL("Quantize NoL", Float) = 0 + //endex [HideInInspector] m_renderingOptions("Rendering Options", Float) = 0 [Enum(UnityEngine.Rendering.CullMode)] _Cull("Cull", Float) = 2 diff --git a/features.cginc b/features.cginc index 718b63f..51b25f8 100644 --- a/features.cginc +++ b/features.cginc @@ -13,6 +13,10 @@ #pragma shader_feature_local _MIN_BRIGHTNESS //endex +//ifex _Quantize_NoL_Enabled==0 +#pragma shader_feature_local _QUANTIZE_NOL +//endex + //ifex _Outlines_Enabled==0 #pragma shader_feature_local _OUTLINES //endex @@ -37,6 +41,18 @@ #pragma shader_feature_local _RIM_LIGHTING1_ANGLE_LIMIT #pragma shader_feature_local _RIM_LIGHTING1_QUANTIZATION //endex +//ifex _Rim_Lighting2_Enabled==0 +#pragma shader_feature_local _RIM_LIGHTING2 +#pragma shader_feature_local _RIM_LIGHTING2_MASK +#pragma shader_feature_local _RIM_LIGHTING2_ANGLE_LIMIT +#pragma shader_feature_local _RIM_LIGHTING2_QUANTIZATION +//endex +//ifex _Rim_Lighting3_Enabled==0 +#pragma shader_feature_local _RIM_LIGHTING3 +#pragma shader_feature_local _RIM_LIGHTING3_MASK +#pragma shader_feature_local _RIM_LIGHTING3_ANGLE_LIMIT +#pragma shader_feature_local _RIM_LIGHTING3_QUANTIZATION +//endex //ifex _Vertex_Domain_Warping_Enabled==0 #pragma shader_feature_local _VERTEX_DOMAIN_WARPING diff --git a/globals.cginc b/globals.cginc index 14ec4aa..c5b7b29 100644 --- a/globals.cginc +++ b/globals.cginc @@ -31,6 +31,10 @@ float _Wrap_NoL_Specular_Strength; float _Min_Brightness;
#endif
+#if defined(_QUANTIZE_NOL)
+float _Quantize_NoL_Steps;
+#endif
+
float _Clip;
int _Mode;
float _Smoothness;
@@ -101,6 +105,42 @@ float _Rim_Lighting1_Quantization_Steps; #endif
#endif
+#if defined(_RIM_LIGHTING2)
+uint _Rim_Lighting2_Mode;
+float _Rim_Lighting2_Center;
+float _Rim_Lighting2_Power;
+float3 _Rim_Lighting2_Color;
+float _Rim_Lighting2_Brightness;
+#if defined(_RIM_LIGHTING2_MASK)
+texture2D _Rim_Lighting2_Mask;
+#endif
+#if defined(_RIM_LIGHTING2_ANGLE_LIMIT)
+float2 _Rim_Lighting2_Angle_Limit_Target_Vector;
+float _Rim_Lighting2_Angle_Limit_Power;
+#endif
+#if defined(_RIM_LIGHTING2_QUANTIZATION)
+float _Rim_Lighting2_Quantization_Steps;
+#endif
+#endif
+
+#if defined(_RIM_LIGHTING3)
+uint _Rim_Lighting3_Mode;
+float _Rim_Lighting3_Center;
+float _Rim_Lighting3_Power;
+float3 _Rim_Lighting3_Color;
+float _Rim_Lighting3_Brightness;
+#if defined(_RIM_LIGHTING3_MASK)
+texture2D _Rim_Lighting3_Mask;
+#endif
+#if defined(_RIM_LIGHTING3_ANGLE_LIMIT)
+float2 _Rim_Lighting3_Angle_Limit_Target_Vector;
+float _Rim_Lighting3_Angle_Limit_Power;
+#endif
+#if defined(_RIM_LIGHTING3_QUANTIZATION)
+float _Rim_Lighting3_Quantization_Steps;
+#endif
+#endif
+
#if defined(_VERTEX_DOMAIN_WARPING)
float _Vertex_Domain_Warping_Spatial_Strength;
float _Vertex_Domain_Warping_Spatial_Scale;
diff --git a/matcaps.cginc b/matcaps.cginc index 78f2cce..9feea8b 100644 --- a/matcaps.cginc +++ b/matcaps.cginc @@ -68,39 +68,77 @@ void applyMatcapsAndRimLighting(v2f i, inout YumPbr pbr) { #if defined(_RIM_LIGHTING0) || defined(_RIM_LIGHTING1) float rl_radius = length(muv - 0.5); #endif + #if defined(_RIM_LIGHTING0) float rl0_dist = exp2(-_Rim_Lighting0_Power * abs(rl_radius - _Rim_Lighting0_Center)); +#if defined(_RIM_LIGHTING0_ANGLE_LIMIT) + rl0_dist *= getAngleAttenuation(muv, _Rim_Lighting0_Angle_Limit_Target_Vector, + _Rim_Lighting0_Angle_Limit_Power); +#endif +#if defined(_RIM_LIGHTING0_QUANTIZATION) + rl0_dist = floor(rl0_dist * _Rim_Lighting0_Quantization_Steps) / _Rim_Lighting0_Quantization_Steps; +#endif float3 rl0 = _Rim_Lighting0_Color * _Rim_Lighting0_Brightness * rl0_dist; #if defined(_RIM_LIGHTING0_MASK) float rl0_mask = _Rim_Lighting0_Mask.Sample(linear_repeat_s, i.uv01.xy); #else float rl0_mask = 1; #endif -#if defined(_RIM_LIGHTING0_ANGLE_LIMIT) - rl0 *= getAngleAttenuation(muv, _Rim_Lighting0_Angle_Limit_Target_Vector, - _Rim_Lighting0_Angle_Limit_Power); -#endif -#if defined(_RIM_LIGHTING0_QUANTIZATION) - rl0 = floor(rl0 * _Rim_Lighting0_Quantization_Steps) / _Rim_Lighting0_Quantization_Steps; -#endif applyMatcap(pbr, rl0, _Rim_Lighting0_Mode, rl0_mask); #endif + #if defined(_RIM_LIGHTING1) float rl1_dist = exp2(-_Rim_Lighting1_Power * abs(rl_radius - _Rim_Lighting1_Center)); +#if defined(_RIM_LIGHTING1_ANGLE_LIMIT) + rl1_dist *= getAngleAttenuation(muv, _Rim_Lighting1_Angle_Limit_Target_Vector, + _Rim_Lighting1_Angle_Limit_Power); +#endif +#if defined(_RIM_LIGHTING1_QUANTIZATION) + rl1_dist = floor(rl1_dist * _Rim_Lighting1_Quantization_Steps) / _Rim_Lighting1_Quantization_Steps; +#endif float3 rl1 = _Rim_Lighting1_Color * _Rim_Lighting1_Brightness * rl1_dist; #if defined(_RIM_LIGHTING1_MASK) float rl1_mask = _Rim_Lighting1_Mask.Sample(linear_repeat_s, i.uv01.xy); #else float rl1_mask = 1; #endif -#if defined(_RIM_LIGHTING1_ANGLE_LIMIT) - rl1 *= getAngleAttenuation(muv, _Rim_Lighting1_Angle_Limit_Target_Vector, - _Rim_Lighting1_Angle_Limit_Power); + applyMatcap(pbr, rl1, _Rim_Lighting1_Mode, rl1_mask); #endif -#if defined(_RIM_LIGHTING1_QUANTIZATION) - rl1 = floor(rl1 * _Rim_Lighting1_Quantization_Steps) / _Rim_Lighting1_Quantization_Steps; + +#if defined(_RIM_LIGHTING2) + float rl2_dist = exp2(-_Rim_Lighting2_Power * abs(rl_radius - _Rim_Lighting2_Center)); +#if defined(_RIM_LIGHTING2_ANGLE_LIMIT) + rl2_dist *= getAngleAttenuation(muv, _Rim_Lighting2_Angle_Limit_Target_Vector, + _Rim_Lighting2_Angle_Limit_Power); #endif - applyMatcap(pbr, rl1, _Rim_Lighting1_Mode, rl1_mask); +#if defined(_RIM_LIGHTING2_QUANTIZATION) + rl2_dist = floor(rl2_dist * _Rim_Lighting2_Quantization_Steps) / _Rim_Lighting2_Quantization_Steps; +#endif + float3 rl2 = _Rim_Lighting2_Color * _Rim_Lighting2_Brightness * rl2_dist; +#if defined(_RIM_LIGHTING2_MASK) + float rl2_mask = _Rim_Lighting2_Mask.Sample(linear_repeat_s, i.uv01.xy); +#else + float rl2_mask = 1; +#endif + applyMatcap(pbr, rl2, _Rim_Lighting2_Mode, rl2_mask); +#endif + +#if defined(_RIM_LIGHTING3) + float rl3_dist = exp2(-_Rim_Lighting3_Power * abs(rl_radius - _Rim_Lighting3_Center)); +#if defined(_RIM_LIGHTING3_ANGLE_LIMIT) + rl3_dist *= getAngleAttenuation(muv, _Rim_Lighting3_Angle_Limit_Target_Vector, + _Rim_Lighting3_Angle_Limit_Power); +#endif +#if defined(_RIM_LIGHTING3_QUANTIZATION) + rl3_dist = floor(rl3_dist * _Rim_Lighting3_Quantization_Steps) / _Rim_Lighting3_Quantization_Steps; +#endif + float3 rl3 = _Rim_Lighting3_Color * _Rim_Lighting3_Brightness * rl3_dist; +#if defined(_RIM_LIGHTING3_MASK) + float rl3_mask = _Rim_Lighting3_Mask.Sample(linear_repeat_s, i.uv01.xy); +#else + float rl3_mask = 1; +#endif + applyMatcap(pbr, rl3, _Rim_Lighting3_Mode, rl3_mask); #endif } diff --git a/yum_lighting.cginc b/yum_lighting.cginc index e34ec10..604133f 100644 --- a/yum_lighting.cginc +++ b/yum_lighting.cginc @@ -133,6 +133,9 @@ YumLighting GetYumLighting(v2f i, YumPbr pbr) { light.specular = getIndirectSpecular(i, pbr, light.view_dir);
light.NoL = saturate(dot(pbr.normal, light.dir));
+#if defined(_QUANTIZE_NOL)
+ light.NoL = floor(light.NoL * _Quantize_NoL_Steps) / _Quantize_NoL_Steps;
+#endif
#if defined(_WRAPPED_LIGHTING)
light.NoL_wrapped_s = wrapNoL(light.NoL, _Wrap_NoL_Specular_Strength);
light.NoL_wrapped_d = wrapNoL(light.NoL, _Wrap_NoL_Diffuse_Strength);
|
