TH1/Unity/Assets/Shaders/CircleShader.shader
2025-07-17 18:26:28 +08:00

61 lines
1.8 KiB
Plaintext

Shader "Custom/BlackCircleWithOutline"
{
Properties
{
_InnerColor("Inner Color", Color) = (0,0,0,0.9) // 内部颜色(黑色)
_OutlineColor("Outline Color", Color) = (1,1,1,0.9) // 轮廓颜色(白色)
_Thickness("Thickness", Range(0, 0.5)) = 0.05 // 圆圈轮廓厚度
}
SubShader
{
Tags { "Queue" = "Transparent" "RenderType" = "Transparent" }
LOD 100
Blend SrcAlpha OneMinusSrcAlpha // 开启透明混合
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata_t {
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f {
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
fixed4 _InnerColor; // 内部颜色
fixed4 _OutlineColor; // 轮廓颜色
float _Thickness; // 圆圈轮廓厚度
v2f vert(appdata_t v) {
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
fixed4 frag(v2f i) : SV_Target {
float2 center = float2(0.5, 0.5); // 圆心
float dist = distance(i.uv, center); // 当前像素到圆心的距离
if (dist < (0.5 - _Thickness)) {
return _InnerColor; // 圆心内显示黑色
}
else if (dist <= 0.5) {
return _OutlineColor; // 在轮廓区域显示白色
}
// 外部区域返回完全透明
return float4(0, 0, 0, 0);
}
ENDCG
}
}
}