我想了解如何使用{{1}获取正确的Model-View
,View
,Normal
矩阵以及Tangent
和Binormal
等额外属性我的着色器?
现在我得到如下所示的参数:
模型 - 视图矩阵:
LibGDX
查看矩阵(EyeView):
modelViewMatrix.set(camera.view);
modelViewMatrix.mul(renderable.worldTransform);
program.setUniformMatrix(u_matModelView, modelViewMatrix);
普通矩阵:
program.setUniformMatrix(u_matView, camera.view);
据我所知,viewInvTraMatrix.set(camera.view);
viewInvTraMatrix.mul(renderable.worldTransform); //multiply to world transformation matrix
program.setUniformMatrix(u_matModelView, viewInvTraMatrix);
viewInvTraMatrix.inv(); //inverse
viewInvTraMatrix.tra(); //transpose
program.setUniformMatrix(u_matViewInverseTranspose, viewInvTraMatrix);
//IN VERTEX SHADER:
mat3 normalMatrix = mat3(u_matViewInverseTranspose);
团队添加了LibGDX
属性。所以我从shader得到它:
a_tangent
在我看来它很有效。我不能对attribute vec3 a_tangent;
属性说同样的话。但这不是问题,因为我是从顶点着色器中的公式获得的:
a_binormal
所以我需要知道它是否正确?如果是,为什么简单的 vec3 n = normalize(normalMatrix * a_normal);
vec3 t = normalize(normalMatrix * a_tangent);
vec3 binormal = cross (n, t);
着色器不起作用(请参阅我的问题:Normal mapping GLSL using LibGDX)?如果没有,如何获得正确的参数?提前谢谢!