2014-11-13 2 views
2

제 자신의 맞춤 셰이더를 쓰려면 (THREE.ShaderMaterial을 사용하고 있습니다), WebGL의 기본 제공 gl_ModelViewMatrixInverseTranspose (http://mew.cx/glsl_quickref.pdf에서 볼 수있는 것처럼)을 설정해야합니다. 일부 유니폼이 이미 셰이더에 자동으로 전달되었음을 알았습니다. 예를 들어, gl_ModelViewMatrixgl_ProjectionMatrix은 이미 각각 'modelViewMatrixprojectionMatrix입니다. 반면에 gl_ModelViewProjectionMatrix은 누락 된 것으로 보이지만 셰이더 내부에서 쉽게 계산할 수있는 몇 가지 예가 projectionMatrix * modelViewMatrix입니다. 그래서 내 질문은 : modelViewMatrix에서 시작하는 내 쉐이더 안에 gl_ModelViewMatrixInverseTranspose을 수동으로 계산해야합니까? (그렇다면 어떻게됩니까?) 또는 이미 unform (을 사용하여 THREE.ShaderMaterial의 내 정의 안에 병합)을 처리하고 있습니까? 건배.gl_ModelViewMatrixInverseTranspose in threejs

+0

WebGL에는'gl_ModelViewMatrixInverseTranspose' 또는 다른 기본 행렬이 없습니다. 그건 오래되어 사용되지 않는 OpenGL입니다. – gman

답변

1

Three.js 셰이더에서 modelViewMatrix의 역전 치를 normalMatrix이라고합니다.

자동으로 셰이더에 전달되므로 작업을 수행 할 필요가 없습니다. 참조 here를 들어

// = inverse transpose of modelViewMatrix 
uniform mat3 normalMatrix; 

은 균일 내장 및 속성 Three.js를가 가지고 있습니다.

+0

정확히 말하면, 3x3'normalMatrix'는 4x4'modelViewMatrix'의 상위 3x3 부분 행렬의 역행렬입니다. – WestLangley