@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
@@ -5,41 +5,23 @@
5
5
  */
6
6
 
7
7
  const _frustum = new THREE.Frustum();
8
-
9
8
  const _center = new THREE.Vector3();
10
-
11
9
  const _tmpPoint = new THREE.Vector3();
12
-
13
10
  const _vecNear = new THREE.Vector3();
14
-
15
11
  const _vecTopLeft = new THREE.Vector3();
16
-
17
12
  const _vecTopRight = new THREE.Vector3();
18
-
19
13
  const _vecDownRight = new THREE.Vector3();
20
-
21
14
  const _vecDownLeft = new THREE.Vector3();
22
-
23
15
  const _vecFarTopLeft = new THREE.Vector3();
24
-
25
16
  const _vecFarTopRight = new THREE.Vector3();
26
-
27
17
  const _vecFarDownRight = new THREE.Vector3();
28
-
29
18
  const _vecFarDownLeft = new THREE.Vector3();
30
-
31
19
  const _vectemp1 = new THREE.Vector3();
32
-
33
20
  const _vectemp2 = new THREE.Vector3();
34
-
35
21
  const _vectemp3 = new THREE.Vector3();
36
-
37
22
  const _matrix = new THREE.Matrix4();
38
-
39
23
  const _quaternion = new THREE.Quaternion();
40
-
41
24
  const _scale = new THREE.Vector3();
42
-
43
25
  class SelectionBox {
44
26
 
45
27
  constructor( camera, scene, deep = Number.MAX_VALUE ) {
@@ -53,7 +35,6 @@
53
35
  this.deep = deep;
54
36
 
55
37
  }
56
-
57
38
  select( startPoint, endPoint ) {
58
39
 
59
40
  this.startPoint = startPoint || this.startPoint;
@@ -64,11 +45,12 @@
64
45
  return this.collection;
65
46
 
66
47
  }
67
-
68
48
  updateFrustum( startPoint, endPoint ) {
69
49
 
70
50
  startPoint = startPoint || this.startPoint;
71
- endPoint = endPoint || this.endPoint; // Avoid invalid frustum
51
+ endPoint = endPoint || this.endPoint;
52
+
53
+ // Avoid invalid frustum
72
54
 
73
55
  if ( startPoint.x === endPoint.x ) {
74
56
 
@@ -84,58 +66,34 @@
84
66
 
85
67
  this.camera.updateProjectionMatrix();
86
68
  this.camera.updateMatrixWorld();
87
-
88
69
  if ( this.camera.isPerspectiveCamera ) {
89
70
 
90
71
  _tmpPoint.copy( startPoint );
91
-
92
72
  _tmpPoint.x = Math.min( startPoint.x, endPoint.x );
93
73
  _tmpPoint.y = Math.max( startPoint.y, endPoint.y );
94
74
  endPoint.x = Math.max( startPoint.x, endPoint.x );
95
75
  endPoint.y = Math.min( startPoint.y, endPoint.y );
96
-
97
76
  _vecNear.setFromMatrixPosition( this.camera.matrixWorld );
98
-
99
77
  _vecTopLeft.copy( _tmpPoint );
100
-
101
78
  _vecTopRight.set( endPoint.x, _tmpPoint.y, 0 );
102
-
103
79
  _vecDownRight.copy( endPoint );
104
-
105
80
  _vecDownLeft.set( _tmpPoint.x, endPoint.y, 0 );
106
-
107
81
  _vecTopLeft.unproject( this.camera );
108
-
109
82
  _vecTopRight.unproject( this.camera );
110
-
111
83
  _vecDownRight.unproject( this.camera );
112
-
113
84
  _vecDownLeft.unproject( this.camera );
114
-
115
85
  _vectemp1.copy( _vecTopLeft ).sub( _vecNear );
116
-
117
86
  _vectemp2.copy( _vecTopRight ).sub( _vecNear );
118
-
119
87
  _vectemp3.copy( _vecDownRight ).sub( _vecNear );
120
-
121
88
  _vectemp1.normalize();
122
-
123
89
  _vectemp2.normalize();
124
-
125
90
  _vectemp3.normalize();
126
-
127
91
  _vectemp1.multiplyScalar( this.deep );
128
-
129
92
  _vectemp2.multiplyScalar( this.deep );
130
-
131
93
  _vectemp3.multiplyScalar( this.deep );
132
-
133
94
  _vectemp1.add( _vecNear );
134
-
135
95
  _vectemp2.add( _vecNear );
136
-
137
96
  _vectemp3.add( _vecNear );
138
-
139
97
  const planes = _frustum.planes;
140
98
  planes[ 0 ].setFromCoplanarPoints( _vecNear, _vecTopLeft, _vecTopRight );
141
99
  planes[ 1 ].setFromCoplanarPoints( _vecNear, _vecTopRight, _vecDownRight );
@@ -151,39 +109,22 @@
151
109
  const top = Math.max( startPoint.y, endPoint.y );
152
110
  const right = Math.max( startPoint.x, endPoint.x );
153
111
  const down = Math.min( startPoint.y, endPoint.y );
154
-
155
112
  _vecTopLeft.set( left, top, - 1 );
156
-
157
113
  _vecTopRight.set( right, top, - 1 );
158
-
159
114
  _vecDownRight.set( right, down, - 1 );
160
-
161
115
  _vecDownLeft.set( left, down, - 1 );
162
-
163
116
  _vecFarTopLeft.set( left, top, 1 );
164
-
165
117
  _vecFarTopRight.set( right, top, 1 );
166
-
167
118
  _vecFarDownRight.set( right, down, 1 );
168
-
169
119
  _vecFarDownLeft.set( left, down, 1 );
170
-
171
120
  _vecTopLeft.unproject( this.camera );
172
-
173
121
  _vecTopRight.unproject( this.camera );
174
-
175
122
  _vecDownRight.unproject( this.camera );
176
-
177
123
  _vecDownLeft.unproject( this.camera );
178
-
179
124
  _vecFarTopLeft.unproject( this.camera );
180
-
181
125
  _vecFarTopRight.unproject( this.camera );
182
-
183
126
  _vecFarDownRight.unproject( this.camera );
184
-
185
127
  _vecFarDownLeft.unproject( this.camera );
186
-
187
128
  const planes = _frustum.planes;
188
129
  planes[ 0 ].setFromCoplanarPoints( _vecTopLeft, _vecFarTopLeft, _vecFarTopRight );
189
130
  planes[ 1 ].setFromCoplanarPoints( _vecTopRight, _vecFarTopRight, _vecFarDownRight );
@@ -200,7 +141,6 @@
200
141
  }
201
142
 
202
143
  }
203
-
204
144
  searchChildInFrustum( frustum, object ) {
205
145
 
206
146
  if ( object.isMesh || object.isLine || object.isPoints ) {
@@ -208,15 +148,11 @@
208
148
  if ( object.isInstancedMesh ) {
209
149
 
210
150
  this.instances[ object.uuid ] = [];
211
-
212
151
  for ( let instanceId = 0; instanceId < object.count; instanceId ++ ) {
213
152
 
214
153
  object.getMatrixAt( instanceId, _matrix );
215
-
216
154
  _matrix.decompose( _center, _quaternion, _scale );
217
-
218
155
  _center.applyMatrix4( object.matrixWorld );
219
-
220
156
  if ( frustum.containsPoint( _center ) ) {
221
157
 
222
158
  this.instances[ object.uuid ].push( instanceId );
@@ -228,11 +164,8 @@
228
164
  } else {
229
165
 
230
166
  if ( object.geometry.boundingSphere === null ) object.geometry.computeBoundingSphere();
231
-
232
167
  _center.copy( object.geometry.boundingSphere.center );
233
-
234
168
  _center.applyMatrix4( object.matrixWorld );
235
-
236
169
  if ( frustum.containsPoint( _center ) ) {
237
170
 
238
171
  this.collection.push( object );
@@ -12,14 +12,12 @@
12
12
  this.pointTopLeft = new THREE.Vector2();
13
13
  this.pointBottomRight = new THREE.Vector2();
14
14
  this.isDown = false;
15
-
16
15
  this.onPointerDown = function ( event ) {
17
16
 
18
17
  this.isDown = true;
19
18
  this.onSelectStart( event );
20
19
 
21
20
  }.bind( this );
22
-
23
21
  this.onPointerMove = function ( event ) {
24
22
 
25
23
  if ( this.isDown ) {
@@ -29,20 +27,17 @@
29
27
  }
30
28
 
31
29
  }.bind( this );
32
-
33
30
  this.onPointerUp = function () {
34
31
 
35
32
  this.isDown = false;
36
33
  this.onSelectOver();
37
34
 
38
35
  }.bind( this );
39
-
40
36
  this.renderer.domElement.addEventListener( 'pointerdown', this.onPointerDown );
41
37
  this.renderer.domElement.addEventListener( 'pointermove', this.onPointerMove );
42
38
  this.renderer.domElement.addEventListener( 'pointerup', this.onPointerUp );
43
39
 
44
40
  }
45
-
46
41
  dispose() {
47
42
 
48
43
  this.renderer.domElement.removeEventListener( 'pointerdown', this.onPointerDown );
@@ -50,7 +45,6 @@
50
45
  this.renderer.domElement.removeEventListener( 'pointerup', this.onPointerUp );
51
46
 
52
47
  }
53
-
54
48
  onSelectStart( event ) {
55
49
 
56
50
  this.element.style.display = 'none';
@@ -63,7 +57,6 @@
63
57
  this.startPoint.y = event.clientY;
64
58
 
65
59
  }
66
-
67
60
  onSelectMove( event ) {
68
61
 
69
62
  this.element.style.display = 'block';
@@ -77,7 +70,6 @@
77
70
  this.element.style.height = this.pointBottomRight.y - this.pointTopLeft.y + 'px';
78
71
 
79
72
  }
80
-
81
73
  onSelectOver() {
82
74
 
83
75
  this.element.parentElement.removeChild( this.element );
@@ -12,7 +12,6 @@
12
12
  const shBasis = [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ];
13
13
  const sh = new THREE.SphericalHarmonics3();
14
14
  const shCoefficients = sh.coefficients;
15
-
16
15
  for ( let faceIndex = 0; faceIndex < 6; faceIndex ++ ) {
17
16
 
18
17
  const image = cubeTexture.image[ faceIndex ];
@@ -28,56 +27,57 @@
28
27
  const imageWidth = imageData.width; // assumed to be square
29
28
 
30
29
  const pixelSize = 2 / imageWidth;
31
-
32
30
  for ( let i = 0, il = data.length; i < il; i += 4 ) {
33
31
 
34
32
  // RGBA assumed
33
+
35
34
  // pixel color
36
- color.setRGB( data[ i ] / 255, data[ i + 1 ] / 255, data[ i + 2 ] / 255 ); // convert to linear color space
35
+ color.setRGB( data[ i ] / 255, data[ i + 1 ] / 255, data[ i + 2 ] / 255 );
37
36
 
38
- convertColorToLinear( color, cubeTexture.encoding ); // pixel coordinate on unit cube
37
+ // convert to linear color space
38
+ convertColorToLinear( color, cubeTexture.encoding );
39
+
40
+ // pixel coordinate on unit cube
39
41
 
40
42
  const pixelIndex = i / 4;
41
43
  const col = - 1 + ( pixelIndex % imageWidth + 0.5 ) * pixelSize;
42
44
  const row = 1 - ( Math.floor( pixelIndex / imageWidth ) + 0.5 ) * pixelSize;
43
-
44
45
  switch ( faceIndex ) {
45
46
 
46
47
  case 0:
47
48
  coord.set( - 1, row, - col );
48
49
  break;
49
-
50
50
  case 1:
51
51
  coord.set( 1, row, col );
52
52
  break;
53
-
54
53
  case 2:
55
54
  coord.set( - col, 1, - row );
56
55
  break;
57
-
58
56
  case 3:
59
57
  coord.set( - col, - 1, row );
60
58
  break;
61
-
62
59
  case 4:
63
60
  coord.set( - col, row, 1 );
64
61
  break;
65
-
66
62
  case 5:
67
63
  coord.set( col, row, - 1 );
68
64
  break;
69
65
 
70
- } // weight assigned to this pixel
66
+ }
71
67
 
68
+ // weight assigned to this pixel
72
69
 
73
70
  const lengthSq = coord.lengthSq();
74
71
  const weight = 4 / ( Math.sqrt( lengthSq ) * lengthSq );
75
- totalWeight += weight; // direction vector to this pixel
72
+ totalWeight += weight;
76
73
 
77
- dir.copy( coord ).normalize(); // evaluate SH basis functions in direction dir
74
+ // direction vector to this pixel
75
+ dir.copy( coord ).normalize();
78
76
 
79
- THREE.SphericalHarmonics3.getBasisAt( dir, shBasis ); // accummuulate
77
+ // evaluate SH basis functions in direction dir
78
+ THREE.SphericalHarmonics3.getBasisAt( dir, shBasis );
80
79
 
80
+ // accummuulate
81
81
  for ( let j = 0; j < 9; j ++ ) {
82
82
 
83
83
  shCoefficients[ j ].x += shBasis[ j ] * color.r * weight;
@@ -88,11 +88,10 @@
88
88
 
89
89
  }
90
90
 
91
- } // normalize
92
-
91
+ }
93
92
 
93
+ // normalize
94
94
  const norm = 4 * Math.PI / totalWeight;
95
-
96
95
  for ( let j = 0; j < 9; j ++ ) {
97
96
 
98
97
  shCoefficients[ j ].x *= norm;
@@ -104,7 +103,6 @@
104
103
  return new THREE.LightProbe( sh );
105
104
 
106
105
  }
107
-
108
106
  static fromCubeRenderTarget( renderer, cubeRenderTarget ) {
109
107
 
110
108
  // The renderTarget must be set to RGBA in order to make readRenderTargetPixels works
@@ -115,64 +113,63 @@
115
113
  const shBasis = [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ];
116
114
  const sh = new THREE.SphericalHarmonics3();
117
115
  const shCoefficients = sh.coefficients;
118
-
119
116
  for ( let faceIndex = 0; faceIndex < 6; faceIndex ++ ) {
120
117
 
121
118
  const imageWidth = cubeRenderTarget.width; // assumed to be square
122
-
123
119
  const data = new Uint8Array( imageWidth * imageWidth * 4 );
124
120
  renderer.readRenderTargetPixels( cubeRenderTarget, 0, 0, imageWidth, imageWidth, data, faceIndex );
125
121
  const pixelSize = 2 / imageWidth;
126
-
127
122
  for ( let i = 0, il = data.length; i < il; i += 4 ) {
128
123
 
129
124
  // RGBA assumed
125
+
130
126
  // pixel color
131
- color.setRGB( data[ i ] / 255, data[ i + 1 ] / 255, data[ i + 2 ] / 255 ); // convert to linear color space
127
+ color.setRGB( data[ i ] / 255, data[ i + 1 ] / 255, data[ i + 2 ] / 255 );
132
128
 
133
- convertColorToLinear( color, cubeRenderTarget.texture.encoding ); // pixel coordinate on unit cube
129
+ // convert to linear color space
130
+ convertColorToLinear( color, cubeRenderTarget.texture.encoding );
131
+
132
+ // pixel coordinate on unit cube
134
133
 
135
134
  const pixelIndex = i / 4;
136
135
  const col = - 1 + ( pixelIndex % imageWidth + 0.5 ) * pixelSize;
137
136
  const row = 1 - ( Math.floor( pixelIndex / imageWidth ) + 0.5 ) * pixelSize;
138
-
139
137
  switch ( faceIndex ) {
140
138
 
141
139
  case 0:
142
140
  coord.set( 1, row, - col );
143
141
  break;
144
-
145
142
  case 1:
146
143
  coord.set( - 1, row, col );
147
144
  break;
148
-
149
145
  case 2:
150
146
  coord.set( col, 1, - row );
151
147
  break;
152
-
153
148
  case 3:
154
149
  coord.set( col, - 1, row );
155
150
  break;
156
-
157
151
  case 4:
158
152
  coord.set( col, row, 1 );
159
153
  break;
160
-
161
154
  case 5:
162
155
  coord.set( - col, row, - 1 );
163
156
  break;
164
157
 
165
- } // weight assigned to this pixel
158
+ }
166
159
 
160
+ // weight assigned to this pixel
167
161
 
168
162
  const lengthSq = coord.lengthSq();
169
163
  const weight = 4 / ( Math.sqrt( lengthSq ) * lengthSq );
170
- totalWeight += weight; // direction vector to this pixel
164
+ totalWeight += weight;
171
165
 
172
- dir.copy( coord ).normalize(); // evaluate SH basis functions in direction dir
166
+ // direction vector to this pixel
167
+ dir.copy( coord ).normalize();
173
168
 
174
- THREE.SphericalHarmonics3.getBasisAt( dir, shBasis ); // accummuulate
169
+ // evaluate SH basis functions in direction dir
170
+ THREE.SphericalHarmonics3.getBasisAt( dir, shBasis );
175
171
 
172
+ // accummuulate
176
173
  for ( let j = 0; j < 9; j ++ ) {
177
174
 
178
175
  shCoefficients[ j ].x += shBasis[ j ] * color.r * weight;
@@ -183,11 +180,10 @@
183
180
 
184
181
  }
185
182
 
186
- } // normalize
187
-
183
+ }
188
184
 
185
+ // normalize
189
186
  const norm = 4 * Math.PI / totalWeight;
190
-
191
187
  for ( let j = 0; j < 9; j ++ ) {
192
188
 
193
189
  shCoefficients[ j ].x *= norm;
@@ -201,7 +197,6 @@
201
197
  }
202
198
 
203
199
  }
204
-
205
200
  function convertColorToLinear( color, encoding ) {
206
201
 
207
202
  switch ( encoding ) {
@@ -209,10 +204,8 @@
209
204
  case THREE.sRGBEncoding:
210
205
  color.convertSRGBToLinear();
211
206
  break;
212
-
213
207
  case THREE.LinearEncoding:
214
208
  break;
215
-
216
209
  default:
217
210
  console.warn( 'WARNING: LightProbeGenerator convertColorToLinear() encountered an unsupported encoding.' );
218
211
  break;