Graphics 着色器不适用于ThreeJS升级-';viewMartrix:重新定义

Graphics 着色器不适用于ThreeJS升级-';viewMartrix:重新定义,graphics,three.js,glsl,Graphics,Three.js,Glsl,似乎在升级Three.js时,它会抱怨对viewMatrix和camera #define MAX_DIR_LIGHTS 0 #define MAX_POINT_LIGHTS 0 #define MAX_SPOT_LIGHTS 0 #define MAX_HEMI_LIGHTS 0 #define MAX_SHADOWS 0 uniform mat4 viewMatrix; uniform vec3 cameraPosition; uniform vec3 di

似乎在升级Three.js时,它会抱怨对
viewMatrix
camera

  #define MAX_DIR_LIGHTS 0
  #define MAX_POINT_LIGHTS 0
  #define MAX_SPOT_LIGHTS 0
  #define MAX_HEMI_LIGHTS 0
  #define MAX_SHADOWS 0

  uniform mat4 viewMatrix;
  uniform vec3 cameraPosition;
  uniform vec3 diffuse;
  uniform float opacity;
我想知道为什么会发生这种情况,以及如何解决它


必须显示问题

出现这种情况是因为在使用
着色器材质
时,渲染器会向着色器附加多个标准定义。以下是前8行:

高精度浮点;
精度高;
#定义高精度
#定义着色器名称着色器材质
#定义伽马系数2
一致mat4视图矩阵;
均匀vec3摄像机定位;
均匀布尔等正交;
然后,当您添加自己的制服时,您正试图重新定义它们:

统一mat4视图矩阵;
均匀vec3摄像机定位;
均匀vec3扩散;
均匀浮动不透明度;
这就是导致错误的原因


您可以去掉重复的
制服
,以避免重新定义,也可以改为。但是,请记住,它的工作原理与ShaderMaterial类似,只是内置制服和属性的定义不会自动添加到GLSL着色器代码之前。因此,您可能需要自己添加它们。

谢谢!我删除了这个,似乎它继续工作!