OpenGL Screen Transformations

Started by
4 comments, last by JoshuaWaring 10 years, 5 months ago

If I pass vertices to a shader between -1 and 1, with 0 being the middle of the screen.

would I be able to use those values without any modifications?

Advertisement

Yes

Those are the limits in the Normalized Device Coordinates system (NDC)

If you also want UV coordinates for this, simply do:

out_texcoord = (in_vertex + vec2(1.0)) * 0.5;

note that this is only for a fullscreen quad

for anything else you will want to provide UVs as well

Yes, but you must make sure that the w component of the vertex position is 1, because the perspective divide will still occur after the vertex shader.

Thank you :)

What are the UV quads relative to?
If I provided a quad's verticies between -1 and 1 couldn't I use them again for the UV if it's relative to the screen

or -1 and 1 if it's relative to the quad.

Thank you smile.png

What are the UV quads relative to?
If I provided a quad's verticies between -1 and 1 couldn't I use them again for the UV if it's relative to the screen

or -1 and 1 if it's relative to the quad.

UVs are texture coordinates, between 0 and 1, unless the texture repeats, always smile.png

Of course there are lots of variations on how people specify these coordinates due to eg. texture atlasing.

But, what I did in my example was simply scaling the vertex coordinates [-1, 1] to [0, 1] so that you could re-use the vertex coordinates for a fullscreen quad. Those UVs represent the entire texture.

To answer your question - yes, but you still need to rescale the UVs to match the [0, 1] scale of texture coordinates.

Great I see what you mean by a fullscreen quad, because the math would break otherwise.

That was the confusion.

This topic is closed to new replies.

Advertisement