summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-11-30 16:16:24 -0800
committeryum <yum.food.vr@gmail.com>2025-11-30 16:16:27 -0800
commit46a7aa991625e90428325e9f0be790a50e1b902d (patch)
tree353510a963b6e86bf73fbcdb2a3d99be0645c7d1
parent80ea42aa92d98b5efbb5bf7aebc6a57f1f3f23c1 (diff)
add static toggle to switch decal alpha blend order
-rw-r--r--2ner.shader8
-rw-r--r--decals.cginc36
-rw-r--r--features.cginc8
3 files changed, 52 insertions, 0 deletions
diff --git a/2ner.shader b/2ner.shader
index df185d4..6b89c22 100644
--- a/2ner.shader
+++ b/2ner.shader
@@ -371,6 +371,7 @@ Shader "yum_food/2ner"
_Decal0_Angle("Angle", Range(0, 1)) = 0.0
_Decal0_UV_Channel("UV channel", Range(0, 3.1)) = 0
_Decal0_Bias("Mip bias", Range(-4, 4)) = 0
+ [ThryToggle(_DECAL0_INVERT_BLEND_ORDER)] _Decal0_Invert_Blend_Order("Invert blend order", Float) = 0
[ThryToggle(_DECAL0_TILING_MODE)] _Decal0_Tiling_Mode("Tiling mode", Float) = 0
[ThryToggle(_DECAL0_REPLACE_ALPHA)] _Decal0_Replace_Alpha_Mode("Replace alpha", Float) = 0
[ThryToggle(_DECAL0_MULTIPLY)] _Decal0_Replace_Multiply_Mode("Multiply", Float) = 0
@@ -449,6 +450,7 @@ Shader "yum_food/2ner"
_Decal1_Angle("Angle", Range(0, 1)) = 0.0
_Decal1_UV_Channel("UV channel", Range(0, 3.1)) = 0
_Decal1_Bias("Mip bias", Range(-4, 4)) = 0
+ [ThryToggle(_DECAL1_INVERT_BLEND_ORDER)] _Decal1_Invert_Blend_Order("Invert blend order", Float) = 0
[ThryToggle(_DECAL1_TILING_MODE)] _Decal1_Tiling_Mode("Tiling mode", Float) = 0
[ThryToggle(_DECAL1_REPLACE_ALPHA)] _Decal1_Replace_Alpha_Mode("Replace alpha", Float) = 0
[ThryToggle(_DECAL1_MULTIPLY)] _Decal1_Replace_Multiply_Mode("Multiply", Float) = 0
@@ -527,6 +529,7 @@ Shader "yum_food/2ner"
_Decal2_Angle("Angle", Range(0, 1)) = 0.0
_Decal2_UV_Channel("UV channel", Range(0, 3.1)) = 0
_Decal2_Bias("Mip bias", Range(-4, 4)) = 0
+ [ThryToggle(_DECAL2_INVERT_BLEND_ORDER)] _Decal2_Invert_Blend_Order("Invert blend order", Float) = 0
[ThryToggle(_DECAL2_TILING_MODE)] _Decal2_Tiling_Mode("Tiling mode", Float) = 0
[ThryToggle(_DECAL2_REPLACE_ALPHA)] _Decal2_Replace_Alpha_Mode("Replace alpha", Float) = 0
[ThryToggle(_DECAL2_MULTIPLY)] _Decal2_Replace_Multiply_Mode("Multiply", Float) = 0
@@ -605,6 +608,7 @@ Shader "yum_food/2ner"
_Decal3_Angle("Angle", Range(0, 1)) = 0.0
_Decal3_UV_Channel("UV channel", Range(0, 3.1)) = 0
_Decal3_Bias("Mip bias", Range(-4, 4)) = 0
+ [ThryToggle(_DECAL3_INVERT_BLEND_ORDER)] _Decal3_Invert_Blend_Order("Invert blend order", Float) = 0
[ThryToggle(_DECAL3_TILING_MODE)] _Decal3_Tiling_Mode("Tiling mode", Float) = 0
[ThryToggle(_DECAL3_REPLACE_ALPHA)] _Decal3_Replace_Alpha_Mode("Replace alpha", Float) = 0
[ThryToggle(_DECAL3_MULTIPLY)] _Decal3_Replace_Multiply_Mode("Multiply", Float) = 0
@@ -683,6 +687,7 @@ Shader "yum_food/2ner"
_Decal4_Angle("Angle", Range(0, 1)) = 0.0
_Decal4_UV_Channel("UV channel", Range(0, 3.1)) = 0
_Decal4_Bias("Mip bias", Range(-4, 4)) = 0
+ [ThryToggle(_DECAL4_INVERT_BLEND_ORDER)] _Decal4_Invert_Blend_Order("Invert blend order", Float) = 0
[ThryToggle(_DECAL4_TILING_MODE)] _Decal4_Tiling_Mode("Tiling mode", Float) = 0
[ThryToggle(_DECAL4_REPLACE_ALPHA)] _Decal4_Replace_Alpha_Mode("Replace alpha", Float) = 0
[ThryToggle(_DECAL4_MULTIPLY)] _Decal4_Replace_Multiply_Mode("Multiply", Float) = 0
@@ -761,6 +766,7 @@ Shader "yum_food/2ner"
_Decal5_Angle("Angle", Range(0, 1)) = 0.0
_Decal5_UV_Channel("UV channel", Range(0, 3.1)) = 0
_Decal5_Bias("Mip bias", Range(-4, 4)) = 0
+ [ThryToggle(_DECAL5_INVERT_BLEND_ORDER)] _Decal5_Invert_Blend_Order("Invert blend order", Float) = 0
[ThryToggle(_DECAL5_TILING_MODE)] _Decal5_Tiling_Mode("Tiling mode", Float) = 0
[ThryToggle(_DECAL5_REPLACE_ALPHA)] _Decal5_Replace_Alpha_Mode("Replace alpha", Float) = 0
[ThryToggle(_DECAL5_MULTIPLY)] _Decal5_Replace_Multiply_Mode("Multiply", Float) = 0
@@ -839,6 +845,7 @@ Shader "yum_food/2ner"
_Decal6_Angle("Angle", Range(0, 1)) = 0.0
_Decal6_UV_Channel("UV channel", Range(0, 3.1)) = 0
_Decal6_Bias("Mip bias", Range(-4, 4)) = 0
+ [ThryToggle(_DECAL6_INVERT_BLEND_ORDER)] _Decal6_Invert_Blend_Order("Invert blend order", Float) = 0
[ThryToggle(_DECAL6_TILING_MODE)] _Decal6_Tiling_Mode("Tiling mode", Float) = 0
[ThryToggle(_DECAL6_REPLACE_ALPHA)] _Decal6_Replace_Alpha_Mode("Replace alpha", Float) = 0
[ThryToggle(_DECAL6_MULTIPLY)] _Decal6_Replace_Multiply_Mode("Multiply", Float) = 0
@@ -917,6 +924,7 @@ Shader "yum_food/2ner"
_Decal7_Angle("Angle", Range(0, 1)) = 0.0
_Decal7_UV_Channel("UV channel", Range(0, 3.1)) = 0
_Decal7_Bias("Mip bias", Range(-4, 4)) = 0
+ [ThryToggle(_DECAL7_INVERT_BLEND_ORDER)] _Decal7_Invert_Blend_Order("Invert blend order", Float) = 0
[ThryToggle(_DECAL7_TILING_MODE)] _Decal7_Tiling_Mode("Tiling mode", Float) = 0
[ThryToggle(_DECAL7_REPLACE_ALPHA)] _Decal7_Replace_Alpha_Mode("Replace alpha", Float) = 0
[ThryToggle(_DECAL7_MULTIPLY)] _Decal7_Replace_Multiply_Mode("Multiply", Float) = 0
diff --git a/decals.cginc b/decals.cginc
index 1e9427b..38dbf6d 100644
--- a/decals.cginc
+++ b/decals.cginc
@@ -202,6 +202,10 @@ float4 getCmykWarpingPlanesColor(DecalParams params, float2 uv) {
#define APPLY_DECAL_BLEND_MODE_ALPHA_BLEND(i, albedo, normal_tangent, metallic, smoothness, emission, params) \
decal_albedo.a = lerp(0, decal_albedo.a, params.opacity); \
+ albedo = alphaBlend(albedo, decal_albedo);
+
+#define APPLY_DECAL_BLEND_MODE_ALPHA_BLEND_INVERTED(i, albedo, normal_tangent, metallic, smoothness, emission, params) \
+ decal_albedo.a = lerp(0, decal_albedo.a, params.opacity); \
albedo = alphaBlend(decal_albedo, albedo);
#define APPLY_DECAL_BLEND_MODE_REPLACE(i, albedo, normal_tangent, metallic, smoothness, emission, params) \
@@ -267,8 +271,12 @@ void applyDecals(in v2f i, inout float4 albedo, inout float3 normal_tangent, ino
#elif defined(_DECAL0_MULTIPLY)
APPLY_DECAL_BLEND_MODE_MULTIPLY(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
#else
+ #if defined(_DECAL0_INVERT_BLEND_ORDER)
+ APPLY_DECAL_BLEND_MODE_ALPHA_BLEND_INVERTED(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
+ #else
APPLY_DECAL_BLEND_MODE_ALPHA_BLEND(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
#endif
+ #endif
#if defined(FORWARD_BASE_PASS)
float3 tmp_emission = 0;
@@ -329,8 +337,12 @@ void applyDecals(in v2f i, inout float4 albedo, inout float3 normal_tangent, ino
#elif defined(_DECAL1_MULTIPLY)
APPLY_DECAL_BLEND_MODE_MULTIPLY(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
#else
+ #if defined(_DECAL1_INVERT_BLEND_ORDER)
+ APPLY_DECAL_BLEND_MODE_ALPHA_BLEND_INVERTED(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
+ #else
APPLY_DECAL_BLEND_MODE_ALPHA_BLEND(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
#endif
+ #endif
#if defined(FORWARD_BASE_PASS)
float3 tmp_emission = 0;
@@ -391,8 +403,12 @@ void applyDecals(in v2f i, inout float4 albedo, inout float3 normal_tangent, ino
#elif defined(_DECAL2_MULTIPLY)
APPLY_DECAL_BLEND_MODE_MULTIPLY(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
#else
+ #if defined(_DECAL2_INVERT_BLEND_ORDER)
+ APPLY_DECAL_BLEND_MODE_ALPHA_BLEND_INVERTED(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
+ #else
APPLY_DECAL_BLEND_MODE_ALPHA_BLEND(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
#endif
+ #endif
#if defined(FORWARD_BASE_PASS)
float3 tmp_emission = 0;
@@ -453,8 +469,12 @@ void applyDecals(in v2f i, inout float4 albedo, inout float3 normal_tangent, ino
#elif defined(_DECAL3_MULTIPLY)
APPLY_DECAL_BLEND_MODE_MULTIPLY(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
#else
+ #if defined(_DECAL3_INVERT_BLEND_ORDER)
+ APPLY_DECAL_BLEND_MODE_ALPHA_BLEND_INVERTED(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
+ #else
APPLY_DECAL_BLEND_MODE_ALPHA_BLEND(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
#endif
+ #endif
#if defined(FORWARD_BASE_PASS)
float3 tmp_emission = 0;
@@ -515,8 +535,12 @@ void applyDecals(in v2f i, inout float4 albedo, inout float3 normal_tangent, ino
#elif defined(_DECAL4_MULTIPLY)
APPLY_DECAL_BLEND_MODE_MULTIPLY(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
#else
+ #if defined(_DECAL4_INVERT_BLEND_ORDER)
+ APPLY_DECAL_BLEND_MODE_ALPHA_BLEND_INVERTED(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
+ #else
APPLY_DECAL_BLEND_MODE_ALPHA_BLEND(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
#endif
+ #endif
#if defined(FORWARD_BASE_PASS)
float3 tmp_emission = 0;
@@ -577,8 +601,12 @@ void applyDecals(in v2f i, inout float4 albedo, inout float3 normal_tangent, ino
#elif defined(_DECAL5_MULTIPLY)
APPLY_DECAL_BLEND_MODE_MULTIPLY(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
#else
+ #if defined(_DECAL5_INVERT_BLEND_ORDER)
+ APPLY_DECAL_BLEND_MODE_ALPHA_BLEND_INVERTED(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
+ #else
APPLY_DECAL_BLEND_MODE_ALPHA_BLEND(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
#endif
+ #endif
#if defined(FORWARD_BASE_PASS)
float3 tmp_emission = 0;
@@ -639,8 +667,12 @@ void applyDecals(in v2f i, inout float4 albedo, inout float3 normal_tangent, ino
#elif defined(_DECAL6_MULTIPLY)
APPLY_DECAL_BLEND_MODE_MULTIPLY(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
#else
+ #if defined(_DECAL6_INVERT_BLEND_ORDER)
+ APPLY_DECAL_BLEND_MODE_ALPHA_BLEND_INVERTED(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
+ #else
APPLY_DECAL_BLEND_MODE_ALPHA_BLEND(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
#endif
+ #endif
#if defined(FORWARD_BASE_PASS)
float3 tmp_emission = 0;
@@ -701,8 +733,12 @@ void applyDecals(in v2f i, inout float4 albedo, inout float3 normal_tangent, ino
#elif defined(_DECAL7_MULTIPLY)
APPLY_DECAL_BLEND_MODE_MULTIPLY(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
#else
+ #if defined(_DECAL7_INVERT_BLEND_ORDER)
+ APPLY_DECAL_BLEND_MODE_ALPHA_BLEND_INVERTED(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
+ #else
APPLY_DECAL_BLEND_MODE_ALPHA_BLEND(i, albedo, normal_tangent, metallic, smoothness, emission, decal);
#endif
+ #endif
#if defined(FORWARD_BASE_PASS)
float3 tmp_emission = 0;
diff --git a/features.cginc b/features.cginc
index 696a08e..b1550c6 100644
--- a/features.cginc
+++ b/features.cginc
@@ -133,6 +133,7 @@
#pragma shader_feature_local _DECAL0_SDF
#pragma shader_feature_local _DECAL0_MASK
#pragma shader_feature_local _DECAL0_TILING_MODE
+#pragma shader_feature_local _DECAL0_INVERT_BLEND_ORDER
#pragma shader_feature_local _DECAL0_REPLACE_ALPHA
#pragma shader_feature_local _DECAL0_MULTIPLY
#pragma shader_feature_local _DECAL0_CMYK_WARPING_PLANES
@@ -148,6 +149,7 @@
#pragma shader_feature_local _DECAL1_SDF
#pragma shader_feature_local _DECAL1_MASK
#pragma shader_feature_local _DECAL1_TILING_MODE
+#pragma shader_feature_local _DECAL1_INVERT_BLEND_ORDER
#pragma shader_feature_local _DECAL1_REPLACE_ALPHA
#pragma shader_feature_local _DECAL1_MULTIPLY
#pragma shader_feature_local _DECAL1_CMYK_WARPING_PLANES
@@ -163,6 +165,7 @@
#pragma shader_feature_local _DECAL2_SDF
#pragma shader_feature_local _DECAL2_MASK
#pragma shader_feature_local _DECAL2_TILING_MODE
+#pragma shader_feature_local _DECAL2_INVERT_BLEND_ORDER
#pragma shader_feature_local _DECAL2_REPLACE_ALPHA
#pragma shader_feature_local _DECAL2_MULTIPLY
#pragma shader_feature_local _DECAL2_CMYK_WARPING_PLANES
@@ -178,6 +181,7 @@
#pragma shader_feature_local _DECAL3_SDF
#pragma shader_feature_local _DECAL3_MASK
#pragma shader_feature_local _DECAL3_TILING_MODE
+#pragma shader_feature_local _DECAL3_INVERT_BLEND_ORDER
#pragma shader_feature_local _DECAL3_REPLACE_ALPHA
#pragma shader_feature_local _DECAL3_MULTIPLY
#pragma shader_feature_local _DECAL3_CMYK_WARPING_PLANES
@@ -193,6 +197,7 @@
#pragma shader_feature_local _DECAL4_SDF
#pragma shader_feature_local _DECAL4_MASK
#pragma shader_feature_local _DECAL4_TILING_MODE
+#pragma shader_feature_local _DECAL4_INVERT_BLEND_ORDER
#pragma shader_feature_local _DECAL4_REPLACE_ALPHA
#pragma shader_feature_local _DECAL4_MULTIPLY
#pragma shader_feature_local _DECAL4_CMYK_WARPING_PLANES
@@ -208,6 +213,7 @@
#pragma shader_feature_local _DECAL5_SDF
#pragma shader_feature_local _DECAL5_MASK
#pragma shader_feature_local _DECAL5_TILING_MODE
+#pragma shader_feature_local _DECAL5_INVERT_BLEND_ORDER
#pragma shader_feature_local _DECAL5_REPLACE_ALPHA
#pragma shader_feature_local _DECAL5_MULTIPLY
#pragma shader_feature_local _DECAL5_CMYK_WARPING_PLANES
@@ -223,6 +229,7 @@
#pragma shader_feature_local _DECAL6_SDF
#pragma shader_feature_local _DECAL6_MASK
#pragma shader_feature_local _DECAL6_TILING_MODE
+#pragma shader_feature_local _DECAL6_INVERT_BLEND_ORDER
#pragma shader_feature_local _DECAL6_REPLACE_ALPHA
#pragma shader_feature_local _DECAL6_MULTIPLY
#pragma shader_feature_local _DECAL6_CMYK_WARPING_PLANES
@@ -238,6 +245,7 @@
#pragma shader_feature_local _DECAL7_SDF
#pragma shader_feature_local _DECAL7_MASK
#pragma shader_feature_local _DECAL7_TILING_MODE
+#pragma shader_feature_local _DECAL7_INVERT_BLEND_ORDER
#pragma shader_feature_local _DECAL7_REPLACE_ALPHA
#pragma shader_feature_local _DECAL7_MULTIPLY
#pragma shader_feature_local _DECAL7_CMYK_WARPING_PLANES