Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion Packages/src/Runtime/CompositeCanvasRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -743,13 +743,27 @@ private Material CreateMaterial()
return CreateMaterial(colorMode, srcBlendMode, dstBlendMode);
}

/// <summary>
/// Get shader to use based on project settings.
/// </summary>
private static Shader GetShaderToUse()
{
var customShader = CompositeCanvasRendererProjectSettings.customShader;
if (customShader != null)
{
return customShader;
}

return Shader.Find("UI/CompositeCanvasRenderer");
}

/// <summary>
/// Create a material.
/// </summary>
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]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down Expand Up @@ -59,6 +64,12 @@ public static float sensitivity
}
}

public static Shader customShader
{
get => instance.m_CustomShader;
set => instance.m_CustomShader = value;
}

#if UNITY_EDITOR
/// <summary>
/// Reset to default values.
Expand Down
3 changes: 2 additions & 1 deletion Packages/src/Shaders/UI-CompositeCanvasRenderer.shader
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
Loading