struct Plain_OUT { float4 vPos : POSITION; float4 color :COLOR0; }; struct PlainTex_OUT { float4 vPos : POSITION; float4 color :COLOR0; float4 texCoord: TEXCOORD0; }; struct VPos_OUT { float4 VPos : POSITION; float4 VPosition : TEXCOORD0; }; struct CPos_OUT { float4 VPos : POSITION; float4 CPos : TEXCOORD0; }; float4 VDepth(VPos_OUT IN) : COLOR { float4 pos = IN.VPosition / IN.VPosition.w; return float4(pos.z, pos.z * pos.z, 1, 1); } float4 CDepth(CPos_OUT IN) : COLOR { return -IN.CPos.z; } float4 CDist(CPos_OUT IN) : COLOR { float dist = length(IN.CPos.xyz); return float4(dist, dist * dist, 1, dist); } float4 CDistNorm(CPos_OUT IN, uniform float farPlane) : COLOR { float dist = length(IN.CPos.xyz) / farPlane; return float4(dist, dist * dist, 1, dist); } float4 Plain(Plain_OUT IN) :COLOR0 { return IN.color; } float4 PlainTex2D(PlainTex_OUT IN, uniform sampler2D Texture) : COLOR { return IN.color * tex2D(Texture, IN.texCoord.xy); } float4 PlainTex1D(PlainTex_OUT IN, uniform sampler1D Texture) : COLOR { return IN.color * tex1D(Texture, IN.texCoord.x); } float4 PlainTex3D(PlainTex_OUT IN, uniform sampler3D Texture) : COLOR { return IN.color * tex3D(Texture, IN.texCoord.xyz); }