- 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
![](https://koobas.hobune.stream/wayback/20220613135024im_/https://answers.unity.com/themes/thub/images/avi.jpg)
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