@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
@@ -9,7 +9,6 @@
9
9
  * Reference:
10
10
  * - https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/Bloom/
11
11
  */
12
-
13
12
  class UnrealBloomPass extends THREE.Pass {
14
13
 
15
14
  constructor( resolution, strength, radius, threshold ) {
@@ -18,10 +17,12 @@
18
17
  this.strength = strength !== undefined ? strength : 1;
19
18
  this.radius = radius;
20
19
  this.threshold = threshold;
21
- this.resolution = resolution !== undefined ? new THREE.Vector2( resolution.x, resolution.y ) : new THREE.Vector2( 256, 256 ); // create color only once here, reuse it later inside the render function
20
+ this.resolution = resolution !== undefined ? new THREE.Vector2( resolution.x, resolution.y ) : new THREE.Vector2( 256, 256 );
22
21
 
23
- this.clearColor = new THREE.Color( 0, 0, 0 ); // render targets
22
+ // create color only once here, reuse it later inside the render function
23
+ this.clearColor = new THREE.Color( 0, 0, 0 );
24
24
 
25
+ // render targets
25
26
  this.renderTargetsHorizontal = [];
26
27
  this.renderTargetsVertical = [];
27
28
  this.nMips = 5;
@@ -30,7 +31,6 @@
30
31
  this.renderTargetBright = new THREE.WebGLRenderTarget( resx, resy );
31
32
  this.renderTargetBright.texture.name = 'UnrealBloomPass.bright';
32
33
  this.renderTargetBright.texture.generateMipmaps = false;
33
-
34
34
  for ( let i = 0; i < this.nMips; i ++ ) {
35
35
 
36
36
  const renderTargetHorizonal = new THREE.WebGLRenderTarget( resx, resy );
@@ -44,8 +44,9 @@
44
44
  resx = Math.round( resx / 2 );
45
45
  resy = Math.round( resy / 2 );
46
46
 
47
- } // luminosity high pass material
47
+ }
48
48
 
49
+ // luminosity high pass material
49
50
 
50
51
  if ( THREE.LuminosityHighPassShader === undefined ) console.error( 'THREE.UnrealBloomPass relies on THREE.LuminosityHighPassShader' );
51
52
  const highPassShader = THREE.LuminosityHighPassShader;
@@ -57,13 +58,13 @@
57
58
  vertexShader: highPassShader.vertexShader,
58
59
  fragmentShader: highPassShader.fragmentShader,
59
60
  defines: {}
60
- } ); // Gaussian Blur Materials
61
+ } );
61
62
 
63
+ // Gaussian Blur Materials
62
64
  this.separableBlurMaterials = [];
63
65
  const kernelSizeArray = [ 3, 5, 7, 9, 11 ];
64
66
  resx = Math.round( this.resolution.x / 2 );
65
67
  resy = Math.round( this.resolution.y / 2 );
66
-
67
68
  for ( let i = 0; i < this.nMips; i ++ ) {
68
69
 
69
70
  this.separableBlurMaterials.push( this.getSeperableBlurMaterial( kernelSizeArray[ i ] ) );
@@ -71,9 +72,9 @@
71
72
  resx = Math.round( resx / 2 );
72
73
  resy = Math.round( resy / 2 );
73
74
 
74
- } // Composite material
75
-
75
+ }
76
76
 
77
+ // Composite material
77
78
  this.compositeMaterial = this.getCompositeMaterial( this.nMips );
78
79
  this.compositeMaterial.uniforms[ 'blurTexture1' ].value = this.renderTargetsVertical[ 0 ].texture;
79
80
  this.compositeMaterial.uniforms[ 'blurTexture2' ].value = this.renderTargetsVertical[ 1 ].texture;
@@ -86,8 +87,9 @@
86
87
  const bloomFactors = [ 1.0, 0.8, 0.6, 0.4, 0.2 ];
87
88
  this.compositeMaterial.uniforms[ 'bloomFactors' ].value = bloomFactors;
88
89
  this.bloomTintColors = [ new THREE.Vector3( 1, 1, 1 ), new THREE.Vector3( 1, 1, 1 ), new THREE.Vector3( 1, 1, 1 ), new THREE.Vector3( 1, 1, 1 ), new THREE.Vector3( 1, 1, 1 ) ];
89
- this.compositeMaterial.uniforms[ 'bloomTintColors' ].value = this.bloomTintColors; // copy material
90
+ this.compositeMaterial.uniforms[ 'bloomTintColors' ].value = this.bloomTintColors;
90
91
 
92
+ // copy material
91
93
  if ( THREE.CopyShader === undefined ) {
92
94
 
93
95
  console.error( 'THREE.UnrealBloomPass relies on THREE.CopyShader' );
@@ -114,7 +116,6 @@
114
116
  this.fsQuad = new THREE.FullScreenQuad( null );
115
117
 
116
118
  }
117
-
118
119
  dispose() {
119
120
 
120
121
  for ( let i = 0; i < this.renderTargetsHorizontal.length; i ++ ) {
@@ -131,14 +132,28 @@
131
132
 
132
133
  this.renderTargetBright.dispose();
133
134
 
134
- }
135
+ //
136
+
137
+ for ( let i = 0; i < this.separableBlurMaterials.length; i ++ ) {
138
+
139
+ this.separableBlurMaterials[ i ].dispose();
140
+
141
+ }
142
+
143
+ this.compositeMaterial.dispose();
144
+ this.materialCopy.dispose();
145
+ this.basic.dispose();
146
+
147
+ //
135
148
 
149
+ this.fsQuad.dispose();
150
+
151
+ }
136
152
  setSize( width, height ) {
137
153
 
138
154
  let resx = Math.round( width / 2 );
139
155
  let resy = Math.round( height / 2 );
140
156
  this.renderTargetBright.setSize( resx, resy );
141
-
142
157
  for ( let i = 0; i < this.nMips; i ++ ) {
143
158
 
144
159
  this.renderTargetsHorizontal[ i ].setSize( resx, resy );
@@ -150,7 +165,6 @@
150
165
  }
151
166
 
152
167
  }
153
-
154
168
  render( renderer, writeBuffer, readBuffer, deltaTime, maskActive ) {
155
169
 
156
170
  renderer.getClearColor( this._oldClearColor );
@@ -158,7 +172,9 @@
158
172
  const oldAutoClear = renderer.autoClear;
159
173
  renderer.autoClear = false;
160
174
  renderer.setClearColor( this.clearColor, 0 );
161
- if ( maskActive ) renderer.state.buffers.stencil.setTest( false ); // Render input to screen
175
+ if ( maskActive ) renderer.state.buffers.stencil.setTest( false );
176
+
177
+ // Render input to screen
162
178
 
163
179
  if ( this.renderToScreen ) {
164
180
 
@@ -168,18 +184,20 @@
168
184
  renderer.clear();
169
185
  this.fsQuad.render( renderer );
170
186
 
171
- } // 1. Extract Bright Areas
187
+ }
172
188
 
189
+ // 1. Extract Bright Areas
173
190
 
174
191
  this.highPassUniforms[ 'tDiffuse' ].value = readBuffer.texture;
175
192
  this.highPassUniforms[ 'luminosityThreshold' ].value = this.threshold;
176
193
  this.fsQuad.material = this.materialHighPassFilter;
177
194
  renderer.setRenderTarget( this.renderTargetBright );
178
195
  renderer.clear();
179
- this.fsQuad.render( renderer ); // 2. Blur All the mips progressively
196
+ this.fsQuad.render( renderer );
180
197
 
181
- let inputRenderTarget = this.renderTargetBright;
198
+ // 2. Blur All the mips progressively
182
199
 
200
+ let inputRenderTarget = this.renderTargetBright;
183
201
  for ( let i = 0; i < this.nMips; i ++ ) {
184
202
 
185
203
  this.fsQuad.material = this.separableBlurMaterials[ i ];
@@ -195,8 +213,9 @@
195
213
  this.fsQuad.render( renderer );
196
214
  inputRenderTarget = this.renderTargetsVertical[ i ];
197
215
 
198
- } // Composite All the mips
216
+ }
199
217
 
218
+ // Composite All the mips
200
219
 
201
220
  this.fsQuad.material = this.compositeMaterial;
202
221
  this.compositeMaterial.uniforms[ 'bloomStrength' ].value = this.strength;
@@ -204,12 +223,13 @@
204
223
  this.compositeMaterial.uniforms[ 'bloomTintColors' ].value = this.bloomTintColors;
205
224
  renderer.setRenderTarget( this.renderTargetsHorizontal[ 0 ] );
206
225
  renderer.clear();
207
- this.fsQuad.render( renderer ); // Blend it additively over the input texture
226
+ this.fsQuad.render( renderer );
227
+
228
+ // Blend it additively over the input texture
208
229
 
209
230
  this.fsQuad.material = this.materialCopy;
210
231
  this.copyUniforms[ 'tDiffuse' ].value = this.renderTargetsHorizontal[ 0 ].texture;
211
232
  if ( maskActive ) renderer.state.buffers.stencil.setTest( true );
212
-
213
233
  if ( this.renderToScreen ) {
214
234
 
215
235
  renderer.setRenderTarget( null );
@@ -220,14 +240,14 @@
220
240
  renderer.setRenderTarget( readBuffer );
221
241
  this.fsQuad.render( renderer );
222
242
 
223
- } // Restore renderer settings
243
+ }
224
244
 
245
+ // Restore renderer settings
225
246
 
226
247
  renderer.setClearColor( this._oldClearColor, this.oldClearAlpha );
227
248
  renderer.autoClear = oldAutoClear;
228
249
 
229
250
  }
230
-
231
251
  getSeperableBlurMaterial( kernelRadius ) {
232
252
 
233
253
  return new THREE.ShaderMaterial( {
@@ -279,7 +299,6 @@
279
299
  } );
280
300
 
281
301
  }
282
-
283
302
  getCompositeMaterial( nMips ) {
284
303
 
285
304
  return new THREE.ShaderMaterial( {
@@ -348,7 +367,6 @@
348
367
  }
349
368
 
350
369
  }
351
-
352
370
  UnrealBloomPass.BlurDirectionX = new THREE.Vector2( 1.0, 0.0 );
353
371
  UnrealBloomPass.BlurDirectionY = new THREE.Vector2( 0.0, 1.0 );
354
372
 
@@ -25,7 +25,6 @@
25
25
  } );
26
26
 
27
27
  }
28
-
29
28
  copy( source, recursive ) {
30
29
 
31
30
  super.copy( source, recursive );
@@ -34,36 +33,28 @@
34
33
 
35
34
  }
36
35
 
37
- } //
36
+ }
38
37
 
38
+ //
39
39
 
40
40
  const _vector = new THREE.Vector3();
41
-
42
41
  const _viewMatrix = new THREE.Matrix4();
43
-
44
42
  const _viewProjectionMatrix = new THREE.Matrix4();
45
-
46
43
  const _a = new THREE.Vector3();
47
-
48
44
  const _b = new THREE.Vector3();
49
-
50
45
  class CSS2DRenderer {
51
46
 
52
47
  constructor( parameters = {} ) {
53
48
 
54
49
  const _this = this;
55
-
56
50
  let _width, _height;
57
-
58
51
  let _widthHalf, _heightHalf;
59
-
60
52
  const cache = {
61
53
  objects: new WeakMap()
62
54
  };
63
55
  const domElement = parameters.element !== undefined ? parameters.element : document.createElement( 'div' );
64
56
  domElement.style.overflow = 'hidden';
65
57
  this.domElement = domElement;
66
-
67
58
  this.getSize = function () {
68
59
 
69
60
  return {
@@ -77,11 +68,8 @@
77
68
 
78
69
  if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
79
70
  if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
80
-
81
71
  _viewMatrix.copy( camera.matrixWorldInverse );
82
-
83
72
  _viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, _viewMatrix );
84
-
85
73
  renderObject( scene, scene, camera );
86
74
  zOrder( scene );
87
75
 
@@ -103,18 +91,14 @@
103
91
  if ( object.isCSS2DObject ) {
104
92
 
105
93
  _vector.setFromMatrixPosition( object.matrixWorld );
106
-
107
94
  _vector.applyMatrix4( _viewProjectionMatrix );
108
-
109
95
  const visible = object.visible === true && _vector.z >= - 1 && _vector.z <= 1 && object.layers.test( camera.layers ) === true;
110
96
  object.element.style.display = visible === true ? '' : 'none';
111
-
112
97
  if ( visible === true ) {
113
98
 
114
99
  object.onBeforeRender( _this, scene, camera );
115
100
  const element = object.element;
116
101
  element.style.transform = 'translate(-50%,-50%) translate(' + ( _vector.x * _widthHalf + _widthHalf ) + 'px,' + ( - _vector.y * _heightHalf + _heightHalf ) + 'px)';
117
-
118
102
  if ( element.parentNode !== domElement ) {
119
103
 
120
104
  domElement.appendChild( element );
@@ -143,9 +127,7 @@
143
127
  function getDistanceToSquared( object1, object2 ) {
144
128
 
145
129
  _a.setFromMatrixPosition( object1.matrixWorld );
146
-
147
130
  _b.setFromMatrixPosition( object2.matrixWorld );
148
-
149
131
  return _a.distanceToSquared( _b );
150
132
 
151
133
  }
@@ -178,7 +160,6 @@
178
160
 
179
161
  } );
180
162
  const zMax = sorted.length;
181
-
182
163
  for ( let i = 0, l = sorted.length; i < l; i ++ ) {
183
164
 
184
165
  sorted[ i ].element.style.zIndex = zMax - i;
@@ -5,11 +5,8 @@
5
5
  */
6
6
 
7
7
  const _position = new THREE.Vector3();
8
-
9
8
  const _quaternion = new THREE.Quaternion();
10
-
11
9
  const _scale = new THREE.Vector3();
12
-
13
10
  class CSS3DObject extends THREE.Object3D {
14
11
 
15
12
  constructor( element = document.createElement( 'div' ) ) {
@@ -36,7 +33,6 @@
36
33
  } );
37
34
 
38
35
  }
39
-
40
36
  copy( source, recursive ) {
41
37
 
42
38
  super.copy( source, recursive );
@@ -46,7 +42,6 @@
46
42
  }
47
43
 
48
44
  }
49
-
50
45
  class CSS3DSprite extends CSS3DObject {
51
46
 
52
47
  constructor( element ) {
@@ -56,7 +51,6 @@
56
51
  this.rotation2D = 0;
57
52
 
58
53
  }
59
-
60
54
  copy( source, recursive ) {
61
55
 
62
56
  super.copy( source, recursive );
@@ -65,23 +59,19 @@
65
59
 
66
60
  }
67
61
 
68
- } //
62
+ }
69
63
 
64
+ //
70
65
 
71
66
  const _matrix = new THREE.Matrix4();
72
-
73
67
  const _matrix2 = new THREE.Matrix4();
74
-
75
68
  class CSS3DRenderer {
76
69
 
77
70
  constructor( parameters = {} ) {
78
71
 
79
72
  const _this = this;
80
-
81
73
  let _width, _height;
82
-
83
74
  let _widthHalf, _heightHalf;
84
-
85
75
  const cache = {
86
76
  camera: {
87
77
  fov: 0,
@@ -96,7 +86,6 @@
96
86
  cameraElement.style.transformStyle = 'preserve-3d';
97
87
  cameraElement.style.pointerEvents = 'none';
98
88
  domElement.appendChild( cameraElement );
99
-
100
89
  this.getSize = function () {
101
90
 
102
91
  return {
@@ -109,7 +98,6 @@
109
98
  this.render = function ( scene, camera ) {
110
99
 
111
100
  const fov = camera.projectionMatrix.elements[ 5 ] * _heightHalf;
112
-
113
101
  if ( cache.camera.fov !== fov ) {
114
102
 
115
103
  domElement.style.perspective = camera.isPerspectiveCamera ? fov + 'px' : '';
@@ -120,7 +108,6 @@
120
108
  if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
121
109
  if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
122
110
  let tx, ty;
123
-
124
111
  if ( camera.isOrthographicCamera ) {
125
112
 
126
113
  tx = - ( camera.right + camera.left ) / 2;
@@ -130,7 +117,6 @@
130
117
 
131
118
  const cameraCSSMatrix = camera.isOrthographicCamera ? 'scale(' + fov + ')' + 'translate(' + epsilon( tx ) + 'px,' + epsilon( ty ) + 'px)' + getCameraCSSMatrix( camera.matrixWorldInverse ) : 'translateZ(' + fov + 'px)' + getCameraCSSMatrix( camera.matrixWorldInverse );
132
119
  const style = cameraCSSMatrix + 'translate(' + _widthHalf + 'px,' + _heightHalf + 'px)';
133
-
134
120
  if ( cache.camera.style !== style ) {
135
121
 
136
122
  cameraElement.style.transform = style;
@@ -182,26 +168,20 @@
182
168
 
183
169
  const visible = object.visible === true && object.layers.test( camera.layers ) === true;
184
170
  object.element.style.display = visible === true ? '' : 'none';
185
-
186
171
  if ( visible === true ) {
187
172
 
188
173
  object.onBeforeRender( _this, scene, camera );
189
174
  let style;
190
-
191
175
  if ( object.isCSS3DSprite ) {
192
176
 
193
177
  // http://swiftcoder.wordpress.com/2008/11/25/constructing-a-billboard-matrix/
194
- _matrix.copy( camera.matrixWorldInverse );
195
178
 
179
+ _matrix.copy( camera.matrixWorldInverse );
196
180
  _matrix.transpose();
197
-
198
181
  if ( object.rotation2D !== 0 ) _matrix.multiply( _matrix2.makeRotationZ( object.rotation2D ) );
199
182
  object.matrixWorld.decompose( _position, _quaternion, _scale );
200
-
201
183
  _matrix.setPosition( _position );
202
-
203
184
  _matrix.scale( _scale );
204
-
205
185
  _matrix.elements[ 3 ] = 0;
206
186
  _matrix.elements[ 7 ] = 0;
207
187
  _matrix.elements[ 11 ] = 0;
@@ -216,7 +196,6 @@
216
196
 
217
197
  const element = object.element;
218
198
  const cachedObject = cache.objects.get( object );
219
-
220
199
  if ( cachedObject === undefined || cachedObject.style !== style ) {
221
200
 
222
201
  element.style.transform = style;