GLSL折射贴图上下颠倒的问题

8
我将实现GLSL中的折射。我正在使用片段着色器中提供的refract函数来获得所需的效果。但是我得到的折射是上下颠倒的。我认为这是错误的...你有任何想法为什么会这样吗?
这是我在顶点着色器中所做的:
vec3 worldView = normalize(vec3(WorldCameraPosition-worldPos));
refractor = refract(-worldView, worldNorm, Eta); // eta = 0.66;

接着我编写了片元着色器:
vec4 refractColor = textureCube(cubeMap, refractor); 

点击此处查看图片

这是一张关于IT技术的截图。

提供截图会很有帮助。如果您的声望不足以包含图片,可以提供截图链接。 - Thomas
页面的最后一张图片。谢谢。 - mindbender
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)


2
干得好。那个问题的所有者可能忘记了它不是反射(在后面的东西的反映),而是折射(在后面的东西的折射)。还有很好的选择:P +1。 - przemo_li
没错,看起来是正确的。如果你想要减少上下颠倒的效果,可以将折射率(eta)调整到接近1的数值。 - Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接