WebGL:缩放影响正常矩阵?

时间:2016-12-13 16:47:41

标签: webgl

我正在玩WebGL,我划掉了一个简单的平面阴影立方体。 我有一个着色器,它采用投影矩阵,视图模型矩阵和普通矩阵,没有什么花哨的:

(...)
void main(void) {
    gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);
    vTextureCoord = aTextureCoord;

    vec3 transformedNormal = uNMatrix * aVertexNormal;
    float directionalLightWeighting = max(dot(transformedNormal, uLightingDirection), 0.0);
    vLightWeighting = uAmbientColor + uDirectionalColor * directionalLightWeighting;
}

一切都很好,平面阴影看起来不错,但是一旦我调整立方体大小(下面标记为mat4.scale),阴影就不再影响场景了。如果我通过反向因子缩小计算的正常矩阵,它再次起作用。

代码遵循以下模式(绘制伪例程):

projection = mat4.ortho

// set up general camera view 
view = mat4.lookAt

// set up cube position / scaling / rotation on view matrix
mat4.translate(view)
mat4.scale(view) // remove for nice shading ..
mat4.rotate(view)

// normalFromMat4 returns upper-left 3x3 inverse transpose
normal = mat4.normalFromMat4 ( view )

pass projection, view, normal to shader
gl.drawElements

我使用gl-matrix作为数学库。 我的错误在哪里?

0 个答案:

没有答案