super-three 0.162.0 → 0.164.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 (187) hide show
  1. package/build/three.cjs +847 -1226
  2. package/build/three.module.js +846 -1225
  3. package/build/three.module.min.js +2 -2
  4. package/examples/jsm/animation/CCDIKSolver.js +4 -2
  5. package/examples/jsm/controls/TransformControls.js +3 -3
  6. package/examples/jsm/exporters/GLTFExporter.js +66 -5
  7. package/examples/jsm/exporters/USDZExporter.js +22 -1
  8. package/examples/jsm/geometries/TextGeometry.js +10 -2
  9. package/examples/jsm/interactive/HTMLMesh.js +7 -9
  10. package/examples/jsm/libs/draco/README.md +2 -2
  11. package/examples/jsm/libs/fflate.module.js +694 -496
  12. package/examples/jsm/lines/LineMaterial.js +0 -2
  13. package/examples/jsm/loaders/3MFLoader.js +2 -0
  14. package/examples/jsm/loaders/EXRLoader.js +351 -97
  15. package/examples/jsm/loaders/FBXLoader.js +1 -1
  16. package/examples/jsm/loaders/GLTFLoader.js +59 -0
  17. package/examples/jsm/loaders/KTX2Loader.js +3 -10
  18. package/examples/jsm/loaders/LUT3dlLoader.js +0 -15
  19. package/examples/jsm/loaders/LUTCubeLoader.js +0 -14
  20. package/examples/jsm/loaders/LUTImageLoader.js +0 -14
  21. package/examples/jsm/loaders/RGBMLoader.js +16 -0
  22. package/examples/jsm/loaders/VRMLLoader.js +1 -1
  23. package/examples/jsm/loaders/lwo/IFFParser.js +8 -5
  24. package/examples/jsm/materials/MeshGouraudMaterial.js +7 -1
  25. package/examples/jsm/math/Octree.js +26 -20
  26. package/examples/jsm/misc/GPUComputationRenderer.js +0 -6
  27. package/examples/jsm/nodes/Nodes.js +10 -4
  28. package/examples/jsm/nodes/accessors/AccessorsUtils.js +16 -1
  29. package/examples/jsm/nodes/accessors/BatchNode.js +78 -0
  30. package/examples/jsm/nodes/accessors/ClippingNode.js +3 -2
  31. package/examples/jsm/nodes/accessors/InstanceNode.js +25 -2
  32. package/examples/jsm/nodes/accessors/MaterialNode.js +107 -3
  33. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +1 -1
  34. package/examples/jsm/nodes/accessors/MorphNode.js +13 -3
  35. package/examples/jsm/nodes/accessors/NormalNode.js +12 -2
  36. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  37. package/examples/jsm/nodes/accessors/RendererReferenceNode.js +29 -0
  38. package/examples/jsm/nodes/accessors/StorageBufferNode.js +9 -0
  39. package/examples/jsm/nodes/accessors/TextureNode.js +51 -10
  40. package/examples/jsm/nodes/accessors/TextureSizeNode.js +1 -1
  41. package/examples/jsm/nodes/code/FunctionNode.js +0 -8
  42. package/examples/jsm/nodes/core/Node.js +63 -4
  43. package/examples/jsm/nodes/core/NodeBuilder.js +26 -25
  44. package/examples/jsm/nodes/core/NodeFrame.js +10 -10
  45. package/examples/jsm/nodes/core/NodeUtils.js +2 -2
  46. package/examples/jsm/nodes/core/OutputStructNode.js +2 -1
  47. package/examples/jsm/nodes/core/PropertyNode.js +10 -0
  48. package/examples/jsm/nodes/core/UniformNode.js +20 -0
  49. package/examples/jsm/nodes/display/BumpMapNode.js +7 -26
  50. package/examples/jsm/nodes/display/FrontFacingNode.js +13 -0
  51. package/examples/jsm/nodes/display/PassNode.js +17 -1
  52. package/examples/jsm/nodes/display/ToneMappingNode.js +8 -4
  53. package/examples/jsm/nodes/display/ViewportDepthNode.js +1 -1
  54. package/examples/jsm/nodes/display/ViewportNode.js +4 -2
  55. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +6 -0
  56. package/examples/jsm/nodes/display/ViewportTextureNode.js +4 -1
  57. package/examples/jsm/nodes/fog/FogExp2Node.js +4 -5
  58. package/examples/jsm/nodes/fog/FogNode.js +13 -3
  59. package/examples/jsm/nodes/fog/FogRangeNode.js +4 -3
  60. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +26 -7
  61. package/examples/jsm/nodes/functions/BSDF/D_GGX_Anisotropic.js +28 -0
  62. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +1 -3
  63. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +29 -0
  64. package/examples/jsm/nodes/functions/PhongLightingModel.js +1 -1
  65. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +164 -10
  66. package/examples/jsm/nodes/functions/ShadowMaskModel.js +31 -0
  67. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +19 -5
  68. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +2 -1
  69. package/examples/jsm/nodes/lighting/EnvironmentNode.js +22 -70
  70. package/examples/jsm/nodes/lighting/IrradianceNode.js +24 -0
  71. package/examples/jsm/nodes/lighting/LightsNode.js +11 -1
  72. package/examples/jsm/nodes/lighting/PointLightNode.js +2 -1
  73. package/examples/jsm/nodes/lighting/SpotLightNode.js +2 -1
  74. package/examples/jsm/nodes/materials/Line2NodeMaterial.js +10 -6
  75. package/examples/jsm/nodes/materials/Materials.js +1 -0
  76. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -2
  77. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +2 -2
  78. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +76 -5
  79. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +11 -4
  80. package/examples/jsm/nodes/materials/NodeMaterial.js +55 -43
  81. package/examples/jsm/nodes/materials/ShadowNodeMaterial.js +34 -0
  82. package/examples/jsm/nodes/pmrem/PMREMNode.js +193 -0
  83. package/examples/jsm/nodes/pmrem/PMREMUtils.js +288 -0
  84. package/examples/jsm/nodes/shadernode/ShaderNode.js +3 -9
  85. package/examples/jsm/nodes/utils/EquirectUVNode.js +1 -1
  86. package/examples/jsm/objects/QuadMesh.js +7 -23
  87. package/examples/jsm/physics/JoltPhysics.js +281 -0
  88. package/examples/jsm/physics/RapierPhysics.js +4 -4
  89. package/examples/jsm/postprocessing/GlitchPass.js +0 -3
  90. package/examples/jsm/postprocessing/LUTPass.js +5 -71
  91. package/examples/jsm/postprocessing/RenderTransitionPass.js +193 -0
  92. package/examples/jsm/postprocessing/SAOPass.js +0 -1
  93. package/examples/jsm/postprocessing/SSAOPass.js +0 -3
  94. package/examples/jsm/renderers/common/Animation.js +3 -0
  95. package/examples/jsm/renderers/common/Background.js +8 -8
  96. package/examples/jsm/renderers/common/ClippingContext.js +1 -1
  97. package/examples/jsm/renderers/common/Info.js +11 -19
  98. package/examples/jsm/renderers/common/PostProcessing.js +12 -4
  99. package/examples/jsm/renderers/common/RenderContext.js +1 -1
  100. package/examples/jsm/renderers/common/RenderList.js +1 -1
  101. package/examples/jsm/renderers/common/RenderObject.js +47 -5
  102. package/examples/jsm/renderers/common/RenderObjects.js +1 -1
  103. package/examples/jsm/renderers/common/Renderer.js +153 -21
  104. package/examples/jsm/renderers/common/Textures.js +1 -1
  105. package/examples/jsm/renderers/common/extras/PMREMGenerator.js +773 -0
  106. package/examples/jsm/renderers/common/nodes/Nodes.js +34 -63
  107. package/examples/jsm/renderers/webgl/WebGLBackend.js +146 -36
  108. package/examples/jsm/renderers/webgl/WebGLBufferRenderer.js +145 -0
  109. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +9 -3
  110. package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +1 -1
  111. package/examples/jsm/renderers/webgl/utils/WebGLConstants.js +1 -0
  112. package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +64 -7
  113. package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +6 -23
  114. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +77 -60
  115. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +21 -4
  116. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +29 -1
  117. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +18 -4
  118. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +92 -18
  119. package/examples/jsm/transpiler/GLSLDecoder.js +1 -1
  120. package/examples/jsm/transpiler/ShaderToyDecoder.js +1 -1
  121. package/examples/jsm/utils/GPUStatsPanel.js +10 -45
  122. package/examples/jsm/utils/SceneUtils.js +60 -1
  123. package/examples/jsm/utils/TextureUtils.js +1 -1
  124. package/examples/jsm/webxr/OculusHandModel.js +3 -2
  125. package/examples/jsm/webxr/XRHandModelFactory.js +4 -2
  126. package/package.json +1 -1
  127. package/src/Three.js +0 -1
  128. package/src/animation/AnimationClip.js +1 -1
  129. package/src/constants.js +3 -3
  130. package/src/core/Object3D.js +10 -7
  131. package/src/core/RenderTarget.js +8 -0
  132. package/src/extras/PMREMGenerator.js +21 -11
  133. package/src/loaders/FileLoader.js +1 -1
  134. package/src/loaders/MaterialLoader.js +1 -0
  135. package/src/loaders/ObjectLoader.js +2 -0
  136. package/src/materials/Material.js +2 -0
  137. package/src/materials/MeshPhysicalMaterial.js +20 -0
  138. package/src/materials/ShaderMaterial.js +0 -4
  139. package/src/math/Spherical.js +4 -5
  140. package/src/objects/BatchedMesh.js +27 -3
  141. package/src/objects/InstancedMesh.js +10 -0
  142. package/src/objects/Line.js +66 -43
  143. package/src/renderers/WebGLRenderer.js +130 -158
  144. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +6 -0
  145. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +1 -0
  146. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
  147. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  148. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +2 -10
  149. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +2 -16
  150. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +32 -22
  151. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +17 -9
  152. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  153. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +47 -13
  154. package/src/renderers/shaders/ShaderChunk.js +0 -2
  155. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -0
  156. package/src/renderers/shaders/ShaderLib.js +2 -1
  157. package/src/renderers/shaders/UniformsUtils.js +10 -1
  158. package/src/renderers/webgl/WebGLAttributes.js +6 -33
  159. package/src/renderers/webgl/WebGLBackground.js +18 -3
  160. package/src/renderers/webgl/WebGLBindingStates.js +14 -51
  161. package/src/renderers/webgl/WebGLBufferRenderer.js +35 -21
  162. package/src/renderers/webgl/WebGLCapabilities.js +35 -13
  163. package/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
  164. package/src/renderers/webgl/WebGLExtensions.js +4 -19
  165. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +35 -21
  166. package/src/renderers/webgl/WebGLLights.js +6 -32
  167. package/src/renderers/webgl/WebGLMaterials.js +8 -3
  168. package/src/renderers/webgl/WebGLMorphtargets.js +79 -217
  169. package/src/renderers/webgl/WebGLProgram.js +21 -52
  170. package/src/renderers/webgl/WebGLPrograms.js +24 -31
  171. package/src/renderers/webgl/WebGLRenderStates.js +13 -7
  172. package/src/renderers/webgl/WebGLShadowMap.js +25 -25
  173. package/src/renderers/webgl/WebGLState.js +15 -59
  174. package/src/renderers/webgl/WebGLTextures.js +138 -292
  175. package/src/renderers/webgl/WebGLUniformsGroups.js +1 -1
  176. package/src/renderers/webgl/WebGLUtils.js +9 -78
  177. package/src/renderers/webxr/WebXRDepthSensing.js +2 -3
  178. package/src/renderers/webxr/WebXRManager.js +4 -6
  179. package/src/scenes/Scene.js +7 -1
  180. package/src/textures/Texture.js +11 -1
  181. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
  182. package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +0 -320
  183. package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +0 -26
  184. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +0 -794
  185. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +0 -51
  186. package/src/renderers/WebGL1Renderer.js +0 -7
  187. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -10
@@ -213,11 +213,12 @@ class CCDIKSolver {
213
213
  /**
214
214
  * Creates Helper
215
215
  *
216
+ * @param {number} sphereSize
216
217
  * @return {CCDIKHelper}
217
218
  */
218
- createHelper() {
219
+ createHelper( sphereSize ) {
219
220
 
220
- return new CCDIKHelper( this.mesh, this.iks );
221
+ return new CCDIKHelper( this.mesh, this.iks, sphereSize );
221
222
 
222
223
  }
223
224
 
@@ -280,6 +281,7 @@ function setPositionOfBoneToAttributeArray( array, index, bone, matrixWorldInv )
280
281
  *
281
282
  * @param {SkinnedMesh} mesh
282
283
  * @param {Array<Object>} iks
284
+ * @param {number} sphereSize
283
285
  */
284
286
  class CCDIKHelper extends Object3D {
285
287
 
@@ -178,8 +178,8 @@ class TransformControls extends Object3D {
178
178
 
179
179
  }
180
180
 
181
- // updateMatrixWorld updates key transformation variables
182
- updateMatrixWorld() {
181
+ // updateMatrixWorld updates key transformation variables
182
+ updateMatrixWorld( force ) {
183
183
 
184
184
  if ( this.object !== undefined ) {
185
185
 
@@ -215,7 +215,7 @@ class TransformControls extends Object3D {
215
215
 
216
216
  }
217
217
 
218
- super.updateMatrixWorld( this );
218
+ super.updateMatrixWorld( force );
219
219
 
220
220
  }
221
221
 
@@ -26,6 +26,7 @@ import {
26
26
  Quaternion,
27
27
  } from 'three';
28
28
  import { decompress } from './../utils/TextureUtils.js';
29
+ import { REVISION } from '../../../src/constants.js';
29
30
 
30
31
 
31
32
  /**
@@ -111,6 +112,12 @@ class GLTFExporter {
111
112
 
112
113
  } );
113
114
 
115
+ this.register( function ( writer ) {
116
+
117
+ return new GLTFMaterialsDispersionExtension( writer );
118
+
119
+ } );
120
+
114
121
  this.register( function ( writer ) {
115
122
 
116
123
  return new GLTFMaterialsIridescenceExtension( writer );
@@ -496,7 +503,7 @@ class GLTFWriter {
496
503
  this.json = {
497
504
  asset: {
498
505
  version: '2.0',
499
- generator: 'THREE.GLTFExporter'
506
+ generator: 'THREE.GLTFExporter r' + REVISION
500
507
  }
501
508
  };
502
509
 
@@ -982,7 +989,17 @@ class GLTFWriter {
982
989
 
983
990
  }
984
991
 
985
- const byteLength = getPaddedBufferSize( count * attribute.itemSize * componentSize );
992
+ let byteStride = attribute.itemSize * componentSize;
993
+
994
+ if ( target === WEBGL_CONSTANTS.ARRAY_BUFFER ) {
995
+
996
+ // Each element of a vertex attribute MUST be aligned to 4-byte boundaries
997
+ // inside a bufferView
998
+ byteStride = Math.ceil( byteStride / 4 ) * 4;
999
+
1000
+ }
1001
+
1002
+ const byteLength = getPaddedBufferSize( count * byteStride );
986
1003
  const dataView = new DataView( new ArrayBuffer( byteLength ) );
987
1004
  let offset = 0;
988
1005
 
@@ -1047,6 +1064,12 @@ class GLTFWriter {
1047
1064
 
1048
1065
  }
1049
1066
 
1067
+ if ( ( offset % byteStride ) !== 0 ) {
1068
+
1069
+ offset += byteStride - ( offset % byteStride );
1070
+
1071
+ }
1072
+
1050
1073
  }
1051
1074
 
1052
1075
  const bufferViewDef = {
@@ -1062,7 +1085,7 @@ class GLTFWriter {
1062
1085
  if ( target === WEBGL_CONSTANTS.ARRAY_BUFFER ) {
1063
1086
 
1064
1087
  // Only define byteStride for vertex attributes.
1065
- bufferViewDef.byteStride = attribute.itemSize * componentSize;
1088
+ bufferViewDef.byteStride = byteStride;
1066
1089
 
1067
1090
  }
1068
1091
 
@@ -1290,13 +1313,14 @@ class GLTFWriter {
1290
1313
 
1291
1314
  if ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||
1292
1315
  ( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||
1293
- ( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {
1316
+ ( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ||
1317
+ ( typeof OffscreenCanvas !== 'undefined' && image instanceof OffscreenCanvas ) ) {
1294
1318
 
1295
1319
  ctx.drawImage( image, 0, 0, canvas.width, canvas.height );
1296
1320
 
1297
1321
  } else {
1298
1322
 
1299
- throw new Error( 'THREE.GLTFExporter: Invalid image type. Use HTMLImageElement, HTMLCanvasElement or ImageBitmap.' );
1323
+ throw new Error( 'THREE.GLTFExporter: Invalid image type. Use HTMLImageElement, HTMLCanvasElement, ImageBitmap or OffscreenCanvas.' );
1300
1324
 
1301
1325
  }
1302
1326
 
@@ -2616,6 +2640,9 @@ class GLTFMaterialsClearcoatExtension {
2616
2640
  index: writer.processTexture( material.clearcoatNormalMap ),
2617
2641
  texCoord: material.clearcoatNormalMap.channel
2618
2642
  };
2643
+
2644
+ if ( material.clearcoatNormalScale.x !== 1 ) clearcoatNormalMapDef.scale = material.clearcoatNormalScale.x;
2645
+
2619
2646
  writer.applyTextureTransform( clearcoatNormalMapDef, material.clearcoatNormalMap );
2620
2647
  extensionDef.clearcoatNormalTexture = clearcoatNormalMapDef;
2621
2648
 
@@ -2631,6 +2658,40 @@ class GLTFMaterialsClearcoatExtension {
2631
2658
 
2632
2659
  }
2633
2660
 
2661
+ /**
2662
+ * Materials dispersion Extension
2663
+ *
2664
+ * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_dispersion
2665
+ */
2666
+ class GLTFMaterialsDispersionExtension {
2667
+
2668
+ constructor( writer ) {
2669
+
2670
+ this.writer = writer;
2671
+ this.name = 'KHR_materials_dispersion';
2672
+
2673
+ }
2674
+
2675
+ writeMaterial( material, materialDef ) {
2676
+
2677
+ if ( ! material.isMeshPhysicalMaterial || material.dispersion === 0 ) return;
2678
+
2679
+ const writer = this.writer;
2680
+ const extensionsUsed = writer.extensionsUsed;
2681
+
2682
+ const extensionDef = {};
2683
+
2684
+ extensionDef.dispersion = material.dispersion;
2685
+
2686
+ materialDef.extensions = materialDef.extensions || {};
2687
+ materialDef.extensions[ this.name ] = extensionDef;
2688
+
2689
+ extensionsUsed[ this.name ] = true;
2690
+
2691
+ }
2692
+
2693
+ }
2694
+
2634
2695
  /**
2635
2696
  * Iridescence Materials Extension
2636
2697
  *
@@ -12,7 +12,13 @@ import { decompress } from './../utils/TextureUtils.js';
12
12
 
13
13
  class USDZExporter {
14
14
 
15
- async parse( scene, options = {} ) {
15
+ parse( scene, onDone, onError, options ) {
16
+
17
+ this.parseAsync( scene, options ).then( onDone ).catch( onError );
18
+
19
+ }
20
+
21
+ async parseAsync( scene, options = {} ) {
16
22
 
17
23
  options = Object.assign( {
18
24
  ar: {
@@ -409,6 +415,21 @@ function buildPrimvars( attributes ) {
409
415
 
410
416
  }
411
417
 
418
+ // vertex colors
419
+
420
+ const colorAttribute = attributes.color;
421
+
422
+ if ( colorAttribute !== undefined ) {
423
+
424
+ const count = colorAttribute.count;
425
+
426
+ string += `
427
+ color3f[] primvars:displayColor = [${buildVector3Array( colorAttribute, count )}] (
428
+ interpolation = "vertex"
429
+ )`;
430
+
431
+ }
432
+
412
433
  return string;
413
434
 
414
435
  }
@@ -5,7 +5,7 @@
5
5
  * font: <THREE.Font>, // font
6
6
  *
7
7
  * size: <float>, // size of the text
8
- * height: <float>, // thickness to extrude text
8
+ * depth: <float>, // thickness to extrude text
9
9
  * curveSegments: <int>, // number of points on the curves
10
10
  *
11
11
  * bevelEnabled: <bool>, // turn on bevel
@@ -35,7 +35,15 @@ class TextGeometry extends ExtrudeGeometry {
35
35
 
36
36
  // translate parameters to ExtrudeGeometry API
37
37
 
38
- parameters.depth = parameters.height !== undefined ? parameters.height : 50;
38
+ if ( parameters.depth === undefined && parameters.height !== undefined ) {
39
+
40
+ console.warn( 'THREE.TextGeometry: .height is now depreciated. Please use .depth instead' ); // @deprecated, r163
41
+
42
+ }
43
+
44
+ parameters.depth = parameters.depth !== undefined ?
45
+ parameters.depth : parameters.height !== undefined ?
46
+ parameters.height : 50;
39
47
 
40
48
  // defaults
41
49
 
@@ -241,6 +241,13 @@ function html2canvas( element ) {
241
241
 
242
242
  function drawElement( element, style ) {
243
243
 
244
+ // Do not render invisible elements, comments and scripts.
245
+ if ( element.nodeType === Node.COMMENT_NODE || element.nodeName === 'SCRIPT' || ( element.style && element.style.display === 'none' ) ) {
246
+
247
+ return;
248
+
249
+ }
250
+
244
251
  let x = 0, y = 0, width = 0, height = 0;
245
252
 
246
253
  if ( element.nodeType === Node.TEXT_NODE ) {
@@ -258,14 +265,9 @@ function html2canvas( element ) {
258
265
 
259
266
  drawText( style, x, y, element.nodeValue.trim() );
260
267
 
261
- } else if ( element.nodeType === Node.COMMENT_NODE ) {
262
-
263
- return;
264
-
265
268
  } else if ( element instanceof HTMLCanvasElement ) {
266
269
 
267
270
  // Canvas element
268
- if ( element.style.display === 'none' ) return;
269
271
 
270
272
  const rect = element.getBoundingClientRect();
271
273
 
@@ -280,8 +282,6 @@ function html2canvas( element ) {
280
282
 
281
283
  } else if ( element instanceof HTMLImageElement ) {
282
284
 
283
- if ( element.style.display === 'none' ) return;
284
-
285
285
  const rect = element.getBoundingClientRect();
286
286
 
287
287
  x = rect.left - offset.left - 0.5;
@@ -293,8 +293,6 @@ function html2canvas( element ) {
293
293
 
294
294
  } else {
295
295
 
296
- if ( element.style.display === 'none' ) return;
297
-
298
296
  const rect = element.getBoundingClientRect();
299
297
 
300
298
  x = rect.left - offset.left - 0.5;
@@ -17,10 +17,10 @@ Each file is provided in two variations:
17
17
  * **Default:** Latest stable builds, tracking the project's [master branch](https://github.com/google/draco).
18
18
  * **glTF:** Builds targeted by the [glTF mesh compression extension](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression), tracking the [corresponding Draco branch](https://github.com/google/draco/tree/gltf_2.0_draco_extension).
19
19
 
20
- Either variation may be used with `THREE.DRACOLoader`:
20
+ Either variation may be used with `DRACOLoader`:
21
21
 
22
22
  ```js
23
- var dracoLoader = new THREE.DRACOLoader();
23
+ var dracoLoader = new DRACOLoader();
24
24
  dracoLoader.setDecoderPath('path/to/decoders/');
25
25
  dracoLoader.setDecoderConfig({type: 'js'}); // (Optional) Override detection of WASM support.
26
26
  ```