From 17740f36e6c6b6f1f13dcb60f4d382b9ccda3d4f Mon Sep 17 00:00:00 2001 From: yum Date: Tue, 2 Dec 2025 00:10:30 -0800 Subject: begin work on sdf ssn replace toggle - think its buggy rn --- 2ner.shader | 8 ++++++++ decals.cginc | 57 ++++++++++++++++++++++++++++++++++++++++----------------- features.cginc | 8 ++++++++ 3 files changed, 56 insertions(+), 17 deletions(-) diff --git a/2ner.shader b/2ner.shader index 6609bdc..1f186b3 100644 --- a/2ner.shader +++ b/2ner.shader @@ -426,6 +426,7 @@ Shader "yum_food/2ner" //ifex _Decal0_SDF_SSN_Enabled==0 [HideInInspector] m_start_Decal0_SSN("Screen space normals", Float) = 0 [ThryToggle(_DECAL0_SDF_SSN)] _Decal0_SDF_SSN_Enabled("Enable", Float) = 0 + [ThryToggle(_DECAL0_SDF_SSN_REPLACE)] _Decal0_SDF_SSN_Replace("Replace normals", Float) = 0 _Decal0_SDF_SSN_Strength("Strength", Range(0, 10)) = 1 [HideInInspector] m_end_Decal0_SSN("Screen space normals", Float) = 0 //endex @@ -512,6 +513,7 @@ Shader "yum_food/2ner" //ifex _Decal1_SDF_SSN_Enabled==0 [HideInInspector] m_start_Decal1_SSN("Screen space normals", Float) = 0 [ThryToggle(_DECAL1_SDF_SSN)] _Decal1_SDF_SSN_Enabled("Enable", Float) = 0 + [ThryToggle(_DECAL1_SDF_SSN_REPLACE)] _Decal1_SDF_SSN_Replace("Replace normals", Float) = 0 _Decal1_SDF_SSN_Strength("Strength", Range(0, 10)) = 1 [HideInInspector] m_end_Decal1_SSN("Screen space normals", Float) = 0 //endex @@ -598,6 +600,7 @@ Shader "yum_food/2ner" //ifex _Decal2_SDF_SSN_Enabled==0 [HideInInspector] m_start_Decal2_SSN("Screen space normals", Float) = 0 [ThryToggle(_DECAL2_SDF_SSN)] _Decal2_SDF_SSN_Enabled("Enable", Float) = 0 + [ThryToggle(_DECAL2_SDF_SSN_REPLACE)] _Decal2_SDF_SSN_Replace("Replace normals", Float) = 0 _Decal2_SDF_SSN_Strength("Strength", Range(0, 10)) = 1 [HideInInspector] m_end_Decal2_SSN("Screen space normals", Float) = 0 //endex @@ -684,6 +687,7 @@ Shader "yum_food/2ner" //ifex _Decal3_SDF_SSN_Enabled==0 [HideInInspector] m_start_Decal3_SSN("Screen space normals", Float) = 0 [ThryToggle(_DECAL3_SDF_SSN)] _Decal3_SDF_SSN_Enabled("Enable", Float) = 0 + [ThryToggle(_DECAL3_SDF_SSN_REPLACE)] _Decal3_SDF_SSN_Replace("Replace normals", Float) = 0 _Decal3_SDF_SSN_Strength("Strength", Range(0, 10)) = 1 [HideInInspector] m_end_Decal3_SSN("Screen space normals", Float) = 0 //endex @@ -770,6 +774,7 @@ Shader "yum_food/2ner" //ifex _Decal4_SDF_SSN_Enabled==0 [HideInInspector] m_start_Decal4_SSN("Screen space normals", Float) = 0 [ThryToggle(_DECAL4_SDF_SSN)] _Decal4_SDF_SSN_Enabled("Enable", Float) = 0 + [ThryToggle(_DECAL4_SDF_SSN_REPLACE)] _Decal4_SDF_SSN_Replace("Replace normals", Float) = 0 _Decal4_SDF_SSN_Strength("Strength", Range(0, 10)) = 1 [HideInInspector] m_end_Decal4_SSN("Screen space normals", Float) = 0 //endex @@ -856,6 +861,7 @@ Shader "yum_food/2ner" //ifex _Decal5_SDF_SSN_Enabled==0 [HideInInspector] m_start_Decal5_SSN("Screen space normals", Float) = 0 [ThryToggle(_DECAL5_SDF_SSN)] _Decal5_SDF_SSN_Enabled("Enable", Float) = 0 + [ThryToggle(_DECAL5_SDF_SSN_REPLACE)] _Decal5_SDF_SSN_Replace("Replace normals", Float) = 0 _Decal5_SDF_SSN_Strength("Strength", Range(0, 10)) = 1 [HideInInspector] m_end_Decal5_SSN("Screen space normals", Float) = 0 //endex @@ -942,6 +948,7 @@ Shader "yum_food/2ner" //ifex _Decal6_SDF_SSN_Enabled==0 [HideInInspector] m_start_Decal6_SSN("Screen space normals", Float) = 0 [ThryToggle(_DECAL6_SDF_SSN)] _Decal6_SDF_SSN_Enabled("Enable", Float) = 0 + [ThryToggle(_DECAL6_SDF_SSN_REPLACE)] _Decal6_SDF_SSN_Replace("Replace normals", Float) = 0 _Decal6_SDF_SSN_Strength("Strength", Range(0, 10)) = 1 [HideInInspector] m_end_Decal6_SSN("Screen space normals", Float) = 0 //endex @@ -1028,6 +1035,7 @@ Shader "yum_food/2ner" //ifex _Decal7_SDF_SSN_Enabled==0 [HideInInspector] m_start_Decal7_SSN("Screen space normals", Float) = 0 [ThryToggle(_DECAL7_SDF_SSN)] _Decal7_SDF_SSN_Enabled("Enable", Float) = 0 + [ThryToggle(_DECAL7_SDF_SSN_REPLACE)] _Decal7_SDF_SSN_Replace("Replace normals", Float) = 0 _Decal7_SDF_SSN_Strength("Strength", Range(0, 10)) = 1 [HideInInspector] m_end_Decal7_SSN("Screen space normals", Float) = 0 //endex diff --git a/decals.cginc b/decals.cginc index 37b1196..96b51f9 100644 --- a/decals.cginc +++ b/decals.cginc @@ -207,7 +207,7 @@ float3 calculateSdfSsn(DecalParams params, float2 decal_uv, float4 decal_albedo) decal_albedo *= params.color; \ } -#define APPLY_DECAL_SDF_SSN_ON(i, albedo, normal_tangent, metallic, smoothness, emission, params) \ +#define APPLY_DECAL_SDF_SSN_ON_MODE_REGULAR(i, albedo, normal_tangent, metallic, smoothness, emission, params) \ { \ float3 sdf_normal_ts = calculateSdfSsn(params, decal_uv, decal_albedo); \ sdf_normal_ts.xy *= 1.0f - albedo.a; \ @@ -215,6 +215,13 @@ float3 calculateSdfSsn(DecalParams params, float2 decal_uv, float4 decal_albedo) normal_tangent = blendNormalsHill12(normal_tangent, sdf_normal_ts); \ } +#define APPLY_DECAL_SDF_SSN_ON_MODE_REPLACE(i, albedo, normal_tangent, metallic, smoothness, emission, params) \ + { \ + float3 sdf_normal_ts = calculateSdfSsn(params, decal_uv, decal_albedo); \ + sdf_normal_ts.xy *= 1.0f - albedo.a; \ + normal_tangent = normalize(lerp(normal_tangent, normalize(sdf_normal_ts), decal_albedo.a)); \ + } + #define APPLY_DECAL_CLAMP_ON(i, albedo, normal_tangent, metallic, smoothness, emission, params) \ { \ float eps = 1e-4; \ @@ -317,8 +324,10 @@ void applyDecals(in v2f i, inout float4 albedo, inout float3 normal_tangent, ino #else APPLY_DECAL_NORMAL_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #endif - #if defined(_DECAL0_SDF_SSN) - APPLY_DECAL_SDF_SSN_ON(i, albedo, normal_tangent, metallic, smoothness, emission, decal); + #if defined(_DECAL0_SDF_SSN) && !defined(_DECAL0_SDF_SSN_REPLACE) + APPLY_DECAL_SDF_SSN_ON_MODE_REGULAR(i, albedo, normal_tangent, metallic, smoothness, emission, decal); + #elif defined(_DECAL0_SDF_SSN) && defined(_DECAL0_SDF_SSN_REPLACE) + APPLY_DECAL_SDF_SSN_ON_MODE_REPLACE(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #else APPLY_DECAL_SDF_SSN_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #endif @@ -396,8 +405,10 @@ void applyDecals(in v2f i, inout float4 albedo, inout float3 normal_tangent, ino #else APPLY_DECAL_NORMAL_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #endif - #if defined(_DECAL1_SDF_SSN) - APPLY_DECAL_SDF_SSN_ON(i, albedo, normal_tangent, metallic, smoothness, emission, decal); + #if defined(_DECAL1_SDF_SSN) && !defined(_DECAL1_SDF_SSN_REPLACE) + APPLY_DECAL_SDF_SSN_ON_MODE_REGULAR(i, albedo, normal_tangent, metallic, smoothness, emission, decal); + #elif defined(_DECAL1_SDF_SSN) && defined(_DECAL1_SDF_SSN_REPLACE) + APPLY_DECAL_SDF_SSN_ON_MODE_REPLACE(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #else APPLY_DECAL_SDF_SSN_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #endif @@ -475,8 +486,10 @@ void applyDecals(in v2f i, inout float4 albedo, inout float3 normal_tangent, ino #else APPLY_DECAL_NORMAL_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #endif - #if defined(_DECAL2_SDF_SSN) - APPLY_DECAL_SDF_SSN_ON(i, albedo, normal_tangent, metallic, smoothness, emission, decal); + #if defined(_DECAL2_SDF_SSN) && !defined(_DECAL2_SDF_SSN_REPLACE) + APPLY_DECAL_SDF_SSN_ON_MODE_REGULAR(i, albedo, normal_tangent, metallic, smoothness, emission, decal); + #elif defined(_DECAL2_SDF_SSN) && defined(_DECAL2_SDF_SSN_REPLACE) + APPLY_DECAL_SDF_SSN_ON_MODE_REPLACE(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #else APPLY_DECAL_SDF_SSN_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #endif @@ -556,8 +569,10 @@ void applyDecals(in v2f i, inout float4 albedo, inout float3 normal_tangent, ino #else APPLY_DECAL_NORMAL_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #endif - #if defined(_DECAL3_SDF_SSN) - APPLY_DECAL_SDF_SSN_ON(i, albedo, normal_tangent, metallic, smoothness, emission, decal); + #if defined(_DECAL3_SDF_SSN) && !defined(_DECAL3_SDF_SSN_REPLACE) + APPLY_DECAL_SDF_SSN_ON_MODE_REGULAR(i, albedo, normal_tangent, metallic, smoothness, emission, decal); + #elif defined(_DECAL3_SDF_SSN) && defined(_DECAL3_SDF_SSN_REPLACE) + APPLY_DECAL_SDF_SSN_ON_MODE_REPLACE(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #else APPLY_DECAL_SDF_SSN_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #endif @@ -635,8 +650,10 @@ void applyDecals(in v2f i, inout float4 albedo, inout float3 normal_tangent, ino #else APPLY_DECAL_NORMAL_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #endif - #if defined(_DECAL4_SDF_SSN) - APPLY_DECAL_SDF_SSN_ON(i, albedo, normal_tangent, metallic, smoothness, emission, decal); + #if defined(_DECAL4_SDF_SSN) && !defined(_DECAL4_SDF_SSN_REPLACE) + APPLY_DECAL_SDF_SSN_ON_MODE_REGULAR(i, albedo, normal_tangent, metallic, smoothness, emission, decal); + #elif defined(_DECAL4_SDF_SSN) && defined(_DECAL4_SDF_SSN_REPLACE) + APPLY_DECAL_SDF_SSN_ON_MODE_REPLACE(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #else APPLY_DECAL_SDF_SSN_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #endif @@ -714,8 +731,10 @@ void applyDecals(in v2f i, inout float4 albedo, inout float3 normal_tangent, ino #else APPLY_DECAL_NORMAL_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #endif - #if defined(_DECAL5_SDF_SSN) - APPLY_DECAL_SDF_SSN_ON(i, albedo, normal_tangent, metallic, smoothness, emission, decal); + #if defined(_DECAL5_SDF_SSN) && !defined(_DECAL5_SDF_SSN_REPLACE) + APPLY_DECAL_SDF_SSN_ON_MODE_REGULAR(i, albedo, normal_tangent, metallic, smoothness, emission, decal); + #elif defined(_DECAL5_SDF_SSN) && defined(_DECAL5_SDF_SSN_REPLACE) + APPLY_DECAL_SDF_SSN_ON_MODE_REPLACE(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #else APPLY_DECAL_SDF_SSN_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #endif @@ -793,8 +812,10 @@ void applyDecals(in v2f i, inout float4 albedo, inout float3 normal_tangent, ino #else APPLY_DECAL_NORMAL_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #endif - #if defined(_DECAL6_SDF_SSN) - APPLY_DECAL_SDF_SSN_ON(i, albedo, normal_tangent, metallic, smoothness, emission, decal); + #if defined(_DECAL6_SDF_SSN) && !defined(_DECAL6_SDF_SSN_REPLACE) + APPLY_DECAL_SDF_SSN_ON_MODE_REGULAR(i, albedo, normal_tangent, metallic, smoothness, emission, decal); + #elif defined(_DECAL6_SDF_SSN) && defined(_DECAL6_SDF_SSN_REPLACE) + APPLY_DECAL_SDF_SSN_ON_MODE_REPLACE(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #else APPLY_DECAL_SDF_SSN_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #endif @@ -872,8 +893,10 @@ void applyDecals(in v2f i, inout float4 albedo, inout float3 normal_tangent, ino #else APPLY_DECAL_NORMAL_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #endif - #if defined(_DECAL7_SDF_SSN) - APPLY_DECAL_SDF_SSN_ON(i, albedo, normal_tangent, metallic, smoothness, emission, decal); + #if defined(_DECAL7_SDF_SSN) && !defined(_DECAL7_SDF_SSN_REPLACE) + APPLY_DECAL_SDF_SSN_ON_MODE_REGULAR(i, albedo, normal_tangent, metallic, smoothness, emission, decal); + #elif defined(_DECAL7_SDF_SSN) && defined(_DECAL7_SDF_SSN_REPLACE) + APPLY_DECAL_SDF_SSN_ON_MODE_REPLACE(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #else APPLY_DECAL_SDF_SSN_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, decal); #endif diff --git a/features.cginc b/features.cginc index 2f3b4b1..169b28f 100644 --- a/features.cginc +++ b/features.cginc @@ -133,6 +133,7 @@ #pragma shader_feature_local _DECAL0_REFLECTIONS_ALPHA_BLEND #pragma shader_feature_local _DECAL0_SDF #pragma shader_feature_local _DECAL0_SDF_SSN +#pragma shader_feature_local _DECAL0_SDF_SSN_REPLACE #pragma shader_feature_local _DECAL0_MASK #pragma shader_feature_local _DECAL0_TILING_MODE #pragma shader_feature_local _DECAL0_INVERT_BLEND_ORDER @@ -151,6 +152,7 @@ #pragma shader_feature_local _DECAL1_REFLECTIONS_ALPHA_BLEND #pragma shader_feature_local _DECAL1_SDF #pragma shader_feature_local _DECAL1_SDF_SSN +#pragma shader_feature_local _DECAL1_SDF_SSN_REPLACE #pragma shader_feature_local _DECAL1_MASK #pragma shader_feature_local _DECAL1_TILING_MODE #pragma shader_feature_local _DECAL1_INVERT_BLEND_ORDER @@ -169,6 +171,7 @@ #pragma shader_feature_local _DECAL2_REFLECTIONS_ALPHA_BLEND #pragma shader_feature_local _DECAL2_SDF #pragma shader_feature_local _DECAL2_SDF_SSN +#pragma shader_feature_local _DECAL2_SDF_SSN_REPLACE #pragma shader_feature_local _DECAL2_MASK #pragma shader_feature_local _DECAL2_TILING_MODE #pragma shader_feature_local _DECAL2_INVERT_BLEND_ORDER @@ -187,6 +190,7 @@ #pragma shader_feature_local _DECAL3_REFLECTIONS_ALPHA_BLEND #pragma shader_feature_local _DECAL3_SDF #pragma shader_feature_local _DECAL3_SDF_SSN +#pragma shader_feature_local _DECAL3_SDF_SSN_REPLACE #pragma shader_feature_local _DECAL3_MASK #pragma shader_feature_local _DECAL3_TILING_MODE #pragma shader_feature_local _DECAL3_INVERT_BLEND_ORDER @@ -205,6 +209,7 @@ #pragma shader_feature_local _DECAL4_REFLECTIONS_ALPHA_BLEND #pragma shader_feature_local _DECAL4_SDF #pragma shader_feature_local _DECAL4_SDF_SSN +#pragma shader_feature_local _DECAL4_SDF_SSN_REPLACE #pragma shader_feature_local _DECAL4_MASK #pragma shader_feature_local _DECAL4_TILING_MODE #pragma shader_feature_local _DECAL4_INVERT_BLEND_ORDER @@ -223,6 +228,7 @@ #pragma shader_feature_local _DECAL5_REFLECTIONS_ALPHA_BLEND #pragma shader_feature_local _DECAL5_SDF #pragma shader_feature_local _DECAL5_SDF_SSN +#pragma shader_feature_local _DECAL5_SDF_SSN_REPLACE #pragma shader_feature_local _DECAL5_MASK #pragma shader_feature_local _DECAL5_TILING_MODE #pragma shader_feature_local _DECAL5_INVERT_BLEND_ORDER @@ -241,6 +247,7 @@ #pragma shader_feature_local _DECAL6_REFLECTIONS_ALPHA_BLEND #pragma shader_feature_local _DECAL6_SDF #pragma shader_feature_local _DECAL6_SDF_SSN +#pragma shader_feature_local _DECAL6_SDF_SSN_REPLACE #pragma shader_feature_local _DECAL6_MASK #pragma shader_feature_local _DECAL6_TILING_MODE #pragma shader_feature_local _DECAL6_INVERT_BLEND_ORDER @@ -259,6 +266,7 @@ #pragma shader_feature_local _DECAL7_REFLECTIONS_ALPHA_BLEND #pragma shader_feature_local _DECAL7_SDF #pragma shader_feature_local _DECAL7_SDF_SSN +#pragma shader_feature_local _DECAL7_SDF_SSN_REPLACE #pragma shader_feature_local _DECAL7_MASK #pragma shader_feature_local _DECAL7_TILING_MODE #pragma shader_feature_local _DECAL7_INVERT_BLEND_ORDER -- cgit v1.2.3