Unity Shader 中获取屏幕像素坐标
CodingShader "Unity Shaders Book/Chapter 4/Chapter4-ScreenXY"
{
SubShader
{
Pass
{
Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
// method1:
float4 vert(float4 vertex : POSITION) : SV_POSITION
{
return UnityObjectToClipPos(vertex);
}
fixed4 frag(float4 vertex : SV_POSITION) : SV_TARGET
{
return fixed4(vertex.xy / _ScreenParams.xy, 0, 1.0);
}
/*
// method2:
struct v2f
{
float4 pos : SV_POSITION;
float4 screenPos : TEXCOORD0;
};
v2f vert(float4 vertex : POSITION)
{
v2f o = (v2f)0;
o.pos = UnityObjectToClipPos(vertex);
o.screenPos = ComputeScreenPos(o.pos);
return o;
}
fixed4 frag(v2f i) : SV_TARGET
{
return fixed4(i.screenPos.xy / i.screenPos.w, 0, 1.0);
}
*/
/*
// method3:
float4 vert(float4 vertex : POSITION) : SV_POSITION
{
return UnityObjectToClipPos(vertex);
}
fixed4 frag(float4 sPos : VPOS) : SV_TARGET
{
return fixed4(sPos.xy / _ScreenParams.xy, 0, 1.0);
}
*/
ENDCG
}
}
FallBack "Diffuse"
}
Effect
Screen XY Move