Sta*_*tec 3 javascript three.js
THREE.Js RawShaderMaterial 的文档说:
内置的制服和属性不会自动添加到 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);
}
Run Code Online (Sandbox Code Playgroud)
没有在任何地方定义 themodelViewMatrix
或projectionMatrix
。到底有些制服实际上传递给了 rawshader 材质吗?
是的,
uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat3 normalMatrix;
uniform vec3 cameraPosition;
Run Code Online (Sandbox Code Playgroud)
使用时可用RawShaderMaterial
,但是如果您想使用它们,则必须在着色器中声明它们。它们不会自动添加前缀。
三.js r.73