Javascript Ashima Perlin噪波着色器不适用于最新版本的Three.JS
为了能够使用最新的Three.JS,我做了最后的努力,希望SO上有人遇到过这个问题,因为Google什么也没给我 我正在使用Ashima Perlin噪波着色器(请参见示例)—— 如果我使用Three.JS的48版(最新版本是59版),我可以很好地完成这项工作 尝试使用此的最新版本会导致以下错误:Javascript Ashima Perlin噪波着色器不适用于最新版本的Three.JS,javascript,3d,three.js,webgl,shader,Javascript,3d,Three.js,Webgl,Shader,为了能够使用最新的Three.JS,我做了最后的努力,希望SO上有人遇到过这个问题,因为Google什么也没给我 我正在使用Ashima Perlin噪波着色器(请参见示例)—— 如果我使用Three.JS的48版(最新版本是59版),我可以很好地完成这项工作 尝试使用此的最新版本会导致以下错误: ERROR: 0:301: 'objectMatrix' : undeclared identifier ERROR: 0:301: 'objectMatrix' : left of '[' is
ERROR: 0:301: 'objectMatrix' : undeclared identifier
ERROR: 0:301: 'objectMatrix' : left of '[' is not of type array, matrix, or vector
ERROR: 0:301: 'xyz' : field selection requires structure, vector, or matrix on left hand side
ERROR: 0:301: 'objectMatrix' : left of '[' is not of type array, matrix, or vector
ERROR: 0:301: 'xyz' : field selection requires structure, vector, or matrix on left hand side
ERROR: 0:301: 'objectMatrix' : left of '[' is not of type array, matrix, or vector
ERROR: 0:301: 'xyz' : field selection requires structure, vector, or matrix on left hand side
ERROR: 0:301: 'constructor' : not enough data provided for construction
three.min.js:40
这通常是我会为其他人调试、修复并推送到git的东西,但我没有C知识或着色器知识来调试它。好的,所以任何试图找出此演示为什么不能与最新版本的three.js一起使用的人: 这是因为varname发生了更改,您只需更改void main()中的顶点着色器即可 更改此行:
vec3 nWorld = normalize( mat3( objectMatrix[0].xyz, objectMatrix[1].xyz, objectMatrix[2].xyz ) * modifiedNormal );
为此:
vec3 nWorld = normalize( mat3( modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz ) * modifiedNormal );
感谢@gaitat提供的指向Three.js迁移页面的帮助,非常有用。好的,因此任何试图找到此演示无法与最新版本Three.js一起使用的原因的人: 这是因为varname发生了更改,您只需更改void main()中的顶点着色器即可 更改此行:
vec3 nWorld = normalize( mat3( objectMatrix[0].xyz, objectMatrix[1].xyz, objectMatrix[2].xyz ) * modifiedNormal );
为此:
vec3 nWorld = normalize( mat3( modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz ) * modifiedNormal );
感谢@gaitat帮助我们指向Three.js迁移页面,这非常有帮助。Well release 48 vs.58(当前版本)是很久以前的事了。您需要按照处的迁移指南和/或处的更改指南更新代码。如果您发布代码或JSFIDLE,可以提供一些帮助。发布48 vs.58(当前版本)是很久以前的事了。您需要按照处的迁移指南和/或处的更改指南更新代码。如果发布代码或JSFIDLE,可以提供一些帮助。