【1】
Shader "Custom/NewShader" {
SubShader {
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 3.0
#include "UnityCG.cginc"
struct vertexInput {
float4 vertex : POSITION;
float4 srcPos : TEXCOORD0;
};
struct fragmentInput{
float4 position : SV_POSITION;
float4 srcPos : TEXCOORD0;
};
fragmentInput vert(vertexInput i){
fragmentInput o;
o.position = mul (UNITY_MATRIX_MVP, i.vertex);
o.srcPos = i.srcPos;
return o;
}
float4 frag(fragmentInput i) : COLOR {
return float4(i.srcPos.xy,0.0,1.0);
}
ENDCG
}
}
}
原点:左下
【2】
Shader "Custom/another" {
SubShader {
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 3.0
#include "UnityCG.cginc"
float4 vert(appdata_base v) : POSITION {
return mul (UNITY_MATRIX_MVP, v.vertex);
}
fixed4 frag(float4 sp:WPOS) : COLOR {
return fixed4(sp.xy/_ScreenParams.xy,0.0,1.0);
}
ENDCG
}
}
}
原点:右上
【3】
Shader "Custom/rightUp" {
Properties {
_MainTex ("MainTex", 2D) = "white"
}
SubShader {
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 3.0
#include "UnityCG.cginc"
sampler2D _MainTex;
half4 _MainTex_ST;
struct vertOut {
float4 pos:SV_POSITION;
float4 srcPos: TEXCOORD0;
};
vertOut vert(appdata_base v) {
vertOut o;
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
o.srcPos.xy = TRANSFORM_TEX(v.texcoord, _MainTex);
return o;
}
float4 frag(vertOut i) : COLOR {
float2 uv = (i.srcPos.xy);
return float4(uv,0.0,1.0);
}
ENDCG
}
}
}
原点:右上
【4】
Shader "Custom/rightDown" {
Properties {
_MainTex ("MainTex", 2D) = "white"
}
SubShader {
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 3.0
#include "UnityCG.cginc"
sampler2D _MainTex;
half4 _MainTex_ST;
struct vertOut {
float4 pos:SV_POSITION;
float4 srcPos: TEXCOORD0;
};
vertOut vert(appdata_base v) {
vertOut o;
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
o.srcPos = ComputeScreenPos(o.pos);
return o;
}
float4 frag(vertOut i) : COLOR {
float2 uv = (i.srcPos.xy/i.srcPos.w);
return float4(uv,0.0,1.0);
}
ENDCG
}
}
}
原点:左下