Shader "Custom/UI_Peinture" { Properties { _MainTex ("Sprite Texture", 2D) = "white" {} _Color ("Tint", Color) = (1,1,1,1) // Réglez votre Alpha (54/255) ici dans le matériau _StencilComp ("Stencil Comparison", Float) = 8 _Stencil ("Stencil ID", Float) = 0 _StencilOp ("Stencil Operation", Float) = 0 _StencilWriteMask ("Stencil Write Mask", Float) = 255 _StencilReadMask ("Stencil Read Mask", Float) = 255 _ColorMask ("Color Mask", Float) = 15 } SubShader { Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" "CanUseSpriteAtlas"="True" "ForceStereoDrawCall"="True" } // C'est ici qu'on vérifie le Pochoir Stencil { Ref 1 // On cherche le chiffre 1 Comp Equal // On dessine SEULEMENT si la valeur est égale à 1 } Cull Off Lighting Off ZWrite Off ZTest [unity_GUIZTestMode] Blend SrcAlpha OneMinusSrcAlpha ColorMask [_ColorMask] Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" #include "UnityUI.cginc" #include "UnityShaderVariables.cginc" struct appdata_t { float4 vertex : POSITION; float4 color : COLOR; float2 texcoord : TEXCOORD0; UNITY_VERTEX_INPUT_INSTANCE_ID }; struct v2f { float4 vertex : SV_POSITION; fixed4 color : COLOR; float2 texcoord : TEXCOORD0; float4 worldPosition : TEXCOORD1; UNITY_VERTEX_OUTPUT_STEREO }; fixed4 _Color; v2f vert(appdata_t v) { v2f o; UNITY_SETUP_INSTANCE_ID(v); o.worldPosition = v.vertex; o.vertex = UnityObjectToClipPos(o.worldPosition); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); o.texcoord = v.texcoord; o.color = _Color; return o; } fixed4 frag(v2f i) : SV_Target { // On renvoie la couleur passée par le vertex shader return i.color; } ENDCG } } }