0
我正在尝试使用OpenGL ES 2.0中的立方体贴图进行反射映射。我不确定是否正确计算反射方向以传递到片段着色器中的samplerCube。GLSL中的反射映射
首先我有Projection,Model和View矩阵以及一个组合的ModelView矩阵。以下是GLSL中我顶点着色器的代码:
attribute vec4 Position;
attribute vec3 Normal;
uniform mat4 Projection;
uniform mat4 ModelView;
uniform mat3 Model;
uniform mat4 ModelViewProjectionMatrix;
uniform vec3 EyePosition;
varying vec3 ReflectDir;
void main()
{
gl_Position = Projection * ModelView * Position;
mediump vec3 EyeDir = normalize(Position.xyz - EyePosition);
// Reflect eye direction by normal, and transform to world space
ReflectDir = Model * reflect(EyeDir, Normal);
}
我的假设是EyeDirection必须位于对象空间中。 (正确吗?) 如何获得物体空间中的EyePosition?我只是通过逆模型视图矩阵来改变摄像机位置(即始终在OpenGL中的{0,0,0}?)?
我试过这个,但是我的片段着色器将所有黑色着色,就像ReflectDir不正确。
有没有人有在Xcode中工作的OpenGL ES 2.0反射映射(与samplerCube)的工作示例?
什么是'Model'?当你这样做时发生了什么错误? – 2012-02-08 15:53:28
模型是将对象空间坐标转换为世界空间坐标的变换矩阵。当我的对象呈现时,它是完全黑色的,但它应该使用片段着色器中的ReflectDir来对samplerCube中的颜色进行采样。所以,我认为我计算ReflectDir的方式有些问题。 – user1081465 2012-02-08 16:32:49