diff --git a/com.unity.toonshader/Runtime/Shaders/Common/Parts/UnityToon.shadertemplate b/com.unity.toonshader/Runtime/Shaders/Common/Parts/UnityToon.shadertemplate index 9180846cd..f2bddf6e2 100644 --- a/com.unity.toonshader/Runtime/Shaders/Common/Parts/UnityToon.shadertemplate +++ b/com.unity.toonshader/Runtime/Shaders/Common/Parts/UnityToon.shadertemplate @@ -653,7 +653,13 @@ Shader "Toon/Toon" { #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS #pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS #pragma multi_compile _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH + +#if UNITY_VERSION >= 60030000 + #pragma multi_compile _ _CLUSTER_LIGHT_LOOP +#else #pragma multi_compile _ _FORWARD_PLUS +#endif + #if (!defined(UNITY_COMPILER_DXC) && (defined(UNITY_PLATFORM_OSX) || defined(UNITY_PLATFORM_IOS))) || defined(SHADER_API_PS5) #if defined(SHADER_API_PS5) || defined(SHADER_API_METAL) diff --git a/com.unity.toonshader/Runtime/Shaders/Common/Parts/UnityToonTessellation.shadertemplate b/com.unity.toonshader/Runtime/Shaders/Common/Parts/UnityToonTessellation.shadertemplate index 714528be6..74fe853e9 100644 --- a/com.unity.toonshader/Runtime/Shaders/Common/Parts/UnityToonTessellation.shadertemplate +++ b/com.unity.toonshader/Runtime/Shaders/Common/Parts/UnityToonTessellation.shadertemplate @@ -775,7 +775,14 @@ Shader "Toon/Toon (Tessellation)" { #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS #pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS #pragma multi_compile _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH + +#if UNITY_VERSION >= 60030000 + #pragma multi_compile _ _CLUSTER_LIGHT_LOOP +#else #pragma multi_compile _ _FORWARD_PLUS +#endif + + #if (!defined(UNITY_COMPILER_DXC) && (defined(UNITY_PLATFORM_OSX) || defined(UNITY_PLATFORM_IOS))) || defined(SHADER_API_PS5) #if defined(SHADER_API_PS5) || defined(SHADER_API_METAL) diff --git a/com.unity.toonshader/Runtime/Shaders/URP/UniversalToonBody.hlsl b/com.unity.toonshader/Runtime/Shaders/URP/UniversalToonBody.hlsl index 9a99043b4..80a05ab77 100644 --- a/com.unity.toonshader/Runtime/Shaders/URP/UniversalToonBody.hlsl +++ b/com.unity.toonshader/Runtime/Shaders/URP/UniversalToonBody.hlsl @@ -21,14 +21,6 @@ # endif #endif - -#if USE_FORWARD_PLUS && defined(LIGHTMAP_ON) && defined(LIGHTMAP_SHADOW_MIXING) -#define FORWARD_PLUS_SUBTRACTIVE_LIGHT_CHECK if (_AdditionalLightsColor[lightIndex].a > 0.0h) continue; -#else -#define FORWARD_PLUS_SUBTRACTIVE_LIGHT_CHECK -#endif - - //function to rotate the UV: RotateUV() //float2 rotatedUV = RotateUV(i.uv0, (_angular_Verocity*3.141592654), float2(0.5, 0.5), _Time.g); float2 RotateUV(float2 _uv, float _radian, float2 _piv, float _time) { @@ -85,7 +77,7 @@ half3 GlobalIlluminationUTS(BRDFData brdfData, half3 bakedGI, half occlusion, ha half fresnelTerm = Pow4(1.0 - saturate(dot(normalWS, viewDirectionWS))); half3 indirectDiffuse = bakedGI * occlusion; -#if USE_FORWARD_PLUS +#if USE_FORWARD_PLUS || USE_CLUSTER_LIGHT_LOOP half3 irradiance = CalculateIrradianceFromReflectionProbes(reflectVector, positionWS, brdfData.perceptualRoughness, normalizedScreenSpaceUV); half3 indirectSpecular = irradiance * occlusion; @@ -266,9 +258,17 @@ VertexOutput vert(VertexInput v) { } #if UNITY_VERSION >= 60030000 + #define ENCODE_MESH_RENDERING_LAYER_UTS EncodeMeshRenderingLayer() + #else + #define ENCODE_MESH_RENDERING_LAYER_UTS EncodeMeshRenderingLayer(GetMeshRenderingLayer()) + +#ifndef CLUSTER_LIGHT_LOOP_SUBTRACTIVE_LIGHT_CHECK +#define CLUSTER_LIGHT_LOOP_SUBTRACTIVE_LIGHT_CHECK FORWARD_PLUS_SUBTRACTIVE_LIGHT_CHECK +#endif //CLUSTER_LIGHT_LOOP_SUBTRACTIVE_LIGHT_CHECK + #endif //---------------------------------------------------------------------------------------------------------------------- diff --git a/com.unity.toonshader/Runtime/Shaders/URP/UniversalToonBodyDoubleShadeWithFeather.hlsl b/com.unity.toonshader/Runtime/Shaders/URP/UniversalToonBodyDoubleShadeWithFeather.hlsl index 35e04e794..b81687443 100644 --- a/com.unity.toonshader/Runtime/Shaders/URP/UniversalToonBodyDoubleShadeWithFeather.hlsl +++ b/com.unity.toonshader/Runtime/Shaders/URP/UniversalToonBodyDoubleShadeWithFeather.hlsl @@ -399,11 +399,11 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 float3 pointLightColor = 0; #ifdef _ADDITIONAL_LIGHTS -#if USE_FORWARD_PLUS - // directional lights in Forward Plus +#if USE_CLUSTER_LIGHT_LOOP || USE_FORWARD_PLUS + // directional lights in Forward+/Cluster light loop for (uint lightIndex = 0; lightIndex < min(URP_FP_DIRECTIONAL_LIGHTS_COUNT, MAX_VISIBLE_LIGHTS); lightIndex++) { - FORWARD_PLUS_SUBTRACTIVE_LIGHT_CHECK + CLUSTER_LIGHT_LOOP_SUBTRACTIVE_LIGHT_CHECK float3 perLightContribution = ProcessAdditionalLight( lightIndex, @@ -420,7 +420,7 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 pointLightColor += perLightContribution; } -#endif // USE_FORWARD_PLUS +#endif // USE_CLUSTER_LIGHT_LOOP || USE_FORWARD_PLUS // spot lights, etc const int pixelLightCount = GetAdditionalLightsCount(); diff --git a/com.unity.toonshader/Runtime/Shaders/URP/UniversalToonBodyShadingGradeMap.hlsl b/com.unity.toonshader/Runtime/Shaders/URP/UniversalToonBodyShadingGradeMap.hlsl index 4c13de8af..bbd4a3863 100644 --- a/com.unity.toonshader/Runtime/Shaders/URP/UniversalToonBodyShadingGradeMap.hlsl +++ b/com.unity.toonshader/Runtime/Shaders/URP/UniversalToonBodyShadingGradeMap.hlsl @@ -478,8 +478,8 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 #ifdef _ADDITIONAL_LIGHTS -#if USE_FORWARD_PLUS - // directional lights in Forward Plus +#if USE_CLUSTER_LIGHT_LOOP || USE_FORWARD_PLUS + // directional lights in Forward+/Cluster light loop for (uint loopCounter = 0; loopCounter < min(URP_FP_DIRECTIONAL_LIGHTS_COUNT, MAX_VISIBLE_LIGHTS); loopCounter++) { float3 perLightContribution = ProcessAdditionalLightSG( @@ -497,7 +497,7 @@ void frag(VertexOutput i, out float4 finalRGBA : SV_Target0 pointLightColor += perLightContribution; } -#endif // USE_FORWARD_PLUS +#endif // USE_CLUSTER_LIGHT_LOOP || USE_FORWARD_PLUS // spot lights, etc const int pixelLightCount = GetAdditionalLightsCount(); diff --git a/com.unity.toonshader/Runtime/Shaders/UnityToon.shader b/com.unity.toonshader/Runtime/Shaders/UnityToon.shader index f24d03dcb..f828a175e 100644 --- a/com.unity.toonshader/Runtime/Shaders/UnityToon.shader +++ b/com.unity.toonshader/Runtime/Shaders/UnityToon.shader @@ -1,4 +1,4 @@ -//Auto-generated on Thu Apr 23 05:23:09 UTC 2026 +//Auto-generated on Wed Jun 24 02:54:04 UTC 2026 Shader "Toon/Toon" { Properties { @@ -1093,7 +1093,13 @@ Shader "Toon/Toon" { #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS #pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS #pragma multi_compile _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH + +#if UNITY_VERSION >= 60030000 + #pragma multi_compile _ _CLUSTER_LIGHT_LOOP +#else #pragma multi_compile _ _FORWARD_PLUS +#endif + #if (!defined(UNITY_COMPILER_DXC) && (defined(UNITY_PLATFORM_OSX) || defined(UNITY_PLATFORM_IOS))) || defined(SHADER_API_PS5) #if defined(SHADER_API_PS5) || defined(SHADER_API_METAL) diff --git a/com.unity.toonshader/Runtime/Shaders/UnityToonTessellation.shader b/com.unity.toonshader/Runtime/Shaders/UnityToonTessellation.shader index 074c7e235..03ffe3b51 100644 --- a/com.unity.toonshader/Runtime/Shaders/UnityToonTessellation.shader +++ b/com.unity.toonshader/Runtime/Shaders/UnityToonTessellation.shader @@ -1,4 +1,4 @@ -//Auto-generated on Thu Apr 23 05:23:09 UTC 2026 +//Auto-generated on Wed Jun 24 02:54:04 UTC 2026 Shader "Toon/Toon (Tessellation)" { Properties { @@ -1231,7 +1231,14 @@ Shader "Toon/Toon (Tessellation)" { #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS #pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS #pragma multi_compile _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH + +#if UNITY_VERSION >= 60030000 + #pragma multi_compile _ _CLUSTER_LIGHT_LOOP +#else #pragma multi_compile _ _FORWARD_PLUS +#endif + + #if (!defined(UNITY_COMPILER_DXC) && (defined(UNITY_PLATFORM_OSX) || defined(UNITY_PLATFORM_IOS))) || defined(SHADER_API_PS5) #if defined(SHADER_API_PS5) || defined(SHADER_API_METAL)