THREE.Js RawShaderMaterial的documentation说:
内置制服和属性不会自动添加到GLSL着色器代码中。
但是,实际上我可以使用rawShaderMaterial运行以下着色器:
<script type="x-shader/x-vertex" id="vertexShader">
precision mediump float;
precision mediump int;
uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;
attribute vec3 position;
attribute vec4 color;
varying vec3 vPosition;
varying vec4 vColor;
void main() {
vPosition = position;
vColor = color;
gl_Position = projectionMatrix *
modelViewMatrix *
vec4(position.x, position.y, position.z, 1.0);
}
无需在任何地方定义modelViewMatrix
或projectionMatrix
。毕竟是否有些制服传递给rawshader材料?
答案 0 :(得分:1)
是,
uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat3 normalMatrix;
uniform vec3 cameraPosition;
使用RawShaderMaterial
时可以使用,但是如果要使用它们,则必须在着色器中声明它们。它们不会自动加上前缀。
three.js r.73