Sign in to follow this  

Vertex Shader - verts to NDC

This topic is 3729 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I am trying to transform the vertices of a polygon into NDC coordinates (0 to 1) to be used as UV texture coordinates. This is being done in a vertex shader. It seems simple enough. (You can imagine a small rectangle polygon on the screen. It should then be as if I am using scissoring or clip planes to ONLY render the part of the scene that falls within those polygon boundaries). Here is what I am doing:
void main(void)
{
	vec4 pos = ftransform();
	gl_Position = pos;

        // This turns the position into NDC coordinates, ranging -1 to 1.
	vec2 ndcPos = vec2(pos.x / pos.w, pos.y / pos.w);

        // Now turn that into a 0 to 1.0 range.
	ndcPos = vec2((pos.x + 1.0) / 2.0, (pos.y + 1.0) / 2.0);

        // Use that as the texture coordinate.
	gl_TexCoord[0].s = ndcPos.x;
	gl_TexCoord[0].t = ndcPos.y;
}
The fragment shader is simply:
gl_FragColor = texture2D(tex, gl_TexCoord[0].st);
Something is clearly not right, because when I debug (painting red in pixels where the U/V are 0-1 and green when outside the range), the window is mostly green with a much-too-small red box that enlarges as I move very close. When the polygon is on-screen, it should always been red, right? Any ideas? This seems like it should be easy to do.
edit: dumb typo :((( [Edited by - Doggan on October 2, 2007 5:30:32 AM]

Share this post


Link to post
Share on other sites

This topic is 3729 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this