- Home /
Shifting Texture Coordinates via CG Shader
Hi All,
I am in the process of learning Shader scripting using CG following the nVidia tutorials. I am trying to replicate the double-vision texturing as can be seen here in section 3.5.5:
http://http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter03.html
I am getting an error in the Unity Console stating:
Program 'frag', ambiguous overloaded function reference "tex2D(sampler2D, float4)" at line 27
My code for the shader is:
Shader "Custom/RGBSplat" {
Properties {
_MainTex ("Texture", 2D) = "white" { }
_Seperation ("Seperation", float) = 0.0
}
SubShader {
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
float _Seperation;
void vert (appdata_full v, out float4 oPosition : POSITION, out float4 leftTexCoord : TEXCOORD0)
{
oPosition = mul (UNITY_MATRIX_MVP, v.vertex);
leftTexCoord = v.texcoord;
}
void frag (float4 leftTexCoord : TEXCOORD0, float4 rightTexCoord : TEXCOORD1, out float4 oColor : COLOR)
{
float4 leftColor = tex2D(_MainTex, leftTexCoord);
//float4 rightColor = tex2D(_MainTex, rightTexCoord);
//oColor = lerp(leftColor, rightColor, 0.5);
oColor = leftColor;
}
ENDCG
}
}
Fallback "Diffuse"
}
I cannot seem to figure out what the problem is, if any scripting guru out there has an idea.
Also it is worth noting that I see a lot of people have said to animate/shift texture UV coordinates from within a MonoBehavior script. But I would like to do this in a shader. And wouldnt it be faster running on the GPU than the CPU for manipulating texture UVs?
Thanks!
Answer by yanhui · Mar 03, 2014 at 12:56 PM
I find my error reason,it is that struct v2f { float4 pos:SV_POSITION; float uv:TEXCOORD0; }; "float" should be "float2".
I think your error is that ,the function "frag", the first parameter's type "float4" should be float2.
Your answer
Follow this Question
Related Questions
uv not being passed through from vertex to surface shader 1 Answer
How to get the global position of a vertex in a Cg vertex shader? 1 Answer
Accessing a second texture's offset in a modified sprite shader 0 Answers
Second UV set as coordinates for a different texture? 3 Answers
How to force the compilation of a shader in Unity? 5 Answers