@needle-tools/three 0.145.4 → 0.146.2

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 (393) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +32586 -35951
  3. package/build/three.js +32600 -35965
  4. package/build/three.min.js +6 -7
  5. package/build/three.module.js +1547 -1154
  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 +75 -19
  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/WebGLLights.js +0 -4
  381. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  382. package/src/renderers/webgl/WebGLShadowMap.js +3 -1
  383. package/src/renderers/webgl/WebGLState.js +31 -1
  384. package/src/renderers/webgl/WebGLTextures.js +71 -18
  385. package/src/renderers/webgl/WebGLUniforms.js +116 -20
  386. package/src/renderers/webgl/WebGLUtils.js +1 -1
  387. package/src/renderers/webxr/WebXRController.js +46 -13
  388. package/src/renderers/webxr/WebXRManager.js +85 -3
  389. package/src/scenes/Scene.js +8 -0
  390. package/src/textures/CompressedArrayTexture.js +18 -0
  391. package/examples/js/libs/lottie_canvas.js +0 -12751
  392. package/examples/js/shaders/PixelShader.js +0 -51
  393. package/examples/jsm/shaders/PixelShader.js +0 -44
@@ -11,8 +11,9 @@
11
11
 
12
12
  }
13
13
 
14
- } //
14
+ }
15
15
 
16
+ //
16
17
 
17
18
  class RenderableFace {
18
19
 
@@ -33,8 +34,9 @@
33
34
 
34
35
  }
35
36
 
36
- } //
37
+ }
37
38
 
39
+ //
38
40
 
39
41
  class RenderableVertex {
40
42
 
@@ -46,7 +48,6 @@
46
48
  this.visible = true;
47
49
 
48
50
  }
49
-
50
51
  copy( vertex ) {
51
52
 
52
53
  this.positionWorld.copy( vertex.positionWorld );
@@ -54,8 +55,9 @@
54
55
 
55
56
  }
56
57
 
57
- } //
58
+ }
58
59
 
60
+ //
59
61
 
60
62
  class RenderableLine {
61
63
 
@@ -71,8 +73,9 @@
71
73
 
72
74
  }
73
75
 
74
- } //
76
+ }
75
77
 
78
+ //
76
79
 
77
80
  class RenderableSprite {
78
81
 
@@ -90,8 +93,9 @@
90
93
 
91
94
  }
92
95
 
93
- } //
96
+ }
94
97
 
98
+ //
95
99
 
96
100
  class Projector {
97
101
 
@@ -113,7 +117,6 @@
113
117
  _spriteCount,
114
118
  _spritePoolLength = 0,
115
119
  _modelMatrix;
116
-
117
120
  const _renderData = {
118
121
  objects: [],
119
122
  lights: [],
@@ -132,8 +135,9 @@
132
135
  _vertexPool = [],
133
136
  _facePool = [],
134
137
  _linePool = [],
135
- _spritePool = []; //
138
+ _spritePool = [];
136
139
 
140
+ //
137
141
 
138
142
  function RenderList() {
139
143
 
@@ -142,7 +146,6 @@
142
146
  const uvs = [];
143
147
  let object = null;
144
148
  const normalMatrix = new THREE.Matrix3();
145
-
146
149
  function setObject( value ) {
147
150
 
148
151
  object = value;
@@ -171,9 +174,7 @@
171
174
  function pushVertex( x, y, z ) {
172
175
 
173
176
  _vertex = getNextVertexInPool();
174
-
175
177
  _vertex.position.set( x, y, z );
176
-
177
178
  projectVertex( _vertex );
178
179
 
179
180
  }
@@ -215,11 +216,12 @@
215
216
  function pushLine( a, b ) {
216
217
 
217
218
  const v1 = _vertexPool[ a ];
218
- const v2 = _vertexPool[ b ]; // Clip
219
+ const v2 = _vertexPool[ b ];
220
+
221
+ // Clip
219
222
 
220
223
  v1.positionScreen.copy( v1.position ).applyMatrix4( _modelViewProjectionMatrix );
221
224
  v2.positionScreen.copy( v2.position ).applyMatrix4( _modelViewProjectionMatrix );
222
-
223
225
  if ( clipLine( v1.positionScreen, v2.positionScreen ) === true ) {
224
226
 
225
227
  // Perform the perspective divide
@@ -227,19 +229,14 @@
227
229
  v2.positionScreen.multiplyScalar( 1 / v2.positionScreen.w );
228
230
  _line = getNextLineInPool();
229
231
  _line.id = object.id;
230
-
231
232
  _line.v1.copy( v1 );
232
-
233
233
  _line.v2.copy( v2 );
234
-
235
234
  _line.z = Math.max( v1.positionScreen.z, v2.positionScreen.z );
236
235
  _line.renderOrder = object.renderOrder;
237
236
  _line.material = object.material;
238
-
239
237
  if ( object.material.vertexColors ) {
240
238
 
241
239
  _line.vertexColors[ 0 ].fromArray( colors, a * 3 );
242
-
243
240
  _line.vertexColors[ 1 ].fromArray( colors, b * 3 );
244
241
 
245
242
  }
@@ -256,31 +253,22 @@
256
253
  const v2 = _vertexPool[ b ];
257
254
  const v3 = _vertexPool[ c ];
258
255
  if ( checkTriangleVisibility( v1, v2, v3 ) === false ) return;
259
-
260
256
  if ( material.side === THREE.DoubleSide || checkBackfaceCulling( v1, v2, v3 ) === true ) {
261
257
 
262
258
  _face = getNextFaceInPool();
263
259
  _face.id = object.id;
264
-
265
260
  _face.v1.copy( v1 );
266
-
267
261
  _face.v2.copy( v2 );
268
-
269
262
  _face.v3.copy( v3 );
270
-
271
263
  _face.z = ( v1.positionScreen.z + v2.positionScreen.z + v3.positionScreen.z ) / 3;
272
- _face.renderOrder = object.renderOrder; // face normal
264
+ _face.renderOrder = object.renderOrder;
273
265
 
266
+ // face normal
274
267
  _vector3.subVectors( v3.position, v2.position );
275
-
276
268
  _vector4.subVectors( v1.position, v2.position );
277
-
278
269
  _vector3.cross( _vector4 );
279
-
280
270
  _face.normalModel.copy( _vector3 );
281
-
282
271
  _face.normalModel.applyMatrix3( normalMatrix ).normalize();
283
-
284
272
  for ( let i = 0; i < 3; i ++ ) {
285
273
 
286
274
  const normal = _face.vertexNormalsModel[ i ];
@@ -293,7 +281,6 @@
293
281
 
294
282
  _face.vertexNormalsLength = 3;
295
283
  _face.material = material;
296
-
297
284
  if ( material.vertexColors ) {
298
285
 
299
286
  _face.color.fromArray( colors, a * 3 );
@@ -322,11 +309,9 @@
322
309
  }
323
310
 
324
311
  const renderList = new RenderList();
325
-
326
312
  function projectObject( object ) {
327
313
 
328
314
  if ( object.visible === false ) return;
329
-
330
315
  if ( object.isLight ) {
331
316
 
332
317
  _renderData.lights.push( object );
@@ -346,7 +331,6 @@
346
331
  }
347
332
 
348
333
  const children = object.children;
349
-
350
334
  for ( let i = 0, l = children.length; i < l; i ++ ) {
351
335
 
352
336
  projectObject( children[ i ] );
@@ -360,14 +344,10 @@
360
344
  _object = getNextObjectInPool();
361
345
  _object.id = object.id;
362
346
  _object.object = object;
363
-
364
347
  _vector3.setFromMatrixPosition( object.matrixWorld );
365
-
366
348
  _vector3.applyMatrix4( _viewProjectionMatrix );
367
-
368
349
  _object.z = _vector3.z;
369
350
  _object.renderOrder = object.renderOrder;
370
-
371
351
  _renderData.objects.push( _object );
372
352
 
373
353
  }
@@ -380,28 +360,25 @@
380
360
  _renderData.elements.length = 0;
381
361
  if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
382
362
  if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
383
-
384
363
  _viewMatrix.copy( camera.matrixWorldInverse );
385
-
386
364
  _viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, _viewMatrix );
365
+ _frustum.setFromProjectionMatrix( _viewProjectionMatrix );
387
366
 
388
- _frustum.setFromProjectionMatrix( _viewProjectionMatrix ); //
389
-
367
+ //
390
368
 
391
369
  _objectCount = 0;
392
370
  _renderData.objects.length = 0;
393
371
  _renderData.lights.length = 0;
394
372
  projectObject( scene );
395
-
396
373
  if ( sortObjects === true ) {
397
374
 
398
375
  _renderData.objects.sort( painterSort );
399
376
 
400
- } //
377
+ }
401
378
 
379
+ //
402
380
 
403
381
  const objects = _renderData.objects;
404
-
405
382
  for ( let o = 0, ol = objects.length; o < ol; o ++ ) {
406
383
 
407
384
  const object = objects[ o ].object;
@@ -409,7 +386,6 @@
409
386
  renderList.setObject( object );
410
387
  _modelMatrix = object.matrixWorld;
411
388
  _vertexCount = 0;
412
-
413
389
  if ( object.isMesh ) {
414
390
 
415
391
  let material = object.material;
@@ -418,25 +394,21 @@
418
394
  const groups = geometry.groups;
419
395
  if ( attributes.position === undefined ) continue;
420
396
  const positions = attributes.position.array;
421
-
422
397
  for ( let i = 0, l = positions.length; i < l; i += 3 ) {
423
398
 
424
399
  let x = positions[ i ];
425
400
  let y = positions[ i + 1 ];
426
401
  let z = positions[ i + 2 ];
427
402
  const morphTargets = geometry.morphAttributes.position;
428
-
429
403
  if ( morphTargets !== undefined ) {
430
404
 
431
405
  const morphTargetsRelative = geometry.morphTargetsRelative;
432
406
  const morphInfluences = object.morphTargetInfluences;
433
-
434
407
  for ( let t = 0, tl = morphTargets.length; t < tl; t ++ ) {
435
408
 
436
409
  const influence = morphInfluences[ t ];
437
410
  if ( influence === 0 ) continue;
438
411
  const target = morphTargets[ t ];
439
-
440
412
  if ( morphTargetsRelative ) {
441
413
 
442
414
  x += target.getX( i / 3 ) * influence;
@@ -462,7 +434,6 @@
462
434
  if ( attributes.normal !== undefined ) {
463
435
 
464
436
  const normals = attributes.normal.array;
465
-
466
437
  for ( let i = 0, l = normals.length; i < l; i += 3 ) {
467
438
 
468
439
  renderList.pushNormal( normals[ i ], normals[ i + 1 ], normals[ i + 2 ] );
@@ -474,7 +445,6 @@
474
445
  if ( attributes.color !== undefined ) {
475
446
 
476
447
  const colors = attributes.color.array;
477
-
478
448
  for ( let i = 0, l = colors.length; i < l; i += 3 ) {
479
449
 
480
450
  renderList.pushColor( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] );
@@ -486,7 +456,6 @@
486
456
  if ( attributes.uv !== undefined ) {
487
457
 
488
458
  const uvs = attributes.uv.array;
489
-
490
459
  for ( let i = 0, l = uvs.length; i < l; i += 2 ) {
491
460
 
492
461
  renderList.pushUv( uvs[ i ], uvs[ i + 1 ] );
@@ -498,7 +467,6 @@
498
467
  if ( geometry.index !== null ) {
499
468
 
500
469
  const indices = geometry.index.array;
501
-
502
470
  if ( groups.length > 0 ) {
503
471
 
504
472
  for ( let g = 0; g < groups.length; g ++ ) {
@@ -506,7 +474,6 @@
506
474
  const group = groups[ g ];
507
475
  material = isMultiMaterial === true ? object.material[ group.materialIndex ] : object.material;
508
476
  if ( material === undefined ) continue;
509
-
510
477
  for ( let i = group.start, l = group.start + group.count; i < l; i += 3 ) {
511
478
 
512
479
  renderList.pushTriangle( indices[ i ], indices[ i + 1 ], indices[ i + 2 ], material );
@@ -534,7 +501,6 @@
534
501
  const group = groups[ g ];
535
502
  material = isMultiMaterial === true ? object.material[ group.materialIndex ] : object.material;
536
503
  if ( material === undefined ) continue;
537
-
538
504
  for ( let i = group.start, l = group.start + group.count; i < l; i += 3 ) {
539
505
 
540
506
  renderList.pushTriangle( i, i + 1, i + 2, material );
@@ -558,13 +524,10 @@
558
524
  } else if ( object.isLine ) {
559
525
 
560
526
  _modelViewProjectionMatrix.multiplyMatrices( _viewProjectionMatrix, _modelMatrix );
561
-
562
527
  const attributes = geometry.attributes;
563
-
564
528
  if ( attributes.position !== undefined ) {
565
529
 
566
530
  const positions = attributes.position.array;
567
-
568
531
  for ( let i = 0, l = positions.length; i < l; i += 3 ) {
569
532
 
570
533
  renderList.pushVertex( positions[ i ], positions[ i + 1 ], positions[ i + 2 ] );
@@ -574,7 +537,6 @@
574
537
  if ( attributes.color !== undefined ) {
575
538
 
576
539
  const colors = attributes.color.array;
577
-
578
540
  for ( let i = 0, l = colors.length; i < l; i += 3 ) {
579
541
 
580
542
  renderList.pushColor( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] );
@@ -586,7 +548,6 @@
586
548
  if ( geometry.index !== null ) {
587
549
 
588
550
  const indices = geometry.index.array;
589
-
590
551
  for ( let i = 0, l = indices.length; i < l; i += 2 ) {
591
552
 
592
553
  renderList.pushLine( indices[ i ], indices[ i + 1 ] );
@@ -596,7 +557,6 @@
596
557
  } else {
597
558
 
598
559
  const step = object.isLineSegments ? 2 : 1;
599
-
600
560
  for ( let i = 0, l = positions.length / 3 - 1; i < l; i += step ) {
601
561
 
602
562
  renderList.pushLine( i, i + 1 );
@@ -610,19 +570,14 @@
610
570
  } else if ( object.isPoints ) {
611
571
 
612
572
  _modelViewProjectionMatrix.multiplyMatrices( _viewProjectionMatrix, _modelMatrix );
613
-
614
573
  const attributes = geometry.attributes;
615
-
616
574
  if ( attributes.position !== undefined ) {
617
575
 
618
576
  const positions = attributes.position.array;
619
-
620
577
  for ( let i = 0, l = positions.length; i < l; i += 3 ) {
621
578
 
622
579
  _vector4.set( positions[ i ], positions[ i + 1 ], positions[ i + 2 ], 1 );
623
-
624
580
  _vector4.applyMatrix4( _modelViewProjectionMatrix );
625
-
626
581
  pushPoint( _vector4, object, camera );
627
582
 
628
583
  }
@@ -632,11 +587,8 @@
632
587
  } else if ( object.isSprite ) {
633
588
 
634
589
  object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );
635
-
636
590
  _vector4.set( _modelMatrix.elements[ 12 ], _modelMatrix.elements[ 13 ], _modelMatrix.elements[ 14 ], 1 );
637
-
638
591
  _vector4.applyMatrix4( _viewProjectionMatrix );
639
-
640
592
  pushPoint( _vector4, object, camera );
641
593
 
642
594
  }
@@ -657,7 +609,6 @@
657
609
 
658
610
  const invW = 1 / _vector4.w;
659
611
  _vector4.z *= invW;
660
-
661
612
  if ( _vector4.z >= - 1 && _vector4.z <= 1 ) {
662
613
 
663
614
  _sprite = getNextSpriteInPool();
@@ -671,22 +622,20 @@
671
622
  _sprite.scale.x = object.scale.x * Math.abs( _sprite.x - ( _vector4.x + camera.projectionMatrix.elements[ 0 ] ) / ( _vector4.w + camera.projectionMatrix.elements[ 12 ] ) );
672
623
  _sprite.scale.y = object.scale.y * Math.abs( _sprite.y - ( _vector4.y + camera.projectionMatrix.elements[ 5 ] ) / ( _vector4.w + camera.projectionMatrix.elements[ 13 ] ) );
673
624
  _sprite.material = object.material;
674
-
675
625
  _renderData.elements.push( _sprite );
676
626
 
677
627
  }
678
628
 
679
- } // Pools
629
+ }
680
630
 
631
+ // Pools
681
632
 
682
633
  function getNextObjectInPool() {
683
634
 
684
635
  if ( _objectCount === _objectPoolLength ) {
685
636
 
686
637
  const object = new RenderableObject();
687
-
688
638
  _objectPool.push( object );
689
-
690
639
  _objectPoolLength ++;
691
640
  _objectCount ++;
692
641
  return object;
@@ -702,9 +651,7 @@
702
651
  if ( _vertexCount === _vertexPoolLength ) {
703
652
 
704
653
  const vertex = new RenderableVertex();
705
-
706
654
  _vertexPool.push( vertex );
707
-
708
655
  _vertexPoolLength ++;
709
656
  _vertexCount ++;
710
657
  return vertex;
@@ -720,9 +667,7 @@
720
667
  if ( _faceCount === _facePoolLength ) {
721
668
 
722
669
  const face = new RenderableFace();
723
-
724
670
  _facePool.push( face );
725
-
726
671
  _facePoolLength ++;
727
672
  _faceCount ++;
728
673
  return face;
@@ -738,9 +683,7 @@
738
683
  if ( _lineCount === _linePoolLength ) {
739
684
 
740
685
  const line = new RenderableLine();
741
-
742
686
  _linePool.push( line );
743
-
744
687
  _linePoolLength ++;
745
688
  _lineCount ++;
746
689
  return line;
@@ -756,9 +699,7 @@
756
699
  if ( _spriteCount === _spritePoolLength ) {
757
700
 
758
701
  const sprite = new RenderableSprite();
759
-
760
702
  _spritePool.push( sprite );
761
-
762
703
  _spritePoolLength ++;
763
704
  _spriteCount ++;
764
705
  return sprite;
@@ -767,8 +708,9 @@
767
708
 
768
709
  return _spritePool[ _spriteCount ++ ];
769
710
 
770
- } //
711
+ }
771
712
 
713
+ //
772
714
 
773
715
  function painterSort( a, b ) {
774
716
 
@@ -795,14 +737,15 @@
795
737
  function clipLine( s1, s2 ) {
796
738
 
797
739
  let alpha1 = 0,
798
- alpha2 = 1; // Calculate the boundary coordinate of each vertex for the near and far clip planes,
740
+ alpha2 = 1;
741
+
742
+ // Calculate the boundary coordinate of each vertex for the near and far clip planes,
799
743
  // Z = -1 and Z = +1, respectively.
800
744
 
801
745
  const bc1near = s1.z + s1.w,
802
746
  bc2near = s2.z + s2.w,
803
747
  bc1far = - s1.z + s1.w,
804
748
  bc2far = - s2.z + s2.w;
805
-
806
749
  if ( bc1near >= 0 && bc2near >= 0 && bc1far >= 0 && bc2far >= 0 ) {
807
750
 
808
751
  // Both vertices lie entirely within all clip planes.
@@ -816,6 +759,7 @@
816
759
  } else {
817
760
 
818
761
  // The line segment spans at least one clip plane.
762
+
819
763
  if ( bc1near < 0 ) {
820
764
 
821
765
  // v1 lies outside the near plane, v2 inside