@plastic-software/three 0.175.0 → 0.175.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/build/three.cjs +89 -30
  2. package/build/three.core.js +7 -2
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +84 -32
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.webgpu.js +1 -1
  7. package/build/three.webgpu.min.js +1 -1
  8. package/build/three.webgpu.nodes.js +1 -1
  9. package/build/three.webgpu.nodes.min.js +1 -1
  10. package/package.json +1 -1
  11. package/src/constants.js +3 -0
  12. package/src/loaders/ObjectLoader.js +5 -1
  13. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +10 -1
  14. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
  15. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
  16. package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
  17. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
  18. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
  19. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
  20. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
  21. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
  22. package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
  23. package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
  24. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
  25. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
  26. package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
  27. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
  28. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
  29. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
  30. package/src/renderers/shaders/ShaderChunk.js +2 -0
  31. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
  32. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
  33. package/src/renderers/shaders/UniformsLib.js +5 -1
  34. package/src/renderers/webgl/WebGLMaterials.js +12 -0
  35. package/src/renderers/webgl/WebGLProgram.js +25 -5
  36. package/src/renderers/webgl/WebGLPrograms.js +21 -7
@@ -5,6 +5,7 @@ attribute float lineDistance;
5
5
  varying float vLineDistance;
6
6
 
7
7
  #include <common>
8
+ #include <batching_pars_vertex>
8
9
  #include <uv_pars_vertex>
9
10
  #include <color_pars_vertex>
10
11
  #include <fog_pars_vertex>
@@ -20,6 +21,7 @@ void main() {
20
21
  #include <color_vertex>
21
22
  #include <morphinstance_vertex>
22
23
  #include <morphcolor_vertex>
24
+ #include <batching_vertex>
23
25
  #include <begin_vertex>
24
26
  #include <morphtarget_vertex>
25
27
  #include <project_vertex>
@@ -168,6 +168,7 @@ void main() {
168
168
  ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
169
169
  vec3 totalEmissiveRadiance = emissive;
170
170
 
171
+ #include <triplanar_fragment>
171
172
  #include <logdepthbuf_fragment>
172
173
  #include <map_fragment>
173
174
  #include <color_fragment>
@@ -1,6 +1,7 @@
1
1
  import { Color } from '../../math/Color.js';
2
2
  import { Vector2 } from '../../math/Vector2.js';
3
3
  import { Matrix3 } from '../../math/Matrix3.js';
4
+ import { Matrix4 } from '../../math/Matrix4.js';
4
5
 
5
6
  // Uniforms library for shared webgl shaders
6
7
  const UniformsLib = {
@@ -16,7 +17,10 @@ const UniformsLib = {
16
17
  alphaMap: { value: null },
17
18
  alphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },
18
19
 
19
- alphaTest: { value: 0 }
20
+ alphaTest: { value: 0 },
21
+
22
+ texture3DMatrix: { value: /*@__PURE__*/ new Matrix4() },
23
+ triplanarHardness: { value: 16.0 }
20
24
 
21
25
  },
22
26
 
@@ -141,6 +141,18 @@ function WebGLMaterials( renderer, properties ) {
141
141
 
142
142
  }
143
143
 
144
+ if ( material.texture3DMatrix ) {
145
+
146
+ uniforms.texture3DMatrix.value.copy( material.texture3DMatrix );
147
+
148
+ }
149
+
150
+ if ( material.triplanarHardness ) {
151
+
152
+ uniforms.triplanarHardness.value = material.triplanarHardness;
153
+
154
+ }
155
+
144
156
  if ( material.alphaMap ) {
145
157
 
146
158
  uniforms.alphaMap.value = material.alphaMap;
@@ -1,7 +1,7 @@
1
1
  import { WebGLUniforms } from './WebGLUniforms.js';
2
2
  import { WebGLShader } from './WebGLShader.js';
3
3
  import { ShaderChunk } from '../shaders/ShaderChunk.js';
4
- import { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, CubeRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, VSMShadowMap, AgXToneMapping, ACESFilmicToneMapping, NeutralToneMapping, CineonToneMapping, CustomToneMapping, ReinhardToneMapping, LinearToneMapping, GLSL3, LinearTransfer, SRGBTransfer } from '../../constants.js';
4
+ import { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, CubeRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, VSMShadowMap, AgXToneMapping, ACESFilmicToneMapping, NeutralToneMapping, CineonToneMapping, CustomToneMapping, ReinhardToneMapping, LinearToneMapping, GLSL3, LinearTransfer, SRGBTransfer, TriPlanarMapping, CylindricalMapping, UVMapping } from '../../constants.js';
5
5
  import { ColorManagement } from '../../math/ColorManagement.js';
6
6
  import { Vector3 } from '../../math/Vector3.js';
7
7
  import { Matrix3 } from '../../math/Matrix3.js';
@@ -552,14 +552,17 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
552
552
  parameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',
553
553
 
554
554
  parameters.map ? '#define USE_MAP' : '',
555
+ parameters.mapMode === TriPlanarMapping ? '#define USE_MAP_TRIPLANAR' : parameters.mapMode === CylindricalMapping ? '#define USE_MAP_CYLINDRICAL' : parameters.mapMode === UVMapping ? '#define USE_MAP_UV' : '',
555
556
  parameters.envMap ? '#define USE_ENVMAP' : '',
556
557
  parameters.envMap ? '#define ' + envMapModeDefine : '',
557
558
  parameters.lightMap ? '#define USE_LIGHTMAP' : '',
558
559
  parameters.aoMap ? '#define USE_AOMAP' : '',
560
+ parameters.aoMapMode === TriPlanarMapping ? '#define USE_AOMAP_TRIPLANAR' : parameters.aoMapMode === CylindricalMapping ? '#define USE_AOMAP_CYLINDRICAL' : parameters.aoMapMode == UVMapping ? '#define USE_AOMAP_UV' : '',
559
561
  parameters.bumpMap ? '#define USE_BUMPMAP' : '',
560
562
  parameters.normalMap ? '#define USE_NORMALMAP' : '',
561
- parameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',
562
- parameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',
563
+ parameters.normalMapMode === TriPlanarMapping ? '#define USE_NORMALMAP_TRIPLANAR' : parameters.normalMapMode === CylindricalMapping ? '#define USE_NORMALMAP_CYLINDRICAL' : parameters.normalMapMode === UVMapping ? '#define USE_NORMALMAP_UV' : '',
564
+ parameters.normalMapObjectSpace && [UVMapping, CylindricalMapping].includes( parameters.normalMapMode ) ? '#define USE_NORMALMAP_OBJECTSPACE' : '',
565
+ parameters.normalMapTangentSpace && [UVMapping, CylindricalMapping].includes( parameters.normalMapMode ) ? '#define USE_NORMALMAP_TANGENTSPACE' : '',
563
566
  parameters.displacementMap ? '#define USE_DISPLACEMENTMAP' : '',
564
567
  parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',
565
568
 
@@ -569,6 +572,9 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
569
572
  parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',
570
573
  parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',
571
574
  parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',
575
+ parameters.clearcoatNormalMapMode === TriPlanarMapping ? '#define USE_CLEARCOAT_NORMALMAP_TRIPLANAR'
576
+ : parameters.clearcoatNormalMapMode === CylindricalMapping ? '#define USE_CLEARCOAT_NORMALMAP_CYLINDRICAL'
577
+ : parameters.clearcoatNormalMapMode === UVMapping ? '#define USE_CLEARCOAT_NORMALMAP_UV' : '',
572
578
 
573
579
  parameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',
574
580
  parameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',
@@ -578,8 +584,11 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
578
584
  parameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',
579
585
 
580
586
  parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',
587
+ parameters.roughnessMapMode === TriPlanarMapping ? '#define USE_ROUGHNESSMAP_TRIPLANAR' : parameters.roughnessMapMode === CylindricalMapping ? '#define USE_ROUGHNESSMAP_CYLINDRICAL' : parameters.roughnessMapMode === UVMapping ? '#define USE_ROUGHNESSMAP_UV' : '',
581
588
  parameters.metalnessMap ? '#define USE_METALNESSMAP' : '',
589
+ parameters.metalnessMapMode === TriPlanarMapping ? '#define USE_METALNESSMAP_TRIPLANAR' : parameters.metalnessMapMode === CylindricalMapping ? '#define USE_METALNESSMAP_CYLINDRICAL' : parameters.metalnessMapMode === UVMapping ? '#define USE_METALNESSMAP_UV' : '',
582
590
  parameters.alphaMap ? '#define USE_ALPHAMAP' : '',
591
+ parameters.alphaMapMode === TriPlanarMapping ? '#define USE_ALPHAMAP_TRIPLANAR' : parameters.alphaMapMode === CylindricalMapping ? '#define USE_ALPHAMAP_CYLINDRICAL' : parameters.alphaMapMode === UVMapping ? '#define USE_ALPHAMAP_UV' : '',
583
592
  parameters.alphaHash ? '#define USE_ALPHAHASH' : '',
584
593
 
585
594
  parameters.transmission ? '#define USE_TRANSMISSION' : '',
@@ -744,6 +753,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
744
753
 
745
754
  parameters.alphaToCoverage ? '#define ALPHA_TO_COVERAGE' : '',
746
755
  parameters.map ? '#define USE_MAP' : '',
756
+ parameters.mapMode === TriPlanarMapping ? '#define USE_MAP_TRIPLANAR' : parameters.mapMode === CylindricalMapping ? '#define USE_MAP_CYLINDRICAL' : parameters.mapMode === UVMapping ? '#define USE_MAP_UV' : '',
747
757
  parameters.matcap ? '#define USE_MATCAP' : '',
748
758
  parameters.envMap ? '#define USE_ENVMAP' : '',
749
759
  parameters.envMap ? '#define ' + envMapTypeDefine : '',
@@ -754,10 +764,12 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
754
764
  envMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',
755
765
  parameters.lightMap ? '#define USE_LIGHTMAP' : '',
756
766
  parameters.aoMap ? '#define USE_AOMAP' : '',
767
+ parameters.aoMapMode === TriPlanarMapping ? '#define USE_AOMAP_TRIPLANAR' : parameters.aoMapMode === CylindricalMapping ? '#define USE_AOMAP_CYLINDRICAL' : parameters.aoMapMode == UVMapping ? '#define USE_AOMAP_UV' : '',
757
768
  parameters.bumpMap ? '#define USE_BUMPMAP' : '',
758
769
  parameters.normalMap ? '#define USE_NORMALMAP' : '',
759
- parameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',
760
- parameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',
770
+ parameters.normalMapMode === TriPlanarMapping ? '#define USE_NORMALMAP_TRIPLANAR' : parameters.normalMapMode === CylindricalMapping ? '#define USE_NORMALMAP_CYLINDRICAL' : parameters.normalMapMode === UVMapping ? '#define USE_NORMALMAP_UV' : '',
771
+ parameters.normalMapObjectSpace && [UVMapping, CylindricalMapping].includes( parameters.normalMapMode ) ? '#define USE_NORMALMAP_OBJECTSPACE' : '',
772
+ parameters.normalMapTangentSpace && [UVMapping, CylindricalMapping].includes( parameters.normalMapMode ) ? '#define USE_NORMALMAP_TANGENTSPACE' : '',
761
773
  parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',
762
774
 
763
775
  parameters.anisotropy ? '#define USE_ANISOTROPY' : '',
@@ -767,6 +779,9 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
767
779
  parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',
768
780
  parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',
769
781
  parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',
782
+ parameters.clearcoatNormalMapMode === TriPlanarMapping ? '#define USE_CLEARCOAT_NORMALMAP_TRIPLANAR'
783
+ : parameters.clearcoatNormalMapMode === CylindricalMapping ? '#define USE_CLEARCOAT_NORMALMAP_CYLINDRICAL'
784
+ : parameters.clearcoatNormalMapMode === UVMapping ? '#define USE_CLEARCOAT_NORMALMAP_UV' : '',
770
785
 
771
786
  parameters.dispersion ? '#define USE_DISPERSION' : '',
772
787
 
@@ -779,9 +794,12 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
779
794
  parameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',
780
795
 
781
796
  parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',
797
+ parameters.roughnessMapMode === TriPlanarMapping ? '#define USE_ROUGHNESSMAP_TRIPLANAR' : parameters.roughnessMapMode === CylindricalMapping ? '#define USE_ROUGHNESSMAP_CYLINDRICAL' : parameters.roughnessMapMode === UVMapping ? '#define USE_ROUGHNESSMAP_UV' : '',
782
798
  parameters.metalnessMap ? '#define USE_METALNESSMAP' : '',
799
+ parameters.metalnessMapMode === TriPlanarMapping ? '#define USE_METALNESSMAP_TRIPLANAR' : parameters.metalnessMapMode === CylindricalMapping ? '#define USE_METALNESSMAP_CYLINDRICAL' : parameters.metalnessMapMode === UVMapping ? '#define USE_METALNESSMAP_UV' : '',
783
800
 
784
801
  parameters.alphaMap ? '#define USE_ALPHAMAP' : '',
802
+ parameters.alphaMapMode === TriPlanarMapping ? '#define USE_ALPHAMAP_TRIPLANAR' : parameters.alphaMapMode === CylindricalMapping ? '#define USE_ALPHAMAP_CYLINDRICAL' : parameters.alphaMapMode === UVMapping ? '#define USE_ALPHAMAP_UV' : '',
785
803
  parameters.alphaTest ? '#define USE_ALPHATEST' : '',
786
804
  parameters.alphaHash ? '#define USE_ALPHAHASH' : '',
787
805
 
@@ -822,7 +840,9 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
822
840
  parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
823
841
  parameters.reverseDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',
824
842
 
843
+ 'uniform mat4 modelViewMatrix;',
825
844
  'uniform mat4 viewMatrix;',
845
+ 'uniform mat3 normalMatrix;',
826
846
  'uniform vec3 cameraPosition;',
827
847
  'uniform bool isOrthographic;',
828
848
 
@@ -1,4 +1,4 @@
1
- import { BackSide, DoubleSide, CubeUVReflectionMapping, ObjectSpaceNormalMap, TangentSpaceNormalMap, NoToneMapping, NormalBlending, LinearSRGBColorSpace, SRGBTransfer } from '../../constants.js';
1
+ import { BackSide, DoubleSide, CubeUVReflectionMapping, ObjectSpaceNormalMap, TangentSpaceNormalMap, NoToneMapping, NormalBlending, LinearSRGBColorSpace, SRGBTransfer, UVMapping } from '../../constants.js';
2
2
  import { Layers } from '../../core/Layers.js';
3
3
  import { WebGLProgram } from './WebGLProgram.js';
4
4
  import { WebGLShaderCache } from './WebGLShaderCache.js';
@@ -259,21 +259,27 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
259
259
 
260
260
  //
261
261
 
262
- mapUv: HAS_MAP && getChannel( material.map.channel ),
263
- aoMapUv: HAS_AOMAP && getChannel( material.aoMap.channel ),
262
+ mapUv: HAS_MAP && material.map.mapping === UVMapping && getChannel( material.map.channel ),
263
+ mapMode: HAS_MAP && material.map.mapping,
264
+ aoMapUv: HAS_AOMAP && material.aoMap.mapping === UVMapping && getChannel( material.aoMap.channel ),
265
+ aoMapMode: HAS_AOMAP && material.aoMap.mapping,
264
266
  lightMapUv: HAS_LIGHTMAP && getChannel( material.lightMap.channel ),
265
267
  bumpMapUv: HAS_BUMPMAP && getChannel( material.bumpMap.channel ),
266
- normalMapUv: HAS_NORMALMAP && getChannel( material.normalMap.channel ),
268
+ normalMapUv: HAS_NORMALMAP && material.normalMap.mapping === UVMapping && getChannel( material.normalMap.channel ),
269
+ normalMapMode: HAS_NORMALMAP && material.normalMap.mapping,
267
270
  displacementMapUv: HAS_DISPLACEMENTMAP && getChannel( material.displacementMap.channel ),
268
271
  emissiveMapUv: HAS_EMISSIVEMAP && getChannel( material.emissiveMap.channel ),
269
272
 
270
- metalnessMapUv: HAS_METALNESSMAP && getChannel( material.metalnessMap.channel ),
271
- roughnessMapUv: HAS_ROUGHNESSMAP && getChannel( material.roughnessMap.channel ),
273
+ metalnessMapUv: HAS_METALNESSMAP && material.metalnessMap.mapping === UVMapping && getChannel( material.metalnessMap.channel ),
274
+ metalnessMapMode: HAS_METALNESSMAP && material.metalnessMap.mapping,
275
+ roughnessMapUv: HAS_ROUGHNESSMAP && material.roughnessMap.mapping === UVMapping && getChannel( material.roughnessMap.channel ),
276
+ roughnessMapMode: HAS_ROUGHNESSMAP && material.roughnessMap.mapping,
272
277
 
273
278
  anisotropyMapUv: HAS_ANISOTROPYMAP && getChannel( material.anisotropyMap.channel ),
274
279
 
275
280
  clearcoatMapUv: HAS_CLEARCOATMAP && getChannel( material.clearcoatMap.channel ),
276
281
  clearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel( material.clearcoatNormalMap.channel ),
282
+ clearcoatNormalMapMode: HAS_CLEARCOAT_NORMALMAP && material.clearcoatNormalMap.mapping,
277
283
  clearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel( material.clearcoatRoughnessMap.channel ),
278
284
 
279
285
  iridescenceMapUv: HAS_IRIDESCENCEMAP && getChannel( material.iridescenceMap.channel ),
@@ -289,7 +295,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
289
295
  transmissionMapUv: HAS_TRANSMISSIONMAP && getChannel( material.transmissionMap.channel ),
290
296
  thicknessMapUv: HAS_THICKNESSMAP && getChannel( material.thicknessMap.channel ),
291
297
 
292
- alphaMapUv: HAS_ALPHAMAP && getChannel( material.alphaMap.channel ),
298
+ alphaMapUv: HAS_ALPHAMAP && material.alphaMap.mapping === UVMapping && getChannel( material.alphaMap.channel ),
299
+ alphaMapMode: HAS_ALPHAMAP && material.alphaMap.mapping,
293
300
 
294
301
  //
295
302
 
@@ -421,19 +428,26 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
421
428
  array.push( parameters.outputColorSpace );
422
429
  array.push( parameters.envMapMode );
423
430
  array.push( parameters.envMapCubeUVHeight );
431
+ array.push( parameters.mapMode );
424
432
  array.push( parameters.mapUv );
433
+ array.push( parameters.alphaMapMode );
425
434
  array.push( parameters.alphaMapUv );
426
435
  array.push( parameters.lightMapUv );
427
436
  array.push( parameters.aoMapUv );
437
+ array.push( parameters.aoMapMode );
428
438
  array.push( parameters.bumpMapUv );
429
439
  array.push( parameters.normalMapUv );
440
+ array.push( parameters.normalMapMode );
430
441
  array.push( parameters.displacementMapUv );
431
442
  array.push( parameters.emissiveMapUv );
432
443
  array.push( parameters.metalnessMapUv );
444
+ array.push( parameters.metalnessMapMode );
433
445
  array.push( parameters.roughnessMapUv );
446
+ array.push( parameters.roughnessMapMode );
434
447
  array.push( parameters.anisotropyMapUv );
435
448
  array.push( parameters.clearcoatMapUv );
436
449
  array.push( parameters.clearcoatNormalMapUv );
450
+ array.push( parameters.clearcoatNormalMapMode);
437
451
  array.push( parameters.clearcoatRoughnessMapUv );
438
452
  array.push( parameters.iridescenceMapUv );
439
453
  array.push( parameters.iridescenceThicknessMapUv );