效果
ShaderLab
Shader "Built_in/Dot"{
Properties{
_MainTex ("Texture", 2D) = "back" {}
_DotSize ("Dot Size", Range(1.0, 10.0)) = 3.0
}
SubShader{
Pass{
CGPROGRAM
#include "UnityCG.cginc"
#pragma vertex vert
#pragma fragment frag
#pragma enable_d3d11_debug_symbols
struct appdata{
float4 vertex:POSITION;
float2 uv:TEXCOORD0;
};
struct v2f{
float2 uv:TEXCOORD0;
float4 pos:SV_POSITION;
};
sampler2D _MainTex;
float _DotSize;
v2f vert(appdata v){
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
half4 frag(v2f i):SV_Target{
half4 col = tex2D(_MainTex, i.uv);
float2 gridPos = floor(i.uv * _ScreenParams.zw * _DotSize);
float2 offset = i.uv * _ScreenParams.zw * _DotSize - gridPos;
float2 center = (gridPos + 0.5) / _DotSize;
// 如果当前像素在网格的边缘,则将其设为点的颜色;否则设为背景颜色
float size = 0.5 / _DotSize;
// clamp(offset.x,size)
// float varR = max(offset.x,size);
// col = half4(varR,0.1, 0.5, col.a);
if (offset.x > size || offset.y > size) {
col = half4(0.5, 1, 1, col.a);
}
// d3d11_debug("Vertex shader executed.\n");
return col;
}
ENDCG
}
}
}