glsl折射被颠倒映射

时间:2012-11-14 19:34:18

标签: opengl glsl shader

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

这是我在顶点着色器中所做的:

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

然后使用frag shader:

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

1 个答案:

答案 0 :(得分: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