super-three 0.133.3 → 0.136.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 (354) hide show
  1. package/build/three.js +1059 -783
  2. package/build/three.min.js +1 -1
  3. package/build/three.module.js +1424 -895
  4. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
  5. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  6. package/examples/fonts/open-sans/open-sans.css +9 -0
  7. package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
  8. package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +3966 -0
  9. package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
  10. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
  11. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  12. package/examples/fonts/tabler-icons/tabler-icons.min.css +4 -0
  13. package/examples/js/animation/CCDIKSolver.js +0 -1
  14. package/examples/js/animation/MMDPhysics.js +1 -3
  15. package/examples/js/controls/ArcballControls.js +99 -72
  16. package/examples/js/controls/DragControls.js +7 -0
  17. package/examples/js/controls/OrbitControls.js +5 -36
  18. package/examples/js/controls/TrackballControls.js +3 -2
  19. package/examples/js/controls/TransformControls.js +24 -1
  20. package/examples/js/csm/CSM.js +2 -2
  21. package/examples/js/csm/CSMFrustum.js +133 -0
  22. package/examples/js/curves/CurveExtras.js +0 -2
  23. package/examples/js/effects/AsciiEffect.js +2 -9
  24. package/examples/js/exporters/GLTFExporter.js +148 -64
  25. package/examples/js/exporters/USDZExporter.js +45 -26
  26. package/examples/js/geometries/TeapotGeometry.js +0 -1
  27. package/examples/js/interactive/SelectionBox.js +2 -0
  28. package/examples/js/interactive/SelectionHelper.js +22 -7
  29. package/examples/js/lights/RectAreaLightUniformsLib.js +4 -0
  30. package/examples/js/lines/LineMaterial.js +58 -20
  31. package/examples/js/lines/LineSegments2.js +29 -24
  32. package/examples/js/loaders/3DMLoader.js +24 -11
  33. package/examples/js/loaders/3MFLoader.js +2 -2
  34. package/examples/js/loaders/AMFLoader.js +0 -2
  35. package/examples/js/loaders/ColladaLoader.js +61 -4
  36. package/examples/js/loaders/EXRLoader.js +185 -262
  37. package/examples/js/loaders/FBXLoader.js +4 -5
  38. package/examples/js/loaders/GLTFLoader.js +96 -33
  39. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -8
  40. package/examples/js/loaders/KTX2Loader.js +23 -2
  41. package/examples/js/loaders/KTXLoader.js +1 -1
  42. package/examples/js/loaders/LDrawLoader.js +26 -30
  43. package/examples/js/loaders/LUT3dlLoader.js +2 -0
  44. package/examples/js/loaders/LUTCubeLoader.js +2 -0
  45. package/examples/js/loaders/LWOLoader.js +8 -6
  46. package/examples/js/loaders/LogLuvLoader.js +766 -0
  47. package/examples/js/loaders/MMDLoader.js +0 -1
  48. package/examples/js/loaders/NRRDLoader.js +9 -2
  49. package/examples/js/loaders/OBJLoader.js +0 -2
  50. package/examples/js/loaders/PLYLoader.js +33 -8
  51. package/examples/js/loaders/RGBELoader.js +2 -16
  52. package/examples/js/loaders/RGBMLoader.js +55 -5
  53. package/examples/js/loaders/SVGLoader.js +9 -5
  54. package/examples/js/loaders/TDSLoader.js +237 -271
  55. package/examples/js/loaders/VOXLoader.js +1 -0
  56. package/examples/js/loaders/VRMLLoader.js +2 -1
  57. package/examples/js/loaders/lwo/LWO2Parser.js +1 -0
  58. package/examples/js/loaders/lwo/LWO3Parser.js +4 -2
  59. package/examples/js/math/ImprovedNoise.js +1 -1
  60. package/examples/js/misc/GPUComputationRenderer.js +3 -1
  61. package/examples/js/objects/Lensflare.js +2 -10
  62. package/examples/js/objects/MarchingCubes.js +42 -128
  63. package/examples/js/objects/Reflector.js +7 -0
  64. package/examples/js/objects/Refractor.js +7 -0
  65. package/examples/js/objects/Sky.js +1 -1
  66. package/examples/js/objects/Water.js +2 -2
  67. package/examples/js/objects/Water2.js +4 -7
  68. package/examples/js/postprocessing/GlitchPass.js +3 -1
  69. package/examples/js/postprocessing/SSAOPass.js +1 -0
  70. package/examples/js/renderers/CSS2DRenderer.js +4 -4
  71. package/examples/js/renderers/CSS3DRenderer.js +4 -4
  72. package/examples/js/shaders/ConvolutionShader.js +0 -1
  73. package/examples/js/shaders/FXAAShader.js +1 -1
  74. package/examples/js/shaders/FilmShader.js +1 -1
  75. package/examples/js/shaders/GammaCorrectionShader.js +1 -1
  76. package/examples/js/shaders/HorizontalBlurShader.js +1 -2
  77. package/examples/js/shaders/SSRShader.js +1 -1
  78. package/examples/js/shaders/SSRrShader.js +1 -1
  79. package/examples/js/shaders/VerticalBlurShader.js +1 -2
  80. package/examples/js/utils/GeometryUtils.js +1 -1
  81. package/examples/js/utils/RoughnessMipmapper.js +18 -28
  82. package/examples/jsm/animation/CCDIKSolver.js +0 -1
  83. package/examples/jsm/animation/MMDPhysics.js +0 -2
  84. package/examples/jsm/controls/ArcballControls.js +80 -77
  85. package/examples/jsm/controls/DragControls.js +7 -0
  86. package/examples/jsm/controls/OrbitControls.js +9 -51
  87. package/examples/jsm/controls/TrackballControls.js +1 -1
  88. package/examples/jsm/controls/TransformControls.js +24 -1
  89. package/examples/jsm/csm/CSM.js +3 -3
  90. package/examples/jsm/csm/{Frustum.js → CSMFrustum.js} +3 -3
  91. package/examples/jsm/curves/CurveExtras.js +0 -2
  92. package/examples/jsm/effects/AsciiEffect.js +2 -9
  93. package/examples/jsm/exporters/GLTFExporter.js +161 -75
  94. package/examples/jsm/exporters/USDZExporter.js +47 -26
  95. package/examples/jsm/geometries/TeapotGeometry.js +0 -1
  96. package/examples/jsm/interactive/SelectionBox.js +1 -0
  97. package/examples/jsm/interactive/SelectionHelper.js +19 -7
  98. package/examples/jsm/libs/flow.module.js +3338 -0
  99. package/examples/jsm/libs/lil-gui.module.min.js +8 -0
  100. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  101. package/examples/jsm/lights/RectAreaLightUniformsLib.js +7 -0
  102. package/examples/jsm/lines/LineMaterial.js +59 -23
  103. package/examples/jsm/lines/LineSegments2.js +22 -18
  104. package/examples/jsm/loaders/3DMLoader.js +18 -12
  105. package/examples/jsm/loaders/3MFLoader.js +2 -2
  106. package/examples/jsm/loaders/AMFLoader.js +0 -2
  107. package/examples/jsm/loaders/ColladaLoader.js +61 -4
  108. package/examples/jsm/loaders/EXRLoader.js +184 -293
  109. package/examples/jsm/loaders/FBXLoader.js +4 -5
  110. package/examples/jsm/loaders/GLTFLoader.js +101 -37
  111. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -14
  112. package/examples/jsm/loaders/KTX2Loader.js +30 -2
  113. package/examples/jsm/loaders/KTXLoader.js +1 -1
  114. package/examples/jsm/loaders/LDrawLoader.js +23 -24
  115. package/examples/jsm/loaders/LUT3dlLoader.js +2 -0
  116. package/examples/jsm/loaders/LUTCubeLoader.js +2 -0
  117. package/examples/jsm/loaders/LWOLoader.js +8 -6
  118. package/examples/jsm/loaders/LogLuvLoader.js +606 -0
  119. package/examples/jsm/loaders/MMDLoader.js +0 -1
  120. package/examples/jsm/loaders/NRRDLoader.js +10 -2
  121. package/examples/jsm/loaders/OBJLoader.js +0 -2
  122. package/examples/jsm/loaders/PLYLoader.js +34 -8
  123. package/examples/jsm/loaders/RGBELoader.js +0 -20
  124. package/examples/jsm/loaders/RGBMLoader.js +61 -7
  125. package/examples/jsm/loaders/SVGLoader.js +9 -6
  126. package/examples/jsm/loaders/TDSLoader.js +236 -275
  127. package/examples/jsm/loaders/VOXLoader.js +1 -0
  128. package/examples/jsm/loaders/VRMLLoader.js +2 -1
  129. package/examples/jsm/loaders/lwo/LWO2Parser.js +1 -0
  130. package/examples/jsm/loaders/lwo/LWO3Parser.js +2 -2
  131. package/examples/jsm/math/ImprovedNoise.js +1 -1
  132. package/examples/jsm/misc/GPUComputationRenderer.js +3 -1
  133. package/examples/jsm/node-editor/NodeEditor.js +456 -0
  134. package/examples/jsm/node-editor/accessors/NormalEditor.js +30 -0
  135. package/examples/jsm/node-editor/accessors/PositionEditor.js +30 -0
  136. package/examples/jsm/node-editor/accessors/UVEditor.js +26 -0
  137. package/examples/jsm/node-editor/display/BlendEditor.js +43 -0
  138. package/examples/jsm/node-editor/examples/animate-uv.json +1 -0
  139. package/examples/jsm/node-editor/examples/fake-top-light.json +1 -0
  140. package/examples/jsm/node-editor/examples/oscillator-color.json +1 -0
  141. package/examples/jsm/node-editor/examples/rim.json +1 -0
  142. package/examples/jsm/node-editor/inputs/ColorEditor.js +91 -0
  143. package/examples/jsm/node-editor/inputs/FloatEditor.js +24 -0
  144. package/examples/jsm/node-editor/inputs/SliderEditor.js +68 -0
  145. package/examples/jsm/node-editor/inputs/Vector2Editor.js +28 -0
  146. package/examples/jsm/node-editor/inputs/Vector3Editor.js +30 -0
  147. package/examples/jsm/node-editor/inputs/Vector4Editor.js +37 -0
  148. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +108 -0
  149. package/examples/jsm/node-editor/math/DotEditor.js +36 -0
  150. package/examples/jsm/node-editor/math/InvertEditor.js +38 -0
  151. package/examples/jsm/node-editor/math/LimiterEditor.js +48 -0
  152. package/examples/jsm/node-editor/math/NormalizeEditor.js +26 -0
  153. package/examples/jsm/node-editor/math/OperatorEditor.js +50 -0
  154. package/examples/jsm/node-editor/math/PowerEditor.js +34 -0
  155. package/examples/jsm/node-editor/math/TrigonometryEditor.js +39 -0
  156. package/examples/jsm/node-editor/procedural/CheckerEditor.js +26 -0
  157. package/examples/jsm/node-editor/utils/OscillatorEditor.js +42 -0
  158. package/examples/jsm/node-editor/utils/TimerEditor.js +57 -0
  159. package/examples/jsm/nodes/core/NodeBuilder.js +2 -2
  160. package/examples/jsm/nodes/materials/StandardNodeMaterial.js +1 -1
  161. package/examples/jsm/nodes/materials/nodes/StandardNode.js +7 -6
  162. package/examples/jsm/nodes/math/MathNode.js +12 -0
  163. package/examples/jsm/nodes/misc/BumpMapNode.js +1 -1
  164. package/examples/jsm/nodes/misc/TextureCubeUVNode.js +1 -4
  165. package/examples/jsm/nodes/utils/ColorSpaceNode.js +1 -164
  166. package/examples/jsm/objects/Lensflare.js +3 -14
  167. package/examples/jsm/objects/MarchingCubes.js +46 -152
  168. package/examples/jsm/objects/Reflector.js +7 -0
  169. package/examples/jsm/objects/Refractor.js +7 -0
  170. package/examples/jsm/objects/Sky.js +1 -1
  171. package/examples/jsm/objects/Water.js +2 -2
  172. package/examples/jsm/objects/Water2.js +4 -8
  173. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +1 -1
  174. package/examples/jsm/postprocessing/AfterimagePass.js +1 -1
  175. package/examples/jsm/postprocessing/BloomPass.js +1 -1
  176. package/examples/jsm/postprocessing/BokehPass.js +1 -1
  177. package/examples/jsm/postprocessing/ClearPass.js +1 -1
  178. package/examples/jsm/postprocessing/CubeTexturePass.js +1 -1
  179. package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
  180. package/examples/jsm/postprocessing/EffectComposer.js +3 -3
  181. package/examples/jsm/postprocessing/FilmPass.js +1 -1
  182. package/examples/jsm/postprocessing/GlitchPass.js +4 -2
  183. package/examples/jsm/postprocessing/HalftonePass.js +1 -1
  184. package/examples/jsm/postprocessing/MaskPass.js +1 -1
  185. package/examples/jsm/postprocessing/OutlinePass.js +1 -1
  186. package/examples/jsm/postprocessing/RenderPass.js +1 -1
  187. package/examples/jsm/postprocessing/SAOPass.js +2 -2
  188. package/examples/jsm/postprocessing/SMAAPass.js +1 -1
  189. package/examples/jsm/postprocessing/SSAARenderPass.js +1 -1
  190. package/examples/jsm/postprocessing/SSAOPass.js +2 -1
  191. package/examples/jsm/postprocessing/SSRPass.js +1 -1
  192. package/examples/jsm/postprocessing/SSRrPass.js +1 -1
  193. package/examples/jsm/postprocessing/SavePass.js +1 -1
  194. package/examples/jsm/postprocessing/ShaderPass.js +1 -1
  195. package/examples/jsm/postprocessing/TAARenderPass.js +1 -1
  196. package/examples/jsm/postprocessing/TexturePass.js +1 -1
  197. package/examples/jsm/postprocessing/UnrealBloomPass.js +1 -1
  198. package/examples/jsm/renderers/CSS2DRenderer.js +5 -4
  199. package/examples/jsm/renderers/CSS3DRenderer.js +5 -4
  200. package/examples/jsm/renderers/nodes/Nodes.js +15 -13
  201. package/examples/jsm/renderers/nodes/ShaderNode.js +194 -41
  202. package/examples/jsm/renderers/nodes/accessors/MaterialNode.js +6 -6
  203. package/examples/jsm/renderers/nodes/accessors/ModelViewProjectionNode.js +5 -5
  204. package/examples/jsm/renderers/nodes/accessors/NormalNode.js +14 -3
  205. package/examples/jsm/renderers/nodes/accessors/PointUVNode.js +3 -3
  206. package/examples/jsm/renderers/nodes/accessors/PositionNode.js +15 -5
  207. package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +107 -0
  208. package/examples/jsm/renderers/nodes/accessors/UVNode.js +7 -5
  209. package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +3 -3
  210. package/examples/jsm/renderers/nodes/core/AttributeNode.js +6 -0
  211. package/examples/jsm/renderers/nodes/core/BypassNode.js +38 -0
  212. package/examples/jsm/renderers/nodes/core/CodeNode.js +3 -3
  213. package/examples/jsm/renderers/nodes/core/ContextNode.js +4 -19
  214. package/examples/jsm/renderers/nodes/core/ExpressionNode.js +13 -2
  215. package/examples/jsm/renderers/nodes/core/FunctionNode.js +19 -132
  216. package/examples/jsm/renderers/nodes/core/InputNode.js +13 -3
  217. package/examples/jsm/renderers/nodes/core/Node.js +32 -10
  218. package/examples/jsm/renderers/nodes/core/NodeBuilder.js +146 -128
  219. package/examples/jsm/renderers/nodes/core/NodeFunction.js +22 -0
  220. package/examples/jsm/renderers/nodes/core/NodeFunctionInput.js +4 -4
  221. package/examples/jsm/renderers/nodes/core/NodeKeywords.js +18 -179
  222. package/examples/jsm/renderers/nodes/core/NodeParser.js +11 -0
  223. package/examples/jsm/renderers/nodes/core/NodeVar.js +2 -2
  224. package/examples/jsm/renderers/nodes/core/PropertyNode.js +14 -2
  225. package/examples/jsm/renderers/nodes/core/TempNode.js +10 -13
  226. package/examples/jsm/renderers/nodes/core/VarNode.js +12 -7
  227. package/examples/jsm/renderers/nodes/core/VaryNode.js +23 -8
  228. package/examples/jsm/renderers/nodes/core/constants.js +2 -0
  229. package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +60 -43
  230. package/examples/jsm/renderers/nodes/display/NormalMapNode.js +21 -22
  231. package/examples/jsm/renderers/nodes/functions/BSDFs.js +64 -101
  232. package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +27 -0
  233. package/examples/jsm/renderers/nodes/inputs/BufferNode.js +25 -0
  234. package/examples/jsm/renderers/nodes/inputs/IntNode.js +17 -0
  235. package/examples/jsm/renderers/nodes/inputs/TextureNode.js +10 -2
  236. package/examples/jsm/renderers/nodes/lights/LightContextNode.js +20 -14
  237. package/examples/jsm/renderers/nodes/lights/LightNode.js +32 -36
  238. package/examples/jsm/renderers/nodes/math/CondNode.js +60 -0
  239. package/examples/jsm/renderers/nodes/math/MathNode.js +90 -37
  240. package/examples/jsm/renderers/nodes/math/OperatorNode.js +124 -31
  241. package/examples/jsm/renderers/nodes/parsers/GLSLNodeFunction.js +137 -0
  242. package/examples/jsm/renderers/nodes/parsers/GLSLNodeParser.js +14 -0
  243. package/examples/jsm/renderers/nodes/parsers/WGSLNodeFunction.js +89 -0
  244. package/examples/jsm/renderers/nodes/parsers/WGSLNodeParser.js +14 -0
  245. package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +7 -9
  246. package/examples/jsm/renderers/nodes/utils/ArrayElementNode.js +31 -0
  247. package/examples/jsm/renderers/nodes/utils/ConvertNode.js +33 -0
  248. package/examples/jsm/renderers/nodes/utils/JoinNode.js +7 -7
  249. package/examples/jsm/renderers/nodes/utils/OscNode.js +58 -0
  250. package/examples/jsm/renderers/nodes/utils/SplitNode.js +18 -8
  251. package/examples/jsm/renderers/nodes/utils/SpriteSheetUVNode.js +7 -7
  252. package/examples/jsm/renderers/nodes/utils/TimerNode.js +1 -1
  253. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +22 -0
  254. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +192 -95
  255. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +2 -2
  256. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +2 -2
  257. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +1 -1
  258. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +10 -9
  259. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +2 -4
  260. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +2 -4
  261. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +15 -23
  262. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +44 -65
  263. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +12 -28
  264. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +61 -28
  265. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +34 -27
  266. package/examples/jsm/renderers/webgpu/constants.js +2 -2
  267. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +453 -95
  268. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
  269. package/examples/jsm/shaders/ConvolutionShader.js +0 -1
  270. package/examples/jsm/shaders/FXAAShader.js +1 -1
  271. package/examples/jsm/shaders/FilmShader.js +1 -1
  272. package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
  273. package/examples/jsm/shaders/HorizontalBlurShader.js +1 -2
  274. package/examples/jsm/shaders/SSRShader.js +1 -1
  275. package/examples/jsm/shaders/SSRrShader.js +1 -1
  276. package/examples/jsm/shaders/VerticalBlurShader.js +1 -2
  277. package/examples/jsm/utils/GeometryUtils.js +1 -1
  278. package/examples/jsm/utils/RoughnessMipmapper.js +19 -31
  279. package/examples/jsm/utils/WorkerPool.js +11 -11
  280. package/examples/jsm/webxr/OculusHandPointerModel.js +6 -6
  281. package/package.json +24 -18
  282. package/src/Three.Legacy.js +18 -0
  283. package/src/Three.js +1 -3
  284. package/src/cameras/StereoCamera.js +8 -7
  285. package/src/constants.js +1 -8
  286. package/src/core/Layers.js +7 -1
  287. package/src/core/Object3D.js +3 -1
  288. package/src/extras/PMREMGenerator.js +23 -109
  289. package/src/extras/core/Interpolations.js +1 -1
  290. package/src/geometries/LatheGeometry.js +70 -47
  291. package/src/helpers/CameraHelper.js +1 -1
  292. package/src/loaders/FileLoader.js +98 -144
  293. package/src/loaders/ImageLoader.js +9 -4
  294. package/src/loaders/LoaderUtils.js +26 -0
  295. package/src/loaders/MaterialLoader.js +7 -4
  296. package/src/loaders/ObjectLoader.js +2 -0
  297. package/src/materials/Material.js +4 -4
  298. package/src/materials/MeshPhysicalMaterial.js +20 -14
  299. package/src/math/Color.js +0 -38
  300. package/src/math/MathUtils.js +5 -16
  301. package/src/math/Ray.js +2 -2
  302. package/src/math/Sphere.js +10 -1
  303. package/src/objects/Skeleton.js +1 -0
  304. package/src/renderers/WebGLMultisampleRenderTarget.js +7 -1
  305. package/src/renderers/WebGLRenderer.js +105 -132
  306. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +2 -2
  307. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +1 -1
  308. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +2 -24
  309. package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -74
  310. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  311. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +1 -1
  312. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +19 -6
  313. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +28 -2
  314. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
  315. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  316. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +1 -1
  317. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +23 -5
  318. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +2 -1
  319. package/src/renderers/shaders/ShaderLib.js +6 -4
  320. package/src/renderers/shaders/UniformsLib.js +1 -2
  321. package/src/renderers/webgl/WebGLCapabilities.js +0 -2
  322. package/src/renderers/webgl/WebGLExtensions.js +1 -0
  323. package/src/renderers/webgl/WebGLMaterials.js +27 -15
  324. package/src/renderers/webgl/WebGLMorphtargets.js +1 -0
  325. package/src/renderers/webgl/WebGLProgram.js +11 -24
  326. package/src/renderers/webgl/WebGLPrograms.js +194 -33
  327. package/src/renderers/webgl/WebGLRenderLists.js +4 -14
  328. package/src/renderers/webgl/WebGLShaderCache.js +120 -0
  329. package/src/renderers/webgl/WebGLShadowMap.js +14 -5
  330. package/src/renderers/webgl/WebGLState.js +76 -17
  331. package/src/renderers/webgl/WebGLTextures.js +367 -61
  332. package/src/renderers/webgl/WebGLUniforms.js +45 -1
  333. package/src/renderers/webxr/WebXRManager.js +77 -109
  334. package/src/scenes/Scene.js +1 -1
  335. package/src/textures/DataTexture.js +0 -2
  336. package/src/textures/DataTexture2DArray.js +0 -2
  337. package/src/textures/DataTexture3D.js +0 -2
  338. package/src/textures/FramebufferTexture.js +25 -0
  339. package/src/textures/Texture.js +6 -0
  340. package/examples/js/controls/DeviceOrientationControls.js +0 -147
  341. package/examples/js/libs/dat.gui.min.js +0 -14
  342. package/examples/jsm/controls/DeviceOrientationControls.js +0 -153
  343. package/examples/jsm/libs/dat.gui.module.js +0 -3575
  344. package/examples/jsm/libs/glslang.js +0 -78
  345. package/examples/jsm/libs/glslang.wasm +0 -0
  346. package/examples/jsm/renderers/nodes/consts/MathConsts.js +0 -7
  347. package/examples/jsm/renderers/nodes/core/ConstNode.js +0 -39
  348. package/examples/jsm/renderers/nodes/core/NodeSlot.js +0 -13
  349. package/examples/jsm/renderers/nodes/core/StructNode.js +0 -80
  350. package/examples/jsm/renderers/nodes/core/StructVarNode.js +0 -75
  351. package/examples/jsm/renderers/nodes/functions/EncodingFunctions.js +0 -99
  352. package/examples/jsm/renderers/nodes/functions/MathFunctions.js +0 -47
  353. package/examples/jsm/renderers/webgpu/nodes/ShaderLib.js +0 -152
  354. package/src/extras/objects/ImmediateRenderObject.js +0 -31
@@ -1,6 +1,5 @@
1
1
  /**
2
- * Ascii generation is based on http://www.nihilogic.dk/labs/jsascii/
3
- * Maybe more about this later with a blog post at http://lab4games.net/zz85/blog
2
+ * Ascii generation is based on https://github.com/hassadee/jsascii/blob/master/jsascii.js
4
3
  *
5
4
  * 16 April 2012 - @blurspline
6
5
  */
@@ -57,13 +56,7 @@ class AsciiEffect {
57
56
  this.domElement = domElement;
58
57
 
59
58
 
60
- // Throw in ascii library from http://www.nihilogic.dk/labs/jsascii/jsascii.js
61
-
62
- /*
63
- * jsAscii 0.1
64
- * Copyright (c) 2008 Jacob Seidelin, jseidelin@nihilogic.dk, http://blog.nihilogic.dk/
65
- * MIT License [http://www.nihilogic.dk/licenses/mit-license.txt]
66
- */
59
+ // Throw in ascii library from https://github.com/hassadee/jsascii/blob/master/jsascii.js (MIT License)
67
60
 
68
61
  function initAsciiSize() {
69
62
 
@@ -58,6 +58,12 @@ class GLTFExporter {
58
58
 
59
59
  } );
60
60
 
61
+ this.register( function ( writer ) {
62
+
63
+ return new GLTFMaterialsClearcoatExtension( writer );
64
+
65
+ } );
66
+
61
67
  }
62
68
 
63
69
  register( callback ) {
@@ -88,9 +94,18 @@ class GLTFExporter {
88
94
  * Parse scenes and generate GLTF output
89
95
  * @param {Scene or [THREE.Scenes]} input Scene or Array of THREE.Scenes
90
96
  * @param {Function} onDone Callback on completed
97
+ * @param {Function} onError Callback on errors
91
98
  * @param {Object} options options
92
99
  */
93
- parse( input, onDone, options ) {
100
+ parse( input, onDone, onError, options ) {
101
+
102
+ if ( typeof onError === 'object' ) {
103
+
104
+ console.warn( 'THREE.GLTFExporter: parse() expects options as the fourth argument now.' );
105
+
106
+ options = onError;
107
+
108
+ }
94
109
 
95
110
  const writer = new GLTFWriter();
96
111
  const plugins = [];
@@ -102,7 +117,19 @@ class GLTFExporter {
102
117
  }
103
118
 
104
119
  writer.setPlugins( plugins );
105
- writer.write( input, onDone, options );
120
+ writer.write( input, onDone, options ).catch( onError );
121
+
122
+ }
123
+
124
+ parseAsync( input, options ) {
125
+
126
+ const scope = this;
127
+
128
+ return new Promise( function ( resolve, reject ) {
129
+
130
+ scope.parse( input, resolve, reject, options );
131
+
132
+ } );
106
133
 
107
134
  }
108
135
 
@@ -381,7 +408,7 @@ class GLTFWriter {
381
408
  * @param {Function} onDone Callback on completed
382
409
  * @param {Object} options options
383
410
  */
384
- write( input, onDone, options ) {
411
+ async write( input, onDone, options ) {
385
412
 
386
413
  this.options = Object.assign( {}, {
387
414
  // default options
@@ -404,97 +431,95 @@ class GLTFWriter {
404
431
 
405
432
  this.processInput( input );
406
433
 
407
- const writer = this;
408
-
409
- Promise.all( this.pending ).then( function () {
434
+ await Promise.all( this.pending );
410
435
 
411
- const buffers = writer.buffers;
412
- const json = writer.json;
413
- const options = writer.options;
414
- const extensionsUsed = writer.extensionsUsed;
436
+ const writer = this;
437
+ const buffers = writer.buffers;
438
+ const json = writer.json;
439
+ options = writer.options;
440
+ const extensionsUsed = writer.extensionsUsed;
415
441
 
416
- // Merge buffers.
417
- const blob = new Blob( buffers, { type: 'application/octet-stream' } );
442
+ // Merge buffers.
443
+ const blob = new Blob( buffers, { type: 'application/octet-stream' } );
418
444
 
419
- // Declare extensions.
420
- const extensionsUsedList = Object.keys( extensionsUsed );
445
+ // Declare extensions.
446
+ const extensionsUsedList = Object.keys( extensionsUsed );
421
447
 
422
- if ( extensionsUsedList.length > 0 ) json.extensionsUsed = extensionsUsedList;
448
+ if ( extensionsUsedList.length > 0 ) json.extensionsUsed = extensionsUsedList;
423
449
 
424
- // Update bytelength of the single buffer.
425
- if ( json.buffers && json.buffers.length > 0 ) json.buffers[ 0 ].byteLength = blob.size;
450
+ // Update bytelength of the single buffer.
451
+ if ( json.buffers && json.buffers.length > 0 ) json.buffers[ 0 ].byteLength = blob.size;
426
452
 
427
- if ( options.binary === true ) {
453
+ if ( options.binary === true ) {
428
454
 
429
- // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#glb-file-format-specification
455
+ // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#glb-file-format-specification
430
456
 
431
- const reader = new window.FileReader();
432
- reader.readAsArrayBuffer( blob );
433
- reader.onloadend = function () {
457
+ const reader = new window.FileReader();
458
+ reader.readAsArrayBuffer( blob );
459
+ reader.onloadend = function () {
434
460
 
435
- // Binary chunk.
436
- const binaryChunk = getPaddedArrayBuffer( reader.result );
437
- const binaryChunkPrefix = new DataView( new ArrayBuffer( GLB_CHUNK_PREFIX_BYTES ) );
438
- binaryChunkPrefix.setUint32( 0, binaryChunk.byteLength, true );
439
- binaryChunkPrefix.setUint32( 4, GLB_CHUNK_TYPE_BIN, true );
440
-
441
- // JSON chunk.
442
- const jsonChunk = getPaddedArrayBuffer( stringToArrayBuffer( JSON.stringify( json ) ), 0x20 );
443
- const jsonChunkPrefix = new DataView( new ArrayBuffer( GLB_CHUNK_PREFIX_BYTES ) );
444
- jsonChunkPrefix.setUint32( 0, jsonChunk.byteLength, true );
445
- jsonChunkPrefix.setUint32( 4, GLB_CHUNK_TYPE_JSON, true );
446
-
447
- // GLB header.
448
- const header = new ArrayBuffer( GLB_HEADER_BYTES );
449
- const headerView = new DataView( header );
450
- headerView.setUint32( 0, GLB_HEADER_MAGIC, true );
451
- headerView.setUint32( 4, GLB_VERSION, true );
452
- const totalByteLength = GLB_HEADER_BYTES
453
- + jsonChunkPrefix.byteLength + jsonChunk.byteLength
454
- + binaryChunkPrefix.byteLength + binaryChunk.byteLength;
455
- headerView.setUint32( 8, totalByteLength, true );
456
-
457
- const glbBlob = new Blob( [
458
- header,
459
- jsonChunkPrefix,
460
- jsonChunk,
461
- binaryChunkPrefix,
462
- binaryChunk
463
- ], { type: 'application/octet-stream' } );
464
-
465
- const glbReader = new window.FileReader();
466
- glbReader.readAsArrayBuffer( glbBlob );
467
- glbReader.onloadend = function () {
468
-
469
- onDone( glbReader.result );
470
-
471
- };
461
+ // Binary chunk.
462
+ const binaryChunk = getPaddedArrayBuffer( reader.result );
463
+ const binaryChunkPrefix = new DataView( new ArrayBuffer( GLB_CHUNK_PREFIX_BYTES ) );
464
+ binaryChunkPrefix.setUint32( 0, binaryChunk.byteLength, true );
465
+ binaryChunkPrefix.setUint32( 4, GLB_CHUNK_TYPE_BIN, true );
466
+
467
+ // JSON chunk.
468
+ const jsonChunk = getPaddedArrayBuffer( stringToArrayBuffer( JSON.stringify( json ) ), 0x20 );
469
+ const jsonChunkPrefix = new DataView( new ArrayBuffer( GLB_CHUNK_PREFIX_BYTES ) );
470
+ jsonChunkPrefix.setUint32( 0, jsonChunk.byteLength, true );
471
+ jsonChunkPrefix.setUint32( 4, GLB_CHUNK_TYPE_JSON, true );
472
+
473
+ // GLB header.
474
+ const header = new ArrayBuffer( GLB_HEADER_BYTES );
475
+ const headerView = new DataView( header );
476
+ headerView.setUint32( 0, GLB_HEADER_MAGIC, true );
477
+ headerView.setUint32( 4, GLB_VERSION, true );
478
+ const totalByteLength = GLB_HEADER_BYTES
479
+ + jsonChunkPrefix.byteLength + jsonChunk.byteLength
480
+ + binaryChunkPrefix.byteLength + binaryChunk.byteLength;
481
+ headerView.setUint32( 8, totalByteLength, true );
482
+
483
+ const glbBlob = new Blob( [
484
+ header,
485
+ jsonChunkPrefix,
486
+ jsonChunk,
487
+ binaryChunkPrefix,
488
+ binaryChunk
489
+ ], { type: 'application/octet-stream' } );
490
+
491
+ const glbReader = new window.FileReader();
492
+ glbReader.readAsArrayBuffer( glbBlob );
493
+ glbReader.onloadend = function () {
494
+
495
+ onDone( glbReader.result );
472
496
 
473
497
  };
474
498
 
475
- } else {
499
+ };
476
500
 
477
- if ( json.buffers && json.buffers.length > 0 ) {
501
+ } else {
478
502
 
479
- const reader = new window.FileReader();
480
- reader.readAsDataURL( blob );
481
- reader.onloadend = function () {
503
+ if ( json.buffers && json.buffers.length > 0 ) {
482
504
 
483
- const base64data = reader.result;
484
- json.buffers[ 0 ].uri = base64data;
485
- onDone( json );
505
+ const reader = new window.FileReader();
506
+ reader.readAsDataURL( blob );
507
+ reader.onloadend = function () {
486
508
 
487
- };
509
+ const base64data = reader.result;
510
+ json.buffers[ 0 ].uri = base64data;
511
+ onDone( json );
488
512
 
489
- } else {
513
+ };
490
514
 
491
- onDone( json );
515
+ } else {
492
516
 
493
- }
517
+ onDone( json );
494
518
 
495
519
  }
496
520
 
497
- } );
521
+ }
522
+
498
523
 
499
524
  }
500
525
 
@@ -2174,7 +2199,7 @@ class GLTFMaterialsUnlitExtension {
2174
2199
  /**
2175
2200
  * Specular-Glossiness Extension
2176
2201
  *
2177
- * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness
2202
+ * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Archived/KHR_materials_pbrSpecularGlossiness
2178
2203
  */
2179
2204
  class GLTFMaterialsPBRSpecularGlossiness {
2180
2205
 
@@ -2227,6 +2252,67 @@ class GLTFMaterialsPBRSpecularGlossiness {
2227
2252
 
2228
2253
  }
2229
2254
 
2255
+ /**
2256
+ * Clearcoat Materials Extension
2257
+ *
2258
+ * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat
2259
+ */
2260
+ class GLTFMaterialsClearcoatExtension {
2261
+
2262
+ constructor( writer ) {
2263
+
2264
+ this.writer = writer;
2265
+ this.name = 'KHR_materials_clearcoat';
2266
+
2267
+ }
2268
+
2269
+ writeMaterial( material, materialDef ) {
2270
+
2271
+ if ( ! material.isMeshPhysicalMaterial ) return;
2272
+
2273
+ const writer = this.writer;
2274
+ const extensionsUsed = writer.extensionsUsed;
2275
+
2276
+ const extensionDef = {};
2277
+
2278
+ extensionDef.clearcoatFactor = material.clearcoat;
2279
+
2280
+ if ( material.clearcoatMap ) {
2281
+
2282
+ const clearcoatMapDef = { index: writer.processTexture( material.clearcoatMap ) };
2283
+ writer.applyTextureTransform( clearcoatMapDef, material.clearcoatMap );
2284
+ extensionDef.clearcoatTexture = clearcoatMapDef;
2285
+
2286
+ }
2287
+
2288
+ extensionDef.clearcoatRoughnessFactor = material.clearcoatRoughness;
2289
+
2290
+ if ( material.clearcoatRoughnessMap ) {
2291
+
2292
+ const clearcoatRoughnessMapDef = { index: writer.processTexture( material.clearcoatRoughnessMap ) };
2293
+ writer.applyTextureTransform( clearcoatRoughnessMapDef, material.clearcoatRoughnessMap );
2294
+ extensionDef.clearcoatRoughnessTexture = clearcoatRoughnessMapDef;
2295
+
2296
+ }
2297
+
2298
+ if ( material.clearcoatNormalMap ) {
2299
+
2300
+ const clearcoatNormalMapDef = { index: writer.processTexture( material.clearcoatNormalMap ) };
2301
+ writer.applyTextureTransform( clearcoatNormalMapDef, material.clearcoatNormalMap );
2302
+ extensionDef.clearcoatNormalTexture = clearcoatNormalMapDef;
2303
+
2304
+ }
2305
+
2306
+ materialDef.extensions = materialDef.extensions || {};
2307
+ materialDef.extensions[ this.name ] = extensionDef;
2308
+
2309
+ extensionsUsed[ this.name ] = true;
2310
+
2311
+
2312
+ }
2313
+
2314
+ }
2315
+
2230
2316
  /**
2231
2317
  * Transmission Materials Extension
2232
2318
  *
@@ -2285,7 +2371,7 @@ class GLTFMaterialsVolumeExtension {
2285
2371
 
2286
2372
  writeMaterial( material, materialDef ) {
2287
2373
 
2288
- if ( ! material.isMeshPhysicalMaterial || material.thickness === 0 ) return;
2374
+ if ( ! material.isMeshPhysicalMaterial || material.transmission === 0 ) return;
2289
2375
 
2290
2376
  const writer = this.writer;
2291
2377
  const extensionsUsed = writer.extensionsUsed;
@@ -2303,7 +2389,7 @@ class GLTFMaterialsVolumeExtension {
2303
2389
  }
2304
2390
 
2305
2391
  extensionDef.attenuationDistance = material.attenuationDistance;
2306
- extensionDef.attenuationColor = material.attenuationTint.toArray();
2392
+ extensionDef.attenuationColor = material.attenuationColor.toArray();
2307
2393
 
2308
2394
  materialDef.extensions = materialDef.extensions || {};
2309
2395
  materialDef.extensions[ this.name ] = extensionDef;
@@ -17,27 +17,35 @@ class USDZExporter {
17
17
 
18
18
  scene.traverseVisible( ( object ) => {
19
19
 
20
- if ( object.isMesh && object.material.isMeshStandardMaterial ) {
20
+ if ( object.isMesh ) {
21
21
 
22
- const geometry = object.geometry;
23
- const material = object.material;
22
+ if ( object.material.isMeshStandardMaterial ) {
24
23
 
25
- const geometryFileName = 'geometries/Geometry_' + geometry.id + '.usd';
24
+ const geometry = object.geometry;
25
+ const material = object.material;
26
26
 
27
- if ( ! ( geometryFileName in files ) ) {
27
+ const geometryFileName = 'geometries/Geometry_' + geometry.id + '.usd';
28
28
 
29
- const meshObject = buildMeshObject( geometry );
30
- files[ geometryFileName ] = buildUSDFileAsString( meshObject );
29
+ if ( ! ( geometryFileName in files ) ) {
31
30
 
32
- }
31
+ const meshObject = buildMeshObject( geometry );
32
+ files[ geometryFileName ] = buildUSDFileAsString( meshObject );
33
33
 
34
- if ( ! ( material.uuid in materials ) ) {
34
+ }
35
35
 
36
- materials[ material.uuid ] = material;
36
+ if ( ! ( material.uuid in materials ) ) {
37
37
 
38
- }
38
+ materials[ material.uuid ] = material;
39
+
40
+ }
41
+
42
+ output += buildXform( object, geometry, material );
43
+
44
+ } else {
39
45
 
40
- output += buildXform( object, geometry, material );
46
+ console.warn( 'THREE.USDZExporter: Unsupported material type (USDZ only supports MeshStandardMaterial)', object );
47
+
48
+ }
41
49
 
42
50
  }
43
51
 
@@ -247,7 +255,7 @@ function buildMesh( geometry ) {
247
255
 
248
256
  function buildMeshVertexCount( geometry ) {
249
257
 
250
- const count = geometry.index !== null ? geometry.index.array.length : geometry.attributes.position.count;
258
+ const count = geometry.index !== null ? geometry.index.count : geometry.attributes.position.count;
251
259
 
252
260
  return Array( count / 3 ).fill( 3 ).join( ', ' );
253
261
 
@@ -255,18 +263,26 @@ function buildMeshVertexCount( geometry ) {
255
263
 
256
264
  function buildMeshVertexIndices( geometry ) {
257
265
 
258
- if ( geometry.index !== null ) {
266
+ const index = geometry.index;
267
+ const array = [];
259
268
 
260
- return geometry.index.array.join( ', ' );
269
+ if ( index !== null ) {
261
270
 
262
- }
271
+ for ( let i = 0; i < index.count; i ++ ) {
263
272
 
264
- const array = [];
265
- const length = geometry.attributes.position.count;
273
+ array.push( index.getX( i ) );
266
274
 
267
- for ( let i = 0; i < length; i ++ ) {
275
+ }
276
+
277
+ } else {
278
+
279
+ const length = geometry.attributes.position.count;
280
+
281
+ for ( let i = 0; i < length; i ++ ) {
268
282
 
269
- array.push( i );
283
+ array.push( i );
284
+
285
+ }
270
286
 
271
287
  }
272
288
 
@@ -284,11 +300,14 @@ function buildVector3Array( attribute, count ) {
284
300
  }
285
301
 
286
302
  const array = [];
287
- const data = attribute.array;
288
303
 
289
- for ( let i = 0; i < data.length; i += 3 ) {
304
+ for ( let i = 0; i < attribute.count; i ++ ) {
290
305
 
291
- array.push( `(${ data[ i + 0 ].toPrecision( PRECISION ) }, ${ data[ i + 1 ].toPrecision( PRECISION ) }, ${ data[ i + 2 ].toPrecision( PRECISION ) })` );
306
+ const x = attribute.getX( i );
307
+ const y = attribute.getY( i );
308
+ const z = attribute.getZ( i );
309
+
310
+ array.push( `(${ x.toPrecision( PRECISION ) }, ${ y.toPrecision( PRECISION ) }, ${ z.toPrecision( PRECISION ) })` );
292
311
 
293
312
  }
294
313
 
@@ -306,11 +325,13 @@ function buildVector2Array( attribute, count ) {
306
325
  }
307
326
 
308
327
  const array = [];
309
- const data = attribute.array;
310
328
 
311
- for ( let i = 0; i < data.length; i += 2 ) {
329
+ for ( let i = 0; i < attribute.count; i ++ ) {
330
+
331
+ const x = attribute.getX( i );
332
+ const y = attribute.getY( i );
312
333
 
313
- array.push( `(${ data[ i + 0 ].toPrecision( PRECISION ) }, ${ 1 - data[ i + 1 ].toPrecision( PRECISION ) })` );
334
+ array.push( `(${ x.toPrecision( PRECISION ) }, ${ 1 - y.toPrecision( PRECISION ) })` );
314
335
 
315
336
  }
316
337
 
@@ -48,7 +48,6 @@ import {
48
48
  *
49
49
  * Code converted from my ancient SPD software, http://tog.acm.org/resources/SPD/
50
50
  * Created for the Udacity course "Interactive Rendering", http://bit.ly/ericity
51
- * Lesson: https://www.udacity.com/course/viewer#!/c-cs291/l-68866048/m-106482448
52
51
  * YouTube video on teapot history: https://www.youtube.com/watch?v=DxMfblPzFNc
53
52
  *
54
53
  * See https://en.wikipedia.org/wiki/Utah_teapot for the history of the teapot
@@ -182,6 +182,7 @@ class SelectionBox {
182
182
 
183
183
  object.getMatrixAt( instanceId, _matrix );
184
184
  _matrix.decompose( _center, _quaternion, _scale );
185
+ _center.applyMatrix4( object.matrixWorld );
185
186
 
186
187
  if ( frustum.containsPoint( _center ) ) {
187
188
 
@@ -18,14 +18,14 @@ class SelectionHelper {
18
18
 
19
19
  this.isDown = false;
20
20
 
21
- this.renderer.domElement.addEventListener( 'pointerdown', function ( event ) {
21
+ this.onPointerDown = function ( event ) {
22
22
 
23
23
  this.isDown = true;
24
24
  this.onSelectStart( event );
25
25
 
26
- }.bind( this ) );
26
+ }.bind( this );
27
27
 
28
- this.renderer.domElement.addEventListener( 'pointermove', function ( event ) {
28
+ this.onPointerMove = function ( event ) {
29
29
 
30
30
  if ( this.isDown ) {
31
31
 
@@ -33,14 +33,26 @@ class SelectionHelper {
33
33
 
34
34
  }
35
35
 
36
- }.bind( this ) );
36
+ }.bind( this );
37
37
 
38
- this.renderer.domElement.addEventListener( 'pointerup', function ( event ) {
38
+ this.onPointerUp = function ( ) {
39
39
 
40
40
  this.isDown = false;
41
- this.onSelectOver( event );
41
+ this.onSelectOver();
42
42
 
43
- }.bind( this ) );
43
+ }.bind( this );
44
+
45
+ this.renderer.domElement.addEventListener( 'pointerdown', this.onPointerDown );
46
+ this.renderer.domElement.addEventListener( 'pointermove', this.onPointerMove );
47
+ this.renderer.domElement.addEventListener( 'pointerup', this.onPointerUp );
48
+
49
+ }
50
+
51
+ dispose() {
52
+
53
+ this.renderer.domElement.removeEventListener( 'pointerdown', this.onPointerDown );
54
+ this.renderer.domElement.removeEventListener( 'pointermove', this.onPointerMove );
55
+ this.renderer.domElement.removeEventListener( 'pointerup', this.onPointerUp );
44
56
 
45
57
  }
46
58