8

我在 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

4

1 回答 1

27

如果你在谈论那些球体上的折射,我很确定你得到的是正确的结果,它应该是颠倒的。由于光线从球面折射的方式,您在球体中看到的图像是反转的:

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

现实世界的例子:

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

于 2012-11-14T20:02:10.607 回答