2012-11-14 42 views
7

我在glsl中实施折射。我正在使用frag着色器中提供的折射功能来获得所需的效果。但是我得到的折射,它的倒置。我认为这是错误的。任何想法为什么这样?glsl折射得到映射颠倒

这是我在顶点着色器做:

vec3 worldView = normalize(vec3(WorldCameraPosition-worldPos)); 
refractor = refract(-worldView, worldNorm, Eta); // eta = 0.66; 

,然后断枝着色我做的:

vec4 refractColor = textureCube(cubeMap, refractor); 

http://www.cse.ohio-state.edu/~duttas/Images_5542/Capture.PNG http://www.cse.ohio-state.edu/~duttas/Images_5542/Capture.PNG

+0

截图会有所帮助。或者链接到截图,如果你没有足够的代表来包含图片。 – Thomas

+0

http://www.cse.ohio-state.edu/~duttas/Images_5542/RT_rendering.html 该页面的最后一张图片。谢谢 – mindbender

回答

25

如果你在谈论这些领域的折射,我很确定你得到的是正确的结果,它应该是倒过来的。由于这样的光折射离开球面,你在球体看到图像翻转:

https://summerexplorations.files.wordpress.com/2011/07/marbles2.jpg?w=584

现实世界的例子:

http://www.physicscentral.com/explore/pictures/images/crystal-ball_2.jpg http://www.physicscentral.com/explore/pictures/images/crystal-ball_2.jpg

+2

伟大的工作。那个问题的主人可能忘记了它不是反射(背后的东西),而是折射(背后的东西)。和不错的选择:P +1 –

+0

是的,这似乎是正确的。如果这就是你想要的,让你的折射指数(eta)接近1以减少颠倒。 – Thomas

+0

太棒了!非常感谢蒂姆的回复,并感谢其他人的投入...... – mindbender