【发布时间】:2015-04-27 14:23:35
【问题描述】:
我正在开发 OpenGL 应用程序,但在实现立方体贴图反射着色器时遇到问题:反射随着相机围绕对象旋转,从任何角度来看都是相同的。
这是我的顶点着色器:
in vec4 in_Position;
in vec4 in_Normal;
out vec3 ws_coords;
out vec3 normal;
mat4 uniform_ModelViewProjectionMatrix;
mat4 uniform_ModelViewMatrix;
mat4 uniform_ModelMatrix;
mat3 uniform_NormalMatrix;
vec3 uniform_CameraPosition;
...
ws_coords = (uniform_ModelViewMatrix * in_Position).xyz;
normal = normalize(uniform_NormalMatrix * in_Normal);
和片段:
uniform samplerCube uniform_ReflectionTexture;
...
vec3 normal = normalize(normal);
vec3 reflectedDirection = reflect(normalize(ws_coords), normal);
frag_Color = texture(uniform_ReflectionTexture, reflectedDirection).xyz
我在互联网上找到的所有着色器都有相同的问题或对我产生奇怪的结果。
我想我需要通过相机旋转来旋转反射方向,但我不知道该怎么做。在着色器输入上,我有世界空间相机位置、MVP、MV、M 和法线矩阵。
你能帮我实现考虑相机方向的着色器吗?
【问题讨论】: