Hello!
I am starting to learn shaders using the book Cg programming in Unity. I am trying to run a shader that will “cut” half of the object. it uses discard, because I am experimenting with it. I got the following errors:
Shader error in ‘Cg shader nusing discard’: GLSL vertex shader: ERROR: 0:33: ‘discard’ : supported in fragment shaders only at line 5
Shader error in ‘Cg shader nusing discard’: Shader program had errors at line 6
I don’t know how to solve this. Here is the code:
Shader “Cg shader using discard” {
SubShader {
Pass {
Cull Off
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
struct vertexInput
{
float4 vertex : POSITION;
};
struct vertexOutput
{
float4 pos : SV_POSITION;
float4 posInObjectCoords: TEXCOORD0;
};
vertexOutput vert(vertexInput input)
{
vertexOutput output;
output.pos = mul(UNITY_MATRIX_MVP, input.vertex);
output.posInObjectCoords = input.vertex;
return output;
}
float4 frag(vertexOutput input) : COLOR
{
if (input.posInObjectCoords.y > 0.0)
{
discard; // drop the fragment if y coordinate > 0
}
return float4(0.0, 1.0, 0.0, 1.0); // green
}
ENDCG
}
}
}
Thank in advance for any help ![]()