• Advertisement
Sign in to follow this  

Problem with mapping a reflection texture

This topic is 1971 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

Hello guys.
I used FBO to render the reflected stuff to a texture, after that I was confusing how to compute the correct texture coordinate for the texture?
Here is the main stuff I wrote in GLSL and it didnt give me the right thing:

// VERTEX SHADER
varying vec2 v;

vec4 vertex = gl_ModelVIewMatrix * gl_Vertex;
v.x = vertex.x/vertex.z;
v.y = vertex.y/vertex.z;


// FRAGMENT SHADER
texture2D( reflectTex, vec2((v.x+1) * 0.5, (v.y+1) * 0.5) );

What is wrong with the calculation? or is there another way to achieve it?

Share this post


Link to post
Share on other sites
Advertisement
To properly obtain the coordinates, I think that you need to multiply the vertex coordinates by the projection matrix and then divide the x/y values by -z.
However, I'd recommend considering using the stencil buffer to mask out the non-mirror areas, render the reflection, then render the unreflected scene. It's a bit more complex than that, but that's the general idea. The advantage to this method is that you don't need an additional texture, and the stencil test prevents some of the unnecessary fragment processing from happening.

Share this post


Link to post
Share on other sites

You need to use the ModelViewProjection matrix, and divide by [font=courier new,courier,monospace]w[/font], not [font=courier new,courier,monospace]z[/font], to get it into screen space.


To properly obtain the coordinates, I think that you need to multiply the vertex coordinates by the projection matrix and then divide the x/y values by -z.
However, I'd recommend considering using the stencil buffer to mask out the non-mirror areas, render the reflection, then render the unreflected scene. It's a bit more complex than that, but that's the general idea. The advantage to this method is that you don't need an additional texture, and the stencil test prevents some of the unnecessary fragment processing from happening.

Thanks for your help, I will try these methods.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement