super-three 0.144.0 → 0.147.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 (450) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +737 -388
  3. package/build/three.js +737 -388
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +911 -409
  6. package/examples/js/animation/AnimationClipCreator.js +0 -8
  7. package/examples/js/animation/CCDIKSolver.js +50 -67
  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 +125 -99
  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 +85 -170
  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 +141 -317
  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 +113 -27
  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 +25 -39
  60. package/examples/js/interactive/InteractiveGroup.js +9 -14
  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 +40 -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 +228 -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 +287 -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 +409 -706
  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/NRRDLoader.js +44 -84
  98. package/examples/js/loaders/OBJLoader.js +50 -65
  99. package/examples/js/loaders/PCDLoader.js +34 -29
  100. package/examples/js/loaders/PDBLoader.js +17 -13
  101. package/examples/js/loaders/PLYLoader.js +62 -48
  102. package/examples/js/loaders/PRWMLoader.js +11 -22
  103. package/examples/js/loaders/PVRLoader.js +7 -16
  104. package/examples/js/loaders/RGBELoader.js +36 -61
  105. package/examples/js/loaders/RGBMLoader.js +26 -87
  106. package/examples/js/loaders/STLLoader.js +20 -27
  107. package/examples/js/loaders/SVGLoader.js +361 -233
  108. package/examples/js/loaders/TDSLoader.js +81 -118
  109. package/examples/js/loaders/TGALoader.js +39 -41
  110. package/examples/js/loaders/TIFFLoader.js +0 -1
  111. package/examples/js/loaders/TTFLoader.js +0 -8
  112. package/examples/js/loaders/TiltLoader.js +14 -15
  113. package/examples/js/loaders/VOXLoader.js +8 -16
  114. package/examples/js/loaders/VRMLLoader.js +243 -340
  115. package/examples/js/loaders/VTKLoader.js +101 -118
  116. package/examples/js/loaders/XYZLoader.js +2 -4
  117. package/examples/js/loaders/lwo/IFFParser.js +55 -136
  118. package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
  119. package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
  120. package/examples/js/materials/MeshGouraudMaterial.js +15 -13
  121. package/examples/js/math/Capsule.js +0 -17
  122. package/examples/js/math/ColorConverter.js +3 -3
  123. package/examples/js/math/ConvexHull.js +185 -141
  124. package/examples/js/math/ImprovedNoise.js +1 -1
  125. package/examples/js/math/Lut.js +8 -15
  126. package/examples/js/math/MeshSurfaceSampler.js +6 -28
  127. package/examples/js/math/OBB.js +90 -49
  128. package/examples/js/math/Octree.js +2 -57
  129. package/examples/js/math/SimplexNoise.js +74 -88
  130. package/examples/js/misc/ConvexObjectBreaker.js +37 -48
  131. package/examples/js/misc/GPUComputationRenderer.js +26 -16
  132. package/examples/js/misc/Gyroscope.js +5 -9
  133. package/examples/js/misc/MD2Character.js +14 -23
  134. package/examples/js/misc/MD2CharacterComplex.js +73 -54
  135. package/examples/js/misc/MorphAnimMesh.js +0 -6
  136. package/examples/js/misc/MorphBlendMesh.js +3 -30
  137. package/examples/js/misc/ProgressiveLightMap.js +47 -43
  138. package/examples/js/misc/RollerCoaster.js +17 -24
  139. package/examples/js/misc/TubePainter.js +18 -12
  140. package/examples/js/misc/Volume.js +16 -45
  141. package/examples/js/misc/VolumeSlice.js +14 -24
  142. package/examples/js/modifiers/CurveModifier.js +19 -21
  143. package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
  144. package/examples/js/modifiers/SimplifyModifier.js +56 -59
  145. package/examples/js/modifiers/TessellateModifier.js +2 -9
  146. package/examples/js/objects/GroundProjectedEnv.js +2 -14
  147. package/examples/js/objects/Lensflare.js +47 -38
  148. package/examples/js/objects/LightningStorm.js +10 -13
  149. package/examples/js/objects/MarchingCubes.js +80 -59
  150. package/examples/js/objects/Reflector.js +22 -20
  151. package/examples/js/objects/ReflectorForSSRPass.js +19 -23
  152. package/examples/js/objects/Refractor.js +52 -30
  153. package/examples/js/objects/ShadowMesh.js +1 -2
  154. package/examples/js/objects/Sky.js +2 -7
  155. package/examples/js/objects/Water.js +23 -18
  156. package/examples/js/objects/Water2.js +20 -19
  157. package/examples/js/physics/AmmoPhysics.js +23 -20
  158. package/examples/js/physics/OimoPhysics.js +19 -17
  159. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
  160. package/examples/js/postprocessing/AfterimagePass.js +19 -12
  161. package/examples/js/postprocessing/BloomPass.js +38 -17
  162. package/examples/js/postprocessing/BokehPass.js +29 -12
  163. package/examples/js/postprocessing/ClearPass.js +1 -6
  164. package/examples/js/postprocessing/CubeTexturePass.js +12 -9
  165. package/examples/js/postprocessing/DotScreenPass.js +7 -5
  166. package/examples/js/postprocessing/EffectComposer.js +25 -32
  167. package/examples/js/postprocessing/FilmPass.js +7 -5
  168. package/examples/js/postprocessing/GlitchPass.js +10 -11
  169. package/examples/js/postprocessing/HalftonePass.js +9 -9
  170. package/examples/js/postprocessing/LUTPass.js +2 -15
  171. package/examples/js/postprocessing/MaskPass.js +20 -17
  172. package/examples/js/postprocessing/OutlinePass.js +45 -36
  173. package/examples/js/postprocessing/Pass.js +11 -14
  174. package/examples/js/postprocessing/RenderPass.js +3 -7
  175. package/examples/js/postprocessing/RenderPixelatedPass.js +215 -0
  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 -8
  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 +236 -170
  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 +27 -3
  254. package/examples/jsm/animation/MMDPhysics.js +25 -0
  255. package/examples/jsm/capabilities/WebGPU.js +3 -1
  256. package/examples/jsm/controls/FirstPersonControls.js +20 -20
  257. package/examples/jsm/controls/FlyControls.js +16 -17
  258. package/examples/jsm/controls/OrbitControls.js +44 -4
  259. package/examples/jsm/controls/TrackballControls.js +14 -2
  260. package/examples/jsm/controls/TransformControls.js +1 -1
  261. package/examples/jsm/csm/CSM.js +1 -0
  262. package/examples/jsm/csm/CSMHelper.js +30 -0
  263. package/examples/jsm/exporters/GLTFExporter.js +0 -79
  264. package/examples/jsm/exporters/USDZExporter.js +93 -1
  265. package/examples/jsm/helpers/OctreeHelper.js +22 -8
  266. package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
  267. package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
  268. package/examples/jsm/helpers/ViewHelper.js +24 -0
  269. package/examples/jsm/interactive/HTMLMesh.js +5 -6
  270. package/examples/jsm/interactive/InteractiveGroup.js +4 -2
  271. package/examples/jsm/libs/flow.module.js +610 -160
  272. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  273. package/examples/jsm/lines/LineSegments2.js +4 -0
  274. package/examples/jsm/loaders/3DMLoader.js +1 -2
  275. package/examples/jsm/loaders/ColladaLoader.js +28 -0
  276. package/examples/jsm/loaders/FBXLoader.js +18 -2
  277. package/examples/jsm/loaders/GLTFLoader.js +269 -428
  278. package/examples/jsm/loaders/KTX2Loader.js +68 -29
  279. package/examples/jsm/loaders/LDrawLoader.js +14 -13
  280. package/examples/jsm/loaders/LottieLoader.js +4 -2
  281. package/examples/jsm/loaders/MaterialXLoader.js +728 -0
  282. package/examples/jsm/loaders/PCDLoader.js +1 -1
  283. package/examples/jsm/loaders/PLYLoader.js +68 -16
  284. package/examples/jsm/loaders/SVGLoader.js +227 -14
  285. package/examples/jsm/loaders/USDZLoader.js +351 -111
  286. package/examples/jsm/loaders/VRMLLoader.js +13 -1
  287. package/examples/jsm/math/ConvexHull.js +4 -4
  288. package/examples/jsm/math/Octree.js +1 -1
  289. package/examples/jsm/node-editor/NodeEditor.js +91 -12
  290. package/examples/jsm/node-editor/core/BaseNode.js +10 -3
  291. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +6 -9
  292. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +6 -9
  293. package/examples/jsm/node-editor/math/AngleEditor.js +3 -3
  294. package/examples/jsm/node-editor/math/InvertEditor.js +2 -2
  295. package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
  296. package/examples/jsm/node-editor/utils/PreviewEditor.js +4 -0
  297. package/examples/jsm/nodes/Nodes.js +30 -3
  298. package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
  299. package/examples/jsm/nodes/accessors/NormalNode.js +6 -6
  300. package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
  301. package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
  302. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  303. package/examples/jsm/nodes/accessors/SkinningNode.js +8 -1
  304. package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
  305. package/examples/jsm/nodes/core/AttributeNode.js +31 -8
  306. package/examples/jsm/nodes/core/Node.js +1 -1
  307. package/examples/jsm/nodes/core/NodeBuilder.js +55 -6
  308. package/examples/jsm/nodes/core/NodeFrame.js +2 -2
  309. package/examples/jsm/nodes/core/NodeVarying.js +7 -4
  310. package/examples/jsm/nodes/core/VaryingNode.js +6 -4
  311. package/examples/jsm/nodes/core/constants.js +13 -13
  312. package/examples/jsm/nodes/display/BlendModeNode.js +85 -0
  313. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -12
  314. package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
  315. package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
  316. package/examples/jsm/nodes/display/ViewportNode.js +106 -0
  317. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
  318. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
  319. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
  320. package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
  321. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  322. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
  323. package/examples/jsm/nodes/materials/Materials.js +9 -7
  324. package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
  325. package/examples/jsm/nodes/materialx/{Disclaimer.md → DISCLAIMER.md} +1 -1
  326. package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
  327. package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_hsv.js +1 -1
  328. package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_noise.js +13 -3
  329. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
  330. package/examples/jsm/nodes/math/MathNode.js +5 -5
  331. package/examples/jsm/nodes/math/OperatorNode.js +16 -3
  332. package/examples/jsm/nodes/shadernode/ShaderNode.js +35 -20
  333. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +87 -63
  334. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +29 -0
  335. package/examples/jsm/nodes/utils/ConvertNode.js +15 -14
  336. package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
  337. package/examples/jsm/nodes/utils/JoinNode.js +8 -2
  338. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
  339. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
  340. package/examples/jsm/nodes/utils/OscNode.js +2 -2
  341. package/examples/jsm/nodes/utils/RemapNode.js +34 -0
  342. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
  343. package/examples/jsm/nodes/utils/TimerNode.js +21 -1
  344. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
  345. package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
  346. package/examples/jsm/postprocessing/BloomPass.js +22 -3
  347. package/examples/jsm/postprocessing/BokehPass.js +18 -4
  348. package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
  349. package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
  350. package/examples/jsm/postprocessing/EffectComposer.js +9 -0
  351. package/examples/jsm/postprocessing/FilmPass.js +8 -0
  352. package/examples/jsm/postprocessing/GlitchPass.js +13 -1
  353. package/examples/jsm/postprocessing/HalftonePass.js +8 -0
  354. package/examples/jsm/postprocessing/OutlinePass.js +21 -1
  355. package/examples/jsm/postprocessing/Pass.js +2 -0
  356. package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
  357. package/examples/jsm/postprocessing/SAOPass.js +20 -0
  358. package/examples/jsm/postprocessing/SMAAPass.js +16 -0
  359. package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
  360. package/examples/jsm/postprocessing/SavePass.js +17 -1
  361. package/examples/jsm/postprocessing/ShaderPass.js +8 -0
  362. package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
  363. package/examples/jsm/postprocessing/TexturePass.js +8 -0
  364. package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
  365. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +56 -35
  366. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
  367. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
  368. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
  369. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
  370. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +41 -9
  371. package/examples/jsm/shaders/MMDToonShader.js +0 -2
  372. package/examples/jsm/shaders/VelocityShader.js +128 -0
  373. package/examples/jsm/utils/BufferGeometryUtils.js +174 -42
  374. package/examples/jsm/utils/SceneUtils.js +129 -4
  375. package/examples/jsm/webxr/OculusHandModel.js +3 -2
  376. package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
  377. package/package.json +13 -13
  378. package/src/Three.js +1 -0
  379. package/src/animation/PropertyBinding.js +7 -0
  380. package/src/audio/AudioContext.js +5 -5
  381. package/src/cameras/CubeCamera.js +14 -14
  382. package/src/constants.js +1 -1
  383. package/src/core/InstancedBufferGeometry.js +1 -7
  384. package/src/core/InterleavedBufferAttribute.js +4 -4
  385. package/src/extras/Earcut.js +67 -67
  386. package/src/geometries/PolyhedronGeometry.js +1 -1
  387. package/src/geometries/ShapeGeometry.js +1 -1
  388. package/src/helpers/ArrowHelper.js +9 -0
  389. package/src/helpers/Box3Helper.js +7 -0
  390. package/src/helpers/BoxHelper.js +7 -1
  391. package/src/helpers/DirectionalLightHelper.js +5 -1
  392. package/src/helpers/GridHelper.js +7 -0
  393. package/src/helpers/HemisphereLightHelper.js +4 -1
  394. package/src/helpers/PlaneHelper.js +9 -0
  395. package/src/helpers/PointLightHelper.js +2 -1
  396. package/src/helpers/PolarGridHelper.js +7 -0
  397. package/src/helpers/SkeletonHelper.js +7 -0
  398. package/src/helpers/SpotLightHelper.js +4 -2
  399. package/src/lights/LightShadow.js +1 -2
  400. package/src/lights/PointLight.js +2 -2
  401. package/src/lights/SpotLight.js +2 -2
  402. package/src/loaders/FileLoader.js +4 -1
  403. package/src/loaders/ObjectLoader.js +5 -1
  404. package/src/materials/Material.js +1 -1
  405. package/src/materials/MeshPhysicalMaterial.js +1 -1
  406. package/src/math/Color.js +5 -5
  407. package/src/math/Matrix3.js +53 -18
  408. package/src/math/Ray.js +2 -5
  409. package/src/math/Sphere.js +36 -21
  410. package/src/objects/InstancedMesh.js +7 -0
  411. package/src/objects/LOD.js +25 -6
  412. package/src/renderers/WebGL3DRenderTarget.js +1 -1
  413. package/src/renderers/WebGLArrayRenderTarget.js +1 -1
  414. package/src/renderers/WebGLCubeRenderTarget.js +1 -1
  415. package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
  416. package/src/renderers/WebGLRenderTarget.js +1 -1
  417. package/src/renderers/WebGLRenderer.js +36 -62
  418. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
  419. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
  420. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
  421. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
  422. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
  423. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -4
  424. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
  425. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
  426. package/src/renderers/shaders/ShaderChunk.js +3 -0
  427. package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
  428. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  429. package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
  430. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +0 -3
  431. package/src/renderers/shaders/ShaderLib.js +20 -6
  432. package/src/renderers/shaders/UniformsLib.js +1 -1
  433. package/src/renderers/shaders/UniformsUtils.js +15 -0
  434. package/src/renderers/webgl/WebGLAttributes.js +2 -0
  435. package/src/renderers/webgl/WebGLBackground.js +15 -7
  436. package/src/renderers/webgl/WebGLLights.js +0 -4
  437. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  438. package/src/renderers/webgl/WebGLShadowMap.js +3 -1
  439. package/src/renderers/webgl/WebGLState.js +78 -41
  440. package/src/renderers/webgl/WebGLTextures.js +94 -39
  441. package/src/renderers/webgl/WebGLUniforms.js +152 -24
  442. package/src/renderers/webgl/WebGLUtils.js +1 -1
  443. package/src/renderers/webxr/WebXRController.js +46 -13
  444. package/src/renderers/webxr/WebXRManager.js +71 -3
  445. package/src/scenes/Scene.js +8 -0
  446. package/src/textures/CompressedArrayTexture.js +18 -0
  447. package/src/textures/Texture.js +2 -1
  448. package/examples/js/libs/lottie_canvas.js +0 -12751
  449. package/examples/js/shaders/PixelShader.js +0 -51
  450. package/examples/jsm/shaders/PixelShader.js +0 -44
@@ -123,7 +123,7 @@ class PCDLoader extends Loader {
123
123
 
124
124
  // remove comments
125
125
 
126
- PCDheader.str = PCDheader.str.replace( /\#.*/gi, '' );
126
+ PCDheader.str = PCDheader.str.replace( /#.*/gi, '' );
127
127
 
128
128
  // parse
129
129
 
@@ -31,6 +31,16 @@ import {
31
31
  * diffuse_blue: 'blue'
32
32
  * } );
33
33
  *
34
+ * Custom properties outside of the defaults for position, uv, normal
35
+ * and color attributes can be added using the setCustomPropertyMapping method.
36
+ * For example, the following maps the element properties “custom_property_a”
37
+ * and “custom_property_b” to an attribute “customAttribute” with an item size of 2.
38
+ * Attribute item sizes are set from the number of element properties in the property array.
39
+ *
40
+ * loader.setCustomPropertyMapping( {
41
+ * customAttribute: ['custom_property_a', 'custom_property_b'],
42
+ * } );
43
+ *
34
44
  */
35
45
 
36
46
  const _color = new Color();
@@ -42,6 +52,7 @@ class PLYLoader extends Loader {
42
52
  super( manager );
43
53
 
44
54
  this.propertyNameMapping = {};
55
+ this.customPropertyMapping = {};
45
56
 
46
57
  }
47
58
 
@@ -86,6 +97,12 @@ class PLYLoader extends Loader {
86
97
 
87
98
  }
88
99
 
100
+ setCustomPropertyNameMapping( mapping ) {
101
+
102
+ this.customPropertyMapping = mapping;
103
+
104
+ }
105
+
89
106
  parse( data ) {
90
107
 
91
108
  function parseHeader( data ) {
@@ -260,18 +277,32 @@ class PLYLoader extends Loader {
260
277
 
261
278
  }
262
279
 
280
+ function createBuffer() {
281
+
282
+ const buffer = {
283
+ indices: [],
284
+ vertices: [],
285
+ normals: [],
286
+ uvs: [],
287
+ faceVertexUvs: [],
288
+ colors: [],
289
+ };
290
+
291
+ for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) {
292
+
293
+ buffer[ customProperty ] = [];
294
+
295
+ }
296
+
297
+ return buffer;
298
+
299
+ }
300
+
263
301
  function parseASCII( data, header ) {
264
302
 
265
303
  // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)
266
304
 
267
- const buffer = {
268
- indices: [],
269
- vertices: [],
270
- normals: [],
271
- uvs: [],
272
- faceVertexUvs: [],
273
- colors: []
274
- };
305
+ const buffer = createBuffer();
275
306
 
276
307
  let result;
277
308
 
@@ -357,6 +388,24 @@ class PLYLoader extends Loader {
357
388
 
358
389
  }
359
390
 
391
+ // custom buffer data
392
+
393
+ for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) {
394
+
395
+ if ( buffer[ customProperty ].length > 0 ) {
396
+
397
+ geometry.setAttribute(
398
+ customProperty,
399
+ new Float32BufferAttribute(
400
+ buffer[ customProperty ],
401
+ scope.customPropertyMapping[ customProperty ].length
402
+ )
403
+ );
404
+
405
+ }
406
+
407
+ }
408
+
360
409
  geometry.computeBoundingSphere();
361
410
 
362
411
  return geometry;
@@ -419,6 +468,16 @@ class PLYLoader extends Loader {
419
468
 
420
469
  }
421
470
 
471
+ for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) {
472
+
473
+ for ( const elementProperty of scope.customPropertyMapping[ customProperty ] ) {
474
+
475
+ buffer[ customProperty ].push( element[ elementProperty ] );
476
+
477
+ }
478
+
479
+ }
480
+
422
481
  } else if ( elementName === 'face' ) {
423
482
 
424
483
  const vertex_indices = element.vertex_indices || element.vertex_index; // issue #9338
@@ -506,14 +565,7 @@ class PLYLoader extends Loader {
506
565
 
507
566
  function parseBinary( data, header ) {
508
567
 
509
- const buffer = {
510
- indices: [],
511
- vertices: [],
512
- normals: [],
513
- uvs: [],
514
- faceVertexUvs: [],
515
- colors: []
516
- };
568
+ const buffer = createBuffer();
517
569
 
518
570
  const little_endian = ( header.format === 'binary_little_endian' );
519
571
  const body = new DataView( data, header.headerLength );
@@ -1482,7 +1482,7 @@ class SVGLoader extends Loader {
1482
1482
  let cy = 0;
1483
1483
 
1484
1484
  // Angle
1485
- angle = - array[ 0 ] * Math.PI / 180;
1485
+ angle = array[ 0 ] * Math.PI / 180;
1486
1486
 
1487
1487
  if ( array.length >= 3 ) {
1488
1488
 
@@ -1493,10 +1493,10 @@ class SVGLoader extends Loader {
1493
1493
  }
1494
1494
 
1495
1495
  // Rotate around center (cx, cy)
1496
- tempTransform1.identity().translate( - cx, - cy );
1497
- tempTransform2.identity().rotate( angle );
1496
+ tempTransform1.makeTranslation( - cx, - cy );
1497
+ tempTransform2.makeRotation( angle );
1498
1498
  tempTransform3.multiplyMatrices( tempTransform2, tempTransform1 );
1499
- tempTransform1.identity().translate( cx, cy );
1499
+ tempTransform1.makeTranslation( cx, cy );
1500
1500
  currentTransform.multiplyMatrices( tempTransform1, tempTransform3 );
1501
1501
 
1502
1502
  }
@@ -1588,7 +1588,120 @@ class SVGLoader extends Loader {
1588
1588
 
1589
1589
  }
1590
1590
 
1591
- const isRotated = isTransformRotated( m );
1591
+ function transfEllipseGeneric( curve ) {
1592
+
1593
+ // For math description see:
1594
+ // https://math.stackexchange.com/questions/4544164
1595
+
1596
+ const a = curve.xRadius;
1597
+ const b = curve.yRadius;
1598
+
1599
+ const cosTheta = Math.cos( curve.aRotation );
1600
+ const sinTheta = Math.sin( curve.aRotation );
1601
+
1602
+ const v1 = new Vector3( a * cosTheta, a * sinTheta, 0 );
1603
+ const v2 = new Vector3( -b * sinTheta, b * cosTheta, 0 );
1604
+
1605
+ const f1 = v1.applyMatrix3( m );
1606
+ const f2 = v2.applyMatrix3( m );
1607
+
1608
+ const mF = tempTransform0.set(
1609
+ f1.x, f2.x, 0,
1610
+ f1.y, f2.y, 0,
1611
+ 0, 0, 1,
1612
+ );
1613
+
1614
+ const mFInv = tempTransform1.copy( mF ).invert();
1615
+ const mFInvT = tempTransform2.copy( mFInv ).transpose();
1616
+ const mQ = mFInvT.multiply( mFInv );
1617
+ const mQe = mQ.elements;
1618
+
1619
+ const ed = eigenDecomposition( mQe[0], mQe[1], mQe[4] );
1620
+ const rt1sqrt = Math.sqrt( ed.rt1 );
1621
+ const rt2sqrt = Math.sqrt( ed.rt2 );
1622
+
1623
+ curve.xRadius = 1 / rt1sqrt;
1624
+ curve.yRadius = 1 / rt2sqrt;
1625
+ curve.aRotation = Math.atan2( ed.sn, ed.cs );
1626
+
1627
+ const isFullEllipse =
1628
+ ( curve.aEndAngle - curve.aStartAngle ) % ( 2 * Math.PI ) < Number.EPSILON;
1629
+
1630
+ // Do not touch angles of a full ellipse because after transformation they
1631
+ // would converge to a sinle value effectively removing the whole curve
1632
+
1633
+ if ( !isFullEllipse ) {
1634
+
1635
+ const mDsqrt = tempTransform1.set(
1636
+ rt1sqrt, 0, 0,
1637
+ 0, rt2sqrt, 0,
1638
+ 0, 0, 1,
1639
+ );
1640
+
1641
+ const mRT = tempTransform2.set(
1642
+ ed.cs, ed.sn, 0,
1643
+ -ed.sn, ed.cs, 0,
1644
+ 0, 0, 1,
1645
+ );
1646
+
1647
+ const mDRF = mDsqrt.multiply( mRT ).multiply( mF );
1648
+
1649
+ const transformAngle = phi => {
1650
+
1651
+ const { x: cosR, y: sinR } =
1652
+ new Vector3( Math.cos( phi ), Math.sin( phi ), 0 ).applyMatrix3( mDRF );
1653
+
1654
+ return Math.atan2( sinR, cosR );
1655
+
1656
+ }
1657
+
1658
+ curve.aStartAngle = transformAngle( curve.aStartAngle );
1659
+ curve.aEndAngle = transformAngle( curve.aEndAngle );
1660
+
1661
+ if ( isTransformFlipped( m ) ) {
1662
+
1663
+ curve.aClockwise = !curve.aClockwise;
1664
+
1665
+ }
1666
+
1667
+ }
1668
+
1669
+ }
1670
+
1671
+ function transfEllipseNoSkew( curve ) {
1672
+
1673
+ // Faster shortcut if no skew is applied
1674
+ // (e.g, a euclidean transform of a group containing the ellipse)
1675
+
1676
+ const sx = getTransformScaleX( m );
1677
+ const sy = getTransformScaleY( m );
1678
+
1679
+ curve.xRadius *= sx;
1680
+ curve.yRadius *= sy;
1681
+
1682
+ // Extract rotation angle from the matrix of form:
1683
+ //
1684
+ // | cosθ sx -sinθ sy |
1685
+ // | sinθ sx cosθ sy |
1686
+ //
1687
+ // Remembering that tanθ = sinθ / cosθ; and that
1688
+ // `sx`, `sy`, or both might be zero.
1689
+ const theta =
1690
+ sx > Number.EPSILON
1691
+ ? Math.atan2( m.elements[ 1 ], m.elements[ 0 ] )
1692
+ : Math.atan2( - m.elements[ 3 ], m.elements[ 4 ] );
1693
+
1694
+ curve.aRotation += theta;
1695
+
1696
+ if ( isTransformFlipped( m ) ) {
1697
+
1698
+ curve.aStartAngle *= -1;
1699
+ curve.aEndAngle *= -1;
1700
+ curve.aClockwise = !curve.aClockwise;
1701
+
1702
+ }
1703
+
1704
+ }
1592
1705
 
1593
1706
  const subPaths = path.subPaths;
1594
1707
 
@@ -1621,19 +1734,24 @@ class SVGLoader extends Loader {
1621
1734
 
1622
1735
  } else if ( curve.isEllipseCurve ) {
1623
1736
 
1624
- if ( isRotated ) {
1625
-
1626
- console.warn( 'SVGLoader: Elliptic arc or ellipse rotation or skewing is not implemented.' );
1627
-
1628
- }
1737
+ // Transform ellipse center point
1629
1738
 
1630
1739
  tempV2.set( curve.aX, curve.aY );
1631
1740
  transfVec2( tempV2 );
1632
1741
  curve.aX = tempV2.x;
1633
1742
  curve.aY = tempV2.y;
1634
1743
 
1635
- curve.xRadius *= getTransformScaleX( m );
1636
- curve.yRadius *= getTransformScaleY( m );
1744
+ // Transform ellipse shape parameters
1745
+
1746
+ if ( isTransformSkewed( m ) ) {
1747
+
1748
+ transfEllipseGeneric( curve );
1749
+
1750
+ } else {
1751
+
1752
+ transfEllipseNoSkew( curve );
1753
+
1754
+ }
1637
1755
 
1638
1756
  }
1639
1757
 
@@ -1643,9 +1761,25 @@ class SVGLoader extends Loader {
1643
1761
 
1644
1762
  }
1645
1763
 
1646
- function isTransformRotated( m ) {
1764
+ function isTransformFlipped( m ) {
1765
+
1766
+ const te = m.elements;
1767
+ return te[ 0 ] * te[ 4 ] - te[ 1 ] * te[ 3 ] < 0;
1768
+
1769
+ }
1770
+
1771
+ function isTransformSkewed( m ) {
1772
+
1773
+ const te = m.elements;
1774
+ const basisDot = te[ 0 ] * te[ 3 ] + te[ 1 ] * te[ 4 ];
1775
+
1776
+ // Shortcut for trivial rotations and transformations
1777
+ if ( basisDot === 0 ) return false;
1778
+
1779
+ const sx = getTransformScaleX( m );
1780
+ const sy = getTransformScaleY( m );
1647
1781
 
1648
- return m.elements[ 1 ] !== 0 || m.elements[ 3 ] !== 0;
1782
+ return Math.abs( basisDot / ( sx * sy ) ) > Number.EPSILON;
1649
1783
 
1650
1784
  }
1651
1785
 
@@ -1663,6 +1797,85 @@ class SVGLoader extends Loader {
1663
1797
 
1664
1798
  }
1665
1799
 
1800
+ // Calculates the eigensystem of a real symmetric 2x2 matrix
1801
+ // [ A B ]
1802
+ // [ B C ]
1803
+ // in the form
1804
+ // [ A B ] = [ cs -sn ] [ rt1 0 ] [ cs sn ]
1805
+ // [ B C ] [ sn cs ] [ 0 rt2 ] [ -sn cs ]
1806
+ // where rt1 >= rt2.
1807
+ //
1808
+ // Adapted from: https://www.mpi-hd.mpg.de/personalhomes/globes/3x3/index.html
1809
+ // -> Algorithms for real symmetric matrices -> Analytical (2x2 symmetric)
1810
+ function eigenDecomposition( A, B, C ) {
1811
+
1812
+ let rt1, rt2, cs, sn, t;
1813
+ const sm = A + C;
1814
+ const df = A - C;
1815
+ const rt = Math.sqrt( df * df + 4 * B * B );
1816
+
1817
+ if ( sm > 0 ) {
1818
+
1819
+ rt1 = 0.5 * ( sm + rt );
1820
+ t = 1 / rt1;
1821
+ rt2 = A * t * C - B * t * B;
1822
+
1823
+ } else if ( sm < 0 ) {
1824
+
1825
+ rt2 = 0.5 * ( sm - rt );
1826
+
1827
+ } else {
1828
+
1829
+ // This case needs to be treated separately to avoid div by 0
1830
+
1831
+ rt1 = 0.5 * rt;
1832
+ rt2 = -0.5 * rt;
1833
+
1834
+ }
1835
+
1836
+ // Calculate eigenvectors
1837
+
1838
+ if ( df > 0 ) {
1839
+
1840
+ cs = df + rt;
1841
+
1842
+ } else {
1843
+
1844
+ cs = df - rt;
1845
+
1846
+ }
1847
+
1848
+ if ( Math.abs( cs ) > 2 * Math.abs( B ) ) {
1849
+
1850
+ t = -2 * B / cs;
1851
+ sn = 1 / Math.sqrt( 1 + t * t );
1852
+ cs = t * sn;
1853
+
1854
+ } else if ( Math.abs( B ) === 0 ) {
1855
+
1856
+ cs = 1;
1857
+ sn = 0;
1858
+
1859
+ } else {
1860
+
1861
+ t = -0.5 * cs / B;
1862
+ cs = 1 / Math.sqrt( 1 + t * t );
1863
+ sn = t * cs;
1864
+
1865
+ }
1866
+
1867
+ if ( df > 0 ) {
1868
+
1869
+ t = cs;
1870
+ cs = -sn;
1871
+ sn = t;
1872
+
1873
+ }
1874
+
1875
+ return { rt1, rt2, cs, sn };
1876
+
1877
+ }
1878
+
1666
1879
  //
1667
1880
 
1668
1881
  const paths = [];