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
@@ -130,9 +130,9 @@ class EXRLoader extends DataTextureLoader {
130
130
 
131
131
  function reverseLutFromBitmap( bitmap, lut ) {
132
132
 
133
- var k = 0;
133
+ let k = 0;
134
134
 
135
- for ( var i = 0; i < USHORT_RANGE; ++ i ) {
135
+ for ( let i = 0; i < USHORT_RANGE; ++ i ) {
136
136
 
137
137
  if ( ( i == 0 ) || ( bitmap[ i >> 3 ] & ( 1 << ( i & 7 ) ) ) ) {
138
138
 
@@ -142,7 +142,7 @@ class EXRLoader extends DataTextureLoader {
142
142
 
143
143
  }
144
144
 
145
- var n = k - 1;
145
+ const n = k - 1;
146
146
 
147
147
  while ( k < USHORT_RANGE ) lut[ k ++ ] = 0;
148
148
 
@@ -152,7 +152,7 @@ class EXRLoader extends DataTextureLoader {
152
152
 
153
153
  function hufClearDecTable( hdec ) {
154
154
 
155
- for ( var i = 0; i < HUF_DECSIZE; i ++ ) {
155
+ for ( let i = 0; i < HUF_DECSIZE; i ++ ) {
156
156
 
157
157
  hdec[ i ] = {};
158
158
  hdec[ i ].len = 0;
@@ -186,33 +186,33 @@ class EXRLoader extends DataTextureLoader {
186
186
 
187
187
  function hufCanonicalCodeTable( hcode ) {
188
188
 
189
- for ( var i = 0; i <= 58; ++ i ) hufTableBuffer[ i ] = 0;
190
- for ( var i = 0; i < HUF_ENCSIZE; ++ i ) hufTableBuffer[ hcode[ i ] ] += 1;
189
+ for ( let i = 0; i <= 58; ++ i ) hufTableBuffer[ i ] = 0;
190
+ for ( let i = 0; i < HUF_ENCSIZE; ++ i ) hufTableBuffer[ hcode[ i ] ] += 1;
191
191
 
192
- var c = 0;
192
+ let c = 0;
193
193
 
194
- for ( var i = 58; i > 0; -- i ) {
194
+ for ( let i = 58; i > 0; -- i ) {
195
195
 
196
- var nc = ( ( c + hufTableBuffer[ i ] ) >> 1 );
196
+ const nc = ( ( c + hufTableBuffer[ i ] ) >> 1 );
197
197
  hufTableBuffer[ i ] = c;
198
198
  c = nc;
199
199
 
200
200
  }
201
201
 
202
- for ( var i = 0; i < HUF_ENCSIZE; ++ i ) {
202
+ for ( let i = 0; i < HUF_ENCSIZE; ++ i ) {
203
203
 
204
- var l = hcode[ i ];
204
+ const l = hcode[ i ];
205
205
  if ( l > 0 ) hcode[ i ] = l | ( hufTableBuffer[ l ] ++ << 6 );
206
206
 
207
207
  }
208
208
 
209
209
  }
210
210
 
211
- function hufUnpackEncTable( uInt8Array, inDataView, inOffset, ni, im, iM, hcode ) {
211
+ function hufUnpackEncTable( uInt8Array, inOffset, ni, im, iM, hcode ) {
212
212
 
213
- var p = inOffset;
214
- var c = 0;
215
- var lc = 0;
213
+ const p = inOffset;
214
+ let c = 0;
215
+ let lc = 0;
216
216
 
217
217
  for ( ; im <= iM; im ++ ) {
218
218
 
@@ -220,7 +220,7 @@ class EXRLoader extends DataTextureLoader {
220
220
 
221
221
  getBits( 6, c, lc, uInt8Array, p );
222
222
 
223
- var l = getBitsReturn.l;
223
+ const l = getBitsReturn.l;
224
224
  c = getBitsReturn.c;
225
225
  lc = getBitsReturn.lc;
226
226
 
@@ -230,19 +230,19 @@ class EXRLoader extends DataTextureLoader {
230
230
 
231
231
  if ( p.value - inOffset.value > ni ) {
232
232
 
233
- throw 'Something wrong with hufUnpackEncTable';
233
+ throw new Error( 'Something wrong with hufUnpackEncTable' );
234
234
 
235
235
  }
236
236
 
237
237
  getBits( 8, c, lc, uInt8Array, p );
238
238
 
239
- var zerun = getBitsReturn.l + SHORTEST_LONG_RUN;
239
+ let zerun = getBitsReturn.l + SHORTEST_LONG_RUN;
240
240
  c = getBitsReturn.c;
241
241
  lc = getBitsReturn.lc;
242
242
 
243
243
  if ( im + zerun > iM + 1 ) {
244
244
 
245
- throw 'Something wrong with hufUnpackEncTable';
245
+ throw new Error( 'Something wrong with hufUnpackEncTable' );
246
246
 
247
247
  }
248
248
 
@@ -252,11 +252,11 @@ class EXRLoader extends DataTextureLoader {
252
252
 
253
253
  } else if ( l >= SHORT_ZEROCODE_RUN ) {
254
254
 
255
- var zerun = l - SHORT_ZEROCODE_RUN + 2;
255
+ let zerun = l - SHORT_ZEROCODE_RUN + 2;
256
256
 
257
257
  if ( im + zerun > iM + 1 ) {
258
258
 
259
- throw 'Something wrong with hufUnpackEncTable';
259
+ throw new Error( 'Something wrong with hufUnpackEncTable' );
260
260
 
261
261
  }
262
262
 
@@ -288,22 +288,22 @@ class EXRLoader extends DataTextureLoader {
288
288
 
289
289
  for ( ; im <= iM; im ++ ) {
290
290
 
291
- var c = hufCode( hcode[ im ] );
292
- var l = hufLength( hcode[ im ] );
291
+ const c = hufCode( hcode[ im ] );
292
+ const l = hufLength( hcode[ im ] );
293
293
 
294
294
  if ( c >> l ) {
295
295
 
296
- throw 'Invalid table entry';
296
+ throw new Error( 'Invalid table entry' );
297
297
 
298
298
  }
299
299
 
300
300
  if ( l > HUF_DECBITS ) {
301
301
 
302
- var pl = hdecod[ ( c >> ( l - HUF_DECBITS ) ) ];
302
+ const pl = hdecod[ ( c >> ( l - HUF_DECBITS ) ) ];
303
303
 
304
304
  if ( pl.len ) {
305
305
 
306
- throw 'Invalid table entry';
306
+ throw new Error( 'Invalid table entry' );
307
307
 
308
308
  }
309
309
 
@@ -311,10 +311,10 @@ class EXRLoader extends DataTextureLoader {
311
311
 
312
312
  if ( pl.p ) {
313
313
 
314
- var p = pl.p;
314
+ const p = pl.p;
315
315
  pl.p = new Array( pl.lit );
316
316
 
317
- for ( var i = 0; i < pl.lit - 1; ++ i ) {
317
+ for ( let i = 0; i < pl.lit - 1; ++ i ) {
318
318
 
319
319
  pl.p[ i ] = p[ i ];
320
320
 
@@ -330,15 +330,15 @@ class EXRLoader extends DataTextureLoader {
330
330
 
331
331
  } else if ( l ) {
332
332
 
333
- var plOffset = 0;
333
+ let plOffset = 0;
334
334
 
335
- for ( var i = 1 << ( HUF_DECBITS - l ); i > 0; i -- ) {
335
+ for ( let i = 1 << ( HUF_DECBITS - l ); i > 0; i -- ) {
336
336
 
337
- var pl = hdecod[ ( c << ( HUF_DECBITS - l ) ) + plOffset ];
337
+ const pl = hdecod[ ( c << ( HUF_DECBITS - l ) ) + plOffset ];
338
338
 
339
339
  if ( pl.len || pl.p ) {
340
340
 
341
- throw 'Invalid table entry';
341
+ throw new Error( 'Invalid table entry' );
342
342
 
343
343
  }
344
344
 
@@ -371,7 +371,7 @@ class EXRLoader extends DataTextureLoader {
371
371
 
372
372
  const getCodeReturn = { c: 0, lc: 0 };
373
373
 
374
- function getCode( po, rlc, c, lc, uInt8Array, inDataView, inOffset, outBuffer, outBufferOffset, outBufferEndOffset ) {
374
+ function getCode( po, rlc, c, lc, uInt8Array, inOffset, outBuffer, outBufferOffset, outBufferEndOffset ) {
375
375
 
376
376
  if ( po == rlc ) {
377
377
 
@@ -385,8 +385,8 @@ class EXRLoader extends DataTextureLoader {
385
385
 
386
386
  lc -= 8;
387
387
 
388
- var cs = ( c >> lc );
389
- var cs = new Uint8Array( [ cs ] )[ 0 ];
388
+ let cs = ( c >> lc );
389
+ cs = new Uint8Array( [ cs ] )[ 0 ];
390
390
 
391
391
  if ( outBufferOffset.value + cs > outBufferEndOffset ) {
392
392
 
@@ -394,7 +394,7 @@ class EXRLoader extends DataTextureLoader {
394
394
 
395
395
  }
396
396
 
397
- var s = outBuffer[ outBufferOffset.value - 1 ];
397
+ const s = outBuffer[ outBufferOffset.value - 1 ];
398
398
 
399
399
  while ( cs -- > 0 ) {
400
400
 
@@ -425,7 +425,7 @@ class EXRLoader extends DataTextureLoader {
425
425
 
426
426
  function Int16( value ) {
427
427
 
428
- var ref = UInt16( value );
428
+ const ref = UInt16( value );
429
429
  return ( ref > 0x7FFF ) ? ref - 0x10000 : ref;
430
430
 
431
431
  }
@@ -434,14 +434,14 @@ class EXRLoader extends DataTextureLoader {
434
434
 
435
435
  function wdec14( l, h ) {
436
436
 
437
- var ls = Int16( l );
438
- var hs = Int16( h );
437
+ const ls = Int16( l );
438
+ const hs = Int16( h );
439
439
 
440
- var hi = hs;
441
- var ai = ls + ( hi & 1 ) + ( hi >> 1 );
440
+ const hi = hs;
441
+ const ai = ls + ( hi & 1 ) + ( hi >> 1 );
442
442
 
443
- var as = ai;
444
- var bs = ai - hi;
443
+ const as = ai;
444
+ const bs = ai - hi;
445
445
 
446
446
  wdec14Return.a = as;
447
447
  wdec14Return.b = bs;
@@ -450,11 +450,11 @@ class EXRLoader extends DataTextureLoader {
450
450
 
451
451
  function wdec16( l, h ) {
452
452
 
453
- var m = UInt16( l );
454
- var d = UInt16( h );
453
+ const m = UInt16( l );
454
+ const d = UInt16( h );
455
455
 
456
- var bb = ( m - ( d >> 1 ) ) & MOD_MASK;
457
- var aa = ( d + bb - A_OFFSET ) & MOD_MASK;
456
+ const bb = ( m - ( d >> 1 ) ) & MOD_MASK;
457
+ const aa = ( d + bb - A_OFFSET ) & MOD_MASK;
458
458
 
459
459
  wdec14Return.a = aa;
460
460
  wdec14Return.b = bb;
@@ -463,10 +463,11 @@ class EXRLoader extends DataTextureLoader {
463
463
 
464
464
  function wav2Decode( buffer, j, nx, ox, ny, oy, mx ) {
465
465
 
466
- var w14 = mx < ( 1 << 14 );
467
- var n = ( nx > ny ) ? ny : nx;
468
- var p = 1;
469
- var p2;
466
+ const w14 = mx < ( 1 << 14 );
467
+ const n = ( nx > ny ) ? ny : nx;
468
+ let p = 1;
469
+ let p2;
470
+ let py;
470
471
 
471
472
  while ( p <= n ) p <<= 1;
472
473
 
@@ -476,24 +477,24 @@ class EXRLoader extends DataTextureLoader {
476
477
 
477
478
  while ( p >= 1 ) {
478
479
 
479
- var py = 0;
480
- var ey = py + oy * ( ny - p2 );
481
- var oy1 = oy * p;
482
- var oy2 = oy * p2;
483
- var ox1 = ox * p;
484
- var ox2 = ox * p2;
485
- var i00, i01, i10, i11;
480
+ py = 0;
481
+ const ey = py + oy * ( ny - p2 );
482
+ const oy1 = oy * p;
483
+ const oy2 = oy * p2;
484
+ const ox1 = ox * p;
485
+ const ox2 = ox * p2;
486
+ let i00, i01, i10, i11;
486
487
 
487
488
  for ( ; py <= ey; py += oy2 ) {
488
489
 
489
- var px = py;
490
- var ex = py + ox * ( nx - p2 );
490
+ let px = py;
491
+ const ex = py + ox * ( nx - p2 );
491
492
 
492
493
  for ( ; px <= ex; px += ox2 ) {
493
494
 
494
- var p01 = px + ox1;
495
- var p10 = px + oy1;
496
- var p11 = p10 + ox1;
495
+ const p01 = px + ox1;
496
+ const p10 = px + oy1;
497
+ const p11 = p10 + ox1;
497
498
 
498
499
  if ( w14 ) {
499
500
 
@@ -546,7 +547,7 @@ class EXRLoader extends DataTextureLoader {
546
547
 
547
548
  if ( nx & p ) {
548
549
 
549
- var p10 = px + oy1;
550
+ const p10 = px + oy1;
550
551
 
551
552
  if ( w14 )
552
553
  wdec14( buffer[ px + j ], buffer[ p10 + j ] );
@@ -564,12 +565,12 @@ class EXRLoader extends DataTextureLoader {
564
565
 
565
566
  if ( ny & p ) {
566
567
 
567
- var px = py;
568
- var ex = py + ox * ( nx - p2 );
568
+ let px = py;
569
+ const ex = py + ox * ( nx - p2 );
569
570
 
570
571
  for ( ; px <= ex; px += ox2 ) {
571
572
 
572
- var p01 = px + ox1;
573
+ const p01 = px + ox1;
573
574
 
574
575
  if ( w14 )
575
576
  wdec14( buffer[ px + j ], buffer[ p01 + j ] );
@@ -594,12 +595,12 @@ class EXRLoader extends DataTextureLoader {
594
595
 
595
596
  }
596
597
 
597
- function hufDecode( encodingTable, decodingTable, uInt8Array, inDataView, inOffset, ni, rlc, no, outBuffer, outOffset ) {
598
+ function hufDecode( encodingTable, decodingTable, uInt8Array, inOffset, ni, rlc, no, outBuffer, outOffset ) {
598
599
 
599
- var c = 0;
600
- var lc = 0;
601
- var outBufferEndOffset = no;
602
- var inOffsetEnd = Math.trunc( inOffset.value + ( ni + 7 ) / 8 );
600
+ let c = 0;
601
+ let lc = 0;
602
+ const outBufferEndOffset = no;
603
+ const inOffsetEnd = Math.trunc( inOffset.value + ( ni + 7 ) / 8 );
603
604
 
604
605
  while ( inOffset.value < inOffsetEnd ) {
605
606
 
@@ -610,14 +611,14 @@ class EXRLoader extends DataTextureLoader {
610
611
 
611
612
  while ( lc >= HUF_DECBITS ) {
612
613
 
613
- var index = ( c >> ( lc - HUF_DECBITS ) ) & HUF_DECMASK;
614
- var pl = decodingTable[ index ];
614
+ const index = ( c >> ( lc - HUF_DECBITS ) ) & HUF_DECMASK;
615
+ const pl = decodingTable[ index ];
615
616
 
616
617
  if ( pl.len ) {
617
618
 
618
619
  lc -= pl.len;
619
620
 
620
- getCode( pl.lit, rlc, c, lc, uInt8Array, inDataView, inOffset, outBuffer, outOffset, outBufferEndOffset );
621
+ getCode( pl.lit, rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset );
621
622
 
622
623
  c = getCodeReturn.c;
623
624
  lc = getCodeReturn.lc;
@@ -626,15 +627,15 @@ class EXRLoader extends DataTextureLoader {
626
627
 
627
628
  if ( ! pl.p ) {
628
629
 
629
- throw 'hufDecode issues';
630
+ throw new Error( 'hufDecode issues' );
630
631
 
631
632
  }
632
633
 
633
- var j;
634
+ let j;
634
635
 
635
636
  for ( j = 0; j < pl.lit; j ++ ) {
636
637
 
637
- var l = hufLength( encodingTable[ pl.p[ j ] ] );
638
+ const l = hufLength( encodingTable[ pl.p[ j ] ] );
638
639
 
639
640
  while ( lc < l && inOffset.value < inOffsetEnd ) {
640
641
 
@@ -651,7 +652,7 @@ class EXRLoader extends DataTextureLoader {
651
652
 
652
653
  lc -= l;
653
654
 
654
- getCode( pl.p[ j ], rlc, c, lc, uInt8Array, inDataView, inOffset, outBuffer, outOffset, outBufferEndOffset );
655
+ getCode( pl.p[ j ], rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset );
655
656
 
656
657
  c = getCodeReturn.c;
657
658
  lc = getCodeReturn.lc;
@@ -666,7 +667,7 @@ class EXRLoader extends DataTextureLoader {
666
667
 
667
668
  if ( j == pl.lit ) {
668
669
 
669
- throw 'hufDecode issues';
670
+ throw new Error( 'hufDecode issues' );
670
671
 
671
672
  }
672
673
 
@@ -676,27 +677,27 @@ class EXRLoader extends DataTextureLoader {
676
677
 
677
678
  }
678
679
 
679
- var i = ( 8 - ni ) & 7;
680
+ const i = ( 8 - ni ) & 7;
680
681
 
681
682
  c >>= i;
682
683
  lc -= i;
683
684
 
684
685
  while ( lc > 0 ) {
685
686
 
686
- var pl = decodingTable[ ( c << ( HUF_DECBITS - lc ) ) & HUF_DECMASK ];
687
+ const pl = decodingTable[ ( c << ( HUF_DECBITS - lc ) ) & HUF_DECMASK ];
687
688
 
688
689
  if ( pl.len ) {
689
690
 
690
691
  lc -= pl.len;
691
692
 
692
- getCode( pl.lit, rlc, c, lc, uInt8Array, inDataView, inOffset, outBuffer, outOffset, outBufferEndOffset );
693
+ getCode( pl.lit, rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset );
693
694
 
694
695
  c = getCodeReturn.c;
695
696
  lc = getCodeReturn.lc;
696
697
 
697
698
  } else {
698
699
 
699
- throw 'hufDecode issues';
700
+ throw new Error( 'hufDecode issues' );
700
701
 
701
702
  }
702
703
 
@@ -708,48 +709,48 @@ class EXRLoader extends DataTextureLoader {
708
709
 
709
710
  function hufUncompress( uInt8Array, inDataView, inOffset, nCompressed, outBuffer, nRaw ) {
710
711
 
711
- var outOffset = { value: 0 };
712
- var initialInOffset = inOffset.value;
712
+ const outOffset = { value: 0 };
713
+ const initialInOffset = inOffset.value;
713
714
 
714
- var im = parseUint32( inDataView, inOffset );
715
- var iM = parseUint32( inDataView, inOffset );
715
+ const im = parseUint32( inDataView, inOffset );
716
+ const iM = parseUint32( inDataView, inOffset );
716
717
 
717
718
  inOffset.value += 4;
718
719
 
719
- var nBits = parseUint32( inDataView, inOffset );
720
+ const nBits = parseUint32( inDataView, inOffset );
720
721
 
721
722
  inOffset.value += 4;
722
723
 
723
724
  if ( im < 0 || im >= HUF_ENCSIZE || iM < 0 || iM >= HUF_ENCSIZE ) {
724
725
 
725
- throw 'Something wrong with HUF_ENCSIZE';
726
+ throw new Error( 'Something wrong with HUF_ENCSIZE' );
726
727
 
727
728
  }
728
729
 
729
- var freq = new Array( HUF_ENCSIZE );
730
- var hdec = new Array( HUF_DECSIZE );
730
+ const freq = new Array( HUF_ENCSIZE );
731
+ const hdec = new Array( HUF_DECSIZE );
731
732
 
732
733
  hufClearDecTable( hdec );
733
734
 
734
- var ni = nCompressed - ( inOffset.value - initialInOffset );
735
+ const ni = nCompressed - ( inOffset.value - initialInOffset );
735
736
 
736
- hufUnpackEncTable( uInt8Array, inDataView, inOffset, ni, im, iM, freq );
737
+ hufUnpackEncTable( uInt8Array, inOffset, ni, im, iM, freq );
737
738
 
738
739
  if ( nBits > 8 * ( nCompressed - ( inOffset.value - initialInOffset ) ) ) {
739
740
 
740
- throw 'Something wrong with hufUncompress';
741
+ throw new Error( 'Something wrong with hufUncompress' );
741
742
 
742
743
  }
743
744
 
744
745
  hufBuildDecTable( freq, im, iM, hdec );
745
746
 
746
- hufDecode( freq, hdec, uInt8Array, inDataView, inOffset, nBits, iM, nRaw, outBuffer, outOffset );
747
+ hufDecode( freq, hdec, uInt8Array, inOffset, nBits, iM, nRaw, outBuffer, outOffset );
747
748
 
748
749
  }
749
750
 
750
751
  function applyLut( lut, data, nData ) {
751
752
 
752
- for ( var i = 0; i < nData; ++ i ) {
753
+ for ( let i = 0; i < nData; ++ i ) {
753
754
 
754
755
  data[ i ] = lut[ data[ i ] ];
755
756
 
@@ -759,9 +760,9 @@ class EXRLoader extends DataTextureLoader {
759
760
 
760
761
  function predictor( source ) {
761
762
 
762
- for ( var t = 1; t < source.length; t ++ ) {
763
+ for ( let t = 1; t < source.length; t ++ ) {
763
764
 
764
- var d = source[ t - 1 ] + source[ t ] - 128;
765
+ const d = source[ t - 1 ] + source[ t ] - 128;
765
766
  source[ t ] = d;
766
767
 
767
768
  }
@@ -770,10 +771,10 @@ class EXRLoader extends DataTextureLoader {
770
771
 
771
772
  function interleaveScalar( source, out ) {
772
773
 
773
- var t1 = 0;
774
- var t2 = Math.floor( ( source.length + 1 ) / 2 );
775
- var s = 0;
776
- var stop = source.length - 1;
774
+ let t1 = 0;
775
+ let t2 = Math.floor( ( source.length + 1 ) / 2 );
776
+ let s = 0;
777
+ const stop = source.length - 1;
777
778
 
778
779
  while ( true ) {
779
780
 
@@ -789,22 +790,22 @@ class EXRLoader extends DataTextureLoader {
789
790
 
790
791
  function decodeRunLength( source ) {
791
792
 
792
- var size = source.byteLength;
793
- var out = new Array();
794
- var p = 0;
793
+ let size = source.byteLength;
794
+ const out = new Array();
795
+ let p = 0;
795
796
 
796
- var reader = new DataView( source );
797
+ const reader = new DataView( source );
797
798
 
798
799
  while ( size > 0 ) {
799
800
 
800
- var l = reader.getInt8( p ++ );
801
+ const l = reader.getInt8( p ++ );
801
802
 
802
803
  if ( l < 0 ) {
803
804
 
804
- var count = - l;
805
+ const count = - l;
805
806
  size -= count + 1;
806
807
 
807
- for ( var i = 0; i < count; i ++ ) {
808
+ for ( let i = 0; i < count; i ++ ) {
808
809
 
809
810
  out.push( reader.getUint8( p ++ ) );
810
811
 
@@ -813,12 +814,12 @@ class EXRLoader extends DataTextureLoader {
813
814
 
814
815
  } else {
815
816
 
816
- var count = l;
817
+ const count = l;
817
818
  size -= 2;
818
819
 
819
- var value = reader.getUint8( p ++ );
820
+ const value = reader.getUint8( p ++ );
820
821
 
821
- for ( var i = 0; i < count + 1; i ++ ) {
822
+ for ( let i = 0; i < count + 1; i ++ ) {
822
823
 
823
824
  out.push( value );
824
825
 
@@ -834,25 +835,25 @@ class EXRLoader extends DataTextureLoader {
834
835
 
835
836
  function lossyDctDecode( cscSet, rowPtrs, channelData, acBuffer, dcBuffer, outBuffer ) {
836
837
 
837
- var dataView = new DataView( outBuffer.buffer );
838
+ let dataView = new DataView( outBuffer.buffer );
838
839
 
839
- var width = channelData[ cscSet.idx[ 0 ] ].width;
840
- var height = channelData[ cscSet.idx[ 0 ] ].height;
840
+ const width = channelData[ cscSet.idx[ 0 ] ].width;
841
+ const height = channelData[ cscSet.idx[ 0 ] ].height;
841
842
 
842
- var numComp = 3;
843
+ const numComp = 3;
843
844
 
844
- var numFullBlocksX = Math.floor( width / 8.0 );
845
- var numBlocksX = Math.ceil( width / 8.0 );
846
- var numBlocksY = Math.ceil( height / 8.0 );
847
- var leftoverX = width - ( numBlocksX - 1 ) * 8;
848
- var leftoverY = height - ( numBlocksY - 1 ) * 8;
845
+ const numFullBlocksX = Math.floor( width / 8.0 );
846
+ const numBlocksX = Math.ceil( width / 8.0 );
847
+ const numBlocksY = Math.ceil( height / 8.0 );
848
+ const leftoverX = width - ( numBlocksX - 1 ) * 8;
849
+ const leftoverY = height - ( numBlocksY - 1 ) * 8;
849
850
 
850
- var currAcComp = { value: 0 };
851
- var currDcComp = new Array( numComp );
852
- var dctData = new Array( numComp );
853
- var halfZigBlock = new Array( numComp );
854
- var rowBlock = new Array( numComp );
855
- var rowOffsets = new Array( numComp );
851
+ const currAcComp = { value: 0 };
852
+ const currDcComp = new Array( numComp );
853
+ const dctData = new Array( numComp );
854
+ const halfZigBlock = new Array( numComp );
855
+ const rowBlock = new Array( numComp );
856
+ const rowOffsets = new Array( numComp );
856
857
 
857
858
  for ( let comp = 0; comp < numComp; ++ comp ) {
858
859
 
@@ -866,12 +867,12 @@ class EXRLoader extends DataTextureLoader {
866
867
 
867
868
  for ( let blocky = 0; blocky < numBlocksY; ++ blocky ) {
868
869
 
869
- var maxY = 8;
870
+ let maxY = 8;
870
871
 
871
872
  if ( blocky == numBlocksY - 1 )
872
873
  maxY = leftoverY;
873
874
 
874
- var maxX = 8;
875
+ let maxX = 8;
875
876
 
876
877
  for ( let blockx = 0; blockx < numBlocksX; ++ blockx ) {
877
878
 
@@ -960,28 +961,28 @@ class EXRLoader extends DataTextureLoader {
960
961
 
961
962
  } // blocky
962
963
 
963
- var halfRow = new Uint16Array( width );
964
- var dataView = new DataView( outBuffer.buffer );
964
+ const halfRow = new Uint16Array( width );
965
+ dataView = new DataView( outBuffer.buffer );
965
966
 
966
967
  // convert channels back to float, if needed
967
- for ( var comp = 0; comp < numComp; ++ comp ) {
968
+ for ( let comp = 0; comp < numComp; ++ comp ) {
968
969
 
969
970
  channelData[ cscSet.idx[ comp ] ].decoded = true;
970
- var type = channelData[ cscSet.idx[ comp ] ].type;
971
+ const type = channelData[ cscSet.idx[ comp ] ].type;
971
972
 
972
973
  if ( channelData[ comp ].type != 2 ) continue;
973
974
 
974
- for ( var y = 0; y < height; ++ y ) {
975
+ for ( let y = 0; y < height; ++ y ) {
975
976
 
976
977
  const offset = rowOffsets[ comp ][ y ];
977
978
 
978
- for ( var x = 0; x < width; ++ x ) {
979
+ for ( let x = 0; x < width; ++ x ) {
979
980
 
980
981
  halfRow[ x ] = dataView.getUint16( offset + x * INT16_SIZE * type, true );
981
982
 
982
983
  }
983
984
 
984
- for ( var x = 0; x < width; ++ x ) {
985
+ for ( let x = 0; x < width; ++ x ) {
985
986
 
986
987
  dataView.setFloat32( offset + x * INT16_SIZE * type, decodeFloat16( halfRow[ x ] ), true );
987
988
 
@@ -995,8 +996,8 @@ class EXRLoader extends DataTextureLoader {
995
996
 
996
997
  function unRleAC( currAcComp, acBuffer, halfZigBlock ) {
997
998
 
998
- var acValue;
999
- var dctComp = 1;
999
+ let acValue;
1000
+ let dctComp = 1;
1000
1001
 
1001
1002
  while ( dctComp < 64 ) {
1002
1003
 
@@ -1108,14 +1109,14 @@ class EXRLoader extends DataTextureLoader {
1108
1109
  const f = 0.5 * Math.cos( 3.0 * 3.14159 / 8.0 );
1109
1110
  const g = 0.5 * Math.cos( 7.0 * 3.14159 / 16.0 );
1110
1111
 
1111
- var alpha = new Array( 4 );
1112
- var beta = new Array( 4 );
1113
- var theta = new Array( 4 );
1114
- var gamma = new Array( 4 );
1112
+ const alpha = new Array( 4 );
1113
+ const beta = new Array( 4 );
1114
+ const theta = new Array( 4 );
1115
+ const gamma = new Array( 4 );
1115
1116
 
1116
- for ( var row = 0; row < 8; ++ row ) {
1117
+ for ( let row = 0; row < 8; ++ row ) {
1117
1118
 
1118
- var rowPtr = row * 8;
1119
+ const rowPtr = row * 8;
1119
1120
 
1120
1121
  alpha[ 0 ] = c * data[ rowPtr + 2 ];
1121
1122
  alpha[ 1 ] = f * data[ rowPtr + 2 ];
@@ -1149,7 +1150,7 @@ class EXRLoader extends DataTextureLoader {
1149
1150
 
1150
1151
  }
1151
1152
 
1152
- for ( var column = 0; column < 8; ++ column ) {
1153
+ for ( let column = 0; column < 8; ++ column ) {
1153
1154
 
1154
1155
  alpha[ 0 ] = c * data[ 16 + column ];
1155
1156
  alpha[ 1 ] = f * data[ 16 + column ];
@@ -1188,11 +1189,11 @@ class EXRLoader extends DataTextureLoader {
1188
1189
 
1189
1190
  function csc709Inverse( data ) {
1190
1191
 
1191
- for ( var i = 0; i < 64; ++ i ) {
1192
+ for ( let i = 0; i < 64; ++ i ) {
1192
1193
 
1193
- var y = data[ 0 ][ i ];
1194
- var cb = data[ 1 ][ i ];
1195
- var cr = data[ 2 ][ i ];
1194
+ const y = data[ 0 ][ i ];
1195
+ const cb = data[ 1 ][ i ];
1196
+ const cr = data[ 2 ][ i ];
1196
1197
 
1197
1198
  data[ 0 ][ i ] = y + 1.5747 * cr;
1198
1199
  data[ 1 ][ i ] = y - 0.1873 * cb - 0.4682 * cr;
@@ -1204,7 +1205,7 @@ class EXRLoader extends DataTextureLoader {
1204
1205
 
1205
1206
  function convertToHalf( src, dst, idx ) {
1206
1207
 
1207
- for ( var i = 0; i < 64; ++ i ) {
1208
+ for ( let i = 0; i < 64; ++ i ) {
1208
1209
 
1209
1210
  dst[ idx + i ] = DataUtils.toHalfFloat( toLinear( src[ i ] ) );
1210
1211
 
@@ -1234,10 +1235,10 @@ class EXRLoader extends DataTextureLoader {
1234
1235
 
1235
1236
  function uncompressRLE( info ) {
1236
1237
 
1237
- var compressed = info.viewer.buffer.slice( info.offset.value, info.offset.value + info.size );
1238
+ const compressed = info.viewer.buffer.slice( info.offset.value, info.offset.value + info.size );
1238
1239
 
1239
- var rawBuffer = new Uint8Array( decodeRunLength( compressed ) );
1240
- var tmpBuffer = new Uint8Array( rawBuffer.length );
1240
+ const rawBuffer = new Uint8Array( decodeRunLength( compressed ) );
1241
+ const tmpBuffer = new Uint8Array( rawBuffer.length );
1241
1242
 
1242
1243
  predictor( rawBuffer ); // revert predictor
1243
1244
 
@@ -1249,7 +1250,7 @@ class EXRLoader extends DataTextureLoader {
1249
1250
 
1250
1251
  function uncompressZIP( info ) {
1251
1252
 
1252
- var compressed = info.array.slice( info.offset.value, info.offset.value + info.size );
1253
+ const compressed = info.array.slice( info.offset.value, info.offset.value + info.size );
1253
1254
 
1254
1255
  if ( typeof fflate === 'undefined' ) {
1255
1256
 
@@ -1257,8 +1258,8 @@ class EXRLoader extends DataTextureLoader {
1257
1258
 
1258
1259
  }
1259
1260
 
1260
- var rawBuffer = fflate.unzlibSync( compressed ); // eslint-disable-line no-undef
1261
- var tmpBuffer = new Uint8Array( rawBuffer.length );
1261
+ const rawBuffer = fflate.unzlibSync( compressed ); // eslint-disable-line no-undef
1262
+ const tmpBuffer = new Uint8Array( rawBuffer.length );
1262
1263
 
1263
1264
  predictor( rawBuffer ); // revert predictor
1264
1265
 
@@ -1270,16 +1271,16 @@ class EXRLoader extends DataTextureLoader {
1270
1271
 
1271
1272
  function uncompressPIZ( info ) {
1272
1273
 
1273
- var inDataView = info.viewer;
1274
- var inOffset = { value: info.offset.value };
1274
+ const inDataView = info.viewer;
1275
+ const inOffset = { value: info.offset.value };
1275
1276
 
1276
- var outBuffer = new Uint16Array( info.width * info.scanlineBlockSize * ( info.channels * info.type ) );
1277
- var bitmap = new Uint8Array( BITMAP_SIZE );
1277
+ const outBuffer = new Uint16Array( info.width * info.scanlineBlockSize * ( info.channels * info.type ) );
1278
+ const bitmap = new Uint8Array( BITMAP_SIZE );
1278
1279
 
1279
1280
  // Setup channel info
1280
- var outBufferEnd = 0;
1281
- var pizChannelData = new Array( info.channels );
1282
- for ( var i = 0; i < info.channels; i ++ ) {
1281
+ let outBufferEnd = 0;
1282
+ const pizChannelData = new Array( info.channels );
1283
+ for ( let i = 0; i < info.channels; i ++ ) {
1283
1284
 
1284
1285
  pizChannelData[ i ] = {};
1285
1286
  pizChannelData[ i ][ 'start' ] = outBufferEnd;
@@ -1294,18 +1295,18 @@ class EXRLoader extends DataTextureLoader {
1294
1295
 
1295
1296
  // Read range compression data
1296
1297
 
1297
- var minNonZero = parseUint16( inDataView, inOffset );
1298
- var maxNonZero = parseUint16( inDataView, inOffset );
1298
+ const minNonZero = parseUint16( inDataView, inOffset );
1299
+ const maxNonZero = parseUint16( inDataView, inOffset );
1299
1300
 
1300
1301
  if ( maxNonZero >= BITMAP_SIZE ) {
1301
1302
 
1302
- throw 'Something is wrong with PIZ_COMPRESSION BITMAP_SIZE';
1303
+ throw new Error( 'Something is wrong with PIZ_COMPRESSION BITMAP_SIZE' );
1303
1304
 
1304
1305
  }
1305
1306
 
1306
1307
  if ( minNonZero <= maxNonZero ) {
1307
1308
 
1308
- for ( var i = 0; i < maxNonZero - minNonZero + 1; i ++ ) {
1309
+ for ( let i = 0; i < maxNonZero - minNonZero + 1; i ++ ) {
1309
1310
 
1310
1311
  bitmap[ i + minNonZero ] = parseUint8( inDataView, inOffset );
1311
1312
 
@@ -1314,20 +1315,20 @@ class EXRLoader extends DataTextureLoader {
1314
1315
  }
1315
1316
 
1316
1317
  // Reverse LUT
1317
- var lut = new Uint16Array( USHORT_RANGE );
1318
- var maxValue = reverseLutFromBitmap( bitmap, lut );
1318
+ const lut = new Uint16Array( USHORT_RANGE );
1319
+ const maxValue = reverseLutFromBitmap( bitmap, lut );
1319
1320
 
1320
- var length = parseUint32( inDataView, inOffset );
1321
+ const length = parseUint32( inDataView, inOffset );
1321
1322
 
1322
1323
  // Huffman decoding
1323
1324
  hufUncompress( info.array, inDataView, inOffset, length, outBuffer, outBufferEnd );
1324
1325
 
1325
1326
  // Wavelet decoding
1326
- for ( var i = 0; i < info.channels; ++ i ) {
1327
+ for ( let i = 0; i < info.channels; ++ i ) {
1327
1328
 
1328
- var cd = pizChannelData[ i ];
1329
+ const cd = pizChannelData[ i ];
1329
1330
 
1330
- for ( var j = 0; j < pizChannelData[ i ].size; ++ j ) {
1331
+ for ( let j = 0; j < pizChannelData[ i ].size; ++ j ) {
1331
1332
 
1332
1333
  wav2Decode(
1333
1334
  outBuffer,
@@ -1347,16 +1348,16 @@ class EXRLoader extends DataTextureLoader {
1347
1348
  applyLut( lut, outBuffer, outBufferEnd );
1348
1349
 
1349
1350
  // Rearrange the pixel data into the format expected by the caller.
1350
- var tmpOffset = 0;
1351
- var tmpBuffer = new Uint8Array( outBuffer.buffer.byteLength );
1352
- for ( var y = 0; y < info.lines; y ++ ) {
1351
+ let tmpOffset = 0;
1352
+ const tmpBuffer = new Uint8Array( outBuffer.buffer.byteLength );
1353
+ for ( let y = 0; y < info.lines; y ++ ) {
1353
1354
 
1354
- for ( var c = 0; c < info.channels; c ++ ) {
1355
+ for ( let c = 0; c < info.channels; c ++ ) {
1355
1356
 
1356
- var cd = pizChannelData[ c ];
1357
+ const cd = pizChannelData[ c ];
1357
1358
 
1358
- var n = cd.nx * cd.size;
1359
- var cp = new Uint8Array( outBuffer.buffer, cd.end * INT16_SIZE, n * INT16_SIZE );
1359
+ const n = cd.nx * cd.size;
1360
+ const cp = new Uint8Array( outBuffer.buffer, cd.end * INT16_SIZE, n * INT16_SIZE );
1360
1361
 
1361
1362
  tmpBuffer.set( cp, tmpOffset );
1362
1363
  tmpOffset += n * INT16_SIZE;
@@ -1372,7 +1373,7 @@ class EXRLoader extends DataTextureLoader {
1372
1373
 
1373
1374
  function uncompressPXR( info ) {
1374
1375
 
1375
- var compressed = info.array.slice( info.offset.value, info.offset.value + info.size );
1376
+ const compressed = info.array.slice( info.offset.value, info.offset.value + info.size );
1376
1377
 
1377
1378
  if ( typeof fflate === 'undefined' ) {
1378
1379
 
@@ -1380,7 +1381,7 @@ class EXRLoader extends DataTextureLoader {
1380
1381
 
1381
1382
  }
1382
1383
 
1383
- var rawBuffer = fflate.unzlibSync( compressed ); // eslint-disable-line no-undef
1384
+ const rawBuffer = fflate.unzlibSync( compressed ); // eslint-disable-line no-undef
1384
1385
 
1385
1386
  const sz = info.lines * info.channels * info.width;
1386
1387
  const tmpBuffer = ( info.type == 1 ) ? new Uint16Array( sz ) : new Uint32Array( sz );
@@ -1448,12 +1449,12 @@ class EXRLoader extends DataTextureLoader {
1448
1449
 
1449
1450
  function uncompressDWA( info ) {
1450
1451
 
1451
- var inDataView = info.viewer;
1452
- var inOffset = { value: info.offset.value };
1453
- var outBuffer = new Uint8Array( info.width * info.lines * ( info.channels * info.type * INT16_SIZE ) );
1452
+ const inDataView = info.viewer;
1453
+ const inOffset = { value: info.offset.value };
1454
+ const outBuffer = new Uint8Array( info.width * info.lines * ( info.channels * info.type * INT16_SIZE ) );
1454
1455
 
1455
1456
  // Read compression header information
1456
- var dwaHeader = {
1457
+ const dwaHeader = {
1457
1458
 
1458
1459
  version: parseInt64( inDataView, inOffset ),
1459
1460
  unknownUncompressedSize: parseInt64( inDataView, inOffset ),
@@ -1470,20 +1471,20 @@ class EXRLoader extends DataTextureLoader {
1470
1471
  };
1471
1472
 
1472
1473
  if ( dwaHeader.version < 2 )
1473
- throw 'EXRLoader.parse: ' + EXRHeader.compression + ' version ' + dwaHeader.version + ' is unsupported';
1474
+ throw new Error( 'EXRLoader.parse: ' + EXRHeader.compression + ' version ' + dwaHeader.version + ' is unsupported' );
1474
1475
 
1475
1476
  // Read channel ruleset information
1476
- var channelRules = new Array();
1477
- var ruleSize = parseUint16( inDataView, inOffset ) - INT16_SIZE;
1477
+ const channelRules = new Array();
1478
+ let ruleSize = parseUint16( inDataView, inOffset ) - INT16_SIZE;
1478
1479
 
1479
1480
  while ( ruleSize > 0 ) {
1480
1481
 
1481
- var name = parseNullTerminatedString( inDataView.buffer, inOffset );
1482
- var value = parseUint8( inDataView, inOffset );
1483
- var compression = ( value >> 2 ) & 3;
1484
- var csc = ( value >> 4 ) - 1;
1485
- var index = new Int8Array( [ csc ] )[ 0 ];
1486
- var type = parseUint8( inDataView, inOffset );
1482
+ const name = parseNullTerminatedString( inDataView.buffer, inOffset );
1483
+ const value = parseUint8( inDataView, inOffset );
1484
+ const compression = ( value >> 2 ) & 3;
1485
+ const csc = ( value >> 4 ) - 1;
1486
+ const index = new Int8Array( [ csc ] )[ 0 ];
1487
+ const type = parseUint8( inDataView, inOffset );
1487
1488
 
1488
1489
  channelRules.push( {
1489
1490
  name: name,
@@ -1497,13 +1498,13 @@ class EXRLoader extends DataTextureLoader {
1497
1498
  }
1498
1499
 
1499
1500
  // Classify channels
1500
- var channels = EXRHeader.channels;
1501
- var channelData = new Array( info.channels );
1501
+ const channels = EXRHeader.channels;
1502
+ const channelData = new Array( info.channels );
1502
1503
 
1503
- for ( var i = 0; i < info.channels; ++ i ) {
1504
+ for ( let i = 0; i < info.channels; ++ i ) {
1504
1505
 
1505
- var cd = channelData[ i ] = {};
1506
- var channel = channels[ i ];
1506
+ const cd = channelData[ i ] = {};
1507
+ const channel = channels[ i ];
1507
1508
 
1508
1509
  cd.name = channel.name;
1509
1510
  cd.compression = UNKNOWN;
@@ -1515,17 +1516,17 @@ class EXRLoader extends DataTextureLoader {
1515
1516
 
1516
1517
  }
1517
1518
 
1518
- var cscSet = {
1519
+ const cscSet = {
1519
1520
  idx: new Array( 3 )
1520
1521
  };
1521
1522
 
1522
- for ( var offset = 0; offset < info.channels; ++ offset ) {
1523
+ for ( let offset = 0; offset < info.channels; ++ offset ) {
1523
1524
 
1524
- var cd = channelData[ offset ];
1525
+ const cd = channelData[ offset ];
1525
1526
 
1526
- for ( var i = 0; i < channelRules.length; ++ i ) {
1527
+ for ( let i = 0; i < channelRules.length; ++ i ) {
1527
1528
 
1528
- var rule = channelRules[ i ];
1529
+ const rule = channelRules[ i ];
1529
1530
 
1530
1531
  if ( cd.name == rule.name ) {
1531
1532
 
@@ -1545,6 +1546,8 @@ class EXRLoader extends DataTextureLoader {
1545
1546
 
1546
1547
  }
1547
1548
 
1549
+ let acBuffer, dcBuffer, rleBuffer;
1550
+
1548
1551
  // Read DCT - AC component data
1549
1552
  if ( dwaHeader.acCompressedSize > 0 ) {
1550
1553
 
@@ -1552,15 +1555,15 @@ class EXRLoader extends DataTextureLoader {
1552
1555
 
1553
1556
  case STATIC_HUFFMAN:
1554
1557
 
1555
- var acBuffer = new Uint16Array( dwaHeader.totalAcUncompressedCount );
1558
+ acBuffer = new Uint16Array( dwaHeader.totalAcUncompressedCount );
1556
1559
  hufUncompress( info.array, inDataView, inOffset, dwaHeader.acCompressedSize, acBuffer, dwaHeader.totalAcUncompressedCount );
1557
1560
  break;
1558
1561
 
1559
1562
  case DEFLATE:
1560
1563
 
1561
- var compressed = info.array.slice( inOffset.value, inOffset.value + dwaHeader.totalAcUncompressedCount );
1562
- var data = fflate.unzlibSync( compressed ); // eslint-disable-line no-undef
1563
- var acBuffer = new Uint16Array( data.buffer );
1564
+ const compressed = info.array.slice( inOffset.value, inOffset.value + dwaHeader.totalAcUncompressedCount );
1565
+ const data = fflate.unzlibSync( compressed ); // eslint-disable-line no-undef
1566
+ acBuffer = new Uint16Array( data.buffer );
1564
1567
  inOffset.value += dwaHeader.totalAcUncompressedCount;
1565
1568
  break;
1566
1569
 
@@ -1572,12 +1575,12 @@ class EXRLoader extends DataTextureLoader {
1572
1575
  // Read DCT - DC component data
1573
1576
  if ( dwaHeader.dcCompressedSize > 0 ) {
1574
1577
 
1575
- var zlibInfo = {
1578
+ const zlibInfo = {
1576
1579
  array: info.array,
1577
1580
  offset: inOffset,
1578
1581
  size: dwaHeader.dcCompressedSize
1579
1582
  };
1580
- var dcBuffer = new Uint16Array( uncompressZIP( zlibInfo ).buffer );
1583
+ dcBuffer = new Uint16Array( uncompressZIP( zlibInfo ).buffer );
1581
1584
  inOffset.value += dwaHeader.dcCompressedSize;
1582
1585
 
1583
1586
  }
@@ -1585,26 +1588,26 @@ class EXRLoader extends DataTextureLoader {
1585
1588
  // Read RLE compressed data
1586
1589
  if ( dwaHeader.rleRawSize > 0 ) {
1587
1590
 
1588
- var compressed = info.array.slice( inOffset.value, inOffset.value + dwaHeader.rleCompressedSize );
1589
- var data = fflate.unzlibSync( compressed ); // eslint-disable-line no-undef
1590
- var rleBuffer = decodeRunLength( data.buffer );
1591
+ const compressed = info.array.slice( inOffset.value, inOffset.value + dwaHeader.rleCompressedSize );
1592
+ const data = fflate.unzlibSync( compressed ); // eslint-disable-line no-undef
1593
+ rleBuffer = decodeRunLength( data.buffer );
1591
1594
 
1592
1595
  inOffset.value += dwaHeader.rleCompressedSize;
1593
1596
 
1594
1597
  }
1595
1598
 
1596
1599
  // Prepare outbuffer data offset
1597
- var outBufferEnd = 0;
1598
- var rowOffsets = new Array( channelData.length );
1599
- for ( var i = 0; i < rowOffsets.length; ++ i ) {
1600
+ let outBufferEnd = 0;
1601
+ const rowOffsets = new Array( channelData.length );
1602
+ for ( let i = 0; i < rowOffsets.length; ++ i ) {
1600
1603
 
1601
1604
  rowOffsets[ i ] = new Array();
1602
1605
 
1603
1606
  }
1604
1607
 
1605
- for ( var y = 0; y < info.lines; ++ y ) {
1608
+ for ( let y = 0; y < info.lines; ++ y ) {
1606
1609
 
1607
- for ( var chan = 0; chan < channelData.length; ++ chan ) {
1610
+ for ( let chan = 0; chan < channelData.length; ++ chan ) {
1608
1611
 
1609
1612
  rowOffsets[ chan ].push( outBufferEnd );
1610
1613
  outBufferEnd += channelData[ chan ].width * info.type * INT16_SIZE;
@@ -1617,9 +1620,9 @@ class EXRLoader extends DataTextureLoader {
1617
1620
  lossyDctDecode( cscSet, rowOffsets, channelData, acBuffer, dcBuffer, outBuffer );
1618
1621
 
1619
1622
  // Decode other channels
1620
- for ( var i = 0; i < channelData.length; ++ i ) {
1623
+ for ( let i = 0; i < channelData.length; ++ i ) {
1621
1624
 
1622
- var cd = channelData[ i ];
1625
+ const cd = channelData[ i ];
1623
1626
 
1624
1627
  if ( cd.decoded ) continue;
1625
1628
 
@@ -1627,16 +1630,16 @@ class EXRLoader extends DataTextureLoader {
1627
1630
 
1628
1631
  case RLE:
1629
1632
 
1630
- var row = 0;
1631
- var rleOffset = 0;
1633
+ let row = 0;
1634
+ let rleOffset = 0;
1632
1635
 
1633
- for ( var y = 0; y < info.lines; ++ y ) {
1636
+ for ( let y = 0; y < info.lines; ++ y ) {
1634
1637
 
1635
- var rowOffsetBytes = rowOffsets[ i ][ row ];
1638
+ let rowOffsetBytes = rowOffsets[ i ][ row ];
1636
1639
 
1637
- for ( var x = 0; x < cd.width; ++ x ) {
1640
+ for ( let x = 0; x < cd.width; ++ x ) {
1638
1641
 
1639
- for ( var byte = 0; byte < INT16_SIZE * cd.type; ++ byte ) {
1642
+ for ( let byte = 0; byte < INT16_SIZE * cd.type; ++ byte ) {
1640
1643
 
1641
1644
  outBuffer[ rowOffsetBytes ++ ] = rleBuffer[ rleOffset + byte * cd.width * cd.height ];
1642
1645
 
@@ -1655,7 +1658,7 @@ class EXRLoader extends DataTextureLoader {
1655
1658
  case LOSSY_DCT: // skip
1656
1659
 
1657
1660
  default:
1658
- throw 'EXRLoader.parse: unsupported channel compression';
1661
+ throw new Error( 'EXRLoader.parse: unsupported channel compression' );
1659
1662
 
1660
1663
  }
1661
1664
 
@@ -1667,8 +1670,8 @@ class EXRLoader extends DataTextureLoader {
1667
1670
 
1668
1671
  function parseNullTerminatedString( buffer, offset ) {
1669
1672
 
1670
- var uintBuffer = new Uint8Array( buffer );
1671
- var endOffset = 0;
1673
+ const uintBuffer = new Uint8Array( buffer );
1674
+ let endOffset = 0;
1672
1675
 
1673
1676
  while ( uintBuffer[ offset.value + endOffset ] != 0 ) {
1674
1677
 
@@ -1676,7 +1679,7 @@ class EXRLoader extends DataTextureLoader {
1676
1679
 
1677
1680
  }
1678
1681
 
1679
- var stringValue = new TextDecoder().decode(
1682
+ const stringValue = new TextDecoder().decode(
1680
1683
  uintBuffer.slice( offset.value, offset.value + endOffset )
1681
1684
  );
1682
1685
 
@@ -1688,7 +1691,7 @@ class EXRLoader extends DataTextureLoader {
1688
1691
 
1689
1692
  function parseFixedLengthString( buffer, offset, size ) {
1690
1693
 
1691
- var stringValue = new TextDecoder().decode(
1694
+ const stringValue = new TextDecoder().decode(
1692
1695
  new Uint8Array( buffer ).slice( offset.value, offset.value + size )
1693
1696
  );
1694
1697
 
@@ -1700,8 +1703,8 @@ class EXRLoader extends DataTextureLoader {
1700
1703
 
1701
1704
  function parseRational( dataView, offset ) {
1702
1705
 
1703
- var x = parseInt32( dataView, offset );
1704
- var y = parseUint32( dataView, offset );
1706
+ const x = parseInt32( dataView, offset );
1707
+ const y = parseUint32( dataView, offset );
1705
1708
 
1706
1709
  return [ x, y ];
1707
1710
 
@@ -1709,8 +1712,8 @@ class EXRLoader extends DataTextureLoader {
1709
1712
 
1710
1713
  function parseTimecode( dataView, offset ) {
1711
1714
 
1712
- var x = parseUint32( dataView, offset );
1713
- var y = parseUint32( dataView, offset );
1715
+ const x = parseUint32( dataView, offset );
1716
+ const y = parseUint32( dataView, offset );
1714
1717
 
1715
1718
  return [ x, y ];
1716
1719
 
@@ -1718,7 +1721,7 @@ class EXRLoader extends DataTextureLoader {
1718
1721
 
1719
1722
  function parseInt32( dataView, offset ) {
1720
1723
 
1721
- var Int32 = dataView.getInt32( offset.value, true );
1724
+ const Int32 = dataView.getInt32( offset.value, true );
1722
1725
 
1723
1726
  offset.value = offset.value + INT32_SIZE;
1724
1727
 
@@ -1728,7 +1731,7 @@ class EXRLoader extends DataTextureLoader {
1728
1731
 
1729
1732
  function parseUint32( dataView, offset ) {
1730
1733
 
1731
- var Uint32 = dataView.getUint32( offset.value, true );
1734
+ const Uint32 = dataView.getUint32( offset.value, true );
1732
1735
 
1733
1736
  offset.value = offset.value + INT32_SIZE;
1734
1737
 
@@ -1738,7 +1741,7 @@ class EXRLoader extends DataTextureLoader {
1738
1741
 
1739
1742
  function parseUint8Array( uInt8Array, offset ) {
1740
1743
 
1741
- var Uint8 = uInt8Array[ offset.value ];
1744
+ const Uint8 = uInt8Array[ offset.value ];
1742
1745
 
1743
1746
  offset.value = offset.value + INT8_SIZE;
1744
1747
 
@@ -1748,7 +1751,7 @@ class EXRLoader extends DataTextureLoader {
1748
1751
 
1749
1752
  function parseUint8( dataView, offset ) {
1750
1753
 
1751
- var Uint8 = dataView.getUint8( offset.value );
1754
+ const Uint8 = dataView.getUint8( offset.value );
1752
1755
 
1753
1756
  offset.value = offset.value + INT8_SIZE;
1754
1757
 
@@ -1756,19 +1759,29 @@ class EXRLoader extends DataTextureLoader {
1756
1759
 
1757
1760
  }
1758
1761
 
1759
- function parseInt64( dataView, offset ) {
1762
+ const parseInt64 = function ( dataView, offset ) {
1763
+
1764
+ let int;
1765
+
1766
+ if ( 'getBigInt64' in DataView.prototype ) {
1767
+
1768
+ int = Number( dataView.getBigInt64( offset.value, true ) );
1769
+
1770
+ } else {
1771
+
1772
+ int = dataView.getUint32( offset.value + 4, true ) + Number( dataView.getUint32( offset.value, true ) << 32 );
1760
1773
 
1761
- var int = Number( dataView.getBigInt64( offset.value, true ) );
1774
+ }
1762
1775
 
1763
1776
  offset.value += ULONG_SIZE;
1764
1777
 
1765
1778
  return int;
1766
1779
 
1767
- }
1780
+ };
1768
1781
 
1769
1782
  function parseFloat32( dataView, offset ) {
1770
1783
 
1771
- var float = dataView.getFloat32( offset.value, true );
1784
+ const float = dataView.getFloat32( offset.value, true );
1772
1785
 
1773
1786
  offset.value += FLOAT32_SIZE;
1774
1787
 
@@ -1785,7 +1798,7 @@ class EXRLoader extends DataTextureLoader {
1785
1798
  // https://stackoverflow.com/questions/5678432/decompressing-half-precision-floats-in-javascript
1786
1799
  function decodeFloat16( binary ) {
1787
1800
 
1788
- var exponent = ( binary & 0x7C00 ) >> 10,
1801
+ const exponent = ( binary & 0x7C00 ) >> 10,
1789
1802
  fraction = binary & 0x03FF;
1790
1803
 
1791
1804
  return ( binary >> 15 ? - 1 : 1 ) * (
@@ -1802,7 +1815,7 @@ class EXRLoader extends DataTextureLoader {
1802
1815
 
1803
1816
  function parseUint16( dataView, offset ) {
1804
1817
 
1805
- var Uint16 = dataView.getUint16( offset.value, true );
1818
+ const Uint16 = dataView.getUint16( offset.value, true );
1806
1819
 
1807
1820
  offset.value += INT16_SIZE;
1808
1821
 
@@ -1818,17 +1831,17 @@ class EXRLoader extends DataTextureLoader {
1818
1831
 
1819
1832
  function parseChlist( dataView, buffer, offset, size ) {
1820
1833
 
1821
- var startOffset = offset.value;
1822
- var channels = [];
1834
+ const startOffset = offset.value;
1835
+ const channels = [];
1823
1836
 
1824
1837
  while ( offset.value < ( startOffset + size - 1 ) ) {
1825
1838
 
1826
- var name = parseNullTerminatedString( buffer, offset );
1827
- var pixelType = parseInt32( dataView, offset );
1828
- var pLinear = parseUint8( dataView, offset );
1839
+ const name = parseNullTerminatedString( buffer, offset );
1840
+ const pixelType = parseInt32( dataView, offset );
1841
+ const pLinear = parseUint8( dataView, offset );
1829
1842
  offset.value += 3; // reserved, three chars
1830
- var xSampling = parseInt32( dataView, offset );
1831
- var ySampling = parseInt32( dataView, offset );
1843
+ const xSampling = parseInt32( dataView, offset );
1844
+ const ySampling = parseInt32( dataView, offset );
1832
1845
 
1833
1846
  channels.push( {
1834
1847
  name: name,
@@ -1848,14 +1861,14 @@ class EXRLoader extends DataTextureLoader {
1848
1861
 
1849
1862
  function parseChromaticities( dataView, offset ) {
1850
1863
 
1851
- var redX = parseFloat32( dataView, offset );
1852
- var redY = parseFloat32( dataView, offset );
1853
- var greenX = parseFloat32( dataView, offset );
1854
- var greenY = parseFloat32( dataView, offset );
1855
- var blueX = parseFloat32( dataView, offset );
1856
- var blueY = parseFloat32( dataView, offset );
1857
- var whiteX = parseFloat32( dataView, offset );
1858
- var whiteY = parseFloat32( dataView, offset );
1864
+ const redX = parseFloat32( dataView, offset );
1865
+ const redY = parseFloat32( dataView, offset );
1866
+ const greenX = parseFloat32( dataView, offset );
1867
+ const greenY = parseFloat32( dataView, offset );
1868
+ const blueX = parseFloat32( dataView, offset );
1869
+ const blueY = parseFloat32( dataView, offset );
1870
+ const whiteX = parseFloat32( dataView, offset );
1871
+ const whiteY = parseFloat32( dataView, offset );
1859
1872
 
1860
1873
  return { redX: redX, redY: redY, greenX: greenX, greenY: greenY, blueX: blueX, blueY: blueY, whiteX: whiteX, whiteY: whiteY };
1861
1874
 
@@ -1863,7 +1876,7 @@ class EXRLoader extends DataTextureLoader {
1863
1876
 
1864
1877
  function parseCompression( dataView, offset ) {
1865
1878
 
1866
- var compressionCodes = [
1879
+ const compressionCodes = [
1867
1880
  'NO_COMPRESSION',
1868
1881
  'RLE_COMPRESSION',
1869
1882
  'ZIPS_COMPRESSION',
@@ -1876,7 +1889,7 @@ class EXRLoader extends DataTextureLoader {
1876
1889
  'DWAB_COMPRESSION'
1877
1890
  ];
1878
1891
 
1879
- var compression = parseUint8( dataView, offset );
1892
+ const compression = parseUint8( dataView, offset );
1880
1893
 
1881
1894
  return compressionCodes[ compression ];
1882
1895
 
@@ -1884,10 +1897,10 @@ class EXRLoader extends DataTextureLoader {
1884
1897
 
1885
1898
  function parseBox2i( dataView, offset ) {
1886
1899
 
1887
- var xMin = parseUint32( dataView, offset );
1888
- var yMin = parseUint32( dataView, offset );
1889
- var xMax = parseUint32( dataView, offset );
1890
- var yMax = parseUint32( dataView, offset );
1900
+ const xMin = parseUint32( dataView, offset );
1901
+ const yMin = parseUint32( dataView, offset );
1902
+ const xMax = parseUint32( dataView, offset );
1903
+ const yMax = parseUint32( dataView, offset );
1891
1904
 
1892
1905
  return { xMin: xMin, yMin: yMin, xMax: xMax, yMax: yMax };
1893
1906
 
@@ -1895,11 +1908,11 @@ class EXRLoader extends DataTextureLoader {
1895
1908
 
1896
1909
  function parseLineOrder( dataView, offset ) {
1897
1910
 
1898
- var lineOrders = [
1911
+ const lineOrders = [
1899
1912
  'INCREASING_Y'
1900
1913
  ];
1901
1914
 
1902
- var lineOrder = parseUint8( dataView, offset );
1915
+ const lineOrder = parseUint8( dataView, offset );
1903
1916
 
1904
1917
  return lineOrders[ lineOrder ];
1905
1918
 
@@ -1907,8 +1920,8 @@ class EXRLoader extends DataTextureLoader {
1907
1920
 
1908
1921
  function parseV2f( dataView, offset ) {
1909
1922
 
1910
- var x = parseFloat32( dataView, offset );
1911
- var y = parseFloat32( dataView, offset );
1923
+ const x = parseFloat32( dataView, offset );
1924
+ const y = parseFloat32( dataView, offset );
1912
1925
 
1913
1926
  return [ x, y ];
1914
1927
 
@@ -1916,9 +1929,9 @@ class EXRLoader extends DataTextureLoader {
1916
1929
 
1917
1930
  function parseV3f( dataView, offset ) {
1918
1931
 
1919
- var x = parseFloat32( dataView, offset );
1920
- var y = parseFloat32( dataView, offset );
1921
- var z = parseFloat32( dataView, offset );
1932
+ const x = parseFloat32( dataView, offset );
1933
+ const y = parseFloat32( dataView, offset );
1934
+ const z = parseFloat32( dataView, offset );
1922
1935
 
1923
1936
  return [ x, y, z ];
1924
1937
 
@@ -1992,29 +2005,32 @@ class EXRLoader extends DataTextureLoader {
1992
2005
 
1993
2006
  const EXRHeader = {};
1994
2007
 
1995
- if ( dataView.getUint32( 0, true ) != 20000630 ) // magic
1996
- throw 'THREE.EXRLoader: provided file doesn\'t appear to be in OpenEXR format.';
2008
+ if ( dataView.getUint32( 0, true ) != 20000630 ) { // magic
2009
+
2010
+ throw new Error( 'THREE.EXRLoader: provided file doesn\'t appear to be in OpenEXR format.' );
2011
+
2012
+ }
1997
2013
 
1998
- EXRHeader.version = dataView.getUint8( 4, true );
2014
+ EXRHeader.version = dataView.getUint8( 4 );
1999
2015
 
2000
- const spec = dataView.getUint8( 5, true ); // fullMask
2016
+ const spec = dataView.getUint8( 5 ); // fullMask
2001
2017
 
2002
2018
  EXRHeader.spec = {
2003
- singleTile: !! ( spec & 1 ),
2004
- longName: !! ( spec & 2 ),
2005
- deepFormat: !! ( spec & 4 ),
2006
- multiPart: !! ( spec & 8 ),
2019
+ singleTile: !! ( spec & 2 ),
2020
+ longName: !! ( spec & 4 ),
2021
+ deepFormat: !! ( spec & 8 ),
2022
+ multiPart: !! ( spec & 16 ),
2007
2023
  };
2008
2024
 
2009
2025
  // start of header
2010
2026
 
2011
2027
  offset.value = 8; // start at 8 - after pre-amble
2012
2028
 
2013
- var keepReading = true;
2029
+ let keepReading = true;
2014
2030
 
2015
2031
  while ( keepReading ) {
2016
2032
 
2017
- var attributeName = parseNullTerminatedString( buffer, offset );
2033
+ const attributeName = parseNullTerminatedString( buffer, offset );
2018
2034
 
2019
2035
  if ( attributeName == 0 ) {
2020
2036
 
@@ -2022,9 +2038,9 @@ class EXRLoader extends DataTextureLoader {
2022
2038
 
2023
2039
  } else {
2024
2040
 
2025
- var attributeType = parseNullTerminatedString( buffer, offset );
2026
- var attributeSize = parseUint32( dataView, offset );
2027
- var attributeValue = parseValue( dataView, buffer, offset, attributeType, attributeSize );
2041
+ const attributeType = parseNullTerminatedString( buffer, offset );
2042
+ const attributeSize = parseUint32( dataView, offset );
2043
+ const attributeValue = parseValue( dataView, buffer, offset, attributeType, attributeSize );
2028
2044
 
2029
2045
  if ( attributeValue === undefined ) {
2030
2046
 
@@ -2040,10 +2056,10 @@ class EXRLoader extends DataTextureLoader {
2040
2056
 
2041
2057
  }
2042
2058
 
2043
- if ( spec != 0 ) {
2059
+ if ( ( spec & ~0x04 ) != 0 ) { // unsupported tiled, deep-image, multi-part
2044
2060
 
2045
2061
  console.error( 'EXRHeader:', EXRHeader );
2046
- throw 'THREE.EXRLoader: provided file is currently unsupported.';
2062
+ throw new Error( 'THREE.EXRLoader: provided file is currently unsupported.' );
2047
2063
 
2048
2064
  }
2049
2065
 
@@ -2114,7 +2130,7 @@ class EXRLoader extends DataTextureLoader {
2114
2130
  break;
2115
2131
 
2116
2132
  default:
2117
- throw 'EXRLoader.parse: ' + EXRHeader.compression + ' is unsupported';
2133
+ throw new Error( 'EXRLoader.parse: ' + EXRHeader.compression + ' is unsupported' );
2118
2134
 
2119
2135
  }
2120
2136
 
@@ -2155,13 +2171,13 @@ class EXRLoader extends DataTextureLoader {
2155
2171
 
2156
2172
  } else {
2157
2173
 
2158
- throw 'EXRLoader.parse: unsupported pixelType ' + EXRDecoder.type + ' for ' + EXRHeader.compression + '.';
2174
+ throw new Error( 'EXRLoader.parse: unsupported pixelType ' + EXRDecoder.type + ' for ' + EXRHeader.compression + '.' );
2159
2175
 
2160
2176
  }
2161
2177
 
2162
2178
  EXRDecoder.blockCount = ( EXRHeader.dataWindow.yMax + 1 ) / EXRDecoder.scanlineBlockSize;
2163
2179
 
2164
- for ( var i = 0; i < EXRDecoder.blockCount; i ++ )
2180
+ for ( let i = 0; i < EXRDecoder.blockCount; i ++ )
2165
2181
  parseInt64( dataView, offset ); // scanlineOffset
2166
2182
 
2167
2183
  // we should be passed the scanline offset table, ready to start reading pixel data.