@needle-tools/three 0.145.2 → 0.146.1

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 (394) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +3559 -6924
  3. package/build/three.js +3559 -6924
  4. package/build/three.min.js +1 -2
  5. package/build/three.module.js +732 -339
  6. package/examples/js/animation/AnimationClipCreator.js +0 -8
  7. package/examples/js/animation/CCDIKSolver.js +49 -66
  8. package/examples/js/animation/MMDAnimationHelper.js +66 -137
  9. package/examples/js/animation/MMDPhysics.js +70 -134
  10. package/examples/js/cameras/CinematicCamera.js +33 -22
  11. package/examples/js/controls/ArcballControls.js +138 -405
  12. package/examples/js/controls/DragControls.js +8 -33
  13. package/examples/js/controls/FirstPersonControls.js +32 -54
  14. package/examples/js/controls/FlyControls.js +29 -55
  15. package/examples/js/controls/OrbitControls.js +85 -95
  16. package/examples/js/controls/PointerLockControls.js +5 -14
  17. package/examples/js/controls/TrackballControls.js +33 -86
  18. package/examples/js/controls/TransformControls.js +84 -169
  19. package/examples/js/csm/CSM.js +4 -39
  20. package/examples/js/csm/CSMFrustum.js +3 -9
  21. package/examples/js/csm/CSMHelper.js +24 -4
  22. package/examples/js/csm/CSMShader.js +2 -6
  23. package/examples/js/curves/CurveExtras.js +27 -27
  24. package/examples/js/curves/NURBSCurve.js +4 -16
  25. package/examples/js/curves/NURBSSurface.js +3 -9
  26. package/examples/js/curves/NURBSUtils.js +8 -45
  27. package/examples/js/effects/AnaglyphEffect.js +4 -18
  28. package/examples/js/effects/AsciiEffect.js +32 -31
  29. package/examples/js/effects/OutlineEffect.js +26 -30
  30. package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
  31. package/examples/js/effects/PeppersGhostEffect.js +12 -39
  32. package/examples/js/effects/StereoEffect.js +0 -4
  33. package/examples/js/environments/RoomEnvironment.js +12 -10
  34. package/examples/js/exporters/ColladaExporter.js +48 -65
  35. package/examples/js/exporters/DRACOExporter.js +22 -22
  36. package/examples/js/exporters/EXRExporter.js +15 -18
  37. package/examples/js/exporters/GLTFExporter.js +143 -261
  38. package/examples/js/exporters/MMDExporter.js +5 -12
  39. package/examples/js/exporters/OBJExporter.js +42 -33
  40. package/examples/js/exporters/PLYExporter.js +38 -33
  41. package/examples/js/exporters/STLExporter.js +5 -7
  42. package/examples/js/exporters/USDZExporter.js +110 -25
  43. package/examples/js/geometries/BoxLineGeometry.js +0 -1
  44. package/examples/js/geometries/ConvexGeometry.js +11 -6
  45. package/examples/js/geometries/DecalGeometry.js +53 -20
  46. package/examples/js/geometries/LightningStrike.js +54 -67
  47. package/examples/js/geometries/ParametricGeometries.js +8 -7
  48. package/examples/js/geometries/ParametricGeometry.js +25 -12
  49. package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
  50. package/examples/js/geometries/TeapotGeometry.js +54 -50
  51. package/examples/js/geometries/TextGeometry.js +6 -4
  52. package/examples/js/helpers/LightProbeHelper.js +1 -2
  53. package/examples/js/helpers/OctreeHelper.js +22 -20
  54. package/examples/js/helpers/PositionalAudioHelper.js +8 -6
  55. package/examples/js/helpers/RectAreaLightHelper.js +6 -7
  56. package/examples/js/helpers/VertexNormalsHelper.js +15 -13
  57. package/examples/js/helpers/VertexTangentsHelper.js +15 -9
  58. package/examples/js/helpers/ViewHelper.js +31 -16
  59. package/examples/js/interactive/HTMLMesh.js +22 -33
  60. package/examples/js/interactive/InteractiveGroup.js +6 -12
  61. package/examples/js/interactive/SelectionBox.js +3 -70
  62. package/examples/js/interactive/SelectionHelper.js +0 -8
  63. package/examples/js/lights/LightProbeGenerator.js +32 -39
  64. package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
  65. package/examples/js/lines/LineGeometry.js +3 -5
  66. package/examples/js/lines/LineMaterial.js +4 -11
  67. package/examples/js/lines/LineSegments2.js +38 -89
  68. package/examples/js/lines/LineSegmentsGeometry.js +7 -28
  69. package/examples/js/lines/Wireframe.js +2 -7
  70. package/examples/js/lines/WireframeGeometry2.js +3 -1
  71. package/examples/js/loaders/3DMLoader.js +58 -155
  72. package/examples/js/loaders/3MFLoader.js +72 -106
  73. package/examples/js/loaders/AMFLoader.js +0 -25
  74. package/examples/js/loaders/BVHLoader.js +44 -43
  75. package/examples/js/loaders/BasisTextureLoader.js +16 -46
  76. package/examples/js/loaders/ColladaLoader.js +201 -359
  77. package/examples/js/loaders/DDSLoader.js +24 -25
  78. package/examples/js/loaders/DRACOLoader.js +29 -66
  79. package/examples/js/loaders/EXRLoader.js +67 -164
  80. package/examples/js/loaders/FBXLoader.js +286 -441
  81. package/examples/js/loaders/FontLoader.js +6 -15
  82. package/examples/js/loaders/GCodeLoader.js +15 -16
  83. package/examples/js/loaders/GLTFLoader.js +354 -405
  84. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
  85. package/examples/js/loaders/KMZLoader.js +3 -7
  86. package/examples/js/loaders/KTXLoader.js +12 -30
  87. package/examples/js/loaders/LDrawLoader.js +178 -289
  88. package/examples/js/loaders/LUT3dlLoader.js +7 -11
  89. package/examples/js/loaders/LUTCubeLoader.js +0 -8
  90. package/examples/js/loaders/LWOLoader.js +59 -124
  91. package/examples/js/loaders/LogLuvLoader.js +27 -77
  92. package/examples/js/loaders/LottieLoader.js +4 -4
  93. package/examples/js/loaders/MD2Loader.js +26 -27
  94. package/examples/js/loaders/MDDLoader.js +6 -10
  95. package/examples/js/loaders/MMDLoader.js +180 -189
  96. package/examples/js/loaders/MTLLoader.js +18 -47
  97. package/examples/js/loaders/MaterialXLoader.js +392 -0
  98. package/examples/js/loaders/NRRDLoader.js +44 -84
  99. package/examples/js/loaders/OBJLoader.js +50 -65
  100. package/examples/js/loaders/PCDLoader.js +34 -29
  101. package/examples/js/loaders/PDBLoader.js +17 -13
  102. package/examples/js/loaders/PLYLoader.js +9 -39
  103. package/examples/js/loaders/PRWMLoader.js +11 -22
  104. package/examples/js/loaders/PVRLoader.js +7 -16
  105. package/examples/js/loaders/RGBELoader.js +36 -61
  106. package/examples/js/loaders/RGBMLoader.js +26 -87
  107. package/examples/js/loaders/STLLoader.js +20 -27
  108. package/examples/js/loaders/SVGLoader.js +361 -233
  109. package/examples/js/loaders/TDSLoader.js +81 -118
  110. package/examples/js/loaders/TGALoader.js +39 -41
  111. package/examples/js/loaders/TIFFLoader.js +0 -1
  112. package/examples/js/loaders/TTFLoader.js +0 -8
  113. package/examples/js/loaders/TiltLoader.js +14 -15
  114. package/examples/js/loaders/VOXLoader.js +8 -16
  115. package/examples/js/loaders/VRMLLoader.js +243 -340
  116. package/examples/js/loaders/VTKLoader.js +101 -118
  117. package/examples/js/loaders/XYZLoader.js +2 -4
  118. package/examples/js/loaders/lwo/IFFParser.js +55 -136
  119. package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
  120. package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
  121. package/examples/js/materials/MeshGouraudMaterial.js +15 -13
  122. package/examples/js/math/Capsule.js +0 -17
  123. package/examples/js/math/ColorConverter.js +3 -3
  124. package/examples/js/math/ConvexHull.js +183 -139
  125. package/examples/js/math/ImprovedNoise.js +1 -1
  126. package/examples/js/math/Lut.js +8 -15
  127. package/examples/js/math/MeshSurfaceSampler.js +6 -28
  128. package/examples/js/math/OBB.js +90 -49
  129. package/examples/js/math/Octree.js +2 -57
  130. package/examples/js/math/SimplexNoise.js +74 -88
  131. package/examples/js/misc/ConvexObjectBreaker.js +37 -48
  132. package/examples/js/misc/GPUComputationRenderer.js +14 -18
  133. package/examples/js/misc/Gyroscope.js +5 -9
  134. package/examples/js/misc/MD2Character.js +14 -23
  135. package/examples/js/misc/MD2CharacterComplex.js +73 -54
  136. package/examples/js/misc/MorphAnimMesh.js +0 -6
  137. package/examples/js/misc/MorphBlendMesh.js +3 -30
  138. package/examples/js/misc/ProgressiveLightMap.js +47 -43
  139. package/examples/js/misc/RollerCoaster.js +17 -24
  140. package/examples/js/misc/TubePainter.js +18 -12
  141. package/examples/js/misc/Volume.js +16 -45
  142. package/examples/js/misc/VolumeSlice.js +14 -24
  143. package/examples/js/modifiers/CurveModifier.js +19 -21
  144. package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
  145. package/examples/js/modifiers/SimplifyModifier.js +56 -59
  146. package/examples/js/modifiers/TessellateModifier.js +2 -9
  147. package/examples/js/objects/GroundProjectedEnv.js +2 -14
  148. package/examples/js/objects/Lensflare.js +47 -38
  149. package/examples/js/objects/LightningStorm.js +10 -13
  150. package/examples/js/objects/MarchingCubes.js +80 -59
  151. package/examples/js/objects/Reflector.js +22 -20
  152. package/examples/js/objects/ReflectorForSSRPass.js +19 -23
  153. package/examples/js/objects/Refractor.js +52 -30
  154. package/examples/js/objects/ShadowMesh.js +1 -2
  155. package/examples/js/objects/Sky.js +2 -7
  156. package/examples/js/objects/Water.js +23 -18
  157. package/examples/js/objects/Water2.js +20 -19
  158. package/examples/js/physics/AmmoPhysics.js +23 -20
  159. package/examples/js/physics/OimoPhysics.js +19 -17
  160. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
  161. package/examples/js/postprocessing/AfterimagePass.js +19 -12
  162. package/examples/js/postprocessing/BloomPass.js +38 -17
  163. package/examples/js/postprocessing/BokehPass.js +29 -12
  164. package/examples/js/postprocessing/ClearPass.js +1 -6
  165. package/examples/js/postprocessing/CubeTexturePass.js +12 -9
  166. package/examples/js/postprocessing/DotScreenPass.js +7 -5
  167. package/examples/js/postprocessing/EffectComposer.js +25 -32
  168. package/examples/js/postprocessing/FilmPass.js +7 -5
  169. package/examples/js/postprocessing/GlitchPass.js +10 -11
  170. package/examples/js/postprocessing/HalftonePass.js +9 -9
  171. package/examples/js/postprocessing/LUTPass.js +2 -15
  172. package/examples/js/postprocessing/MaskPass.js +20 -17
  173. package/examples/js/postprocessing/OutlinePass.js +45 -36
  174. package/examples/js/postprocessing/Pass.js +11 -14
  175. package/examples/js/postprocessing/RenderPass.js +3 -7
  176. package/examples/js/postprocessing/SAOPass.js +40 -32
  177. package/examples/js/postprocessing/SMAAPass.js +34 -17
  178. package/examples/js/postprocessing/SSAARenderPass.js +14 -14
  179. package/examples/js/postprocessing/SSAOPass.js +56 -42
  180. package/examples/js/postprocessing/SSRPass.js +78 -61
  181. package/examples/js/postprocessing/SavePass.js +14 -6
  182. package/examples/js/postprocessing/ShaderPass.js +9 -8
  183. package/examples/js/postprocessing/TAARenderPass.js +11 -9
  184. package/examples/js/postprocessing/TexturePass.js +7 -4
  185. package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
  186. package/examples/js/renderers/CSS2DRenderer.js +2 -21
  187. package/examples/js/renderers/CSS3DRenderer.js +3 -24
  188. package/examples/js/renderers/Projector.js +29 -85
  189. package/examples/js/renderers/SVGRenderer.js +4 -50
  190. package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
  191. package/examples/js/shaders/AfterimageShader.js +3 -6
  192. package/examples/js/shaders/BasicShader.js +3 -6
  193. package/examples/js/shaders/BleachBypassShader.js +3 -6
  194. package/examples/js/shaders/BlendShader.js +3 -6
  195. package/examples/js/shaders/BokehShader.js +3 -6
  196. package/examples/js/shaders/BokehShader2.js +4 -13
  197. package/examples/js/shaders/BrightnessContrastShader.js +3 -6
  198. package/examples/js/shaders/ColorCorrectionShader.js +2 -6
  199. package/examples/js/shaders/ColorifyShader.js +2 -6
  200. package/examples/js/shaders/ConvolutionShader.js +5 -10
  201. package/examples/js/shaders/CopyShader.js +3 -6
  202. package/examples/js/shaders/DOFMipMapShader.js +3 -6
  203. package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
  204. package/examples/js/shaders/DigitalGlitch.js +3 -6
  205. package/examples/js/shaders/DotScreenShader.js +2 -6
  206. package/examples/js/shaders/FXAAShader.js +1 -3
  207. package/examples/js/shaders/FilmShader.js +3 -6
  208. package/examples/js/shaders/FocusShader.js +3 -6
  209. package/examples/js/shaders/FreiChenShader.js +2 -6
  210. package/examples/js/shaders/GammaCorrectionShader.js +3 -6
  211. package/examples/js/shaders/GodRaysShader.js +11 -24
  212. package/examples/js/shaders/HalftoneShader.js +3 -6
  213. package/examples/js/shaders/HorizontalBlurShader.js +3 -6
  214. package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
  215. package/examples/js/shaders/HueSaturationShader.js +3 -6
  216. package/examples/js/shaders/KaleidoShader.js +3 -6
  217. package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
  218. package/examples/js/shaders/LuminosityShader.js +3 -6
  219. package/examples/js/shaders/MMDToonShader.js +2 -6
  220. package/examples/js/shaders/MirrorShader.js +3 -6
  221. package/examples/js/shaders/NormalMapShader.js +2 -6
  222. package/examples/js/shaders/RGBShiftShader.js +3 -6
  223. package/examples/js/shaders/SAOShader.js +2 -6
  224. package/examples/js/shaders/SMAAShader.js +6 -18
  225. package/examples/js/shaders/SSAOShader.js +2 -6
  226. package/examples/js/shaders/SSRShader.js +6 -18
  227. package/examples/js/shaders/SepiaShader.js +3 -6
  228. package/examples/js/shaders/SobelOperatorShader.js +2 -6
  229. package/examples/js/shaders/TechnicolorShader.js +3 -6
  230. package/examples/js/shaders/ToneMapShader.js +3 -6
  231. package/examples/js/shaders/ToonShader.js +8 -24
  232. package/examples/js/shaders/TriangleBlurShader.js +2 -6
  233. package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
  234. package/examples/js/shaders/VelocityShader.js +126 -0
  235. package/examples/js/shaders/VerticalBlurShader.js +3 -6
  236. package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
  237. package/examples/js/shaders/VignetteShader.js +3 -6
  238. package/examples/js/shaders/VolumeShader.js +2 -6
  239. package/examples/js/shaders/WaterRefractionShader.js +2 -6
  240. package/examples/js/textures/FlakesTexture.js +0 -1
  241. package/examples/js/utils/BufferGeometryUtils.js +234 -168
  242. package/examples/js/utils/CameraUtils.js +5 -20
  243. package/examples/js/utils/GPUStatsPanel.js +3 -12
  244. package/examples/js/utils/GeometryCompressionUtils.js +19 -44
  245. package/examples/js/utils/GeometryUtils.js +13 -18
  246. package/examples/js/utils/LDrawUtils.js +8 -11
  247. package/examples/js/utils/PackedPhongMaterial.js +6 -4
  248. package/examples/js/utils/SceneUtils.js +117 -6
  249. package/examples/js/utils/ShadowMapViewer.js +17 -14
  250. package/examples/js/utils/SkeletonUtils.js +13 -27
  251. package/examples/js/utils/UVsDebug.js +20 -12
  252. package/examples/js/utils/WorkerPool.js +1 -11
  253. package/examples/jsm/animation/CCDIKSolver.js +1 -1
  254. package/examples/jsm/capabilities/WebGPU.js +3 -1
  255. package/examples/jsm/controls/OrbitControls.js +44 -4
  256. package/examples/jsm/exporters/GLTFExporter.js +17 -131
  257. package/examples/jsm/exporters/USDZExporter.js +94 -28
  258. package/examples/jsm/interactive/HTMLMesh.js +2 -0
  259. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  260. package/examples/jsm/loaders/3DMLoader.js +1 -2
  261. package/examples/jsm/loaders/ColladaLoader.js +28 -0
  262. package/examples/jsm/loaders/FBXLoader.js +16 -2
  263. package/examples/jsm/loaders/GLTFLoader.js +204 -377
  264. package/examples/jsm/loaders/KTX2Loader.js +68 -29
  265. package/examples/jsm/loaders/LDrawLoader.js +14 -13
  266. package/examples/jsm/loaders/LottieLoader.js +4 -2
  267. package/examples/jsm/loaders/MaterialXLoader.js +728 -0
  268. package/examples/jsm/loaders/PCDLoader.js +1 -1
  269. package/examples/jsm/loaders/PLYLoader.js +68 -16
  270. package/examples/jsm/loaders/SVGLoader.js +227 -14
  271. package/examples/jsm/loaders/USDZLoader.js +31 -16
  272. package/examples/jsm/nodes/Nodes.js +14 -2
  273. package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
  274. package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
  275. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  276. package/examples/jsm/nodes/accessors/SkinningNode.js +1 -1
  277. package/examples/jsm/nodes/core/Node.js +1 -1
  278. package/examples/jsm/nodes/core/NodeBuilder.js +36 -4
  279. package/examples/jsm/nodes/core/NodeFrame.js +2 -2
  280. package/examples/jsm/nodes/core/NodeVarying.js +7 -4
  281. package/examples/jsm/nodes/core/VaryingNode.js +6 -4
  282. package/examples/jsm/nodes/core/constants.js +13 -13
  283. package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
  284. package/examples/jsm/nodes/display/ViewportNode.js +106 -0
  285. package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
  286. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  287. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
  288. package/examples/jsm/nodes/materials/Materials.js +9 -7
  289. package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
  290. package/examples/jsm/nodes/materialx/MaterialXNodes.js +6 -2
  291. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
  292. package/examples/jsm/nodes/math/MathNode.js +5 -0
  293. package/examples/jsm/nodes/math/OperatorNode.js +6 -1
  294. package/examples/jsm/nodes/shadernode/ShaderNode.js +26 -13
  295. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +2 -0
  296. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +18 -0
  297. package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
  298. package/examples/jsm/nodes/utils/JoinNode.js +8 -2
  299. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
  300. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
  301. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
  302. package/examples/jsm/nodes/utils/TimerNode.js +1 -1
  303. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
  304. package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
  305. package/examples/jsm/postprocessing/BloomPass.js +22 -3
  306. package/examples/jsm/postprocessing/BokehPass.js +18 -4
  307. package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
  308. package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
  309. package/examples/jsm/postprocessing/EffectComposer.js +9 -0
  310. package/examples/jsm/postprocessing/FilmPass.js +8 -0
  311. package/examples/jsm/postprocessing/GlitchPass.js +13 -1
  312. package/examples/jsm/postprocessing/HalftonePass.js +8 -0
  313. package/examples/jsm/postprocessing/OutlinePass.js +10 -0
  314. package/examples/jsm/postprocessing/Pass.js +2 -0
  315. package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
  316. package/examples/jsm/postprocessing/SAOPass.js +20 -0
  317. package/examples/jsm/postprocessing/SMAAPass.js +16 -0
  318. package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
  319. package/examples/jsm/postprocessing/SavePass.js +17 -1
  320. package/examples/jsm/postprocessing/ShaderPass.js +8 -0
  321. package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
  322. package/examples/jsm/postprocessing/TexturePass.js +8 -0
  323. package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
  324. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +39 -16
  325. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
  326. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
  327. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
  328. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
  329. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +35 -5
  330. package/examples/jsm/shaders/MMDToonShader.js +0 -2
  331. package/examples/jsm/shaders/VelocityShader.js +128 -0
  332. package/examples/jsm/utils/BufferGeometryUtils.js +130 -6
  333. package/examples/jsm/utils/SceneUtils.js +129 -4
  334. package/examples/jsm/utils/TextureUtils.js +85 -0
  335. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  336. package/examples/jsm/webxr/XRHandMeshModel.js +6 -3
  337. package/package.json +11 -12
  338. package/src/Three.js +1 -0
  339. package/src/audio/AudioContext.js +5 -5
  340. package/src/cameras/CubeCamera.js +14 -14
  341. package/src/constants.js +1 -1
  342. package/src/core/InstancedBufferGeometry.js +1 -7
  343. package/src/extras/Earcut.js +67 -67
  344. package/src/helpers/DirectionalLightHelper.js +5 -1
  345. package/src/helpers/HemisphereLightHelper.js +4 -1
  346. package/src/helpers/PointLightHelper.js +2 -1
  347. package/src/helpers/SpotLightHelper.js +4 -2
  348. package/src/lights/PointLight.js +2 -2
  349. package/src/lights/SpotLight.js +2 -2
  350. package/src/loaders/FileLoader.js +4 -1
  351. package/src/loaders/ObjectLoader.js +5 -1
  352. package/src/materials/Material.js +1 -1
  353. package/src/math/Color.js +5 -5
  354. package/src/math/Matrix3.js +53 -18
  355. package/src/math/Ray.js +2 -5
  356. package/src/math/Sphere.js +19 -26
  357. package/src/objects/InstancedMesh.js +7 -0
  358. package/src/objects/LOD.js +25 -6
  359. package/src/renderers/WebGL3DRenderTarget.js +1 -1
  360. package/src/renderers/WebGLArrayRenderTarget.js +1 -1
  361. package/src/renderers/WebGLCubeRenderTarget.js +1 -1
  362. package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
  363. package/src/renderers/WebGLRenderTarget.js +1 -1
  364. package/src/renderers/WebGLRenderer.js +36 -62
  365. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
  366. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
  367. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
  368. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
  369. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
  370. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
  371. package/src/renderers/shaders/ShaderChunk.js +3 -0
  372. package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
  373. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  374. package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
  375. package/src/renderers/shaders/ShaderLib.js +20 -6
  376. package/src/renderers/shaders/UniformsLib.js +1 -1
  377. package/src/renderers/shaders/UniformsUtils.js +15 -0
  378. package/src/renderers/webgl/WebGLAttributes.js +2 -0
  379. package/src/renderers/webgl/WebGLBackground.js +15 -7
  380. package/src/renderers/webgl/WebGLCubeUVMaps.js +1 -1
  381. package/src/renderers/webgl/WebGLLights.js +0 -4
  382. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  383. package/src/renderers/webgl/WebGLShadowMap.js +3 -1
  384. package/src/renderers/webgl/WebGLState.js +31 -1
  385. package/src/renderers/webgl/WebGLTextures.js +71 -18
  386. package/src/renderers/webgl/WebGLUniforms.js +116 -20
  387. package/src/renderers/webgl/WebGLUtils.js +1 -1
  388. package/src/renderers/webxr/WebXRController.js +46 -13
  389. package/src/renderers/webxr/WebXRManager.js +85 -3
  390. package/src/scenes/Scene.js +8 -0
  391. package/src/textures/CompressedArrayTexture.js +18 -0
  392. package/examples/js/libs/lottie_canvas.js +0 -12751
  393. package/examples/js/shaders/PixelShader.js +0 -51
  394. package/examples/jsm/shaders/PixelShader.js +0 -44
@@ -7,7 +7,6 @@
7
7
  super( manager );
8
8
 
9
9
  }
10
-
11
10
  parse( buffer, loadMipmaps ) {
12
11
 
13
12
  const dds = {
@@ -16,19 +15,25 @@
16
15
  height: 0,
17
16
  format: null,
18
17
  mipmapCount: 1
19
- }; // Adapted from @toji's DDS utils
18
+ };
19
+
20
+ // Adapted from @toji's DDS utils
20
21
  // https://github.com/toji/webgl-texture-utils/blob/master/texture-util/dds.js
22
+
21
23
  // All values and structures referenced from:
22
24
  // http://msdn.microsoft.com/en-us/library/bb943991.aspx/
23
25
 
24
- const DDS_MAGIC = 0x20534444; // const DDSD_CAPS = 0x1;
26
+ const DDS_MAGIC = 0x20534444;
27
+
28
+ // const DDSD_CAPS = 0x1;
25
29
  // const DDSD_HEIGHT = 0x2;
26
30
  // const DDSD_WIDTH = 0x4;
27
31
  // const DDSD_PITCH = 0x8;
28
32
  // const DDSD_PIXELFORMAT = 0x1000;
29
-
30
- const DDSD_MIPMAPCOUNT = 0x20000; // const DDSD_LINEARSIZE = 0x80000;
33
+ const DDSD_MIPMAPCOUNT = 0x20000;
34
+ // const DDSD_LINEARSIZE = 0x80000;
31
35
  // const DDSD_DEPTH = 0x800000;
36
+
32
37
  // const DDSCAPS_COMPLEX = 0x8;
33
38
  // const DDSCAPS_MIPMAP = 0x400000;
34
39
  // const DDSCAPS_TEXTURE = 0x1000;
@@ -39,7 +44,9 @@
39
44
  const DDSCAPS2_CUBEMAP_POSITIVEY = 0x1000;
40
45
  const DDSCAPS2_CUBEMAP_NEGATIVEY = 0x2000;
41
46
  const DDSCAPS2_CUBEMAP_POSITIVEZ = 0x4000;
42
- const DDSCAPS2_CUBEMAP_NEGATIVEZ = 0x8000; // const DDSCAPS2_VOLUME = 0x200000;
47
+ const DDSCAPS2_CUBEMAP_NEGATIVEZ = 0x8000;
48
+ // const DDSCAPS2_VOLUME = 0x200000;
49
+
43
50
  // const DDPF_ALPHAPIXELS = 0x1;
44
51
  // const DDPF_ALPHA = 0x2;
45
52
  // const DDPF_FOURCC = 0x4;
@@ -66,7 +73,6 @@
66
73
  const byteArray = new Uint8Array( dataLength );
67
74
  let dst = 0;
68
75
  let src = 0;
69
-
70
76
  for ( let y = 0; y < height; y ++ ) {
71
77
 
72
78
  for ( let x = 0; x < width; x ++ ) {
@@ -81,13 +87,10 @@
81
87
  src ++;
82
88
  byteArray[ dst ] = r;
83
89
  dst ++; //r
84
-
85
90
  byteArray[ dst ] = g;
86
91
  dst ++; //g
87
-
88
92
  byteArray[ dst ] = b;
89
93
  dst ++; //b
90
-
91
94
  byteArray[ dst ] = a;
92
95
  dst ++; //a
93
96
 
@@ -104,6 +107,7 @@
104
107
  const FOURCC_DXT5 = fourCCToInt32( 'DXT5' );
105
108
  const FOURCC_ETC1 = fourCCToInt32( 'ETC1' );
106
109
  const headerLengthInt = 31; // The header length in 32 bit ints
110
+
107
111
  // Offsets into the header array
108
112
 
109
113
  const off_magic = 0;
@@ -111,21 +115,24 @@
111
115
  const off_flags = 2;
112
116
  const off_height = 3;
113
117
  const off_width = 4;
114
- const off_mipmapCount = 7; // const off_pfFlags = 20;
118
+ const off_mipmapCount = 7;
115
119
 
120
+ // const off_pfFlags = 20;
116
121
  const off_pfFourCC = 21;
117
122
  const off_RGBBitCount = 22;
118
123
  const off_RBitMask = 23;
119
124
  const off_GBitMask = 24;
120
125
  const off_BBitMask = 25;
121
- const off_ABitMask = 26; // const off_caps = 27;
126
+ const off_ABitMask = 26;
122
127
 
123
- const off_caps2 = 28; // const off_caps3 = 29;
128
+ // const off_caps = 27;
129
+ const off_caps2 = 28;
130
+ // const off_caps3 = 29;
124
131
  // const off_caps4 = 30;
132
+
125
133
  // Parse header
126
134
 
127
135
  const header = new Int32Array( buffer, 0, headerLengthInt );
128
-
129
136
  if ( header[ off_magic ] !== DDS_MAGIC ) {
130
137
 
131
138
  console.error( 'THREE.DDSLoader.parse: Invalid magic number in DDS header.' );
@@ -136,29 +143,24 @@
136
143
  let blockBytes;
137
144
  const fourCC = header[ off_pfFourCC ];
138
145
  let isRGBAUncompressed = false;
139
-
140
146
  switch ( fourCC ) {
141
147
 
142
148
  case FOURCC_DXT1:
143
149
  blockBytes = 8;
144
150
  dds.format = THREE.RGB_S3TC_DXT1_Format;
145
151
  break;
146
-
147
152
  case FOURCC_DXT3:
148
153
  blockBytes = 16;
149
154
  dds.format = THREE.RGBA_S3TC_DXT3_Format;
150
155
  break;
151
-
152
156
  case FOURCC_DXT5:
153
157
  blockBytes = 16;
154
158
  dds.format = THREE.RGBA_S3TC_DXT5_Format;
155
159
  break;
156
-
157
160
  case FOURCC_ETC1:
158
161
  blockBytes = 8;
159
162
  dds.format = THREE.RGB_ETC1_Format;
160
163
  break;
161
-
162
164
  default:
163
165
  if ( header[ off_RGBBitCount ] === 32 && header[ off_RBitMask ] & 0xff0000 && header[ off_GBitMask ] & 0xff00 && header[ off_BBitMask ] & 0xff && header[ off_ABitMask ] & 0xff000000 ) {
164
166
 
@@ -176,7 +178,6 @@
176
178
  }
177
179
 
178
180
  dds.mipmapCount = 1;
179
-
180
181
  if ( header[ off_flags ] & DDSD_MIPMAPCOUNT && loadMipmaps !== false ) {
181
182
 
182
183
  dds.mipmapCount = Math.max( 1, header[ off_mipmapCount ] );
@@ -185,7 +186,6 @@
185
186
 
186
187
  const caps2 = header[ off_caps2 ];
187
188
  dds.isCubemap = caps2 & DDSCAPS2_CUBEMAP ? true : false;
188
-
189
189
  if ( dds.isCubemap && ( ! ( caps2 & DDSCAPS2_CUBEMAP_POSITIVEX ) || ! ( caps2 & DDSCAPS2_CUBEMAP_NEGATIVEX ) || ! ( caps2 & DDSCAPS2_CUBEMAP_POSITIVEY ) || ! ( caps2 & DDSCAPS2_CUBEMAP_NEGATIVEY ) || ! ( caps2 & DDSCAPS2_CUBEMAP_POSITIVEZ ) || ! ( caps2 & DDSCAPS2_CUBEMAP_NEGATIVEZ ) ) ) {
190
190
 
191
191
  console.error( 'THREE.DDSLoader.parse: Incomplete cubemap faces' );
@@ -195,19 +195,18 @@
195
195
 
196
196
  dds.width = header[ off_width ];
197
197
  dds.height = header[ off_height ];
198
- let dataOffset = header[ off_size ] + 4; // Extract mipmaps buffers
198
+ let dataOffset = header[ off_size ] + 4;
199
199
 
200
- const faces = dds.isCubemap ? 6 : 1;
200
+ // Extract mipmaps buffers
201
201
 
202
+ const faces = dds.isCubemap ? 6 : 1;
202
203
  for ( let face = 0; face < faces; face ++ ) {
203
204
 
204
205
  let width = dds.width;
205
206
  let height = dds.height;
206
-
207
207
  for ( let i = 0; i < dds.mipmapCount; i ++ ) {
208
208
 
209
209
  let byteArray, dataLength;
210
-
211
210
  if ( isRGBAUncompressed ) {
212
211
 
213
212
  byteArray = loadARGBMip( buffer, dataOffset, width, height );
@@ -1,7 +1,6 @@
1
1
  ( function () {
2
2
 
3
3
  const _taskCache = new WeakMap();
4
-
5
4
  class DRACOLoader extends THREE.Loader {
6
5
 
7
6
  constructor( manager ) {
@@ -29,28 +28,24 @@
29
28
  };
30
29
 
31
30
  }
32
-
33
31
  setDecoderPath( path ) {
34
32
 
35
33
  this.decoderPath = path;
36
34
  return this;
37
35
 
38
36
  }
39
-
40
37
  setDecoderConfig( config ) {
41
38
 
42
39
  this.decoderConfig = config;
43
40
  return this;
44
41
 
45
42
  }
46
-
47
43
  setWorkerLimit( workerLimit ) {
48
44
 
49
45
  this.workerLimit = workerLimit;
50
46
  return this;
51
47
 
52
48
  }
53
-
54
49
  load( url, onLoad, onProgress, onError ) {
55
50
 
56
51
  const loader = new THREE.FileLoader( this.manager );
@@ -65,7 +60,6 @@
65
60
  }, onProgress, onError );
66
61
 
67
62
  }
68
-
69
63
  decodeDracoFile( buffer, callback, attributeIDs, attributeTypes ) {
70
64
 
71
65
  const taskConfig = {
@@ -76,16 +70,15 @@
76
70
  return this.decodeGeometry( buffer, taskConfig ).then( callback );
77
71
 
78
72
  }
79
-
80
73
  decodeGeometry( buffer, taskConfig ) {
81
74
 
82
- const taskKey = JSON.stringify( taskConfig ); // Check for an existing task using this buffer. A transferred buffer cannot be transferred
83
- // again from this thread.
75
+ const taskKey = JSON.stringify( taskConfig );
84
76
 
77
+ // Check for an existing task using this buffer. A transferred buffer cannot be transferred
78
+ // again from this thread.
85
79
  if ( _taskCache.has( buffer ) ) {
86
80
 
87
81
  const cachedTask = _taskCache.get( buffer );
88
-
89
82
  if ( cachedTask.key === taskKey ) {
90
83
 
91
84
  return cachedTask.promise;
@@ -100,14 +93,16 @@
100
93
 
101
94
  }
102
95
 
103
- } //
96
+ }
104
97
 
98
+ //
105
99
 
106
100
  let worker;
107
101
  const taskID = this.workerNextTaskID ++;
108
- const taskCost = buffer.byteLength; // Obtain a worker and assign a task, and construct a geometry instance
109
- // when the task completes.
102
+ const taskCost = buffer.byteLength;
110
103
 
104
+ // Obtain a worker and assign a task, and construct a geometry instance
105
+ // when the task completes.
111
106
  const geometryPending = this._getWorker( taskID, taskCost ).then( _worker => {
112
107
 
113
108
  worker = _worker;
@@ -122,37 +117,39 @@
122
117
  id: taskID,
123
118
  taskConfig,
124
119
  buffer
125
- }, [ buffer ] ); // this.debug();
120
+ }, [ buffer ] );
126
121
 
127
- } );
122
+ // this.debug();
128
123
 
129
- } ).then( message => this._createGeometry( message.geometry ) ); // Remove task from the task list.
130
- // Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416)
124
+ } );
131
125
 
126
+ } ).then( message => this._createGeometry( message.geometry ) );
132
127
 
128
+ // Remove task from the task list.
129
+ // Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416)
133
130
  geometryPending.catch( () => true ).then( () => {
134
131
 
135
132
  if ( worker && taskID ) {
136
133
 
137
- this._releaseTask( worker, taskID ); // this.debug();
134
+ this._releaseTask( worker, taskID );
135
+
136
+ // this.debug();
138
137
 
139
138
  }
140
139
 
141
- } ); // Cache the task result.
140
+ } );
142
141
 
142
+ // Cache the task result.
143
143
  _taskCache.set( buffer, {
144
144
  key: taskKey,
145
145
  promise: geometryPending
146
146
  } );
147
-
148
147
  return geometryPending;
149
148
 
150
149
  }
151
-
152
150
  _createGeometry( geometryData ) {
153
151
 
154
152
  const geometry = new THREE.BufferGeometry();
155
-
156
153
  if ( geometryData.index ) {
157
154
 
158
155
  geometry.setIndex( new THREE.BufferAttribute( geometryData.index.array, 1 ) );
@@ -172,7 +169,6 @@
172
169
  return geometry;
173
170
 
174
171
  }
175
-
176
172
  _loadLibrary( url, responseType ) {
177
173
 
178
174
  const loader = new THREE.FileLoader( this.manager );
@@ -186,21 +182,17 @@
186
182
  } );
187
183
 
188
184
  }
189
-
190
185
  preload() {
191
186
 
192
187
  this._initDecoder();
193
-
194
188
  return this;
195
189
 
196
190
  }
197
-
198
191
  _initDecoder() {
199
192
 
200
193
  if ( this.decoderPending ) return this.decoderPending;
201
194
  const useJS = typeof WebAssembly !== 'object' || this.decoderConfig.type === 'js';
202
195
  const librariesPending = [];
203
-
204
196
  if ( useJS ) {
205
197
 
206
198
  librariesPending.push( this._loadLibrary( 'draco_decoder.js', 'text' ) );
@@ -215,7 +207,6 @@
215
207
  this.decoderPending = Promise.all( librariesPending ).then( libraries => {
216
208
 
217
209
  const jsContent = libraries[ 0 ];
218
-
219
210
  if ( ! useJS ) {
220
211
 
221
212
  this.decoderConfig.wasmBinary = libraries[ 1 ];
@@ -230,7 +221,6 @@
230
221
  return this.decoderPending;
231
222
 
232
223
  }
233
-
234
224
  _getWorker( taskID, taskCost ) {
235
225
 
236
226
  return this._initDecoder().then( () => {
@@ -245,23 +235,17 @@
245
235
  type: 'init',
246
236
  decoderConfig: this.decoderConfig
247
237
  } );
248
-
249
238
  worker.onmessage = function ( e ) {
250
239
 
251
240
  const message = e.data;
252
-
253
241
  switch ( message.type ) {
254
242
 
255
243
  case 'decode':
256
244
  worker._callbacks[ message.id ].resolve( message );
257
-
258
245
  break;
259
-
260
246
  case 'error':
261
247
  worker._callbacks[ message.id ].reject( message );
262
-
263
248
  break;
264
-
265
249
  default:
266
250
  console.error( 'THREE.DRACOLoader: Unexpected message, "' + message.type + '"' );
267
251
 
@@ -289,7 +273,6 @@
289
273
  } );
290
274
 
291
275
  }
292
-
293
276
  _releaseTask( worker, taskID ) {
294
277
 
295
278
  worker._taskLoad -= worker._taskCosts[ taskID ];
@@ -297,13 +280,11 @@
297
280
  delete worker._taskCosts[ taskID ];
298
281
 
299
282
  }
300
-
301
283
  debug() {
302
284
 
303
285
  console.log( 'Task load: ', this.workerPool.map( worker => worker._taskLoad ) );
304
286
 
305
287
  }
306
-
307
288
  dispose() {
308
289
 
309
290
  for ( let i = 0; i < this.workerPool.length; ++ i ) {
@@ -318,25 +299,21 @@
318
299
  }
319
300
 
320
301
  }
321
- /* WEB WORKER */
322
302
 
303
+ /* WEB WORKER */
323
304
 
324
305
  function DRACOWorker() {
325
306
 
326
307
  let decoderConfig;
327
308
  let decoderPending;
328
-
329
309
  onmessage = function ( e ) {
330
310
 
331
311
  const message = e.data;
332
-
333
312
  switch ( message.type ) {
334
313
 
335
314
  case 'init':
336
315
  decoderConfig = message.decoderConfig;
337
- decoderPending = new Promise( function ( resolve
338
- /*, reject*/
339
- ) {
316
+ decoderPending = new Promise( function ( resolve /*, reject*/ ) {
340
317
 
341
318
  decoderConfig.onModuleLoaded = function ( draco ) {
342
319
 
@@ -350,8 +327,8 @@
350
327
  DracoDecoderModule( decoderConfig ); // eslint-disable-line no-undef
351
328
 
352
329
  } );
353
- break;
354
330
 
331
+ break;
355
332
  case 'decode':
356
333
  const buffer = message.buffer;
357
334
  const taskConfig = message.taskConfig;
@@ -361,7 +338,6 @@
361
338
  const decoder = new draco.Decoder();
362
339
  const decoderBuffer = new draco.DecoderBuffer();
363
340
  decoderBuffer.Init( new Int8Array( buffer ), buffer.byteLength );
364
-
365
341
  try {
366
342
 
367
343
  const geometry = decodeGeometry( draco, decoder, decoderBuffer, taskConfig );
@@ -403,7 +379,6 @@
403
379
  let dracoGeometry;
404
380
  let decodingStatus;
405
381
  const geometryType = decoder.GetEncodedGeometryType( decoderBuffer );
406
-
407
382
  if ( geometryType === draco.TRIANGULAR_MESH ) {
408
383
 
409
384
  dracoGeometry = new draco.Mesh();
@@ -429,17 +404,19 @@
429
404
  const geometry = {
430
405
  index: null,
431
406
  attributes: []
432
- }; // Gather all vertex attributes.
407
+ };
433
408
 
409
+ // Gather all vertex attributes.
434
410
  for ( const attributeName in attributeIDs ) {
435
411
 
436
412
  const attributeType = self[ attributeTypes[ attributeName ] ];
437
413
  let attribute;
438
- let attributeID; // A Draco file may be created with default vertex attributes, whose attribute IDs
414
+ let attributeID;
415
+
416
+ // A Draco file may be created with default vertex attributes, whose attribute IDs
439
417
  // are mapped 1:1 from their semantic name (POSITION, NORMAL, ...). Alternatively,
440
418
  // a Draco file may contain a custom set of attributes, identified by known unique
441
419
  // IDs. glTF files always do the latter, and `.drc` files typically do the former.
442
-
443
420
  if ( taskConfig.useUniqueIDs ) {
444
421
 
445
422
  attributeID = attributeIDs[ attributeName ];
@@ -455,9 +432,9 @@
455
432
 
456
433
  geometry.attributes.push( decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute ) );
457
434
 
458
- } // Add index.
459
-
435
+ }
460
436
 
437
+ // Add index.
461
438
  if ( geometryType === draco.TRIANGULAR_MESH ) {
462
439
 
463
440
  geometry.index = decodeIndex( draco, decoder, dracoGeometry );
@@ -474,14 +451,10 @@
474
451
  const numFaces = dracoGeometry.num_faces();
475
452
  const numIndices = numFaces * 3;
476
453
  const byteLength = numIndices * 4;
477
-
478
454
  const ptr = draco._malloc( byteLength );
479
-
480
455
  decoder.GetTrianglesUInt32Array( dracoGeometry, byteLength, ptr );
481
456
  const index = new Uint32Array( draco.HEAPF32.buffer, ptr, numIndices ).slice();
482
-
483
457
  draco._free( ptr );
484
-
485
458
  return {
486
459
  array: index,
487
460
  itemSize: 1
@@ -496,14 +469,10 @@
496
469
  const numValues = numPoints * numComponents;
497
470
  const byteLength = numValues * attributeType.BYTES_PER_ELEMENT;
498
471
  const dataType = getDracoDataType( draco, attributeType );
499
-
500
472
  const ptr = draco._malloc( byteLength );
501
-
502
473
  decoder.GetAttributeDataArrayForAllPoints( dracoGeometry, attribute, dataType, byteLength, ptr );
503
474
  const array = new attributeType( draco.HEAPF32.buffer, ptr, numValues ).slice();
504
-
505
475
  draco._free( ptr );
506
-
507
476
  return {
508
477
  name: attributeName,
509
478
  array: array,
@@ -518,22 +487,16 @@
518
487
 
519
488
  case Float32Array:
520
489
  return draco.DT_FLOAT32;
521
-
522
490
  case Int8Array:
523
491
  return draco.DT_INT8;
524
-
525
492
  case Int16Array:
526
493
  return draco.DT_INT16;
527
-
528
494
  case Int32Array:
529
495
  return draco.DT_INT32;
530
-
531
496
  case Uint8Array:
532
497
  return draco.DT_UINT8;
533
-
534
498
  case Uint16Array:
535
499
  return draco.DT_UINT16;
536
-
537
500
  case Uint32Array:
538
501
  return draco.DT_UINT32;
539
502