super-three 0.162.0 → 0.163.0

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 (122) hide show
  1. package/build/three.cjs +407 -1014
  2. package/build/three.module.js +406 -1013
  3. package/build/three.module.min.js +1 -1
  4. package/examples/jsm/controls/TransformControls.js +3 -3
  5. package/examples/jsm/exporters/GLTFExporter.js +21 -4
  6. package/examples/jsm/exporters/USDZExporter.js +15 -0
  7. package/examples/jsm/geometries/TextGeometry.js +10 -2
  8. package/examples/jsm/interactive/HTMLMesh.js +7 -9
  9. package/examples/jsm/libs/fflate.module.js +694 -496
  10. package/examples/jsm/lines/LineMaterial.js +0 -2
  11. package/examples/jsm/loaders/3MFLoader.js +2 -0
  12. package/examples/jsm/loaders/EXRLoader.js +89 -19
  13. package/examples/jsm/loaders/FBXLoader.js +1 -1
  14. package/examples/jsm/loaders/GLTFLoader.js +6 -0
  15. package/examples/jsm/loaders/KTX2Loader.js +2 -6
  16. package/examples/jsm/loaders/LUT3dlLoader.js +0 -15
  17. package/examples/jsm/loaders/LUTCubeLoader.js +0 -14
  18. package/examples/jsm/loaders/LUTImageLoader.js +0 -14
  19. package/examples/jsm/loaders/RGBMLoader.js +16 -0
  20. package/examples/jsm/misc/GPUComputationRenderer.js +0 -6
  21. package/examples/jsm/nodes/Nodes.js +6 -1
  22. package/examples/jsm/nodes/accessors/BatchNode.js +78 -0
  23. package/examples/jsm/nodes/accessors/InstanceNode.js +25 -2
  24. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +1 -1
  25. package/examples/jsm/nodes/accessors/MorphNode.js +13 -3
  26. package/examples/jsm/nodes/accessors/NormalNode.js +12 -2
  27. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  28. package/examples/jsm/nodes/accessors/RendererReferenceNode.js +29 -0
  29. package/examples/jsm/nodes/accessors/TextureNode.js +30 -7
  30. package/examples/jsm/nodes/core/Node.js +55 -4
  31. package/examples/jsm/nodes/core/NodeBuilder.js +21 -16
  32. package/examples/jsm/nodes/core/NodeFrame.js +10 -10
  33. package/examples/jsm/nodes/core/NodeUtils.js +2 -2
  34. package/examples/jsm/nodes/core/UniformNode.js +20 -0
  35. package/examples/jsm/nodes/display/PassNode.js +17 -1
  36. package/examples/jsm/nodes/display/ToneMappingNode.js +8 -4
  37. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +6 -0
  38. package/examples/jsm/nodes/fog/FogExp2Node.js +4 -5
  39. package/examples/jsm/nodes/fog/FogNode.js +13 -3
  40. package/examples/jsm/nodes/fog/FogRangeNode.js +4 -3
  41. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  42. package/examples/jsm/nodes/lighting/EnvironmentNode.js +12 -69
  43. package/examples/jsm/nodes/materials/NodeMaterial.js +33 -11
  44. package/examples/jsm/nodes/pmrem/PMREMNode.js +193 -0
  45. package/examples/jsm/nodes/pmrem/PMREMUtils.js +288 -0
  46. package/examples/jsm/nodes/shadernode/ShaderNode.js +1 -1
  47. package/examples/jsm/nodes/utils/EquirectUVNode.js +1 -1
  48. package/examples/jsm/objects/QuadMesh.js +7 -23
  49. package/examples/jsm/physics/RapierPhysics.js +4 -4
  50. package/examples/jsm/postprocessing/GlitchPass.js +0 -3
  51. package/examples/jsm/postprocessing/LUTPass.js +5 -71
  52. package/examples/jsm/postprocessing/SAOPass.js +0 -1
  53. package/examples/jsm/postprocessing/SSAOPass.js +0 -3
  54. package/examples/jsm/renderers/common/Animation.js +3 -0
  55. package/examples/jsm/renderers/common/Background.js +5 -5
  56. package/examples/jsm/renderers/common/Info.js +11 -19
  57. package/examples/jsm/renderers/common/PostProcessing.js +12 -4
  58. package/examples/jsm/renderers/common/RenderContext.js +1 -1
  59. package/examples/jsm/renderers/common/RenderObject.js +4 -4
  60. package/examples/jsm/renderers/common/RenderObjects.js +1 -1
  61. package/examples/jsm/renderers/common/Renderer.js +25 -8
  62. package/examples/jsm/renderers/common/extras/PMREMGenerator.js +777 -0
  63. package/examples/jsm/renderers/common/nodes/Nodes.js +5 -18
  64. package/examples/jsm/renderers/webgl/WebGLBackend.js +148 -24
  65. package/examples/jsm/renderers/webgl/WebGLBufferRenderer.js +141 -0
  66. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +3 -3
  67. package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +1 -1
  68. package/examples/jsm/renderers/webgl/utils/WebGLConstants.js +1 -0
  69. package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +43 -0
  70. package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +3 -2
  71. package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +0 -2
  72. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +0 -2
  73. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +54 -25
  74. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +5 -3
  75. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +25 -0
  76. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +18 -4
  77. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +92 -18
  78. package/examples/jsm/utils/GPUStatsPanel.js +10 -45
  79. package/examples/jsm/utils/TextureUtils.js +1 -1
  80. package/package.json +1 -1
  81. package/src/Three.js +0 -1
  82. package/src/animation/AnimationClip.js +1 -1
  83. package/src/constants.js +3 -3
  84. package/src/core/Object3D.js +10 -7
  85. package/src/extras/PMREMGenerator.js +9 -0
  86. package/src/loaders/ObjectLoader.js +2 -0
  87. package/src/materials/ShaderMaterial.js +0 -4
  88. package/src/math/Spherical.js +4 -5
  89. package/src/objects/BatchedMesh.js +4 -3
  90. package/src/objects/InstancedMesh.js +10 -0
  91. package/src/renderers/WebGLRenderer.js +55 -114
  92. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
  93. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  94. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +2 -10
  95. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +2 -16
  96. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +32 -22
  97. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
  98. package/src/renderers/shaders/ShaderLib.js +1 -1
  99. package/src/renderers/shaders/UniformsUtils.js +10 -1
  100. package/src/renderers/webgl/WebGLAttributes.js +6 -33
  101. package/src/renderers/webgl/WebGLBindingStates.js +14 -51
  102. package/src/renderers/webgl/WebGLBufferRenderer.js +3 -25
  103. package/src/renderers/webgl/WebGLCapabilities.js +2 -12
  104. package/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
  105. package/src/renderers/webgl/WebGLExtensions.js +4 -19
  106. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +3 -25
  107. package/src/renderers/webgl/WebGLLights.js +6 -32
  108. package/src/renderers/webgl/WebGLMaterials.js +2 -3
  109. package/src/renderers/webgl/WebGLMorphtargets.js +79 -217
  110. package/src/renderers/webgl/WebGLProgram.js +18 -47
  111. package/src/renderers/webgl/WebGLPrograms.js +20 -32
  112. package/src/renderers/webgl/WebGLRenderStates.js +8 -6
  113. package/src/renderers/webgl/WebGLState.js +15 -59
  114. package/src/renderers/webgl/WebGLTextures.js +75 -237
  115. package/src/renderers/webgl/WebGLUniformsGroups.js +1 -1
  116. package/src/renderers/webgl/WebGLUtils.js +6 -57
  117. package/src/renderers/webxr/WebXRDepthSensing.js +2 -3
  118. package/src/renderers/webxr/WebXRManager.js +2 -2
  119. package/src/scenes/Scene.js +7 -1
  120. package/src/textures/Texture.js +11 -1
  121. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
  122. package/src/renderers/WebGL1Renderer.js +0 -7
@@ -1,12 +1,9 @@
1
1
  import { IntType } from '../../constants.js';
2
2
 
3
- function WebGLBindingStates( gl, extensions, attributes, capabilities ) {
3
+ function WebGLBindingStates( gl, attributes ) {
4
4
 
5
5
  const maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );
6
6
 
7
- const extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );
8
- const vaoAvailable = capabilities.isWebGL2 || extension !== null;
9
-
10
7
  const bindingStates = {};
11
8
 
12
9
  const defaultState = createBindingState( null );
@@ -17,38 +14,18 @@ function WebGLBindingStates( gl, extensions, attributes, capabilities ) {
17
14
 
18
15
  let updateBuffers = false;
19
16
 
20
- if ( vaoAvailable ) {
21
-
22
- const state = getBindingState( geometry, program, material );
23
-
24
- if ( currentState !== state ) {
25
-
26
- currentState = state;
27
- bindVertexArrayObject( currentState.object );
28
-
29
- }
30
-
31
- updateBuffers = needsUpdate( object, geometry, program, index );
32
-
33
- if ( updateBuffers ) saveCache( object, geometry, program, index );
34
-
35
- } else {
36
-
37
- const wireframe = ( material.wireframe === true );
17
+ const state = getBindingState( geometry, program, material );
38
18
 
39
- if ( currentState.geometry !== geometry.id ||
40
- currentState.program !== program.id ||
41
- currentState.wireframe !== wireframe ) {
19
+ if ( currentState !== state ) {
42
20
 
43
- currentState.geometry = geometry.id;
44
- currentState.program = program.id;
45
- currentState.wireframe = wireframe;
21
+ currentState = state;
22
+ bindVertexArrayObject( currentState.object );
46
23
 
47
- updateBuffers = true;
24
+ }
48
25
 
49
- }
26
+ updateBuffers = needsUpdate( object, geometry, program, index );
50
27
 
51
- }
28
+ if ( updateBuffers ) saveCache( object, geometry, program, index );
52
29
 
53
30
  if ( index !== null ) {
54
31
 
@@ -74,25 +51,19 @@ function WebGLBindingStates( gl, extensions, attributes, capabilities ) {
74
51
 
75
52
  function createVertexArrayObject() {
76
53
 
77
- if ( capabilities.isWebGL2 ) return gl.createVertexArray();
78
-
79
- return extension.createVertexArrayOES();
54
+ return gl.createVertexArray();
80
55
 
81
56
  }
82
57
 
83
58
  function bindVertexArrayObject( vao ) {
84
59
 
85
- if ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );
86
-
87
- return extension.bindVertexArrayOES( vao );
60
+ return gl.bindVertexArray( vao );
88
61
 
89
62
  }
90
63
 
91
64
  function deleteVertexArrayObject( vao ) {
92
65
 
93
- if ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );
94
-
95
- return extension.deleteVertexArrayOES( vao );
66
+ return gl.deleteVertexArray( vao );
96
67
 
97
68
  }
98
69
 
@@ -290,9 +261,7 @@ function WebGLBindingStates( gl, extensions, attributes, capabilities ) {
290
261
 
291
262
  if ( attributeDivisors[ attribute ] !== meshPerAttribute ) {
292
263
 
293
- const extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );
294
-
295
- extension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );
264
+ gl.vertexAttribDivisor( attribute, meshPerAttribute );
296
265
  attributeDivisors[ attribute ] = meshPerAttribute;
297
266
 
298
267
  }
@@ -333,12 +302,6 @@ function WebGLBindingStates( gl, extensions, attributes, capabilities ) {
333
302
 
334
303
  function setupVertexAttributes( object, material, program, geometry ) {
335
304
 
336
- if ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {
337
-
338
- if ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;
339
-
340
- }
341
-
342
305
  initAttributes();
343
306
 
344
307
  const geometryAttributes = geometry.attributes;
@@ -377,9 +340,9 @@ function WebGLBindingStates( gl, extensions, attributes, capabilities ) {
377
340
  const type = attribute.type;
378
341
  const bytesPerElement = attribute.bytesPerElement;
379
342
 
380
- // check for integer attributes (WebGL 2 only)
343
+ // check for integer attributes
381
344
 
382
- const integer = ( capabilities.isWebGL2 === true && ( type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType ) );
345
+ const integer = ( type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType );
383
346
 
384
347
  if ( geometryAttribute.isInterleavedBufferAttribute ) {
385
348
 
@@ -1,6 +1,4 @@
1
- function WebGLBufferRenderer( gl, extensions, info, capabilities ) {
2
-
3
- const isWebGL2 = capabilities.isWebGL2;
1
+ function WebGLBufferRenderer( gl, extensions, info ) {
4
2
 
5
3
  let mode;
6
4
 
@@ -22,28 +20,7 @@ function WebGLBufferRenderer( gl, extensions, info, capabilities ) {
22
20
 
23
21
  if ( primcount === 0 ) return;
24
22
 
25
- let extension, methodName;
26
-
27
- if ( isWebGL2 ) {
28
-
29
- extension = gl;
30
- methodName = 'drawArraysInstanced';
31
-
32
- } else {
33
-
34
- extension = extensions.get( 'ANGLE_instanced_arrays' );
35
- methodName = 'drawArraysInstancedANGLE';
36
-
37
- if ( extension === null ) {
38
-
39
- console.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );
40
- return;
41
-
42
- }
43
-
44
- }
45
-
46
- extension[ methodName ]( mode, start, count, primcount );
23
+ gl.drawArraysInstanced( mode, start, count, primcount );
47
24
 
48
25
  info.update( count, mode, primcount );
49
26
 
@@ -54,6 +31,7 @@ function WebGLBufferRenderer( gl, extensions, info, capabilities ) {
54
31
  if ( drawCount === 0 ) return;
55
32
 
56
33
  const extension = extensions.get( 'WEBGL_multi_draw' );
34
+
57
35
  if ( extension === null ) {
58
36
 
59
37
  for ( let i = 0; i < drawCount; i ++ ) {
@@ -52,8 +52,6 @@ function WebGLCapabilities( gl, extensions, parameters ) {
52
52
 
53
53
  }
54
54
 
55
- const isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl.constructor.name === 'WebGL2RenderingContext';
56
-
57
55
  let precision = parameters.precision !== undefined ? parameters.precision : 'highp';
58
56
  const maxPrecision = getMaxPrecision( precision );
59
57
 
@@ -64,8 +62,6 @@ function WebGLCapabilities( gl, extensions, parameters ) {
64
62
 
65
63
  }
66
64
 
67
- const drawBuffers = isWebGL2 || extensions.has( 'WEBGL_draw_buffers' );
68
-
69
65
  const logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;
70
66
 
71
67
  const maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );
@@ -79,16 +75,12 @@ function WebGLCapabilities( gl, extensions, parameters ) {
79
75
  const maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );
80
76
 
81
77
  const vertexTextures = maxVertexTextures > 0;
82
- const floatFragmentTextures = isWebGL2 || extensions.has( 'OES_texture_float' );
83
- const floatVertexTextures = vertexTextures && floatFragmentTextures;
84
78
 
85
- const maxSamples = isWebGL2 ? gl.getParameter( gl.MAX_SAMPLES ) : 0;
79
+ const maxSamples = gl.getParameter( gl.MAX_SAMPLES );
86
80
 
87
81
  return {
88
82
 
89
- isWebGL2: isWebGL2,
90
-
91
- drawBuffers: drawBuffers,
83
+ isWebGL2: true, // keeping this for backwards compatibility
92
84
 
93
85
  getMaxAnisotropy: getMaxAnisotropy,
94
86
  getMaxPrecision: getMaxPrecision,
@@ -107,8 +99,6 @@ function WebGLCapabilities( gl, extensions, parameters ) {
107
99
  maxFragmentUniforms: maxFragmentUniforms,
108
100
 
109
101
  vertexTextures: vertexTextures,
110
- floatFragmentTextures: floatFragmentTextures,
111
- floatVertexTextures: floatVertexTextures,
112
102
 
113
103
  maxSamples: maxSamples
114
104
 
@@ -20,24 +20,26 @@ function WebGLCubeUVMaps( renderer ) {
20
20
 
21
21
  if ( isEquirectMap || isCubeMap ) {
22
22
 
23
- if ( texture.isRenderTargetTexture && texture.needsPMREMUpdate === true ) {
23
+ let renderTarget = cubeUVmaps.get( texture );
24
24
 
25
- texture.needsPMREMUpdate = false;
25
+ const currentPMREMVersion = renderTarget !== undefined ? renderTarget.texture.pmremVersion : 0;
26
26
 
27
- let renderTarget = cubeUVmaps.get( texture );
27
+ if ( texture.isRenderTargetTexture && texture.pmremVersion !== currentPMREMVersion ) {
28
28
 
29
29
  if ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );
30
30
 
31
31
  renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );
32
+ renderTarget.texture.pmremVersion = texture.pmremVersion;
33
+
32
34
  cubeUVmaps.set( texture, renderTarget );
33
35
 
34
36
  return renderTarget.texture;
35
37
 
36
38
  } else {
37
39
 
38
- if ( cubeUVmaps.has( texture ) ) {
40
+ if ( renderTarget !== undefined ) {
39
41
 
40
- return cubeUVmaps.get( texture ).texture;
42
+ return renderTarget.texture;
41
43
 
42
44
  } else {
43
45
 
@@ -47,7 +49,9 @@ function WebGLCubeUVMaps( renderer ) {
47
49
 
48
50
  if ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );
49
51
 
50
- const renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );
52
+ renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );
53
+ renderTarget.texture.pmremVersion = texture.pmremVersion;
54
+
51
55
  cubeUVmaps.set( texture, renderTarget );
52
56
 
53
57
  texture.addEventListener( 'dispose', onTextureDispose );
@@ -49,29 +49,14 @@ function WebGLExtensions( gl ) {
49
49
 
50
50
  },
51
51
 
52
- init: function ( capabilities ) {
53
-
54
- if ( capabilities.isWebGL2 ) {
55
-
56
- getExtension( 'EXT_color_buffer_float' );
57
- getExtension( 'WEBGL_clip_cull_distance' );
58
-
59
- } else {
60
-
61
- getExtension( 'WEBGL_depth_texture' );
62
- getExtension( 'OES_texture_float' );
63
- getExtension( 'OES_texture_half_float' );
64
- getExtension( 'OES_texture_half_float_linear' );
65
- getExtension( 'OES_standard_derivatives' );
66
- getExtension( 'OES_element_index_uint' );
67
- getExtension( 'OES_vertex_array_object' );
68
- getExtension( 'ANGLE_instanced_arrays' );
69
-
70
- }
52
+ init: function () {
71
53
 
54
+ getExtension( 'EXT_color_buffer_float' );
55
+ getExtension( 'WEBGL_clip_cull_distance' );
72
56
  getExtension( 'OES_texture_float_linear' );
73
57
  getExtension( 'EXT_color_buffer_half_float' );
74
58
  getExtension( 'WEBGL_multisampled_render_to_texture' );
59
+ getExtension( 'WEBGL_render_shared_exponent' );
75
60
 
76
61
  },
77
62
 
@@ -1,6 +1,4 @@
1
- function WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {
2
-
3
- const isWebGL2 = capabilities.isWebGL2;
1
+ function WebGLIndexedBufferRenderer( gl, extensions, info ) {
4
2
 
5
3
  let mode;
6
4
 
@@ -31,28 +29,7 @@ function WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {
31
29
 
32
30
  if ( primcount === 0 ) return;
33
31
 
34
- let extension, methodName;
35
-
36
- if ( isWebGL2 ) {
37
-
38
- extension = gl;
39
- methodName = 'drawElementsInstanced';
40
-
41
- } else {
42
-
43
- extension = extensions.get( 'ANGLE_instanced_arrays' );
44
- methodName = 'drawElementsInstancedANGLE';
45
-
46
- if ( extension === null ) {
47
-
48
- console.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );
49
- return;
50
-
51
- }
52
-
53
- }
54
-
55
- extension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );
32
+ gl.drawElementsInstanced( mode, count, type, start * bytesPerElement, primcount );
56
33
 
57
34
  info.update( count, mode, primcount );
58
35
 
@@ -63,6 +40,7 @@ function WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {
63
40
  if ( drawCount === 0 ) return;
64
41
 
65
42
  const extension = extensions.get( 'WEBGL_multi_draw' );
43
+
66
44
  if ( extension === null ) {
67
45
 
68
46
  for ( let i = 0; i < drawCount; i ++ ) {
@@ -150,7 +150,7 @@ function shadowCastingAndTexturingLightsFirst( lightA, lightB ) {
150
150
 
151
151
  }
152
152
 
153
- function WebGLLights( extensions, capabilities ) {
153
+ function WebGLLights( extensions ) {
154
154
 
155
155
  const cache = new UniformsCache();
156
156
 
@@ -399,41 +399,15 @@ function WebGLLights( extensions, capabilities ) {
399
399
 
400
400
  if ( rectAreaLength > 0 ) {
401
401
 
402
- if ( capabilities.isWebGL2 ) {
402
+ if ( extensions.has( 'OES_texture_float_linear' ) === true ) {
403
403
 
404
- // WebGL 2
405
-
406
- if ( extensions.has( 'OES_texture_float_linear' ) === true ) {
407
-
408
- state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;
409
- state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;
410
-
411
- } else {
412
-
413
- state.rectAreaLTC1 = UniformsLib.LTC_HALF_1;
414
- state.rectAreaLTC2 = UniformsLib.LTC_HALF_2;
415
-
416
- }
404
+ state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;
405
+ state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;
417
406
 
418
407
  } else {
419
408
 
420
- // WebGL 1
421
-
422
- if ( extensions.has( 'OES_texture_float_linear' ) === true ) {
423
-
424
- state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;
425
- state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;
426
-
427
- } else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {
428
-
429
- state.rectAreaLTC1 = UniformsLib.LTC_HALF_1;
430
- state.rectAreaLTC2 = UniformsLib.LTC_HALF_2;
431
-
432
- } else {
433
-
434
- console.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );
435
-
436
- }
409
+ state.rectAreaLTC1 = UniformsLib.LTC_HALF_1;
410
+ state.rectAreaLTC2 = UniformsLib.LTC_HALF_2;
437
411
 
438
412
  }
439
413
 
@@ -393,11 +393,10 @@ function WebGLMaterials( renderer, properties ) {
393
393
 
394
394
  }
395
395
 
396
- const envMap = properties.get( material ).envMap;
397
-
398
- if ( envMap ) {
396
+ if ( material.envMap ) {
399
397
 
400
398
  //uniforms.envMap.value = material.envMap; // part of uniforms common
399
+
401
400
  uniforms.envMapIntensity.value = material.envMapIntensity;
402
401
 
403
402
  }