From a91f6492cd72bbcc5574c3fb491cd72b99de9753 Mon Sep 17 00:00:00 2001 From: hatayama Date: Fri, 11 Jul 2025 17:42:44 +0900 Subject: [PATCH 1/2] Support for rect mask 2d --- Packages/src/Shaders/UI-CompositeCanvasRenderer.shader | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Packages/src/Shaders/UI-CompositeCanvasRenderer.shader b/Packages/src/Shaders/UI-CompositeCanvasRenderer.shader index e58e1cc..d674ff9 100644 --- a/Packages/src/Shaders/UI-CompositeCanvasRenderer.shader +++ b/Packages/src/Shaders/UI-CompositeCanvasRenderer.shader @@ -199,7 +199,8 @@ Shader "UI/CompositeCanvasRenderer" color *= tex2D(_MaskTex, maskUv + _Time.y * _MaskSpeed).a; #endif - return applyColor(color, IN.color); + half4 colorFactor = half4(IN.color.rgb, IN.color.a * color.a); + return applyColor(color, colorFactor); } ENDCG } From 81338a343ddca3a235732f85f0668f21f5b59ddf Mon Sep 17 00:00:00 2001 From: hatayama Date: Fri, 18 Jul 2025 12:54:20 +0900 Subject: [PATCH 2/2] feat: add custom shader support for CompositeCanvasRenderer - Add customShader setting to ProjectSettings - Allow overriding default UI/CompositeCanvasRenderer shader - Maintain MaterialRepository caching compatibility --- Packages/src/Runtime/CompositeCanvasRenderer.cs | 16 +++++++++++++++- .../CompositeCanvasRendererProjectSettings.cs | 11 +++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Packages/src/Runtime/CompositeCanvasRenderer.cs b/Packages/src/Runtime/CompositeCanvasRenderer.cs index 34cd5b8..4a98f8a 100644 --- a/Packages/src/Runtime/CompositeCanvasRenderer.cs +++ b/Packages/src/Runtime/CompositeCanvasRenderer.cs @@ -743,13 +743,27 @@ private Material CreateMaterial() return CreateMaterial(colorMode, srcBlendMode, dstBlendMode); } + /// + /// Get shader to use based on project settings. + /// + private static Shader GetShaderToUse() + { + var customShader = CompositeCanvasRendererProjectSettings.customShader; + if (customShader != null) + { + return customShader; + } + + return Shader.Find("UI/CompositeCanvasRenderer"); + } + /// /// Create a material. /// public static Material CreateMaterial(ColorMode colorMode, BlendMode srcBlendMode, BlendMode dstBlendMode) { Profiler.BeginSample("(CCR)[CompositeCanvasRenderer] CreateMaterial"); - var mat = new Material(Shader.Find("UI/CompositeCanvasRenderer")) + var mat = new Material(GetShaderToUse()) { hideFlags = HideFlags.DontSave | HideFlags.NotEditable, shaderKeywords = s_ColorModeKeywords[(int)colorMode] diff --git a/Packages/src/Runtime/ProjectSettings/CompositeCanvasRendererProjectSettings.cs b/Packages/src/Runtime/ProjectSettings/CompositeCanvasRendererProjectSettings.cs index ea0200c..43ad18c 100644 --- a/Packages/src/Runtime/ProjectSettings/CompositeCanvasRendererProjectSettings.cs +++ b/Packages/src/Runtime/ProjectSettings/CompositeCanvasRendererProjectSettings.cs @@ -19,6 +19,11 @@ public class CompositeCanvasRendererProjectSettings [SerializeField] private bool m_EnableCullingInEditMode = true; + [Header("CompositeCanvasRenderer Shader Override")] + [SerializeField] + [Tooltip("Alternative shader to use instead of 'UI/CompositeCanvasRenderer'.\nLeave empty to use the default shader.")] + private Shader m_CustomShader; + #if UNITY_EDITOR [Header("Shader")] [SerializeField] @@ -59,6 +64,12 @@ public static float sensitivity } } + public static Shader customShader + { + get => instance.m_CustomShader; + set => instance.m_CustomShader = value; + } + #if UNITY_EDITOR /// /// Reset to default values.