我正在開發OpenGL應用程序,並且遇到實現立方體貼圖反射着色器的問題:反射圍繞對象旋轉相機,從任何角度來看都是一樣的。GLSL立方體貼圖反射着色器
這裏是我的頂點着色器:
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和Normal矩陣。
你能幫我實現着色器,這需要考慮攝像頭的方向。
謝謝,夥計。這解決了我的問題 – xorza