summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--2ner.shader81
-rw-r--r--features.cginc16
-rw-r--r--globals.cginc40
-rw-r--r--matcaps.cginc64
-rw-r--r--yum_lighting.cginc3
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);