From c3cc69538829aff4f0097636315685877b39d3e9 Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 23 Jan 2026 18:14:29 +0900 Subject: [PATCH 01/14] cache multiplication results --- ...iversalToonBodyDoubleShadeWithFeather.hlsl | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl index 0b4f72fee..95bf32c2e 100644 --- a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl +++ b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl @@ -145,11 +145,16 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 #ifdef _IS_PASS_FWDBASE float3 Set_LightColor = lightColor.rgb; - float3 Set_BaseColor = lerp((_BaseColor.rgb * mainTex.rgb), - ((_BaseColor.rgb * mainTex.rgb) * Set_LightColor), _Is_LightColor_Base); + const float3 baseAlbedo = _BaseColor.rgb * mainTex.rgb; + + float3 Set_BaseColor = lerp((baseAlbedo),((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); + //v.2.0.5 const float4 firstShadeTex = lerp(SAMPLE_TEXTURE2D(_1st_ShadeMap, sampler_MainTex, mainTexUV),mainTex, _Use_BaseAs1st); - float3 Set_1st_ShadeColor = lerp((_1st_ShadeColor.rgb * firstShadeTex.rgb),((_1st_ShadeColor.rgb * firstShadeTex.rgb) * Set_LightColor), _Is_LightColor_1st_Shade); + const float3 firstShadeAlbedo = _1st_ShadeColor.rgb * firstShadeTex.rgb; + + + float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); const float4 secondShadeTex = lerp(SAMPLE_TEXTURE2D(_2nd_ShadeMap, sampler_MainTex, mainTexUV),firstShadeTex, _Use_1stAs2nd); float3 Set_2nd_ShadeColor = lerp((_2nd_ShadeColor.rgb * secondShadeTex.rgb),((_2nd_ShadeColor.rgb * secondShadeTex.rgb) * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; @@ -358,10 +363,10 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 //v.2.0.5: Filtering the high intensity zone of PointLights float3 Set_LightColor = lightColor; // - float3 Set_BaseColor = lerp((_BaseColor.rgb * mainTex.rgb * _LightIntensity), - ((_BaseColor.rgb * mainTex.rgb) * Set_LightColor), _Is_LightColor_Base); + float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity), + ((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); //v.2.0.5 - float3 Set_1st_ShadeColor = lerp((_1st_ShadeColor.rgb * firstShadeTex.rgb * _LightIntensity),((_1st_ShadeColor.rgb * firstShadeTex.rgb) * Set_LightColor), _Is_LightColor_1st_Shade); + float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); float3 Set_2nd_ShadeColor = lerp((_2nd_ShadeColor.rgb * secondShadeTex.rgb * _LightIntensity),((_2nd_ShadeColor.rgb * secondShadeTex.rgb) * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; @@ -451,10 +456,10 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 //v.2.0.5: Filtering the high intensity zone of PointLights float3 Set_LightColor = lightColor; // - float3 Set_BaseColor = lerp((_BaseColor.rgb * mainTex.rgb * _LightIntensity), - ((_BaseColor.rgb * mainTex.rgb) * Set_LightColor), _Is_LightColor_Base); + float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity), + ((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); //v.2.0.5 - float3 Set_1st_ShadeColor = lerp((_1st_ShadeColor.rgb * firstShadeTex.rgb * _LightIntensity),((_1st_ShadeColor.rgb * firstShadeTex.rgb) * Set_LightColor), _Is_LightColor_1st_Shade); + float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); float3 Set_2nd_ShadeColor = lerp((_2nd_ShadeColor.rgb * secondShadeTex.rgb * _LightIntensity),((_2nd_ShadeColor.rgb * secondShadeTex.rgb) * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; From aa509687f78837b8c6f6ae0d97ecd5cdc28970eb Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 23 Jan 2026 18:16:16 +0900 Subject: [PATCH 02/14] secondShadeAlbedo --- .../Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl index 95bf32c2e..acc9f451b 100644 --- a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl +++ b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl @@ -156,7 +156,9 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); const float4 secondShadeTex = lerp(SAMPLE_TEXTURE2D(_2nd_ShadeMap, sampler_MainTex, mainTexUV),firstShadeTex, _Use_1stAs2nd); - float3 Set_2nd_ShadeColor = lerp((_2nd_ShadeColor.rgb * secondShadeTex.rgb),((_2nd_ShadeColor.rgb * secondShadeTex.rgb) * Set_LightColor), _Is_LightColor_2nd_Shade); + const float3 secondShadeAlbedo = _2nd_ShadeColor.rgb * secondShadeTex.rgb; + + float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo),((secondShadeAlbedo) * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; @@ -367,7 +369,7 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 ((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); //v.2.0.5 float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); - float3 Set_2nd_ShadeColor = lerp((_2nd_ShadeColor.rgb * secondShadeTex.rgb * _LightIntensity),((_2nd_ShadeColor.rgb * secondShadeTex.rgb) * Set_LightColor), _Is_LightColor_2nd_Shade); + float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo * _LightIntensity),((secondShadeAlbedo) * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; //v.2.0.5: @@ -460,7 +462,7 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 ((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); //v.2.0.5 float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); - float3 Set_2nd_ShadeColor = lerp((_2nd_ShadeColor.rgb * secondShadeTex.rgb * _LightIntensity),((_2nd_ShadeColor.rgb * secondShadeTex.rgb) * Set_LightColor), _Is_LightColor_2nd_Shade); + float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo * _LightIntensity),((secondShadeAlbedo) * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; //v.2.0.5: From 35247a71822934410fde7baa31c76b65bf44aaba Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 23 Jan 2026 18:23:20 +0900 Subject: [PATCH 03/14] remove newline --- .../Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl index acc9f451b..1b00e7c4d 100644 --- a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl +++ b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl @@ -365,8 +365,7 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 //v.2.0.5: Filtering the high intensity zone of PointLights float3 Set_LightColor = lightColor; // - float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity), - ((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); + float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity),((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); //v.2.0.5 float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo * _LightIntensity),((secondShadeAlbedo) * Set_LightColor), _Is_LightColor_2nd_Shade); @@ -458,8 +457,7 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 //v.2.0.5: Filtering the high intensity zone of PointLights float3 Set_LightColor = lightColor; // - float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity), - ((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); + float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity),((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); //v.2.0.5 float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo * _LightIntensity),((secondShadeAlbedo) * Set_LightColor), _Is_LightColor_2nd_Shade); From c734573d8a2b2de43ca37532e5c50631d356710a Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 23 Jan 2026 18:23:36 +0900 Subject: [PATCH 04/14] rearrange declarations --- .../UniversalToonBodyDoubleShadeWithFeather.hlsl | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl index 1b00e7c4d..713c19ef4 100644 --- a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl +++ b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl @@ -144,23 +144,18 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 float3 halfDirection = normalize(viewDirection + lightDirection); #ifdef _IS_PASS_FWDBASE - float3 Set_LightColor = lightColor.rgb; const float3 baseAlbedo = _BaseColor.rgb * mainTex.rgb; - - float3 Set_BaseColor = lerp((baseAlbedo),((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); - - //v.2.0.5 const float4 firstShadeTex = lerp(SAMPLE_TEXTURE2D(_1st_ShadeMap, sampler_MainTex, mainTexUV),mainTex, _Use_BaseAs1st); const float3 firstShadeAlbedo = _1st_ShadeColor.rgb * firstShadeTex.rgb; - - - float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); const float4 secondShadeTex = lerp(SAMPLE_TEXTURE2D(_2nd_ShadeMap, sampler_MainTex, mainTexUV),firstShadeTex, _Use_1stAs2nd); const float3 secondShadeAlbedo = _2nd_ShadeColor.rgb * secondShadeTex.rgb; + //v.2.0.5 + float3 Set_LightColor = lightColor.rgb; + float3 Set_BaseColor = lerp((baseAlbedo),((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); + float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo),((secondShadeAlbedo) * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; - //v.2.0.6 //Minmimum value is same as the Minimum Feather's value with the Minimum Step's value as threshold. From 7ffb2d79dab9b2c89cd8b9b99070ab8f4bff44ff Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 23 Jan 2026 18:27:34 +0900 Subject: [PATCH 05/14] remove unnecessary brackets --- ...niversalToonBodyDoubleShadeWithFeather.hlsl | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl index 713c19ef4..647483644 100644 --- a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl +++ b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl @@ -152,9 +152,9 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 //v.2.0.5 float3 Set_LightColor = lightColor.rgb; - float3 Set_BaseColor = lerp((baseAlbedo),((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); - float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); - float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo),((secondShadeAlbedo) * Set_LightColor), _Is_LightColor_2nd_Shade); + float3 Set_BaseColor = lerp((baseAlbedo),(baseAlbedo * Set_LightColor), _Is_LightColor_Base); + float3 Set_1st_ShadeColor = lerp(firstShadeAlbedo,(firstShadeAlbedo * Set_LightColor), _Is_LightColor_1st_Shade); + float3 Set_2nd_ShadeColor = lerp(secondShadeAlbedo,(secondShadeAlbedo * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; //v.2.0.6 @@ -360,10 +360,10 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 //v.2.0.5: Filtering the high intensity zone of PointLights float3 Set_LightColor = lightColor; // - float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity),((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); + float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity),(baseAlbedo * Set_LightColor), _Is_LightColor_Base); //v.2.0.5 - float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); - float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo * _LightIntensity),((secondShadeAlbedo) * Set_LightColor), _Is_LightColor_2nd_Shade); + float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),(firstShadeAlbedo * Set_LightColor), _Is_LightColor_1st_Shade); + float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo * _LightIntensity),(secondShadeAlbedo * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; //v.2.0.5: @@ -452,10 +452,10 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 //v.2.0.5: Filtering the high intensity zone of PointLights float3 Set_LightColor = lightColor; // - float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity),((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); + float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity),(baseAlbedo * Set_LightColor), _Is_LightColor_Base); //v.2.0.5 - float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); - float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo * _LightIntensity),((secondShadeAlbedo) * Set_LightColor), _Is_LightColor_2nd_Shade); + float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),(firstShadeAlbedo * Set_LightColor), _Is_LightColor_1st_Shade); + float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo * _LightIntensity),(secondShadeAlbedo * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; //v.2.0.5: From 39925b478fd01c7394ae7ff0bea4e09e12f1d7ca Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 23 Jan 2026 18:30:32 +0900 Subject: [PATCH 06/14] baseAlbedo --- .../Shaders/UniversalToonBodyShadingGradeMap.hlsl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl index 9a5fc8816..467413e0c 100644 --- a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl +++ b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl @@ -82,6 +82,8 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 const float4 highlightTex = tex2D(_HighColor_Tex, TRANSFORM_TEX(Set_UV0, _HighColor_Tex)); const float4 highlightMaskTex = tex2D(_Set_HighColorMask, TRANSFORM_TEX(Set_UV0, _Set_HighColorMask)); + const float3 baseAlbedo = _BaseColor.rgb * mainTex.rgb; + #ifdef _DBUFFER ApplyDecalToSurfaceDataUTS(input.positionCS, mainTex.rgb, surfaceData, normalDirection); #endif @@ -135,8 +137,7 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 #ifdef _IS_PASS_FWDBASE float3 Set_LightColor = lightColor.rgb; - float3 Set_BaseColor = lerp((mainTex.rgb * _BaseColor.rgb), - ((mainTex.rgb * _BaseColor.rgb) * Set_LightColor), _Is_LightColor_Base); + float3 Set_BaseColor = lerp((baseAlbedo), ((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); //v.2.0.5 float3 _Is_LightColor_1st_Shade_var = lerp((firstShadeTex.rgb * _1st_ShadeColor.rgb),((firstShadeTex.rgb * _1st_ShadeColor.rgb) * Set_LightColor), _Is_LightColor_1st_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; From 1b6998d243f84026ddab04f065ddd5124a329953 Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 23 Jan 2026 18:31:49 +0900 Subject: [PATCH 07/14] firstShadeAlbedo --- .../UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl index 467413e0c..b70af3a8a 100644 --- a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl +++ b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl @@ -83,6 +83,7 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 const float4 highlightMaskTex = tex2D(_Set_HighColorMask, TRANSFORM_TEX(Set_UV0, _Set_HighColorMask)); const float3 baseAlbedo = _BaseColor.rgb * mainTex.rgb; + const float3 firstShadeAlbedo = _1st_ShadeColor.rgb * firstShadeTex.rgb; #ifdef _DBUFFER ApplyDecalToSurfaceDataUTS(input.positionCS, mainTex.rgb, surfaceData, normalDirection); @@ -139,7 +140,7 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 float3 Set_LightColor = lightColor.rgb; float3 Set_BaseColor = lerp((baseAlbedo), ((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); //v.2.0.5 - float3 _Is_LightColor_1st_Shade_var = lerp((firstShadeTex.rgb * _1st_ShadeColor.rgb),((firstShadeTex.rgb * _1st_ShadeColor.rgb) * Set_LightColor), _Is_LightColor_1st_Shade); + float3 _Is_LightColor_1st_Shade_var = lerp((firstShadeAlbedo),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; // Half Lambert From 176dcda80dc8410c9f3eb1ceec3c04d6d0a81e2d Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 23 Jan 2026 18:32:15 +0900 Subject: [PATCH 08/14] remove brackets --- .../UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl index b70af3a8a..d3f646816 100644 --- a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl +++ b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl @@ -138,9 +138,9 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 #ifdef _IS_PASS_FWDBASE float3 Set_LightColor = lightColor.rgb; - float3 Set_BaseColor = lerp((baseAlbedo), ((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); + float3 Set_BaseColor = lerp((baseAlbedo), (baseAlbedo * Set_LightColor), _Is_LightColor_Base); //v.2.0.5 - float3 _Is_LightColor_1st_Shade_var = lerp((firstShadeAlbedo),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); + float3 _Is_LightColor_1st_Shade_var = lerp(firstShadeAlbedo,(firstShadeAlbedo * Set_LightColor), _Is_LightColor_1st_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; // Half Lambert From 0a02803029b55987e0803d95c3a311f236ec6d6e Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 23 Jan 2026 18:33:52 +0900 Subject: [PATCH 09/14] remove comment --- .../UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl | 1 - 1 file changed, 1 deletion(-) diff --git a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl index d3f646816..4baad231d 100644 --- a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl +++ b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl @@ -142,7 +142,6 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 //v.2.0.5 float3 _Is_LightColor_1st_Shade_var = lerp(firstShadeAlbedo,(firstShadeAlbedo * Set_LightColor), _Is_LightColor_1st_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; - // Half Lambert //v.2.0.6 float4 _ShadingGradeMap_var = tex2Dlod(_ShadingGradeMap, From af1213eccab66a26645376f572fa9cfebfc5c494 Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 23 Jan 2026 18:34:22 +0900 Subject: [PATCH 10/14] baseAlbedo and firstShadeAlbedo --- .../Shaders/UniversalToonBodyShadingGradeMap.hlsl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl index 4baad231d..78c37bc59 100644 --- a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl +++ b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl @@ -433,10 +433,10 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 //v.2.0.5: Filtering the high intensity zone of PointLights float3 Set_LightColor = lightColor; // - float3 Set_BaseColor = lerp((_BaseColor.rgb * mainTex.rgb * _LightIntensity), - ((_BaseColor.rgb * mainTex.rgb) * Set_LightColor), _Is_LightColor_Base); + float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity), + ((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); //v.2.0.5 - float3 Set_1st_ShadeColor = lerp((_1st_ShadeColor.rgb * firstShadeTex.rgb * _LightIntensity),((_1st_ShadeColor.rgb * firstShadeTex.rgb) * Set_LightColor), _Is_LightColor_1st_Shade); + float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); float3 Set_2nd_ShadeColor = lerp((_2nd_ShadeColor.rgb * secondShadeTex.rgb * _LightIntensity),((_2nd_ShadeColor.rgb * secondShadeTex.rgb) * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; @@ -553,10 +553,10 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 //v.2.0.5: Filtering the high intensity zone of PointLights float3 Set_LightColor = lightColor; // - float3 Set_BaseColor = lerp((_BaseColor.rgb * mainTex.rgb * _LightIntensity), - ((_BaseColor.rgb * mainTex.rgb) * Set_LightColor), _Is_LightColor_Base); + float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity), + ((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); //v.2.0.5 - float3 Set_1st_ShadeColor = lerp((_1st_ShadeColor.rgb * firstShadeTex.rgb * _LightIntensity),((_1st_ShadeColor.rgb * firstShadeTex.rgb) * Set_LightColor), _Is_LightColor_1st_Shade); + float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); float3 Set_2nd_ShadeColor = lerp((_2nd_ShadeColor.rgb * secondShadeTex.rgb * _LightIntensity),((_2nd_ShadeColor.rgb * secondShadeTex.rgb) * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; From d2ede604c64d11eddb14e349e5c5a404dc038c5a Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 23 Jan 2026 18:35:58 +0900 Subject: [PATCH 11/14] remove unused brackets --- .../Shaders/UniversalToonBodyShadingGradeMap.hlsl | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl index 78c37bc59..898bc934b 100644 --- a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl +++ b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl @@ -433,10 +433,9 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 //v.2.0.5: Filtering the high intensity zone of PointLights float3 Set_LightColor = lightColor; // - float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity), - ((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); + float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity), (baseAlbedo * Set_LightColor), _Is_LightColor_Base); //v.2.0.5 - float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); + float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),(firstShadeAlbedo * Set_LightColor), _Is_LightColor_1st_Shade); float3 Set_2nd_ShadeColor = lerp((_2nd_ShadeColor.rgb * secondShadeTex.rgb * _LightIntensity),((_2nd_ShadeColor.rgb * secondShadeTex.rgb) * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; @@ -552,11 +551,10 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 notDirectional); //v.2.0.5: Filtering the high intensity zone of PointLights float3 Set_LightColor = lightColor; - // - float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity), - ((baseAlbedo) * Set_LightColor), _Is_LightColor_Base); + float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity), (baseAlbedo * Set_LightColor), _Is_LightColor_Base); + //v.2.0.5 - float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),((firstShadeAlbedo) * Set_LightColor), _Is_LightColor_1st_Shade); + float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),(firstShadeAlbedo * Set_LightColor), _Is_LightColor_1st_Shade); float3 Set_2nd_ShadeColor = lerp((_2nd_ShadeColor.rgb * secondShadeTex.rgb * _LightIntensity),((_2nd_ShadeColor.rgb * secondShadeTex.rgb) * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; From 0c8a7c0f2ed867bb7ae8c6ab92c12b86f051d099 Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 23 Jan 2026 18:36:52 +0900 Subject: [PATCH 12/14] secondShadeAlbedo --- .../Shaders/UniversalToonBodyShadingGradeMap.hlsl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl index 898bc934b..d2e52d799 100644 --- a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl +++ b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl @@ -84,6 +84,7 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 const float3 baseAlbedo = _BaseColor.rgb * mainTex.rgb; const float3 firstShadeAlbedo = _1st_ShadeColor.rgb * firstShadeTex.rgb; + const float3 secondShadeAlbedo = _2nd_ShadeColor.rgb * secondShadeTex.rgb; #ifdef _DBUFFER ApplyDecalToSurfaceDataUTS(input.positionCS, mainTex.rgb, surfaceData, normalDirection); @@ -436,7 +437,7 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity), (baseAlbedo * Set_LightColor), _Is_LightColor_Base); //v.2.0.5 float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),(firstShadeAlbedo * Set_LightColor), _Is_LightColor_1st_Shade); - float3 Set_2nd_ShadeColor = lerp((_2nd_ShadeColor.rgb * secondShadeTex.rgb * _LightIntensity),((_2nd_ShadeColor.rgb * secondShadeTex.rgb) * Set_LightColor), _Is_LightColor_2nd_Shade); + float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo * _LightIntensity),((secondShadeAlbedo) * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; // float4 _Set_2nd_ShadePosition_var = tex2D(_Set_2nd_ShadePosition, TRANSFORM_TEX(Set_UV0, _Set_2nd_ShadePosition)); @@ -555,7 +556,7 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 //v.2.0.5 float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),(firstShadeAlbedo * Set_LightColor), _Is_LightColor_1st_Shade); - float3 Set_2nd_ShadeColor = lerp((_2nd_ShadeColor.rgb * secondShadeTex.rgb * _LightIntensity),((_2nd_ShadeColor.rgb * secondShadeTex.rgb) * Set_LightColor), _Is_LightColor_2nd_Shade); + float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo * _LightIntensity),((secondShadeAlbedo) * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; // float4 _Set_2nd_ShadePosition_var = tex2D(_Set_2nd_ShadePosition, TRANSFORM_TEX(Set_UV0, _Set_2nd_ShadePosition)); From c6a090865dce6650208dda2421eccff81ef74c6b Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 23 Jan 2026 18:38:39 +0900 Subject: [PATCH 13/14] remove unnecessary brackets --- .../UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl index d2e52d799..24390901c 100644 --- a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl +++ b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl @@ -437,7 +437,7 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 float3 Set_BaseColor = lerp((baseAlbedo * _LightIntensity), (baseAlbedo * Set_LightColor), _Is_LightColor_Base); //v.2.0.5 float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),(firstShadeAlbedo * Set_LightColor), _Is_LightColor_1st_Shade); - float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo * _LightIntensity),((secondShadeAlbedo) * Set_LightColor), _Is_LightColor_2nd_Shade); + float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo * _LightIntensity),(secondShadeAlbedo * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; // float4 _Set_2nd_ShadePosition_var = tex2D(_Set_2nd_ShadePosition, TRANSFORM_TEX(Set_UV0, _Set_2nd_ShadePosition)); @@ -556,7 +556,7 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 //v.2.0.5 float3 Set_1st_ShadeColor = lerp((firstShadeAlbedo * _LightIntensity),(firstShadeAlbedo * Set_LightColor), _Is_LightColor_1st_Shade); - float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo * _LightIntensity),((secondShadeAlbedo) * Set_LightColor), _Is_LightColor_2nd_Shade); + float3 Set_2nd_ShadeColor = lerp((secondShadeAlbedo * _LightIntensity),(secondShadeAlbedo * Set_LightColor), _Is_LightColor_2nd_Shade); float _HalfLambert_var = 0.5 * dot(lerp(i.normalDir, normalDirection, _Is_NormalMapToBase), lightDirection) + 0.5; // float4 _Set_2nd_ShadePosition_var = tex2D(_Set_2nd_ShadePosition, TRANSFORM_TEX(Set_UV0, _Set_2nd_ShadePosition)); From 24d310d6c480973e16e6a927cc31ce49b0c39313 Mon Sep 17 00:00:00 2001 From: sindharta-tanuwijaya <71803280+sindharta-tanuwijaya@users.noreply.github.com> Date: Fri, 23 Jan 2026 18:46:12 +0900 Subject: [PATCH 14/14] Update com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl index 24390901c..4783df4d5 100644 --- a/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl +++ b/com.unity.toonshader/Runtime/UniversalRP/Shaders/UniversalToonBodyShadingGradeMap.hlsl @@ -83,7 +83,7 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 const float4 highlightMaskTex = tex2D(_Set_HighColorMask, TRANSFORM_TEX(Set_UV0, _Set_HighColorMask)); const float3 baseAlbedo = _BaseColor.rgb * mainTex.rgb; - const float3 firstShadeAlbedo = _1st_ShadeColor.rgb * firstShadeTex.rgb; + const float3 firstShadeAlbedo = _1st_ShadeColor.rgb * firstShadeTex.rgb; const float3 secondShadeAlbedo = _2nd_ShadeColor.rgb * secondShadeTex.rgb; #ifdef _DBUFFER