制服实际上是在 THREE.js RawShaderMaterial 中定义的吗?

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)

没有在任何地方定义 themodelViewMatrixprojectionMatrix。到底有些制服实际上传递给了 rawshader 材质吗?

Wes*_*ley 5

是的,

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