super-three 0.136.0 → 0.141.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 (768) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +24 -26
  3. package/build/three.cjs +35889 -0
  4. package/build/three.js +4837 -6036
  5. package/build/three.min.js +2 -2
  6. package/build/three.module.js +16548 -17930
  7. package/examples/js/animation/CCDIKSolver.js +3 -2
  8. package/examples/js/animation/MMDAnimationHelper.js +3 -1
  9. package/examples/js/animation/MMDPhysics.js +3 -3
  10. package/examples/js/cameras/CinematicCamera.js +2 -7
  11. package/examples/js/controls/ArcballControls.js +3 -1
  12. package/examples/js/controls/PointerLockControls.js +3 -2
  13. package/examples/js/controls/TrackballControls.js +1 -4
  14. package/examples/js/controls/TransformControls.js +5 -6
  15. package/examples/js/controls/experimental/CameraControls.js +8 -4
  16. package/examples/js/csm/CSMFrustum.js +1 -1
  17. package/examples/js/csm/CSMShader.js +51 -35
  18. package/examples/js/curves/CurveExtras.js +14 -18
  19. package/examples/js/effects/AnaglyphEffect.js +7 -4
  20. package/examples/js/effects/AsciiEffect.js +10 -29
  21. package/examples/js/exporters/ColladaExporter.js +29 -7
  22. package/examples/js/exporters/EXRExporter.js +458 -0
  23. package/examples/js/exporters/GLTFExporter.js +233 -105
  24. package/examples/js/exporters/MMDExporter.js +1 -1
  25. package/examples/js/exporters/OBJExporter.js +12 -18
  26. package/examples/js/exporters/PLYExporter.js +15 -20
  27. package/examples/js/exporters/USDZExporter.js +13 -0
  28. package/examples/js/geometries/ConvexGeometry.js +1 -1
  29. package/examples/js/geometries/DecalGeometry.js +0 -7
  30. package/examples/js/geometries/LightningStrike.js +2 -2
  31. package/examples/js/geometries/ParametricGeometries.js +3 -3
  32. package/examples/js/geometries/TextGeometry.js +12 -10
  33. package/examples/js/helpers/OctreeHelper.js +74 -0
  34. package/examples/js/helpers/VertexNormalsHelper.js +4 -23
  35. package/examples/js/helpers/VertexTangentsHelper.js +3 -13
  36. package/examples/js/helpers/ViewHelper.js +266 -0
  37. package/examples/js/interactive/HTMLMesh.js +249 -42
  38. package/examples/js/interactive/SelectionHelper.js +1 -1
  39. package/examples/js/libs/opentype.min.js +1 -118
  40. package/examples/js/lines/Line2.js +1 -2
  41. package/examples/js/lines/LineGeometry.js +10 -21
  42. package/examples/js/lines/LineMaterial.js +2 -3
  43. package/examples/js/lines/LineSegments2.js +214 -140
  44. package/examples/js/lines/LineSegmentsGeometry.js +3 -14
  45. package/examples/js/lines/Wireframe.js +2 -3
  46. package/examples/js/lines/WireframeGeometry2.js +1 -2
  47. package/examples/js/loaders/3MFLoader.js +21 -17
  48. package/examples/js/loaders/AMFLoader.js +1 -1
  49. package/examples/js/loaders/BasisTextureLoader.js +1 -0
  50. package/examples/js/loaders/ColladaLoader.js +33 -12
  51. package/examples/js/loaders/DDSLoader.js +23 -30
  52. package/examples/js/loaders/EXRLoader.js +314 -294
  53. package/examples/js/loaders/FBXLoader.js +11 -0
  54. package/examples/js/loaders/FontLoader.js +1 -2
  55. package/examples/js/loaders/GCodeLoader.js +0 -1
  56. package/examples/js/loaders/GLTFLoader.js +250 -61
  57. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -2
  58. package/examples/js/loaders/KMZLoader.js +1 -1
  59. package/examples/js/loaders/KTX2Loader.js +1 -9
  60. package/examples/js/loaders/LDrawLoader.js +1342 -962
  61. package/examples/js/loaders/LUT3dlLoader.js +18 -11
  62. package/examples/js/loaders/LUTCubeLoader.js +4 -5
  63. package/examples/js/loaders/LWOLoader.js +4 -2
  64. package/examples/js/loaders/LogLuvLoader.js +1 -2
  65. package/examples/js/loaders/MD2Loader.js +5 -5
  66. package/examples/js/loaders/MMDLoader.js +18 -4
  67. package/examples/js/loaders/MTLLoader.js +10 -3
  68. package/examples/js/loaders/NRRDLoader.js +1 -1
  69. package/examples/js/loaders/OBJLoader.js +9 -5
  70. package/examples/js/loaders/PCDLoader.js +24 -15
  71. package/examples/js/loaders/PDBLoader.js +11 -11
  72. package/examples/js/loaders/PLYLoader.js +5 -1
  73. package/examples/js/loaders/RGBELoader.js +9 -17
  74. package/examples/js/loaders/RGBMLoader.js +13 -16
  75. package/examples/js/loaders/STLLoader.js +1 -1
  76. package/examples/js/loaders/SVGLoader.js +21 -11
  77. package/examples/js/loaders/VOXLoader.js +3 -4
  78. package/examples/js/loaders/VRMLLoader.js +9 -21
  79. package/examples/js/loaders/VTKLoader.js +260 -295
  80. package/examples/js/loaders/lwo/LWO2Parser.js +4 -4
  81. package/examples/js/loaders/lwo/LWO3Parser.js +4 -4
  82. package/examples/js/math/ConvexHull.js +13 -28
  83. package/examples/js/math/Lut.js +27 -26
  84. package/examples/js/misc/MorphAnimMesh.js +2 -2
  85. package/examples/js/misc/ProgressiveLightMap.js +1 -1
  86. package/examples/js/misc/Volume.js +39 -48
  87. package/examples/js/misc/VolumeSlice.js +21 -21
  88. package/examples/js/modifiers/CurveModifier.js +8 -7
  89. package/examples/js/modifiers/EdgeSplitModifier.js +0 -13
  90. package/examples/js/modifiers/SimplifyModifier.js +1 -18
  91. package/examples/js/modifiers/TessellateModifier.js +0 -7
  92. package/examples/js/objects/Lensflare.js +4 -4
  93. package/examples/js/objects/LightningStorm.js +4 -5
  94. package/examples/js/objects/MarchingCubes.js +6 -11
  95. package/examples/js/objects/Reflector.js +10 -16
  96. package/examples/js/objects/ReflectorForSSRPass.js +1 -11
  97. package/examples/js/objects/Refractor.js +10 -16
  98. package/examples/js/objects/ShadowMesh.js +1 -2
  99. package/examples/js/objects/Sky.js +1 -1
  100. package/examples/js/objects/Water.js +2 -15
  101. package/examples/js/objects/Water2.js +1 -1
  102. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +6 -10
  103. package/examples/js/postprocessing/AfterimagePass.js +2 -6
  104. package/examples/js/postprocessing/BloomPass.js +50 -19
  105. package/examples/js/postprocessing/DotScreenPass.js +1 -1
  106. package/examples/js/postprocessing/EffectComposer.js +1 -6
  107. package/examples/js/postprocessing/GlitchPass.js +4 -5
  108. package/examples/js/postprocessing/LUTPass.js +2 -2
  109. package/examples/js/postprocessing/OutlinePass.js +8 -17
  110. package/examples/js/postprocessing/SAOPass.js +2 -7
  111. package/examples/js/postprocessing/SMAAPass.js +2 -9
  112. package/examples/js/postprocessing/SSAARenderPass.js +1 -6
  113. package/examples/js/postprocessing/SSAOPass.js +9 -21
  114. package/examples/js/postprocessing/SSRPass.js +3 -8
  115. package/examples/js/postprocessing/SavePass.js +1 -5
  116. package/examples/js/postprocessing/TAARenderPass.js +4 -4
  117. package/examples/js/postprocessing/UnrealBloomPass.js +3 -12
  118. package/examples/js/renderers/CSS2DRenderer.js +20 -19
  119. package/examples/js/renderers/CSS3DRenderer.js +40 -36
  120. package/examples/js/renderers/Projector.js +97 -124
  121. package/examples/js/renderers/SVGRenderer.js +3 -4
  122. package/examples/js/shaders/BlendShader.js +2 -1
  123. package/examples/js/shaders/CopyShader.js +4 -3
  124. package/examples/js/shaders/DigitalGlitch.js +3 -3
  125. package/examples/js/shaders/FXAAShader.js +239 -1069
  126. package/examples/js/shaders/FreiChenShader.js +1 -1
  127. package/examples/js/shaders/HorizontalBlurShader.js +1 -1
  128. package/examples/js/shaders/HorizontalTiltShiftShader.js +1 -1
  129. package/examples/js/shaders/MMDToonShader.js +0 -1
  130. package/examples/js/shaders/SSAOShader.js +1 -1
  131. package/examples/js/shaders/SSRShader.js +3 -3
  132. package/examples/js/shaders/ToneMapShader.js +1 -1
  133. package/examples/js/utils/BufferGeometryUtils.js +282 -22
  134. package/examples/js/utils/GPUStatsPanel.js +1 -1
  135. package/examples/js/utils/LDrawUtils.js +182 -0
  136. package/examples/js/utils/SceneUtils.js +59 -0
  137. package/examples/js/utils/SkeletonUtils.js +1 -1
  138. package/examples/js/utils/UVsDebug.js +23 -33
  139. package/examples/jsm/animation/CCDIKSolver.js +3 -9
  140. package/examples/jsm/animation/MMDPhysics.js +2 -2
  141. package/examples/jsm/cameras/CinematicCamera.js +2 -5
  142. package/examples/jsm/{WebGL.js → capabilities/WebGL.js} +2 -2
  143. package/examples/jsm/{renderers/webgpu → capabilities}/WebGPU.js +7 -1
  144. package/examples/jsm/controls/ArcballControls.js +3 -1
  145. package/examples/jsm/controls/PointerLockControls.js +4 -2
  146. package/examples/jsm/controls/TrackballControls.js +1 -4
  147. package/examples/jsm/controls/TransformControls.js +6 -6
  148. package/examples/jsm/controls/experimental/CameraControls.js +2 -2
  149. package/examples/jsm/csm/CSMFrustum.js +1 -1
  150. package/examples/jsm/csm/CSMShader.js +51 -35
  151. package/examples/jsm/curves/CurveExtras.js +15 -17
  152. package/examples/jsm/effects/AnaglyphEffect.js +4 -4
  153. package/examples/jsm/effects/AsciiEffect.js +9 -22
  154. package/examples/jsm/exporters/ColladaExporter.js +31 -6
  155. package/examples/jsm/exporters/EXRExporter.js +507 -0
  156. package/examples/jsm/exporters/GLTFExporter.js +261 -103
  157. package/examples/jsm/exporters/KTX2Exporter.js +281 -0
  158. package/examples/jsm/exporters/MMDExporter.js +1 -1
  159. package/examples/jsm/exporters/OBJExporter.js +11 -18
  160. package/examples/jsm/exporters/PLYExporter.js +23 -21
  161. package/examples/jsm/exporters/USDZExporter.js +12 -0
  162. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  163. package/examples/jsm/geometries/DecalGeometry.js +0 -7
  164. package/examples/jsm/geometries/LightningStrike.js +2 -2
  165. package/examples/jsm/geometries/ParametricGeometries.js +3 -3
  166. package/examples/jsm/geometries/TextGeometry.js +13 -13
  167. package/examples/jsm/helpers/OctreeHelper.js +58 -0
  168. package/examples/jsm/helpers/VertexNormalsHelper.js +4 -25
  169. package/examples/jsm/helpers/VertexTangentsHelper.js +3 -15
  170. package/examples/jsm/helpers/ViewHelper.js +295 -0
  171. package/examples/jsm/interactive/HTMLMesh.js +268 -36
  172. package/examples/jsm/interactive/SelectionHelper.js +1 -1
  173. package/examples/jsm/libs/flow.module.js +947 -183
  174. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  175. package/examples/jsm/libs/lil-gui.module.min.js +2 -2
  176. package/examples/jsm/libs/mikktspace.module.js +128 -0
  177. package/examples/jsm/libs/opentype.module.js +14568 -0
  178. package/examples/jsm/lines/Line2.js +2 -2
  179. package/examples/jsm/lines/LineGeometry.js +11 -19
  180. package/examples/jsm/lines/LineMaterial.js +3 -3
  181. package/examples/jsm/lines/LineSegments2.js +210 -145
  182. package/examples/jsm/lines/LineSegmentsGeometry.js +3 -12
  183. package/examples/jsm/lines/Wireframe.js +3 -3
  184. package/examples/jsm/lines/WireframeGeometry2.js +2 -2
  185. package/examples/jsm/loaders/3DMLoader.js +3 -2
  186. package/examples/jsm/loaders/3MFLoader.js +21 -17
  187. package/examples/jsm/loaders/AMFLoader.js +1 -1
  188. package/examples/jsm/loaders/BasisTextureLoader.js +7 -0
  189. package/examples/jsm/loaders/ColladaLoader.js +40 -12
  190. package/examples/jsm/loaders/DDSLoader.js +21 -28
  191. package/examples/jsm/loaders/EXRLoader.js +309 -293
  192. package/examples/jsm/loaders/FBXLoader.js +11 -0
  193. package/examples/jsm/loaders/FontLoader.js +2 -2
  194. package/examples/jsm/loaders/GCodeLoader.js +0 -1
  195. package/examples/jsm/loaders/GLTFLoader.js +263 -68
  196. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -4
  197. package/examples/jsm/loaders/KMZLoader.js +1 -1
  198. package/examples/jsm/loaders/KTX2Loader.js +1 -10
  199. package/examples/jsm/loaders/LDrawLoader.js +1335 -988
  200. package/examples/jsm/loaders/LUT3dlLoader.js +19 -14
  201. package/examples/jsm/loaders/LUTCubeLoader.js +5 -7
  202. package/examples/jsm/loaders/LWOLoader.js +5 -3
  203. package/examples/jsm/loaders/LogLuvLoader.js +2 -2
  204. package/examples/jsm/loaders/MD2Loader.js +5 -5
  205. package/examples/jsm/loaders/MMDLoader.js +21 -3
  206. package/examples/jsm/loaders/MTLLoader.js +11 -4
  207. package/examples/jsm/loaders/NRRDLoader.js +1 -2
  208. package/examples/jsm/loaders/OBJLoader.js +11 -7
  209. package/examples/jsm/loaders/PCDLoader.js +25 -17
  210. package/examples/jsm/loaders/PDBLoader.js +11 -11
  211. package/examples/jsm/loaders/PLYLoader.js +10 -2
  212. package/examples/jsm/loaders/RGBELoader.js +11 -20
  213. package/examples/jsm/loaders/RGBMLoader.js +15 -12
  214. package/examples/jsm/loaders/STLLoader.js +1 -1
  215. package/examples/jsm/loaders/SVGLoader.js +26 -11
  216. package/examples/jsm/loaders/TTFLoader.js +1 -1
  217. package/examples/jsm/loaders/VOXLoader.js +5 -5
  218. package/examples/jsm/loaders/VRMLLoader.js +9 -23
  219. package/examples/jsm/loaders/VTKLoader.js +256 -284
  220. package/examples/jsm/loaders/ifc/web-ifc-api.js +9 -8
  221. package/examples/jsm/loaders/lwo/LWO2Parser.js +4 -4
  222. package/examples/jsm/loaders/lwo/LWO3Parser.js +4 -4
  223. package/examples/jsm/math/ConvexHull.js +13 -28
  224. package/examples/jsm/math/Lut.js +35 -25
  225. package/examples/jsm/misc/MorphAnimMesh.js +2 -2
  226. package/examples/jsm/misc/ProgressiveLightMap.js +1 -1
  227. package/examples/jsm/misc/Volume.js +39 -46
  228. package/examples/jsm/misc/VolumeSlice.js +21 -21
  229. package/examples/jsm/modifiers/CurveModifier.js +9 -8
  230. package/examples/jsm/modifiers/EdgeSplitModifier.js +0 -13
  231. package/examples/jsm/modifiers/SimplifyModifier.js +1 -18
  232. package/examples/jsm/modifiers/TessellateModifier.js +0 -7
  233. package/examples/jsm/node-editor/NodeEditor.js +485 -163
  234. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +14 -0
  235. package/examples/jsm/node-editor/accessors/NormalEditor.js +9 -9
  236. package/examples/jsm/node-editor/accessors/PositionEditor.js +9 -9
  237. package/examples/jsm/node-editor/accessors/UVEditor.js +7 -8
  238. package/examples/jsm/node-editor/core/BaseNode.js +89 -0
  239. package/examples/jsm/node-editor/core/DataFile.js +59 -0
  240. package/examples/jsm/node-editor/core/FileEditor.js +20 -0
  241. package/examples/jsm/node-editor/core/FileURLEditor.js +29 -0
  242. package/examples/jsm/node-editor/display/BlendEditor.js +10 -9
  243. package/examples/jsm/node-editor/display/NormalMapEditor.js +49 -0
  244. package/examples/jsm/node-editor/examples/animate-uv.json +1 -1
  245. package/examples/jsm/node-editor/examples/fake-top-light.json +1 -1
  246. package/examples/jsm/node-editor/examples/matcap.json +1 -0
  247. package/examples/jsm/node-editor/examples/oscillator-color.json +1 -1
  248. package/examples/jsm/node-editor/examples/rim.json +1 -1
  249. package/examples/jsm/node-editor/inputs/ColorEditor.js +18 -13
  250. package/examples/jsm/node-editor/inputs/FloatEditor.js +8 -9
  251. package/examples/jsm/node-editor/inputs/SliderEditor.js +6 -7
  252. package/examples/jsm/node-editor/inputs/TextureEditor.js +155 -0
  253. package/examples/jsm/node-editor/inputs/Vector2Editor.js +9 -9
  254. package/examples/jsm/node-editor/inputs/Vector3Editor.js +11 -11
  255. package/examples/jsm/node-editor/inputs/Vector4Editor.js +12 -12
  256. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +87 -0
  257. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +102 -0
  258. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +31 -18
  259. package/examples/jsm/node-editor/math/AngleEditor.js +40 -0
  260. package/examples/jsm/node-editor/math/DotEditor.js +8 -9
  261. package/examples/jsm/node-editor/math/InvertEditor.js +8 -7
  262. package/examples/jsm/node-editor/math/LimiterEditor.js +28 -14
  263. package/examples/jsm/node-editor/math/NormalizeEditor.js +9 -7
  264. package/examples/jsm/node-editor/math/OperatorEditor.js +29 -16
  265. package/examples/jsm/node-editor/math/PowerEditor.js +20 -10
  266. package/examples/jsm/node-editor/math/TrigonometryEditor.js +15 -9
  267. package/examples/jsm/node-editor/procedural/CheckerEditor.js +7 -6
  268. package/examples/jsm/node-editor/scene/MeshEditor.js +99 -0
  269. package/examples/jsm/node-editor/scene/Object3DEditor.js +160 -0
  270. package/examples/jsm/node-editor/scene/PointsEditor.js +99 -0
  271. package/examples/jsm/node-editor/utils/JoinEditor.js +58 -0
  272. package/examples/jsm/node-editor/utils/OscillatorEditor.js +9 -8
  273. package/examples/jsm/node-editor/utils/PreviewEditor.js +166 -0
  274. package/examples/jsm/node-editor/utils/SplitEditor.js +39 -0
  275. package/examples/jsm/node-editor/utils/TimerEditor.js +7 -6
  276. package/examples/jsm/nodes/Nodes.js +283 -94
  277. package/examples/jsm/nodes/accessors/BufferNode.js +24 -0
  278. package/examples/jsm/nodes/accessors/CameraNode.js +27 -196
  279. package/examples/jsm/nodes/accessors/CubeTextureNode.js +103 -0
  280. package/examples/jsm/nodes/accessors/InstanceNode.js +58 -0
  281. package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialNode.js +49 -11
  282. package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialReferenceNode.js +0 -0
  283. package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelNode.js +8 -0
  284. package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelViewProjectionNode.js +0 -0
  285. package/examples/jsm/nodes/accessors/NormalNode.js +39 -99
  286. package/examples/jsm/{renderers/nodes → nodes}/accessors/Object3DNode.js +34 -17
  287. package/examples/jsm/{renderers/nodes → nodes}/accessors/PointUVNode.js +2 -2
  288. package/examples/jsm/nodes/accessors/PositionNode.js +41 -110
  289. package/examples/jsm/nodes/accessors/ReferenceNode.js +65 -0
  290. package/examples/jsm/nodes/accessors/ReflectNode.js +34 -121
  291. package/examples/jsm/nodes/accessors/SkinningNode.js +102 -0
  292. package/examples/jsm/nodes/accessors/StorageBufferNode.js +21 -0
  293. package/examples/jsm/nodes/accessors/TextureNode.js +100 -0
  294. package/examples/jsm/nodes/accessors/UVNode.js +17 -43
  295. package/examples/jsm/nodes/accessors/UserDataNode.js +23 -0
  296. package/examples/jsm/nodes/core/ArrayUniformNode.js +23 -0
  297. package/examples/jsm/nodes/core/AttributeNode.js +33 -30
  298. package/examples/jsm/{renderers/nodes → nodes}/core/BypassNode.js +2 -2
  299. package/examples/jsm/{renderers/nodes → nodes}/core/CodeNode.js +2 -30
  300. package/examples/jsm/nodes/core/ConstNode.js +10 -106
  301. package/examples/jsm/{renderers/nodes → nodes}/core/ContextNode.js +17 -3
  302. package/examples/jsm/nodes/core/ExpressionNode.js +24 -7
  303. package/examples/jsm/nodes/core/FunctionCallNode.js +26 -67
  304. package/examples/jsm/nodes/core/FunctionNode.js +43 -216
  305. package/examples/jsm/nodes/core/InputNode.js +28 -60
  306. package/examples/jsm/nodes/core/InstanceIndexNode.js +21 -0
  307. package/examples/jsm/nodes/core/Node.js +228 -94
  308. package/examples/jsm/{renderers/nodes → nodes}/core/NodeAttribute.js +2 -2
  309. package/examples/jsm/nodes/core/NodeBuilder.js +388 -560
  310. package/examples/jsm/{renderers/nodes → nodes}/core/NodeCode.js +0 -0
  311. package/examples/jsm/nodes/core/NodeFrame.js +30 -23
  312. package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunction.js +0 -0
  313. package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunctionInput.js +0 -0
  314. package/examples/jsm/{renderers/nodes → nodes}/core/NodeKeywords.js +0 -0
  315. package/examples/jsm/{renderers/nodes → nodes}/core/NodeParser.js +0 -0
  316. package/examples/jsm/nodes/core/NodeUniform.js +8 -6
  317. package/examples/jsm/nodes/core/NodeUtils.js +69 -37
  318. package/examples/jsm/{renderers/nodes → nodes}/core/NodeVar.js +2 -2
  319. package/examples/jsm/{renderers/nodes → nodes}/core/NodeVary.js +2 -2
  320. package/examples/jsm/{renderers/nodes → nodes}/core/PropertyNode.js +0 -0
  321. package/examples/jsm/nodes/core/TempNode.js +20 -112
  322. package/examples/jsm/nodes/core/UniformNode.js +46 -0
  323. package/examples/jsm/nodes/core/VarNode.js +58 -27
  324. package/examples/jsm/{renderers/nodes → nodes}/core/VaryNode.js +0 -0
  325. package/examples/jsm/{renderers/nodes → nodes}/core/constants.js +0 -0
  326. package/examples/jsm/nodes/display/ColorSpaceNode.js +95 -0
  327. package/examples/jsm/nodes/display/FrontFacingNode.js +21 -0
  328. package/examples/jsm/nodes/display/NormalMapNode.js +86 -0
  329. package/examples/jsm/nodes/display/ToneMappingNode.js +51 -0
  330. package/examples/jsm/nodes/fog/FogNode.js +31 -0
  331. package/examples/jsm/nodes/fog/FogRangeNode.js +27 -0
  332. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +33 -0
  333. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
  334. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +27 -0
  335. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +18 -0
  336. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +18 -0
  337. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +18 -0
  338. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +94 -0
  339. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +22 -0
  340. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +12 -0
  341. package/examples/jsm/nodes/functions/material/getRoughness.js +18 -0
  342. package/examples/jsm/nodes/gpgpu/ComputeNode.js +63 -0
  343. package/examples/jsm/nodes/lighting/AONode.js +25 -0
  344. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +37 -0
  345. package/examples/jsm/nodes/lighting/EnvironmentNode.js +65 -0
  346. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +50 -0
  347. package/examples/jsm/nodes/lighting/LightingContextNode.js +75 -0
  348. package/examples/jsm/nodes/lighting/LightingNode.js +19 -0
  349. package/examples/jsm/nodes/lighting/LightsNode.js +120 -0
  350. package/examples/jsm/nodes/lighting/PunctualLightNode.js +68 -0
  351. package/examples/jsm/nodes/loaders/NodeLoader.js +107 -0
  352. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +42 -0
  353. package/examples/jsm/nodes/loaders/NodeObjectLoader.js +70 -0
  354. package/examples/jsm/{renderers/nodes → nodes}/materials/LineBasicNodeMaterial.js +11 -4
  355. package/examples/jsm/nodes/materials/Materials.js +65 -0
  356. package/examples/jsm/{renderers/nodes → nodes}/materials/MeshBasicNodeMaterial.js +13 -4
  357. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +162 -22
  358. package/examples/jsm/nodes/materials/NodeMaterial.js +128 -113
  359. package/examples/jsm/{renderers/nodes → nodes}/materials/PointsNodeMaterial.js +13 -4
  360. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +84 -16
  361. package/examples/jsm/nodes/math/CondNode.js +26 -95
  362. package/examples/jsm/nodes/math/MathNode.js +164 -187
  363. package/examples/jsm/nodes/math/OperatorNode.js +161 -41
  364. package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeFunction.js +2 -2
  365. package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeParser.js +0 -0
  366. package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeFunction.js +20 -5
  367. package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeParser.js +0 -0
  368. package/examples/jsm/nodes/procedural/CheckerNode.js +16 -57
  369. package/examples/jsm/nodes/shadernode/ShaderNode.js +262 -0
  370. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +274 -0
  371. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +106 -0
  372. package/examples/jsm/{renderers/nodes → nodes}/utils/ArrayElementNode.js +3 -3
  373. package/examples/jsm/{renderers/nodes → nodes}/utils/ConvertNode.js +11 -3
  374. package/examples/jsm/nodes/utils/JoinNode.js +17 -89
  375. package/examples/jsm/nodes/utils/MatcapUVNode.js +25 -0
  376. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +32 -0
  377. package/examples/jsm/{renderers/nodes → nodes}/utils/OscNode.js +18 -2
  378. package/examples/jsm/{renderers/nodes → nodes}/utils/SplitNode.js +35 -4
  379. package/examples/jsm/{renderers/nodes → nodes}/utils/SpriteSheetUVNode.js +3 -3
  380. package/examples/jsm/nodes/utils/TimerNode.js +30 -65
  381. package/examples/jsm/objects/Lensflare.js +6 -6
  382. package/examples/jsm/objects/LightningStorm.js +4 -4
  383. package/examples/jsm/objects/MarchingCubes.js +5 -9
  384. package/examples/jsm/objects/Reflector.js +8 -19
  385. package/examples/jsm/objects/ReflectorForSSRPass.js +2 -14
  386. package/examples/jsm/objects/Refractor.js +8 -19
  387. package/examples/jsm/objects/ShadowMesh.js +2 -2
  388. package/examples/jsm/objects/Sky.js +2 -2
  389. package/examples/jsm/objects/Water.js +3 -18
  390. package/examples/jsm/objects/Water2.js +2 -2
  391. package/examples/jsm/offscreen/jank.js +5 -5
  392. package/examples/jsm/offscreen/offscreen.js +1 -1
  393. package/examples/jsm/offscreen/scene.js +11 -11
  394. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +5 -7
  395. package/examples/jsm/postprocessing/AfterimagePass.js +0 -10
  396. package/examples/jsm/postprocessing/BloomPass.js +48 -20
  397. package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
  398. package/examples/jsm/postprocessing/EffectComposer.js +1 -9
  399. package/examples/jsm/postprocessing/GlitchPass.js +7 -6
  400. package/examples/jsm/postprocessing/LUTPass.js +2 -2
  401. package/examples/jsm/postprocessing/OutlinePass.js +8 -15
  402. package/examples/jsm/postprocessing/SAOPass.js +2 -9
  403. package/examples/jsm/postprocessing/SMAAPass.js +2 -11
  404. package/examples/jsm/postprocessing/SSAARenderPass.js +1 -4
  405. package/examples/jsm/postprocessing/SSAOPass.js +13 -25
  406. package/examples/jsm/postprocessing/SSRPass.js +3 -9
  407. package/examples/jsm/postprocessing/SavePass.js +1 -3
  408. package/examples/jsm/postprocessing/TAARenderPass.js +4 -4
  409. package/examples/jsm/postprocessing/UnrealBloomPass.js +3 -8
  410. package/examples/jsm/renderers/CSS2DRenderer.js +21 -19
  411. package/examples/jsm/renderers/CSS3DRenderer.js +39 -34
  412. package/examples/jsm/renderers/Projector.js +101 -128
  413. package/examples/jsm/renderers/SVGRenderer.js +4 -4
  414. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +1 -1
  415. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +127 -23
  416. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +14 -3
  417. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +5 -5
  418. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +4 -4
  419. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +16 -10
  420. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +8 -7
  421. package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +43 -0
  422. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +14 -7
  423. package/examples/jsm/renderers/webgpu/WebGPUInfo.js +1 -1
  424. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +0 -6
  425. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +20 -20
  426. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +2 -1
  427. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +66 -0
  428. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +49 -28
  429. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +14 -14
  430. package/examples/jsm/renderers/webgpu/WebGPUSampler.js +2 -2
  431. package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +5 -8
  432. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +23 -20
  433. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +38 -20
  434. package/examples/jsm/renderers/webgpu/WebGPUUniform.js +14 -14
  435. package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +5 -32
  436. package/examples/jsm/renderers/webgpu/WebGPUUniformsGroup.js +2 -2
  437. package/examples/jsm/renderers/webgpu/constants.js +3 -2
  438. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +276 -278
  439. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeSampledTexture.js +20 -2
  440. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +24 -14
  441. package/examples/jsm/shaders/BlendShader.js +2 -1
  442. package/examples/jsm/shaders/CopyShader.js +4 -3
  443. package/examples/jsm/shaders/DigitalGlitch.js +3 -3
  444. package/examples/jsm/shaders/FXAAShader.js +219 -1051
  445. package/examples/jsm/shaders/FreiChenShader.js +1 -1
  446. package/examples/jsm/shaders/HorizontalBlurShader.js +1 -1
  447. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +1 -1
  448. package/examples/jsm/shaders/MMDToonShader.js +0 -1
  449. package/examples/jsm/shaders/SSAOShader.js +1 -1
  450. package/examples/jsm/shaders/SSRShader.js +3 -3
  451. package/examples/jsm/shaders/ToneMapShader.js +1 -1
  452. package/examples/jsm/utils/BufferGeometryUtils.js +292 -22
  453. package/examples/jsm/utils/GPUStatsPanel.js +1 -1
  454. package/examples/jsm/utils/LDrawUtils.js +202 -0
  455. package/examples/jsm/utils/SceneUtils.js +76 -2
  456. package/examples/jsm/utils/SkeletonUtils.js +1 -1
  457. package/examples/jsm/utils/UVsDebug.js +23 -32
  458. package/examples/jsm/webxr/ARButton.js +14 -4
  459. package/examples/jsm/webxr/OculusHandPointerModel.js +3 -3
  460. package/examples/jsm/webxr/Text2D.js +1 -1
  461. package/examples/jsm/webxr/VRButton.js +39 -1
  462. package/examples/jsm/webxr/XREstimatedLight.js +2 -0
  463. package/examples/jsm/webxr/XRHandMeshModel.js +3 -7
  464. package/examples/jsm/webxr/XRHandModelFactory.js +3 -0
  465. package/package.json +53 -25
  466. package/src/Three.Legacy.js +41 -1912
  467. package/src/Three.js +6 -3
  468. package/src/animation/AnimationClip.js +1 -1
  469. package/src/animation/AnimationMixer.js +6 -3
  470. package/src/animation/AnimationObjectGroup.js +2 -2
  471. package/src/animation/PropertyBinding.js +8 -18
  472. package/src/audio/PositionalAudio.js +8 -0
  473. package/src/cameras/ArrayCamera.js +2 -3
  474. package/src/cameras/Camera.js +2 -2
  475. package/src/cameras/CubeCamera.js +8 -1
  476. package/src/cameras/OrthographicCamera.js +2 -2
  477. package/src/cameras/PerspectiveCamera.js +2 -2
  478. package/src/constants.js +8 -18
  479. package/src/core/BufferAttribute.js +7 -12
  480. package/src/core/BufferGeometry.js +6 -6
  481. package/src/core/GLBufferAttribute.js +2 -2
  482. package/src/core/InstancedBufferAttribute.js +2 -2
  483. package/src/core/InstancedBufferGeometry.js +2 -2
  484. package/src/core/InstancedInterleavedBuffer.js +2 -2
  485. package/src/core/InterleavedBuffer.js +2 -2
  486. package/src/core/InterleavedBufferAttribute.js +5 -11
  487. package/src/core/Object3D.js +6 -3
  488. package/src/core/Raycaster.js +2 -2
  489. package/src/extras/DataUtils.js +127 -40
  490. package/src/extras/Earcut.js +2 -2
  491. package/src/extras/ImageUtils.js +63 -0
  492. package/src/extras/PMREMGenerator.js +152 -174
  493. package/src/extras/core/CurvePath.js +3 -3
  494. package/src/extras/core/ShapePath.js +5 -6
  495. package/src/extras/curves/ArcCurve.js +2 -2
  496. package/src/extras/curves/CatmullRomCurve3.js +2 -2
  497. package/src/extras/curves/CubicBezierCurve.js +2 -2
  498. package/src/extras/curves/CubicBezierCurve3.js +2 -2
  499. package/src/extras/curves/EllipseCurve.js +2 -2
  500. package/src/extras/curves/LineCurve.js +2 -2
  501. package/src/extras/curves/LineCurve3.js +2 -1
  502. package/src/extras/curves/QuadraticBezierCurve.js +2 -2
  503. package/src/extras/curves/QuadraticBezierCurve3.js +2 -2
  504. package/src/extras/curves/SplineCurve.js +2 -2
  505. package/src/geometries/CapsuleGeometry.js +33 -0
  506. package/src/geometries/ExtrudeGeometry.js +2 -0
  507. package/src/geometries/Geometries.js +1 -0
  508. package/src/geometries/LatheGeometry.js +1 -1
  509. package/src/geometries/TorusKnotGeometry.js +2 -2
  510. package/src/geometries/WireframeGeometry.js +3 -2
  511. package/src/helpers/BoxHelper.js +2 -2
  512. package/src/helpers/PointLightHelper.js +1 -1
  513. package/src/helpers/SkeletonHelper.js +3 -2
  514. package/src/lights/AmbientLight.js +2 -2
  515. package/src/lights/AmbientLightProbe.js +2 -2
  516. package/src/lights/DirectionalLight.js +2 -2
  517. package/src/lights/DirectionalLightShadow.js +2 -2
  518. package/src/lights/HemisphereLight.js +4 -4
  519. package/src/lights/HemisphereLightProbe.js +2 -2
  520. package/src/lights/Light.js +4 -4
  521. package/src/lights/LightProbe.js +2 -2
  522. package/src/lights/PointLight.js +4 -4
  523. package/src/lights/PointLightShadow.js +2 -2
  524. package/src/lights/RectAreaLight.js +2 -2
  525. package/src/lights/SpotLight.js +4 -4
  526. package/src/lights/SpotLightShadow.js +2 -2
  527. package/src/loaders/FileLoader.js +23 -4
  528. package/src/loaders/ImageBitmapLoader.js +2 -2
  529. package/src/loaders/ImageLoader.js +1 -1
  530. package/src/loaders/LoaderUtils.js +1 -1
  531. package/src/loaders/MaterialLoader.js +8 -3
  532. package/src/loaders/ObjectLoader.js +23 -25
  533. package/src/materials/LineBasicMaterial.js +6 -13
  534. package/src/materials/LineDashedMaterial.js +2 -15
  535. package/src/materials/Material.js +49 -15
  536. package/src/materials/Materials.js +66 -18
  537. package/src/materials/MeshBasicMaterial.js +6 -31
  538. package/src/materials/MeshDepthMaterial.js +2 -22
  539. package/src/materials/MeshDistanceMaterial.js +2 -22
  540. package/src/materials/MeshLambertMaterial.js +6 -34
  541. package/src/materials/MeshMatcapMaterial.js +6 -28
  542. package/src/materials/MeshNormalMaterial.js +2 -26
  543. package/src/materials/MeshPhongMaterial.js +6 -48
  544. package/src/materials/MeshPhysicalMaterial.js +32 -35
  545. package/src/materials/MeshStandardMaterial.js +6 -54
  546. package/src/materials/MeshToonMaterial.js +6 -38
  547. package/src/materials/PointsMaterial.js +6 -15
  548. package/src/materials/RawShaderMaterial.js +2 -2
  549. package/src/materials/ShaderMaterial.js +3 -17
  550. package/src/materials/ShadowMaterial.js +6 -8
  551. package/src/materials/SpriteMaterial.js +6 -12
  552. package/src/math/Box2.js +2 -2
  553. package/src/math/Box3.js +29 -15
  554. package/src/math/Color.js +85 -36
  555. package/src/math/ColorManagement.js +74 -0
  556. package/src/math/Euler.js +16 -14
  557. package/src/math/Interpolant.js +4 -9
  558. package/src/math/MathUtils.js +76 -7
  559. package/src/math/Matrix3.js +2 -2
  560. package/src/math/Matrix4.js +2 -3
  561. package/src/math/Plane.js +2 -2
  562. package/src/math/Quaternion.js +12 -3
  563. package/src/math/Spherical.js +1 -1
  564. package/src/math/SphericalHarmonics3.js +2 -2
  565. package/src/math/Vector2.js +2 -2
  566. package/src/math/Vector3.js +12 -3
  567. package/src/math/Vector4.js +2 -2
  568. package/src/math/interpolants/DiscreteInterpolant.js +1 -1
  569. package/src/objects/Bone.js +2 -2
  570. package/src/objects/Group.js +2 -2
  571. package/src/objects/InstancedMesh.js +4 -4
  572. package/src/objects/Line.js +76 -107
  573. package/src/objects/LineLoop.js +2 -2
  574. package/src/objects/LineSegments.js +15 -23
  575. package/src/objects/Mesh.js +82 -104
  576. package/src/objects/Points.js +32 -54
  577. package/src/objects/SkinnedMesh.js +5 -8
  578. package/src/objects/Sprite.js +4 -4
  579. package/src/renderers/WebGL3DRenderTarget.js +22 -0
  580. package/src/renderers/WebGLArrayRenderTarget.js +22 -0
  581. package/src/renderers/WebGLCubeRenderTarget.js +7 -16
  582. package/src/renderers/WebGLMultipleRenderTargets.js +8 -5
  583. package/src/renderers/WebGLRenderTarget.js +19 -18
  584. package/src/renderers/WebGLRenderer.js +112 -133
  585. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +46 -0
  586. package/src/renderers/shaders/ShaderChunk/common.glsl.js +1 -0
  587. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +12 -13
  588. package/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +1 -1
  589. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +0 -2
  590. package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -4
  591. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -2
  592. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +3 -19
  593. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +107 -0
  594. package/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -0
  595. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -7
  596. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +25 -0
  597. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -7
  598. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +25 -2
  599. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +43 -5
  600. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +10 -3
  601. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +1 -2
  602. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +24 -0
  603. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +1 -1
  604. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +7 -7
  605. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +1 -9
  606. package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +16 -31
  607. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +9 -8
  608. package/src/renderers/shaders/ShaderChunk.js +6 -0
  609. package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -2
  610. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -3
  611. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
  612. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +3 -2
  613. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
  614. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +2 -2
  615. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +6 -0
  616. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
  617. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +10 -0
  618. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
  619. package/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
  620. package/src/renderers/shaders/ShaderLib.js +8 -2
  621. package/src/renderers/shaders/UniformsLib.js +2 -2
  622. package/src/renderers/webgl/WebGLAttributes.js +6 -6
  623. package/src/renderers/webgl/WebGLBackground.js +5 -2
  624. package/src/renderers/webgl/WebGLBindingStates.js +57 -29
  625. package/src/renderers/webgl/WebGLCubeMaps.js +0 -4
  626. package/src/renderers/webgl/WebGLCubeUVMaps.js +29 -16
  627. package/src/renderers/webgl/WebGLGeometries.js +2 -2
  628. package/src/renderers/webgl/WebGLLights.js +0 -1
  629. package/src/renderers/webgl/WebGLMaterials.js +72 -187
  630. package/src/renderers/webgl/WebGLMorphtargets.js +59 -23
  631. package/src/renderers/webgl/WebGLProgram.js +56 -30
  632. package/src/renderers/webgl/WebGLPrograms.js +80 -130
  633. package/src/renderers/webgl/WebGLShaderCache.js +4 -3
  634. package/src/renderers/webgl/WebGLShadowMap.js +6 -8
  635. package/src/renderers/webgl/WebGLState.js +83 -2
  636. package/src/renderers/webgl/WebGLTextures.js +618 -375
  637. package/src/renderers/webgl/WebGLUniforms.js +79 -80
  638. package/src/renderers/webgl/WebGLUtils.js +97 -30
  639. package/src/renderers/webxr/WebXRManager.js +64 -47
  640. package/src/scenes/Fog.js +2 -2
  641. package/src/scenes/FogExp2.js +2 -2
  642. package/src/scenes/Scene.js +2 -2
  643. package/src/textures/CanvasTexture.js +2 -2
  644. package/src/textures/CompressedTexture.js +2 -2
  645. package/src/textures/CubeTexture.js +2 -2
  646. package/src/textures/{DataTexture3D.js → Data3DTexture.js} +4 -4
  647. package/src/textures/{DataTexture2DArray.js → DataArrayTexture.js} +4 -4
  648. package/src/textures/DataTexture.js +2 -5
  649. package/src/textures/DepthTexture.js +5 -5
  650. package/src/textures/FramebufferTexture.js +2 -2
  651. package/src/textures/Source.js +123 -0
  652. package/src/textures/Texture.js +29 -98
  653. package/src/textures/VideoTexture.js +2 -4
  654. package/src/utils.js +15 -1
  655. package/examples/js/WebGL.js +0 -90
  656. package/examples/js/csm/Frustum.js +0 -133
  657. package/examples/js/deprecated/Geometry.js +0 -1656
  658. package/examples/js/loaders/VRMLoader.js +0 -72
  659. package/examples/js/objects/ReflectorRTT.js +0 -16
  660. package/examples/js/postprocessing/SSRrPass.js +0 -494
  661. package/examples/js/shaders/SSRrShader.js +0 -336
  662. package/examples/js/utils/RoughnessMipmapper.js +0 -268
  663. package/examples/jsm/deprecated/Geometry.js +0 -1869
  664. package/examples/jsm/libs/opentype.module.min.js +0 -119
  665. package/examples/jsm/loaders/NodeMaterialLoader.js +0 -263
  666. package/examples/jsm/loaders/VRMLoader.js +0 -78
  667. package/examples/jsm/nodes/accessors/ColorsNode.js +0 -56
  668. package/examples/jsm/nodes/accessors/LightNode.js +0 -60
  669. package/examples/jsm/nodes/accessors/ResolutionNode.js +0 -64
  670. package/examples/jsm/nodes/accessors/ScreenUVNode.js +0 -64
  671. package/examples/jsm/nodes/core/NodeLib.js +0 -64
  672. package/examples/jsm/nodes/core/StructNode.js +0 -106
  673. package/examples/jsm/nodes/effects/BlurNode.js +0 -171
  674. package/examples/jsm/nodes/effects/ColorAdjustmentNode.js +0 -140
  675. package/examples/jsm/nodes/effects/LuminanceNode.js +0 -75
  676. package/examples/jsm/nodes/inputs/BoolNode.js +0 -51
  677. package/examples/jsm/nodes/inputs/ColorNode.js +0 -58
  678. package/examples/jsm/nodes/inputs/CubeTextureNode.js +0 -108
  679. package/examples/jsm/nodes/inputs/FloatNode.js +0 -51
  680. package/examples/jsm/nodes/inputs/IntNode.js +0 -51
  681. package/examples/jsm/nodes/inputs/Matrix3Node.js +0 -63
  682. package/examples/jsm/nodes/inputs/Matrix4Node.js +0 -63
  683. package/examples/jsm/nodes/inputs/PropertyNode.js +0 -47
  684. package/examples/jsm/nodes/inputs/RTTNode.js +0 -157
  685. package/examples/jsm/nodes/inputs/ReflectorNode.js +0 -90
  686. package/examples/jsm/nodes/inputs/ScreenNode.js +0 -28
  687. package/examples/jsm/nodes/inputs/TextureNode.js +0 -116
  688. package/examples/jsm/nodes/inputs/Vector2Node.js +0 -57
  689. package/examples/jsm/nodes/inputs/Vector3Node.js +0 -58
  690. package/examples/jsm/nodes/inputs/Vector4Node.js +0 -59
  691. package/examples/jsm/nodes/materials/BasicNodeMaterial.js +0 -26
  692. package/examples/jsm/nodes/materials/PhongNodeMaterial.js +0 -36
  693. package/examples/jsm/nodes/materials/StandardNodeMaterial.js +0 -40
  694. package/examples/jsm/nodes/materials/nodes/BasicNode.js +0 -154
  695. package/examples/jsm/nodes/materials/nodes/MeshStandardNode.js +0 -116
  696. package/examples/jsm/nodes/materials/nodes/PhongNode.js +0 -409
  697. package/examples/jsm/nodes/materials/nodes/RawNode.js +0 -62
  698. package/examples/jsm/nodes/materials/nodes/SpriteNode.js +0 -236
  699. package/examples/jsm/nodes/materials/nodes/StandardNode.js +0 -609
  700. package/examples/jsm/nodes/misc/BumpMapNode.js +0 -163
  701. package/examples/jsm/nodes/misc/NormalMapNode.js +0 -138
  702. package/examples/jsm/nodes/misc/TextureCubeNode.js +0 -86
  703. package/examples/jsm/nodes/misc/TextureCubeUVNode.js +0 -280
  704. package/examples/jsm/nodes/postprocessing/NodePass.js +0 -93
  705. package/examples/jsm/nodes/postprocessing/NodePostProcessing.js +0 -148
  706. package/examples/jsm/nodes/procedural/Fractal3DNode.js +0 -104
  707. package/examples/jsm/nodes/procedural/Noise2DNode.js +0 -149
  708. package/examples/jsm/nodes/procedural/Noise3DNode.js +0 -141
  709. package/examples/jsm/nodes/utils/BypassNode.js +0 -85
  710. package/examples/jsm/nodes/utils/ColorSpaceNode.js +0 -154
  711. package/examples/jsm/nodes/utils/MaxMIPLevelNode.js +0 -56
  712. package/examples/jsm/nodes/utils/RemapNode.js +0 -155
  713. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -101
  714. package/examples/jsm/nodes/utils/SubSlotNode.js +0 -77
  715. package/examples/jsm/nodes/utils/SwitchNode.js +0 -103
  716. package/examples/jsm/nodes/utils/UVTransformNode.js +0 -66
  717. package/examples/jsm/nodes/utils/VelocityNode.js +0 -170
  718. package/examples/jsm/objects/ReflectorRTT.js +0 -15
  719. package/examples/jsm/postprocessing/SSRrPass.js +0 -579
  720. package/examples/jsm/renderers/nodes/Nodes.js +0 -164
  721. package/examples/jsm/renderers/nodes/ShaderNode.js +0 -346
  722. package/examples/jsm/renderers/nodes/accessors/CameraNode.js +0 -68
  723. package/examples/jsm/renderers/nodes/accessors/NormalNode.js +0 -63
  724. package/examples/jsm/renderers/nodes/accessors/PositionNode.js +0 -67
  725. package/examples/jsm/renderers/nodes/accessors/ReferenceNode.js +0 -91
  726. package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +0 -107
  727. package/examples/jsm/renderers/nodes/accessors/UVNode.js +0 -25
  728. package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +0 -23
  729. package/examples/jsm/renderers/nodes/core/AttributeNode.js +0 -54
  730. package/examples/jsm/renderers/nodes/core/ExpressionNode.js +0 -32
  731. package/examples/jsm/renderers/nodes/core/FunctionCallNode.js +0 -67
  732. package/examples/jsm/renderers/nodes/core/FunctionNode.js +0 -87
  733. package/examples/jsm/renderers/nodes/core/InputNode.js +0 -66
  734. package/examples/jsm/renderers/nodes/core/Node.js +0 -104
  735. package/examples/jsm/renderers/nodes/core/NodeBuilder.js +0 -633
  736. package/examples/jsm/renderers/nodes/core/NodeFrame.js +0 -59
  737. package/examples/jsm/renderers/nodes/core/NodeUniform.js +0 -28
  738. package/examples/jsm/renderers/nodes/core/TempNode.js +0 -43
  739. package/examples/jsm/renderers/nodes/core/VarNode.js +0 -51
  740. package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +0 -133
  741. package/examples/jsm/renderers/nodes/display/NormalMapNode.js +0 -87
  742. package/examples/jsm/renderers/nodes/functions/BSDFs.js +0 -122
  743. package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +0 -27
  744. package/examples/jsm/renderers/nodes/inputs/BufferNode.js +0 -25
  745. package/examples/jsm/renderers/nodes/inputs/ColorNode.js +0 -18
  746. package/examples/jsm/renderers/nodes/inputs/FloatNode.js +0 -17
  747. package/examples/jsm/renderers/nodes/inputs/IntNode.js +0 -17
  748. package/examples/jsm/renderers/nodes/inputs/Matrix3Node.js +0 -18
  749. package/examples/jsm/renderers/nodes/inputs/Matrix4Node.js +0 -18
  750. package/examples/jsm/renderers/nodes/inputs/TextureNode.js +0 -79
  751. package/examples/jsm/renderers/nodes/inputs/Vector2Node.js +0 -18
  752. package/examples/jsm/renderers/nodes/inputs/Vector3Node.js +0 -18
  753. package/examples/jsm/renderers/nodes/inputs/Vector4Node.js +0 -18
  754. package/examples/jsm/renderers/nodes/lights/LightContextNode.js +0 -59
  755. package/examples/jsm/renderers/nodes/lights/LightNode.js +0 -79
  756. package/examples/jsm/renderers/nodes/lights/LightsNode.js +0 -44
  757. package/examples/jsm/renderers/nodes/materials/Materials.js +0 -11
  758. package/examples/jsm/renderers/nodes/materials/MeshStandardNodeMaterial.js +0 -63
  759. package/examples/jsm/renderers/nodes/math/CondNode.js +0 -60
  760. package/examples/jsm/renderers/nodes/math/MathNode.js +0 -241
  761. package/examples/jsm/renderers/nodes/math/OperatorNode.js +0 -174
  762. package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +0 -36
  763. package/examples/jsm/renderers/nodes/utils/JoinNode.js +0 -42
  764. package/examples/jsm/renderers/nodes/utils/TimerNode.js +0 -47
  765. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +0 -20
  766. package/examples/jsm/shaders/SSRrShader.js +0 -307
  767. package/examples/jsm/utils/RoughnessMipmapper.js +0 -288
  768. package/src/renderers/WebGLMultisampleRenderTarget.js +0 -33
@@ -47,51 +47,51 @@
47
47
  function parseASCII( data ) {
48
48
 
49
49
  // connectivity of the triangles
50
- var indices = []; // triangles vertices
50
+ const indices = []; // triangles vertices
51
51
 
52
- var positions = []; // red, green, blue colors in the range 0 to 1
52
+ const positions = []; // red, green, blue colors in the range 0 to 1
53
53
 
54
- var colors = []; // normal vector, one per vertex
54
+ const colors = []; // normal vector, one per vertex
55
55
 
56
- var normals = [];
57
- var result; // pattern for detecting the end of a number sequence
56
+ const normals = [];
57
+ let result; // pattern for detecting the end of a number sequence
58
58
 
59
- var patWord = /^[^\d.\s-]+/; // pattern for reading vertices, 3 floats or integers
59
+ const patWord = /^[^\d.\s-]+/; // pattern for reading vertices, 3 floats or integers
60
60
 
61
- var pat3Floats = /(\-?\d+\.?[\d\-\+e]*)\s+(\-?\d+\.?[\d\-\+e]*)\s+(\-?\d+\.?[\d\-\+e]*)/g; // pattern for connectivity, an integer followed by any number of ints
61
+ const pat3Floats = /(\-?\d+\.?[\d\-\+e]*)\s+(\-?\d+\.?[\d\-\+e]*)\s+(\-?\d+\.?[\d\-\+e]*)/g; // pattern for connectivity, an integer followed by any number of ints
62
62
  // the first integer is the number of polygon nodes
63
63
 
64
- var patConnectivity = /^(\d+)\s+([\s\d]*)/; // indicates start of vertex data section
64
+ const patConnectivity = /^(\d+)\s+([\s\d]*)/; // indicates start of vertex data section
65
65
 
66
- var patPOINTS = /^POINTS /; // indicates start of polygon connectivity section
66
+ const patPOINTS = /^POINTS /; // indicates start of polygon connectivity section
67
67
 
68
- var patPOLYGONS = /^POLYGONS /; // indicates start of triangle strips section
68
+ const patPOLYGONS = /^POLYGONS /; // indicates start of triangle strips section
69
69
 
70
- var patTRIANGLE_STRIPS = /^TRIANGLE_STRIPS /; // POINT_DATA number_of_values
70
+ const patTRIANGLE_STRIPS = /^TRIANGLE_STRIPS /; // POINT_DATA number_of_values
71
71
 
72
- var patPOINT_DATA = /^POINT_DATA[ ]+(\d+)/; // CELL_DATA number_of_polys
72
+ const patPOINT_DATA = /^POINT_DATA[ ]+(\d+)/; // CELL_DATA number_of_polys
73
73
 
74
- var patCELL_DATA = /^CELL_DATA[ ]+(\d+)/; // Start of color section
74
+ const patCELL_DATA = /^CELL_DATA[ ]+(\d+)/; // Start of color section
75
75
 
76
- var patCOLOR_SCALARS = /^COLOR_SCALARS[ ]+(\w+)[ ]+3/; // NORMALS Normals float
76
+ const patCOLOR_SCALARS = /^COLOR_SCALARS[ ]+(\w+)[ ]+3/; // NORMALS Normals float
77
77
 
78
- var patNORMALS = /^NORMALS[ ]+(\w+)[ ]+(\w+)/;
79
- var inPointsSection = false;
80
- var inPolygonsSection = false;
81
- var inTriangleStripSection = false;
82
- var inPointDataSection = false;
83
- var inCellDataSection = false;
84
- var inColorSection = false;
85
- var inNormalsSection = false;
86
- var lines = data.split( '\n' );
78
+ const patNORMALS = /^NORMALS[ ]+(\w+)[ ]+(\w+)/;
79
+ let inPointsSection = false;
80
+ let inPolygonsSection = false;
81
+ let inTriangleStripSection = false;
82
+ let inPointDataSection = false;
83
+ let inCellDataSection = false;
84
+ let inColorSection = false;
85
+ let inNormalsSection = false;
86
+ const lines = data.split( '\n' );
87
87
 
88
- for ( var i in lines ) {
88
+ for ( const i in lines ) {
89
89
 
90
- var line = lines[ i ].trim();
90
+ const line = lines[ i ].trim();
91
91
 
92
92
  if ( line.indexOf( 'DATASET' ) === 0 ) {
93
93
 
94
- var dataset = line.split( ' ' )[ 1 ];
94
+ const dataset = line.split( ' ' )[ 1 ];
95
95
  if ( dataset !== 'POLYDATA' ) throw new Error( 'Unsupported DATASET type: ' + dataset );
96
96
 
97
97
  } else if ( inPointsSection ) {
@@ -100,9 +100,9 @@
100
100
  while ( ( result = pat3Floats.exec( line ) ) !== null ) {
101
101
 
102
102
  if ( patWord.exec( line ) !== null ) break;
103
- var x = parseFloat( result[ 1 ] );
104
- var y = parseFloat( result[ 2 ] );
105
- var z = parseFloat( result[ 3 ] );
103
+ const x = parseFloat( result[ 1 ] );
104
+ const y = parseFloat( result[ 2 ] );
105
+ const z = parseFloat( result[ 3 ] );
106
106
  positions.push( x, y, z );
107
107
 
108
108
  }
@@ -112,19 +112,18 @@
112
112
  if ( ( result = patConnectivity.exec( line ) ) !== null ) {
113
113
 
114
114
  // numVertices i0 i1 i2 ...
115
- var numVertices = parseInt( result[ 1 ] );
116
- var inds = result[ 2 ].split( /\s+/ );
115
+ const numVertices = parseInt( result[ 1 ] );
116
+ const inds = result[ 2 ].split( /\s+/ );
117
117
 
118
118
  if ( numVertices >= 3 ) {
119
119
 
120
- var i0 = parseInt( inds[ 0 ] );
121
- var i1, i2;
122
- var k = 1; // split the polygon in numVertices - 2 triangles
120
+ const i0 = parseInt( inds[ 0 ] );
121
+ let k = 1; // split the polygon in numVertices - 2 triangles
123
122
 
124
- for ( var j = 0; j < numVertices - 2; ++ j ) {
123
+ for ( let j = 0; j < numVertices - 2; ++ j ) {
125
124
 
126
- i1 = parseInt( inds[ k ] );
127
- i2 = parseInt( inds[ k + 1 ] );
125
+ const i1 = parseInt( inds[ k ] );
126
+ const i2 = parseInt( inds[ k + 1 ] );
128
127
  indices.push( i0, i1, i2 );
129
128
  k ++;
130
129
 
@@ -139,27 +138,26 @@
139
138
  if ( ( result = patConnectivity.exec( line ) ) !== null ) {
140
139
 
141
140
  // numVertices i0 i1 i2 ...
142
- var numVertices = parseInt( result[ 1 ] );
143
- var inds = result[ 2 ].split( /\s+/ );
141
+ const numVertices = parseInt( result[ 1 ] );
142
+ const inds = result[ 2 ].split( /\s+/ );
144
143
 
145
144
  if ( numVertices >= 3 ) {
146
145
 
147
- var i0, i1, i2; // split the polygon in numVertices - 2 triangles
148
-
149
- for ( var j = 0; j < numVertices - 2; j ++ ) {
146
+ // split the polygon in numVertices - 2 triangles
147
+ for ( let j = 0; j < numVertices - 2; j ++ ) {
150
148
 
151
149
  if ( j % 2 === 1 ) {
152
150
 
153
- i0 = parseInt( inds[ j ] );
154
- i1 = parseInt( inds[ j + 2 ] );
155
- i2 = parseInt( inds[ j + 1 ] );
151
+ const i0 = parseInt( inds[ j ] );
152
+ const i1 = parseInt( inds[ j + 2 ] );
153
+ const i2 = parseInt( inds[ j + 1 ] );
156
154
  indices.push( i0, i1, i2 );
157
155
 
158
156
  } else {
159
157
 
160
- i0 = parseInt( inds[ j ] );
161
- i1 = parseInt( inds[ j + 1 ] );
162
- i2 = parseInt( inds[ j + 2 ] );
158
+ const i0 = parseInt( inds[ j ] );
159
+ const i1 = parseInt( inds[ j + 1 ] );
160
+ const i2 = parseInt( inds[ j + 2 ] );
163
161
  indices.push( i0, i1, i2 );
164
162
 
165
163
  }
@@ -178,9 +176,9 @@
178
176
  while ( ( result = pat3Floats.exec( line ) ) !== null ) {
179
177
 
180
178
  if ( patWord.exec( line ) !== null ) break;
181
- var r = parseFloat( result[ 1 ] );
182
- var g = parseFloat( result[ 2 ] );
183
- var b = parseFloat( result[ 3 ] );
179
+ const r = parseFloat( result[ 1 ] );
180
+ const g = parseFloat( result[ 2 ] );
181
+ const b = parseFloat( result[ 3 ] );
184
182
  colors.push( r, g, b );
185
183
 
186
184
  }
@@ -191,9 +189,9 @@
191
189
  while ( ( result = pat3Floats.exec( line ) ) !== null ) {
192
190
 
193
191
  if ( patWord.exec( line ) !== null ) break;
194
- var nx = parseFloat( result[ 1 ] );
195
- var ny = parseFloat( result[ 2 ] );
196
- var nz = parseFloat( result[ 3 ] );
192
+ const nx = parseFloat( result[ 1 ] );
193
+ const ny = parseFloat( result[ 2 ] );
194
+ const nz = parseFloat( result[ 3 ] );
197
195
  normals.push( nx, ny, nz );
198
196
 
199
197
  }
@@ -254,7 +252,7 @@
254
252
 
255
253
  }
256
254
 
257
- var geometry = new THREE.BufferGeometry();
255
+ let geometry = new THREE.BufferGeometry();
258
256
  geometry.setIndex( indices );
259
257
  geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( positions, 3 ) );
260
258
 
@@ -277,17 +275,17 @@
277
275
 
278
276
  // cell
279
277
  geometry = geometry.toNonIndexed();
280
- var numTriangles = geometry.attributes.position.count / 3;
278
+ const numTriangles = geometry.attributes.position.count / 3;
281
279
 
282
280
  if ( colors.length === numTriangles * 3 ) {
283
281
 
284
- var newColors = [];
282
+ const newColors = [];
285
283
 
286
- for ( var i = 0; i < numTriangles; i ++ ) {
284
+ for ( let i = 0; i < numTriangles; i ++ ) {
287
285
 
288
- var r = colors[ 3 * i + 0 ];
289
- var g = colors[ 3 * i + 1 ];
290
- var b = colors[ 3 * i + 2 ];
286
+ const r = colors[ 3 * i + 0 ];
287
+ const g = colors[ 3 * i + 1 ];
288
+ const b = colors[ 3 * i + 2 ];
291
289
  newColors.push( r, g, b );
292
290
  newColors.push( r, g, b );
293
291
  newColors.push( r, g, b );
@@ -306,22 +304,19 @@
306
304
 
307
305
  function parseBinary( data ) {
308
306
 
309
- var count, pointIndex, i, numberOfPoints, s;
310
- var buffer = new Uint8Array( data );
311
- var dataView = new DataView( data ); // Points and normals, by default, are empty
312
-
313
- var points = [];
314
- var normals = [];
315
- var indices = []; // Going to make a big array of strings
307
+ const buffer = new Uint8Array( data );
308
+ const dataView = new DataView( data ); // Points and normals, by default, are empty
316
309
 
317
- var vtk = [];
318
- var index = 0;
310
+ let points = [];
311
+ let normals = [];
312
+ let indices = [];
313
+ let index = 0;
319
314
 
320
315
  function findString( buffer, start ) {
321
316
 
322
- var index = start;
323
- var c = buffer[ index ];
324
- var s = [];
317
+ let index = start;
318
+ let c = buffer[ index ];
319
+ const s = [];
325
320
 
326
321
  while ( c !== 10 ) {
327
322
 
@@ -340,7 +335,7 @@
340
335
 
341
336
  }
342
337
 
343
- var state, line;
338
+ let state, line;
344
339
 
345
340
  while ( true ) {
346
341
 
@@ -350,20 +345,19 @@
350
345
 
351
346
  if ( line.indexOf( 'DATASET' ) === 0 ) {
352
347
 
353
- var dataset = line.split( ' ' )[ 1 ];
348
+ const dataset = line.split( ' ' )[ 1 ];
354
349
  if ( dataset !== 'POLYDATA' ) throw new Error( 'Unsupported DATASET type: ' + dataset );
355
350
 
356
351
  } else if ( line.indexOf( 'POINTS' ) === 0 ) {
357
352
 
358
- vtk.push( line ); // Add the points
353
+ // Add the points
354
+ const numberOfPoints = parseInt( line.split( ' ' )[ 1 ], 10 ); // Each point is 3 4-byte floats
359
355
 
360
- numberOfPoints = parseInt( line.split( ' ' )[ 1 ], 10 ); // Each point is 3 4-byte floats
361
-
362
- count = numberOfPoints * 4 * 3;
356
+ const count = numberOfPoints * 4 * 3;
363
357
  points = new Float32Array( numberOfPoints * 3 );
364
- pointIndex = state.next;
358
+ let pointIndex = state.next;
365
359
 
366
- for ( i = 0; i < numberOfPoints; i ++ ) {
360
+ for ( let i = 0; i < numberOfPoints; i ++ ) {
367
361
 
368
362
  points[ 3 * i ] = dataView.getFloat32( pointIndex, false );
369
363
  points[ 3 * i + 1 ] = dataView.getFloat32( pointIndex + 4, false );
@@ -377,22 +371,22 @@
377
371
 
378
372
  } else if ( line.indexOf( 'TRIANGLE_STRIPS' ) === 0 ) {
379
373
 
380
- var numberOfStrips = parseInt( line.split( ' ' )[ 1 ], 10 );
381
- var size = parseInt( line.split( ' ' )[ 2 ], 10 ); // 4 byte integers
374
+ const numberOfStrips = parseInt( line.split( ' ' )[ 1 ], 10 );
375
+ const size = parseInt( line.split( ' ' )[ 2 ], 10 ); // 4 byte integers
382
376
 
383
- count = size * 4;
377
+ const count = size * 4;
384
378
  indices = new Uint32Array( 3 * size - 9 * numberOfStrips );
385
- var indicesIndex = 0;
386
- pointIndex = state.next;
379
+ let indicesIndex = 0;
380
+ let pointIndex = state.next;
387
381
 
388
- for ( i = 0; i < numberOfStrips; i ++ ) {
382
+ for ( let i = 0; i < numberOfStrips; i ++ ) {
389
383
 
390
384
  // For each strip, read the first value, then record that many more points
391
- var indexCount = dataView.getInt32( pointIndex, false );
392
- var strip = [];
385
+ const indexCount = dataView.getInt32( pointIndex, false );
386
+ const strip = [];
393
387
  pointIndex += 4;
394
388
 
395
- for ( s = 0; s < indexCount; s ++ ) {
389
+ for ( let s = 0; s < indexCount; s ++ ) {
396
390
 
397
391
  strip.push( dataView.getInt32( pointIndex, false ) );
398
392
  pointIndex += 4;
@@ -400,7 +394,7 @@
400
394
  } // retrieves the n-2 triangles from the triangle strip
401
395
 
402
396
 
403
- for ( var j = 0; j < indexCount - 2; j ++ ) {
397
+ for ( let j = 0; j < indexCount - 2; j ++ ) {
404
398
 
405
399
  if ( j % 2 ) {
406
400
 
@@ -425,22 +419,22 @@
425
419
 
426
420
  } else if ( line.indexOf( 'POLYGONS' ) === 0 ) {
427
421
 
428
- var numberOfStrips = parseInt( line.split( ' ' )[ 1 ], 10 );
429
- var size = parseInt( line.split( ' ' )[ 2 ], 10 ); // 4 byte integers
422
+ const numberOfStrips = parseInt( line.split( ' ' )[ 1 ], 10 );
423
+ const size = parseInt( line.split( ' ' )[ 2 ], 10 ); // 4 byte integers
430
424
 
431
- count = size * 4;
425
+ const count = size * 4;
432
426
  indices = new Uint32Array( 3 * size - 9 * numberOfStrips );
433
- var indicesIndex = 0;
434
- pointIndex = state.next;
427
+ let indicesIndex = 0;
428
+ let pointIndex = state.next;
435
429
 
436
- for ( i = 0; i < numberOfStrips; i ++ ) {
430
+ for ( let i = 0; i < numberOfStrips; i ++ ) {
437
431
 
438
432
  // For each strip, read the first value, then record that many more points
439
- var indexCount = dataView.getInt32( pointIndex, false );
440
- var strip = [];
433
+ const indexCount = dataView.getInt32( pointIndex, false );
434
+ const strip = [];
441
435
  pointIndex += 4;
442
436
 
443
- for ( s = 0; s < indexCount; s ++ ) {
437
+ for ( let s = 0; s < indexCount; s ++ ) {
444
438
 
445
439
  strip.push( dataView.getInt32( pointIndex, false ) );
446
440
  pointIndex += 4;
@@ -448,7 +442,7 @@
448
442
  } // divide the polygon in n-2 triangle
449
443
 
450
444
 
451
- for ( var j = 1; j < indexCount - 1; j ++ ) {
445
+ for ( let j = 1; j < indexCount - 1; j ++ ) {
452
446
 
453
447
  indices[ indicesIndex ++ ] = strip[ 0 ];
454
448
  indices[ indicesIndex ++ ] = strip[ j ];
@@ -463,15 +457,15 @@
463
457
 
464
458
  } else if ( line.indexOf( 'POINT_DATA' ) === 0 ) {
465
459
 
466
- numberOfPoints = parseInt( line.split( ' ' )[ 1 ], 10 ); // Grab the next line
460
+ const numberOfPoints = parseInt( line.split( ' ' )[ 1 ], 10 ); // Grab the next line
467
461
 
468
462
  state = findString( buffer, state.next ); // Now grab the binary data
469
463
 
470
- count = numberOfPoints * 4 * 3;
464
+ const count = numberOfPoints * 4 * 3;
471
465
  normals = new Float32Array( numberOfPoints * 3 );
472
- pointIndex = state.next;
466
+ let pointIndex = state.next;
473
467
 
474
- for ( i = 0; i < numberOfPoints; i ++ ) {
468
+ for ( let i = 0; i < numberOfPoints; i ++ ) {
475
469
 
476
470
  normals[ 3 * i ] = dataView.getFloat32( pointIndex, false );
477
471
  normals[ 3 * i + 1 ] = dataView.getFloat32( pointIndex + 4, false );
@@ -496,7 +490,7 @@
496
490
 
497
491
  }
498
492
 
499
- var geometry = new THREE.BufferGeometry();
493
+ const geometry = new THREE.BufferGeometry();
500
494
  geometry.setIndex( new THREE.BufferAttribute( indices, 1 ) );
501
495
  geometry.setAttribute( 'position', new THREE.BufferAttribute( points, 3 ) );
502
496
 
@@ -522,7 +516,7 @@
522
516
 
523
517
  function Int32Concat( first, second ) {
524
518
 
525
- var firstLength = first.length,
519
+ const firstLength = first.length,
526
520
  result = new Int32Array( firstLength + second.length );
527
521
  result.set( first );
528
522
  result.set( second, firstLength );
@@ -536,7 +530,7 @@
536
530
  function xmlToJson( xml ) {
537
531
 
538
532
  // Create the return object
539
- var obj = {};
533
+ let obj = {};
540
534
 
541
535
  if ( xml.nodeType === 1 ) {
542
536
 
@@ -548,9 +542,9 @@
548
542
 
549
543
  obj[ 'attributes' ] = {};
550
544
 
551
- for ( var j = 0; j < xml.attributes.length; j ++ ) {
545
+ for ( let j = 0; j < xml.attributes.length; j ++ ) {
552
546
 
553
- var attribute = xml.attributes.item( j );
547
+ const attribute = xml.attributes.item( j );
554
548
  obj[ 'attributes' ][ attribute.nodeName ] = attribute.nodeValue.trim();
555
549
 
556
550
  }
@@ -569,26 +563,26 @@
569
563
 
570
564
  if ( xml.hasChildNodes() ) {
571
565
 
572
- for ( var i = 0; i < xml.childNodes.length; i ++ ) {
566
+ for ( let i = 0; i < xml.childNodes.length; i ++ ) {
573
567
 
574
- var item = xml.childNodes.item( i );
575
- var nodeName = item.nodeName;
568
+ const item = xml.childNodes.item( i );
569
+ const nodeName = item.nodeName;
576
570
 
577
571
  if ( typeof obj[ nodeName ] === 'undefined' ) {
578
572
 
579
- var tmp = xmlToJson( item );
573
+ const tmp = xmlToJson( item );
580
574
  if ( tmp !== '' ) obj[ nodeName ] = tmp;
581
575
 
582
576
  } else {
583
577
 
584
578
  if ( typeof obj[ nodeName ].push === 'undefined' ) {
585
579
 
586
- var old = obj[ nodeName ];
580
+ const old = obj[ nodeName ];
587
581
  obj[ nodeName ] = [ old ];
588
582
 
589
583
  }
590
584
 
591
- var tmp = xmlToJson( item );
585
+ const tmp = xmlToJson( item );
592
586
  if ( tmp !== '' ) obj[ nodeName ].push( tmp );
593
587
 
594
588
  }
@@ -604,20 +598,11 @@
604
598
 
605
599
  function Base64toByteArray( b64 ) {
606
600
 
607
- var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
608
- var i;
609
- var lookup = [];
610
- var revLookup = [];
611
- var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
612
- var len = code.length;
613
-
614
- for ( i = 0; i < len; i ++ ) {
615
-
616
- lookup[ i ] = code[ i ];
617
-
618
- }
601
+ const Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
602
+ const revLookup = [];
603
+ const code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
619
604
 
620
- for ( i = 0; i < len; ++ i ) {
605
+ for ( let i = 0, l = code.length; i < l; ++ i ) {
621
606
 
622
607
  revLookup[ code.charCodeAt( i ) ] = i;
623
608
 
@@ -625,8 +610,7 @@
625
610
 
626
611
  revLookup[ '-'.charCodeAt( 0 ) ] = 62;
627
612
  revLookup[ '_'.charCodeAt( 0 ) ] = 63;
628
- var j, l, tmp, placeHolders, arr;
629
- var len = b64.length;
613
+ const len = b64.length;
630
614
 
631
615
  if ( len % 4 > 0 ) {
632
616
 
@@ -634,14 +618,15 @@
634
618
 
635
619
  }
636
620
 
637
- placeHolders = b64[ len - 2 ] === '=' ? 2 : b64[ len - 1 ] === '=' ? 1 : 0;
638
- arr = new Arr( len * 3 / 4 - placeHolders );
639
- l = placeHolders > 0 ? len - 4 : len;
640
- var L = 0;
621
+ const placeHolders = b64[ len - 2 ] === '=' ? 2 : b64[ len - 1 ] === '=' ? 1 : 0;
622
+ const arr = new Arr( len * 3 / 4 - placeHolders );
623
+ const l = placeHolders > 0 ? len - 4 : len;
624
+ let L = 0;
625
+ let i, j;
641
626
 
642
627
  for ( i = 0, j = 0; i < l; i += 4, j += 3 ) {
643
628
 
644
- tmp = revLookup[ b64.charCodeAt( i ) ] << 18 | revLookup[ b64.charCodeAt( i + 1 ) ] << 12 | revLookup[ b64.charCodeAt( i + 2 ) ] << 6 | revLookup[ b64.charCodeAt( i + 3 ) ];
629
+ const tmp = revLookup[ b64.charCodeAt( i ) ] << 18 | revLookup[ b64.charCodeAt( i + 1 ) ] << 12 | revLookup[ b64.charCodeAt( i + 2 ) ] << 6 | revLookup[ b64.charCodeAt( i + 3 ) ];
645
630
  arr[ L ++ ] = ( tmp & 0xFF0000 ) >> 16;
646
631
  arr[ L ++ ] = ( tmp & 0xFF00 ) >> 8;
647
632
  arr[ L ++ ] = tmp & 0xFF;
@@ -650,12 +635,12 @@
650
635
 
651
636
  if ( placeHolders === 2 ) {
652
637
 
653
- tmp = revLookup[ b64.charCodeAt( i ) ] << 2 | revLookup[ b64.charCodeAt( i + 1 ) ] >> 4;
638
+ const tmp = revLookup[ b64.charCodeAt( i ) ] << 2 | revLookup[ b64.charCodeAt( i + 1 ) ] >> 4;
654
639
  arr[ L ++ ] = tmp & 0xFF;
655
640
 
656
641
  } else if ( placeHolders === 1 ) {
657
642
 
658
- tmp = revLookup[ b64.charCodeAt( i ) ] << 10 | revLookup[ b64.charCodeAt( i + 1 ) ] << 4 | revLookup[ b64.charCodeAt( i + 2 ) ] >> 2;
643
+ const tmp = revLookup[ b64.charCodeAt( i ) ] << 10 | revLookup[ b64.charCodeAt( i + 1 ) ] << 4 | revLookup[ b64.charCodeAt( i + 2 ) ] >> 2;
659
644
  arr[ L ++ ] = tmp >> 8 & 0xFF;
660
645
  arr[ L ++ ] = tmp & 0xFF;
661
646
 
@@ -667,7 +652,7 @@
667
652
 
668
653
  function parseDataArray( ele, compressed ) {
669
654
 
670
- var numBytes = 0;
655
+ let numBytes = 0;
671
656
 
672
657
  if ( json.attributes.header_type === 'UInt64' ) {
673
658
 
@@ -677,20 +662,19 @@
677
662
 
678
663
  numBytes = 4;
679
664
 
680
- } // Check the format
665
+ }
681
666
 
667
+ let txt, content; // Check the format
682
668
 
683
669
  if ( ele.attributes.format === 'binary' && compressed ) {
684
670
 
685
- var rawData, content, byteData, blocks, cSizeStart, headerSize, padding, dataOffsets, currentOffset;
686
-
687
671
  if ( ele.attributes.type === 'Float32' ) {
688
672
 
689
- var txt = new Float32Array();
673
+ txt = new Float32Array();
690
674
 
691
- } else if ( ele.attributes.type === 'Int64' ) {
675
+ } else if ( ele.attributes.type === 'Int32' || ele.attributes.type === 'Int64' ) {
692
676
 
693
- var txt = new Int32Array();
677
+ txt = new Int32Array();
694
678
 
695
679
  } // VTP data with the header has the following structure:
696
680
  // [#blocks][#u-size][#p-size][#c-size-1][#c-size-2]...[#c-size-#blocks][DATA]
@@ -705,34 +689,36 @@
705
689
  // computed by summing the compressed block sizes from preceding blocks according to the header.
706
690
 
707
691
 
708
- rawData = ele[ '#text' ];
709
- byteData = Base64toByteArray( rawData );
710
- blocks = byteData[ 0 ];
692
+ const textNode = ele[ '#text' ];
693
+ const rawData = Array.isArray( textNode ) ? textNode[ 0 ] : textNode;
694
+ const byteData = Base64toByteArray( rawData ); // Each data point consists of 8 bits regardless of the header type
711
695
 
712
- for ( var i = 1; i < numBytes - 1; i ++ ) {
696
+ const dataPointSize = 8;
697
+ let blocks = byteData[ 0 ];
713
698
 
714
- blocks = blocks | byteData[ i ] << i * numBytes;
699
+ for ( let i = 1; i < numBytes - 1; i ++ ) {
700
+
701
+ blocks = blocks | byteData[ i ] << i * dataPointSize;
715
702
 
716
703
  }
717
704
 
718
- headerSize = ( blocks + 3 ) * numBytes;
719
- padding = headerSize % 3 > 0 ? 3 - headerSize % 3 : 0;
705
+ let headerSize = ( blocks + 3 ) * numBytes;
706
+ const padding = headerSize % 3 > 0 ? 3 - headerSize % 3 : 0;
720
707
  headerSize = headerSize + padding;
721
- dataOffsets = [];
722
- currentOffset = headerSize;
708
+ const dataOffsets = [];
709
+ let currentOffset = headerSize;
723
710
  dataOffsets.push( currentOffset ); // Get the blocks sizes after the compression.
724
711
  // There are three blocks before c-size-i, so we skip 3*numBytes
725
712
 
726
- cSizeStart = 3 * numBytes;
713
+ const cSizeStart = 3 * numBytes;
727
714
 
728
- for ( var i = 0; i < blocks; i ++ ) {
715
+ for ( let i = 0; i < blocks; i ++ ) {
729
716
 
730
- var currentBlockSize = byteData[ i * numBytes + cSizeStart ];
717
+ let currentBlockSize = byteData[ i * numBytes + cSizeStart ];
731
718
 
732
- for ( var j = 1; j < numBytes - 1; j ++ ) {
719
+ for ( let j = 1; j < numBytes - 1; j ++ ) {
733
720
 
734
- // Each data point consists of 8 bytes regardless of the header type
735
- currentBlockSize = currentBlockSize | byteData[ i * numBytes + cSizeStart + j ] << j * 8;
721
+ currentBlockSize = currentBlockSize | byteData[ i * numBytes + cSizeStart + j ] << j * dataPointSize;
736
722
 
737
723
  }
738
724
 
@@ -741,9 +727,9 @@
741
727
 
742
728
  }
743
729
 
744
- for ( var i = 0; i < dataOffsets.length - 1; i ++ ) {
730
+ for ( let i = 0; i < dataOffsets.length - 1; i ++ ) {
745
731
 
746
- var data = fflate.unzlibSync( byteData.slice( dataOffsets[ i ], dataOffsets[ i + 1 ] ) ); // eslint-disable-line no-undef
732
+ const data = fflate.unzlibSync( byteData.slice( dataOffsets[ i ], dataOffsets[ i + 1 ] ) ); // eslint-disable-line no-undef
747
733
 
748
734
  content = data.buffer;
749
735
 
@@ -752,7 +738,7 @@
752
738
  content = new Float32Array( content );
753
739
  txt = Float32Concat( txt, content );
754
740
 
755
- } else if ( ele.attributes.type === 'Int64' ) {
741
+ } else if ( ele.attributes.type === 'Int32' || ele.attributes.type === 'Int64' ) {
756
742
 
757
743
  content = new Int32Array( content );
758
744
  txt = Int32Concat( txt, content );
@@ -781,7 +767,7 @@
781
767
 
782
768
  if ( ele.attributes.format === 'binary' && ! compressed ) {
783
769
 
784
- var content = Base64toByteArray( ele[ '#text' ] ); // VTP data for the uncompressed case has the following structure:
770
+ content = Base64toByteArray( ele[ '#text' ] ); // VTP data for the uncompressed case has the following structure:
785
771
  // [#bytes][DATA]
786
772
  // where "[#bytes]" is an integer value specifying the number of bytes in the block of data following it.
787
773
 
@@ -791,7 +777,7 @@
791
777
 
792
778
  if ( ele[ '#text' ] ) {
793
779
 
794
- var content = ele[ '#text' ].split( /\s+/ ).filter( function ( el ) {
780
+ content = ele[ '#text' ].split( /\s+/ ).filter( function ( el ) {
795
781
 
796
782
  if ( el !== '' ) return el;
797
783
 
@@ -799,7 +785,7 @@
799
785
 
800
786
  } else {
801
787
 
802
- var content = new Int32Array( 0 ).buffer;
788
+ content = new Int32Array( 0 ).buffer;
803
789
 
804
790
  }
805
791
 
@@ -809,15 +795,15 @@
809
795
 
810
796
  if ( ele.attributes.type === 'Float32' ) {
811
797
 
812
- var txt = new Float32Array( content );
798
+ txt = new Float32Array( content );
813
799
 
814
800
  } else if ( ele.attributes.type === 'Int32' ) {
815
801
 
816
- var txt = new Int32Array( content );
802
+ txt = new Int32Array( content );
817
803
 
818
804
  } else if ( ele.attributes.type === 'Int64' ) {
819
805
 
820
- var txt = new Int32Array( content );
806
+ txt = new Int32Array( content );
821
807
 
822
808
  if ( ele.attributes.format === 'binary' ) {
823
809
 
@@ -840,84 +826,47 @@
840
826
  // Get Dom
841
827
 
842
828
 
843
- var dom = null;
844
-
845
- if ( window.DOMParser ) {
846
-
847
- try {
848
-
849
- dom = new DOMParser().parseFromString( stringFile, 'text/xml' );
850
-
851
- } catch ( e ) {
852
-
853
- dom = null;
854
-
855
- }
856
-
857
- } else if ( window.ActiveXObject ) {
858
-
859
- try {
860
-
861
- dom = new ActiveXObject( 'Microsoft.XMLDOM' ); // eslint-disable-line no-undef
862
-
863
- dom.async = false;
864
-
865
- if ( ! dom.loadXML() ) {
866
-
867
- throw new Error( dom.parseError.reason + dom.parseError.srcText );
868
-
869
- }
870
-
871
- } catch ( e ) {
872
-
873
- dom = null;
874
-
875
- }
876
-
877
- } else {
878
-
879
- throw new Error( 'Cannot parse xml string!' );
880
-
881
- } // Get the doc
829
+ const dom = new DOMParser().parseFromString( stringFile, 'application/xml' ); // Get the doc
882
830
 
831
+ const doc = dom.documentElement; // Convert to json
883
832
 
884
- var doc = dom.documentElement; // Convert to json
885
-
886
- var json = xmlToJson( doc );
887
- var points = [];
888
- var normals = [];
889
- var indices = [];
833
+ const json = xmlToJson( doc );
834
+ let points = [];
835
+ let normals = [];
836
+ let indices = [];
890
837
 
891
838
  if ( json.PolyData ) {
892
839
 
893
- var piece = json.PolyData.Piece;
894
- var compressed = json.attributes.hasOwnProperty( 'compressor' ); // Can be optimized
840
+ const piece = json.PolyData.Piece;
841
+ const compressed = json.attributes.hasOwnProperty( 'compressor' ); // Can be optimized
895
842
  // Loop through the sections
896
843
 
897
- var sections = [ 'PointData', 'Points', 'Strips', 'Polys' ]; // +['CellData', 'Verts', 'Lines'];
844
+ const sections = [ 'PointData', 'Points', 'Strips', 'Polys' ]; // +['CellData', 'Verts', 'Lines'];
898
845
 
899
- var sectionIndex = 0,
900
- numberOfSections = sections.length;
846
+ let sectionIndex = 0;
847
+ const numberOfSections = sections.length;
901
848
 
902
849
  while ( sectionIndex < numberOfSections ) {
903
850
 
904
- var section = piece[ sections[ sectionIndex ] ]; // If it has a DataArray in it
851
+ const section = piece[ sections[ sectionIndex ] ]; // If it has a DataArray in it
905
852
 
906
853
  if ( section && section.DataArray ) {
907
854
 
908
855
  // Depending on the number of DataArrays
856
+ let arr;
857
+
909
858
  if ( Object.prototype.toString.call( section.DataArray ) === '[object Array]' ) {
910
859
 
911
- var arr = section.DataArray;
860
+ arr = section.DataArray;
912
861
 
913
862
  } else {
914
863
 
915
- var arr = [ section.DataArray ];
864
+ arr = [ section.DataArray ];
916
865
 
917
866
  }
918
867
 
919
- var dataArrayIndex = 0,
920
- numberOfDataArrays = arr.length;
868
+ let dataArrayIndex = 0;
869
+ const numberOfDataArrays = arr.length;
921
870
 
922
871
  while ( dataArrayIndex < numberOfDataArrays ) {
923
872
 
@@ -936,18 +885,22 @@
936
885
 
937
886
  // if iti is point data
938
887
  case 'PointData':
939
- var numberOfPoints = parseInt( piece.attributes.NumberOfPoints );
940
- var normalsName = section.attributes.Normals;
888
+ {
941
889
 
942
- if ( numberOfPoints > 0 ) {
890
+ const numberOfPoints = parseInt( piece.attributes.NumberOfPoints );
891
+ const normalsName = section.attributes.Normals;
943
892
 
944
- for ( var i = 0, len = arr.length; i < len; i ++ ) {
893
+ if ( numberOfPoints > 0 ) {
945
894
 
946
- if ( normalsName === arr[ i ].attributes.Name ) {
895
+ for ( let i = 0, len = arr.length; i < len; i ++ ) {
947
896
 
948
- var components = arr[ i ].attributes.NumberOfComponents;
949
- normals = new Float32Array( numberOfPoints * components );
950
- normals.set( arr[ i ].text, 0 );
897
+ if ( normalsName === arr[ i ].attributes.Name ) {
898
+
899
+ const components = arr[ i ].attributes.NumberOfComponents;
900
+ normals = new Float32Array( numberOfPoints * components );
901
+ normals.set( arr[ i ].text, 0 );
902
+
903
+ }
951
904
 
952
905
  }
953
906
 
@@ -959,13 +912,17 @@
959
912
  // if it is points
960
913
 
961
914
  case 'Points':
962
- var numberOfPoints = parseInt( piece.attributes.NumberOfPoints );
915
+ {
916
+
917
+ const numberOfPoints = parseInt( piece.attributes.NumberOfPoints );
918
+
919
+ if ( numberOfPoints > 0 ) {
963
920
 
964
- if ( numberOfPoints > 0 ) {
921
+ const components = section.DataArray.attributes.NumberOfComponents;
922
+ points = new Float32Array( numberOfPoints * components );
923
+ points.set( section.DataArray.text, 0 );
965
924
 
966
- var components = section.DataArray.attributes.NumberOfComponents;
967
- points = new Float32Array( numberOfPoints * components );
968
- points.set( section.DataArray.text, 0 );
925
+ }
969
926
 
970
927
  }
971
928
 
@@ -973,46 +930,50 @@
973
930
  // if it is strips
974
931
 
975
932
  case 'Strips':
976
- var numberOfStrips = parseInt( piece.attributes.NumberOfStrips );
933
+ {
977
934
 
978
- if ( numberOfStrips > 0 ) {
935
+ const numberOfStrips = parseInt( piece.attributes.NumberOfStrips );
979
936
 
980
- var connectivity = new Int32Array( section.DataArray[ 0 ].text.length );
981
- var offset = new Int32Array( section.DataArray[ 1 ].text.length );
982
- connectivity.set( section.DataArray[ 0 ].text, 0 );
983
- offset.set( section.DataArray[ 1 ].text, 0 );
984
- var size = numberOfStrips + connectivity.length;
985
- indices = new Uint32Array( 3 * size - 9 * numberOfStrips );
986
- var indicesIndex = 0;
937
+ if ( numberOfStrips > 0 ) {
987
938
 
988
- for ( var i = 0, len = numberOfStrips; i < len; i ++ ) {
939
+ const connectivity = new Int32Array( section.DataArray[ 0 ].text.length );
940
+ const offset = new Int32Array( section.DataArray[ 1 ].text.length );
941
+ connectivity.set( section.DataArray[ 0 ].text, 0 );
942
+ offset.set( section.DataArray[ 1 ].text, 0 );
943
+ const size = numberOfStrips + connectivity.length;
944
+ indices = new Uint32Array( 3 * size - 9 * numberOfStrips );
945
+ let indicesIndex = 0;
989
946
 
990
- var strip = [];
947
+ for ( let i = 0, len = numberOfStrips; i < len; i ++ ) {
991
948
 
992
- for ( var s = 0, len1 = offset[ i ], len0 = 0; s < len1 - len0; s ++ ) {
949
+ const strip = [];
993
950
 
994
- strip.push( connectivity[ s ] );
995
- if ( i > 0 ) len0 = offset[ i - 1 ];
951
+ for ( let s = 0, len1 = offset[ i ], len0 = 0; s < len1 - len0; s ++ ) {
996
952
 
997
- }
953
+ strip.push( connectivity[ s ] );
954
+ if ( i > 0 ) len0 = offset[ i - 1 ];
998
955
 
999
- for ( var j = 0, len1 = offset[ i ], len0 = 0; j < len1 - len0 - 2; j ++ ) {
956
+ }
1000
957
 
1001
- if ( j % 2 ) {
958
+ for ( let j = 0, len1 = offset[ i ], len0 = 0; j < len1 - len0 - 2; j ++ ) {
1002
959
 
1003
- indices[ indicesIndex ++ ] = strip[ j ];
1004
- indices[ indicesIndex ++ ] = strip[ j + 2 ];
1005
- indices[ indicesIndex ++ ] = strip[ j + 1 ];
960
+ if ( j % 2 ) {
1006
961
 
1007
- } else {
962
+ indices[ indicesIndex ++ ] = strip[ j ];
963
+ indices[ indicesIndex ++ ] = strip[ j + 2 ];
964
+ indices[ indicesIndex ++ ] = strip[ j + 1 ];
1008
965
 
1009
- indices[ indicesIndex ++ ] = strip[ j ];
1010
- indices[ indicesIndex ++ ] = strip[ j + 1 ];
1011
- indices[ indicesIndex ++ ] = strip[ j + 2 ];
966
+ } else {
1012
967
 
1013
- }
968
+ indices[ indicesIndex ++ ] = strip[ j ];
969
+ indices[ indicesIndex ++ ] = strip[ j + 1 ];
970
+ indices[ indicesIndex ++ ] = strip[ j + 2 ];
1014
971
 
1015
- if ( i > 0 ) len0 = offset[ i - 1 ];
972
+ }
973
+
974
+ if ( i > 0 ) len0 = offset[ i - 1 ];
975
+
976
+ }
1016
977
 
1017
978
  }
1018
979
 
@@ -1024,48 +985,52 @@
1024
985
  // if it is polys
1025
986
 
1026
987
  case 'Polys':
1027
- var numberOfPolys = parseInt( piece.attributes.NumberOfPolys );
988
+ {
1028
989
 
1029
- if ( numberOfPolys > 0 ) {
990
+ const numberOfPolys = parseInt( piece.attributes.NumberOfPolys );
1030
991
 
1031
- var connectivity = new Int32Array( section.DataArray[ 0 ].text.length );
1032
- var offset = new Int32Array( section.DataArray[ 1 ].text.length );
1033
- connectivity.set( section.DataArray[ 0 ].text, 0 );
1034
- offset.set( section.DataArray[ 1 ].text, 0 );
1035
- var size = numberOfPolys + connectivity.length;
1036
- indices = new Uint32Array( 3 * size - 9 * numberOfPolys );
1037
- var indicesIndex = 0,
1038
- connectivityIndex = 0;
1039
- var i = 0,
1040
- len = numberOfPolys,
1041
- len0 = 0;
992
+ if ( numberOfPolys > 0 ) {
1042
993
 
1043
- while ( i < len ) {
994
+ const connectivity = new Int32Array( section.DataArray[ 0 ].text.length );
995
+ const offset = new Int32Array( section.DataArray[ 1 ].text.length );
996
+ connectivity.set( section.DataArray[ 0 ].text, 0 );
997
+ offset.set( section.DataArray[ 1 ].text, 0 );
998
+ const size = numberOfPolys + connectivity.length;
999
+ indices = new Uint32Array( 3 * size - 9 * numberOfPolys );
1000
+ let indicesIndex = 0,
1001
+ connectivityIndex = 0;
1002
+ let i = 0,
1003
+ len0 = 0;
1004
+ const len = numberOfPolys;
1044
1005
 
1045
- var poly = [];
1046
- var s = 0,
1047
- len1 = offset[ i ];
1006
+ while ( i < len ) {
1048
1007
 
1049
- while ( s < len1 - len0 ) {
1008
+ const poly = [];
1009
+ let s = 0;
1010
+ const len1 = offset[ i ];
1050
1011
 
1051
- poly.push( connectivity[ connectivityIndex ++ ] );
1052
- s ++;
1012
+ while ( s < len1 - len0 ) {
1053
1013
 
1054
- }
1014
+ poly.push( connectivity[ connectivityIndex ++ ] );
1015
+ s ++;
1055
1016
 
1056
- var j = 1;
1017
+ }
1057
1018
 
1058
- while ( j < len1 - len0 - 1 ) {
1019
+ let j = 1;
1059
1020
 
1060
- indices[ indicesIndex ++ ] = poly[ 0 ];
1061
- indices[ indicesIndex ++ ] = poly[ j ];
1062
- indices[ indicesIndex ++ ] = poly[ j + 1 ];
1063
- j ++;
1021
+ while ( j < len1 - len0 - 1 ) {
1064
1022
 
1065
- }
1023
+ indices[ indicesIndex ++ ] = poly[ 0 ];
1024
+ indices[ indicesIndex ++ ] = poly[ j ];
1025
+ indices[ indicesIndex ++ ] = poly[ j + 1 ];
1026
+ j ++;
1066
1027
 
1067
- i ++;
1068
- len0 = offset[ i - 1 ];
1028
+ }
1029
+
1030
+ i ++;
1031
+ len0 = offset[ i - 1 ];
1032
+
1033
+ }
1069
1034
 
1070
1035
  }
1071
1036
 
@@ -1084,7 +1049,7 @@
1084
1049
 
1085
1050
  }
1086
1051
 
1087
- var geometry = new THREE.BufferGeometry();
1052
+ const geometry = new THREE.BufferGeometry();
1088
1053
  geometry.setIndex( new THREE.BufferAttribute( indices, 1 ) );
1089
1054
  geometry.setAttribute( 'position', new THREE.BufferAttribute( points, 3 ) );
1090
1055
 
@@ -1105,7 +1070,7 @@
1105
1070
  } // get the 5 first lines of the files to check if there is the key word binary
1106
1071
 
1107
1072
 
1108
- var meta = THREE.LoaderUtils.decodeText( new Uint8Array( data, 0, 250 ) ).split( '\n' );
1073
+ const meta = THREE.LoaderUtils.decodeText( new Uint8Array( data, 0, 250 ) ).split( '\n' );
1109
1074
 
1110
1075
  if ( meta[ 0 ].indexOf( 'xml' ) !== - 1 ) {
1111
1076