super-three 0.181.0 → 0.184.0

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 (539) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -4
  3. package/build/three.cjs +13152 -11354
  4. package/build/three.core.js +12319 -11539
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +1808 -781
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +27 -13
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +10523 -6263
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +10484 -6262
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/jsm/Addons.js +11 -3
  15. package/examples/jsm/animation/CCDIKSolver.js +7 -3
  16. package/examples/jsm/controls/ArcballControls.js +7 -4
  17. package/examples/jsm/controls/DragControls.js +2 -2
  18. package/examples/jsm/controls/FirstPersonControls.js +58 -54
  19. package/examples/jsm/controls/FlyControls.js +4 -0
  20. package/examples/jsm/controls/MapControls.js +55 -1
  21. package/examples/jsm/controls/OrbitControls.js +111 -8
  22. package/examples/jsm/controls/TrackballControls.js +8 -8
  23. package/examples/jsm/controls/TransformControls.js +34 -2
  24. package/examples/jsm/csm/CSM.js +2 -1
  25. package/examples/jsm/csm/CSMShadowNode.js +6 -2
  26. package/examples/jsm/effects/AnaglyphEffect.js +102 -7
  27. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  28. package/examples/jsm/environments/RoomEnvironment.js +3 -0
  29. package/examples/jsm/exporters/EXRExporter.js +1 -1
  30. package/examples/jsm/exporters/GLTFExporter.js +152 -9
  31. package/examples/jsm/exporters/USDZExporter.js +22 -3
  32. package/examples/jsm/geometries/DecalGeometry.js +1 -1
  33. package/examples/jsm/geometries/TextGeometry.js +18 -0
  34. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  35. package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
  36. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
  37. package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
  38. package/examples/jsm/helpers/ViewHelper.js +67 -8
  39. package/examples/jsm/inspector/Extension.js +13 -0
  40. package/examples/jsm/inspector/Inspector.js +203 -88
  41. package/examples/jsm/inspector/RendererInspector.js +14 -4
  42. package/examples/jsm/inspector/extensions/extensions.json +6 -0
  43. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
  44. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
  45. package/examples/jsm/inspector/tabs/Console.js +41 -7
  46. package/examples/jsm/inspector/tabs/Memory.js +128 -0
  47. package/examples/jsm/inspector/tabs/Parameters.js +51 -3
  48. package/examples/jsm/inspector/tabs/Performance.js +4 -4
  49. package/examples/jsm/inspector/tabs/Settings.js +264 -0
  50. package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
  51. package/examples/jsm/inspector/tabs/Viewer.js +107 -5
  52. package/examples/jsm/inspector/ui/Graph.js +2 -2
  53. package/examples/jsm/inspector/ui/List.js +1 -1
  54. package/examples/jsm/inspector/ui/Profiler.js +1936 -34
  55. package/examples/jsm/inspector/ui/Style.js +1044 -31
  56. package/examples/jsm/inspector/ui/Tab.js +222 -3
  57. package/examples/jsm/inspector/ui/Values.js +55 -2
  58. package/examples/jsm/inspector/ui/utils.js +13 -0
  59. package/examples/jsm/interaction/InteractionManager.js +226 -0
  60. package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
  61. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  62. package/examples/jsm/lighting/LightProbeGrid.js +651 -0
  63. package/examples/jsm/lines/LineMaterial.js +7 -1
  64. package/examples/jsm/loaders/3DMLoader.js +5 -4
  65. package/examples/jsm/loaders/3MFLoader.js +2 -2
  66. package/examples/jsm/loaders/AMFLoader.js +2 -2
  67. package/examples/jsm/loaders/ColladaLoader.js +24 -4026
  68. package/examples/jsm/loaders/DRACOLoader.js +5 -5
  69. package/examples/jsm/loaders/EXRLoader.js +687 -48
  70. package/examples/jsm/loaders/FBXLoader.js +235 -37
  71. package/examples/jsm/loaders/GCodeLoader.js +34 -8
  72. package/examples/jsm/loaders/GLTFLoader.js +146 -178
  73. package/examples/jsm/loaders/HDRLoader.js +1 -2
  74. package/examples/jsm/loaders/KMZLoader.js +5 -5
  75. package/examples/jsm/loaders/KTX2Loader.js +27 -5
  76. package/examples/jsm/loaders/LDrawLoader.js +41 -50
  77. package/examples/jsm/loaders/LWOLoader.js +7 -39
  78. package/examples/jsm/loaders/NRRDLoader.js +2 -2
  79. package/examples/jsm/loaders/PCDLoader.js +4 -2
  80. package/examples/jsm/loaders/SVGLoader.js +2 -2
  81. package/examples/jsm/loaders/TDSLoader.js +0 -2
  82. package/examples/jsm/loaders/TGALoader.js +0 -2
  83. package/examples/jsm/loaders/USDLoader.js +100 -40
  84. package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
  85. package/examples/jsm/loaders/VOXLoader.js +660 -117
  86. package/examples/jsm/loaders/VRMLLoader.js +79 -2
  87. package/examples/jsm/loaders/VTKLoader.js +42 -25
  88. package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
  89. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  90. package/examples/jsm/loaders/usd/USDAParser.js +450 -363
  91. package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
  92. package/examples/jsm/loaders/usd/USDComposer.js +4594 -0
  93. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
  94. package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
  95. package/examples/jsm/math/Octree.js +131 -1
  96. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  97. package/examples/jsm/misc/RollerCoaster.js +42 -4
  98. package/examples/jsm/misc/Volume.js +0 -1
  99. package/examples/jsm/misc/VolumeSlice.js +0 -1
  100. package/examples/jsm/modifiers/TessellateModifier.js +1 -1
  101. package/examples/jsm/objects/LensflareMesh.js +1 -1
  102. package/examples/jsm/objects/Reflector.js +73 -25
  103. package/examples/jsm/objects/Sky.js +90 -6
  104. package/examples/jsm/objects/SkyMesh.js +150 -16
  105. package/examples/jsm/objects/Water.js +4 -3
  106. package/examples/jsm/objects/Water2.js +5 -3
  107. package/examples/jsm/objects/WaterMesh.js +5 -7
  108. package/examples/jsm/physics/AmmoPhysics.js +12 -7
  109. package/examples/jsm/physics/JoltPhysics.js +10 -6
  110. package/examples/jsm/physics/RapierPhysics.js +9 -5
  111. package/examples/jsm/postprocessing/EffectComposer.js +7 -5
  112. package/examples/jsm/postprocessing/OutputPass.js +9 -0
  113. package/examples/jsm/postprocessing/RenderPass.js +10 -0
  114. package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
  115. package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
  116. package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
  117. package/examples/jsm/renderers/Projector.js +246 -28
  118. package/examples/jsm/renderers/SVGRenderer.js +174 -60
  119. package/examples/jsm/shaders/GTAOShader.js +19 -6
  120. package/examples/jsm/shaders/HalftoneShader.js +12 -1
  121. package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
  122. package/examples/jsm/shaders/SAOShader.js +17 -4
  123. package/examples/jsm/shaders/SSAOShader.js +11 -1
  124. package/examples/jsm/shaders/SSRShader.js +6 -5
  125. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
  126. package/examples/jsm/shaders/VignetteShader.js +1 -1
  127. package/examples/jsm/transpiler/AST.js +44 -0
  128. package/examples/jsm/transpiler/GLSLDecoder.js +63 -6
  129. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
  130. package/examples/jsm/transpiler/TSLEncoder.js +46 -3
  131. package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
  132. package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
  133. package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
  134. package/examples/jsm/tsl/display/AfterImageNode.js +11 -1
  135. package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
  136. package/examples/jsm/tsl/display/AnamorphicNode.js +12 -1
  137. package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
  138. package/examples/jsm/tsl/display/BloomNode.js +16 -6
  139. package/examples/jsm/tsl/display/CRT.js +150 -0
  140. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
  141. package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
  142. package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -1
  143. package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
  144. package/examples/jsm/tsl/display/FSR1Node.js +477 -0
  145. package/examples/jsm/tsl/display/FXAANode.js +2 -2
  146. package/examples/jsm/tsl/display/GTAONode.js +6 -4
  147. package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
  148. package/examples/jsm/tsl/display/GodraysNode.js +615 -0
  149. package/examples/jsm/tsl/display/LensflareNode.js +1 -1
  150. package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
  151. package/examples/jsm/tsl/display/OutlineNode.js +69 -19
  152. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
  153. package/examples/jsm/tsl/display/PixelationPassNode.js +7 -6
  154. package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
  155. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  156. package/examples/jsm/tsl/display/SMAANode.js +2 -2
  157. package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
  158. package/examples/jsm/tsl/display/SSGINode.js +8 -24
  159. package/examples/jsm/tsl/display/SSRNode.js +8 -8
  160. package/examples/jsm/tsl/display/SSSNode.js +6 -4
  161. package/examples/jsm/tsl/display/Shape.js +29 -0
  162. package/examples/jsm/tsl/display/SharpenNode.js +283 -0
  163. package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
  164. package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
  165. package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
  166. package/examples/jsm/tsl/display/TAAUNode.js +835 -0
  167. package/examples/jsm/tsl/display/TRAANode.js +315 -126
  168. package/examples/jsm/tsl/display/TransitionNode.js +1 -1
  169. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  170. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  171. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
  172. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
  173. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
  174. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
  175. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
  176. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
  177. package/examples/jsm/tsl/math/Bayer.js +53 -3
  178. package/examples/jsm/utils/BufferGeometryUtils.js +2 -3
  179. package/examples/jsm/utils/ColorUtils.js +76 -0
  180. package/examples/jsm/utils/LDrawUtils.js +1 -1
  181. package/examples/jsm/utils/ShadowMapViewer.js +24 -10
  182. package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
  183. package/examples/jsm/utils/SkeletonUtils.js +14 -8
  184. package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
  185. package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
  186. package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
  187. package/package.json +24 -30
  188. package/src/Three.Core.js +3 -1
  189. package/src/Three.TSL.js +25 -11
  190. package/src/Three.WebGPU.Nodes.js +5 -0
  191. package/src/Three.WebGPU.js +9 -0
  192. package/src/Three.js +1 -0
  193. package/src/animation/AnimationAction.js +12 -2
  194. package/src/animation/AnimationClip.js +1 -1
  195. package/src/animation/AnimationMixer.js +6 -0
  196. package/src/animation/AnimationUtils.js +1 -12
  197. package/src/animation/KeyframeTrack.js +47 -8
  198. package/src/animation/PropertyMixer.js +4 -4
  199. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  200. package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
  201. package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
  202. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
  203. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  204. package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
  205. package/src/audio/Audio.js +1 -1
  206. package/src/audio/AudioContext.js +2 -2
  207. package/src/audio/AudioListener.js +5 -3
  208. package/src/cameras/Camera.js +32 -2
  209. package/src/cameras/CubeCamera.js +20 -0
  210. package/src/constants.js +90 -5
  211. package/src/core/BufferAttribute.js +13 -1
  212. package/src/core/BufferGeometry.js +14 -2
  213. package/src/core/Clock.js +7 -0
  214. package/src/core/Object3D.js +52 -4
  215. package/src/core/Raycaster.js +2 -2
  216. package/src/core/RenderTarget.js +4 -4
  217. package/src/extras/PMREMGenerator.js +7 -18
  218. package/src/extras/TextureUtils.js +5 -1
  219. package/src/extras/curves/CatmullRomCurve3.js +3 -2
  220. package/src/geometries/ExtrudeGeometry.js +2 -2
  221. package/src/geometries/PolyhedronGeometry.js +1 -1
  222. package/src/geometries/TorusGeometry.js +8 -3
  223. package/src/helpers/CameraHelper.js +3 -0
  224. package/src/helpers/DirectionalLightHelper.js +4 -1
  225. package/src/helpers/HemisphereLightHelper.js +3 -0
  226. package/src/helpers/PointLightHelper.js +1 -25
  227. package/src/helpers/SpotLightHelper.js +3 -0
  228. package/src/lights/DirectionalLight.js +13 -0
  229. package/src/lights/HemisphereLight.js +10 -0
  230. package/src/lights/Light.js +1 -11
  231. package/src/lights/LightProbe.js +0 -15
  232. package/src/lights/LightShadow.js +15 -6
  233. package/src/lights/PointLight.js +15 -0
  234. package/src/lights/PointLightShadow.js +0 -86
  235. package/src/lights/SpotLight.js +22 -1
  236. package/src/lights/webgpu/IESSpotLight.js +2 -1
  237. package/src/loaders/AudioLoader.js +11 -1
  238. package/src/loaders/Cache.js +28 -0
  239. package/src/loaders/DataTextureLoader.js +6 -4
  240. package/src/loaders/FileLoader.js +2 -3
  241. package/src/loaders/ImageBitmapLoader.js +12 -9
  242. package/src/loaders/Loader.js +6 -0
  243. package/src/loaders/MaterialLoader.js +3 -2
  244. package/src/loaders/ObjectLoader.js +46 -6
  245. package/src/loaders/nodes/NodeLoader.js +2 -2
  246. package/src/loaders/nodes/NodeObjectLoader.js +18 -0
  247. package/src/materials/Material.js +2 -0
  248. package/src/materials/MeshLambertMaterial.js +9 -0
  249. package/src/materials/MeshPhongMaterial.js +9 -0
  250. package/src/materials/MeshToonMaterial.js +1 -1
  251. package/src/materials/ShaderMaterial.js +20 -1
  252. package/src/materials/nodes/Line2NodeMaterial.js +34 -7
  253. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
  254. package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
  255. package/src/materials/nodes/NodeMaterial.js +45 -25
  256. package/src/materials/nodes/manager/NodeMaterialObserver.js +191 -86
  257. package/src/math/Line3.js +6 -5
  258. package/src/math/MathUtils.js +10 -10
  259. package/src/math/Matrix2.js +13 -9
  260. package/src/math/Matrix3.js +13 -9
  261. package/src/math/Matrix4.js +87 -74
  262. package/src/math/Plane.js +4 -3
  263. package/src/math/Quaternion.js +3 -29
  264. package/src/math/Sphere.js +1 -1
  265. package/src/math/Triangle.js +1 -1
  266. package/src/math/Vector2.js +11 -7
  267. package/src/math/Vector3.js +15 -13
  268. package/src/math/Vector4.js +13 -9
  269. package/src/math/interpolants/BezierInterpolant.js +108 -0
  270. package/src/nodes/Nodes.js +86 -68
  271. package/src/nodes/TSL.js +7 -7
  272. package/src/nodes/accessors/Arrays.js +1 -1
  273. package/src/nodes/accessors/BatchNode.js +10 -10
  274. package/src/nodes/accessors/Bitangent.js +5 -5
  275. package/src/nodes/accessors/BufferAttributeNode.js +107 -15
  276. package/src/nodes/accessors/BufferNode.js +29 -2
  277. package/src/nodes/accessors/Camera.js +149 -28
  278. package/src/nodes/accessors/ClippingNode.js +4 -4
  279. package/src/nodes/accessors/CubeTextureNode.js +27 -2
  280. package/src/nodes/accessors/InstanceNode.js +148 -43
  281. package/src/nodes/accessors/MaterialNode.js +9 -1
  282. package/src/nodes/accessors/MaterialProperties.js +2 -5
  283. package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
  284. package/src/nodes/accessors/ModelNode.js +1 -1
  285. package/src/nodes/accessors/Normal.js +11 -11
  286. package/src/nodes/accessors/Object3DNode.js +1 -1
  287. package/src/nodes/accessors/Position.js +34 -2
  288. package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
  289. package/src/nodes/accessors/ReferenceNode.js +8 -8
  290. package/src/nodes/accessors/RendererReferenceNode.js +1 -2
  291. package/src/nodes/accessors/SceneProperties.js +47 -0
  292. package/src/nodes/accessors/SkinningNode.js +27 -26
  293. package/src/nodes/accessors/StorageBufferNode.js +14 -25
  294. package/src/nodes/accessors/StorageTextureNode.js +40 -9
  295. package/src/nodes/accessors/Tangent.js +4 -14
  296. package/src/nodes/accessors/Texture3DNode.js +32 -35
  297. package/src/nodes/accessors/TextureNode.js +67 -23
  298. package/src/nodes/accessors/UniformArrayNode.js +6 -4
  299. package/src/nodes/accessors/UserDataNode.js +1 -2
  300. package/src/nodes/accessors/VertexColorNode.js +1 -2
  301. package/src/nodes/code/FunctionCallNode.js +1 -1
  302. package/src/nodes/code/FunctionNode.js +2 -3
  303. package/src/nodes/core/ArrayNode.js +21 -2
  304. package/src/nodes/core/AssignNode.js +3 -3
  305. package/src/nodes/core/AttributeNode.js +3 -3
  306. package/src/nodes/core/BypassNode.js +1 -1
  307. package/src/nodes/core/ContextNode.js +104 -5
  308. package/src/nodes/core/IndexNode.js +2 -1
  309. package/src/nodes/core/InputNode.js +1 -1
  310. package/src/nodes/core/InspectorNode.js +1 -1
  311. package/src/nodes/core/IsolateNode.js +1 -1
  312. package/src/nodes/core/MRTNode.js +48 -2
  313. package/src/nodes/core/Node.js +112 -15
  314. package/src/nodes/core/NodeBuilder.js +284 -66
  315. package/src/nodes/core/NodeError.js +28 -0
  316. package/src/nodes/core/NodeFrame.js +12 -4
  317. package/src/nodes/core/NodeUtils.js +11 -9
  318. package/src/nodes/core/OutputStructNode.js +12 -10
  319. package/src/nodes/core/ParameterNode.js +4 -4
  320. package/src/nodes/core/PropertyNode.js +19 -3
  321. package/src/nodes/core/StackNode.js +66 -17
  322. package/src/nodes/core/StackTrace.js +139 -0
  323. package/src/nodes/core/StructNode.js +17 -3
  324. package/src/nodes/core/StructTypeNode.js +12 -18
  325. package/src/nodes/core/SubBuildNode.js +2 -2
  326. package/src/nodes/core/UniformGroupNode.js +36 -6
  327. package/src/nodes/core/UniformNode.js +21 -5
  328. package/src/nodes/core/VarNode.js +48 -23
  329. package/src/nodes/core/VaryingNode.js +2 -19
  330. package/src/nodes/display/BlendModes.js +0 -64
  331. package/src/nodes/display/ColorAdjustment.js +17 -0
  332. package/src/nodes/display/ColorSpaceNode.js +3 -3
  333. package/src/nodes/display/NormalMapNode.js +39 -4
  334. package/src/nodes/display/PassNode.js +125 -16
  335. package/src/nodes/display/RenderOutputNode.js +7 -7
  336. package/src/nodes/display/ScreenNode.js +4 -2
  337. package/src/nodes/display/ToneMappingNode.js +1 -1
  338. package/src/nodes/display/ToonOutlinePassNode.js +2 -2
  339. package/src/nodes/display/ViewportDepthNode.js +52 -4
  340. package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
  341. package/src/nodes/display/ViewportTextureNode.js +39 -11
  342. package/src/nodes/fog/Fog.js +18 -35
  343. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
  344. package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
  345. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  346. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  347. package/src/nodes/functions/PhysicalLightingModel.js +126 -45
  348. package/src/nodes/geometry/RangeNode.js +5 -3
  349. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  350. package/src/nodes/gpgpu/BarrierNode.js +9 -0
  351. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -3
  352. package/src/nodes/gpgpu/ComputeNode.js +74 -48
  353. package/src/nodes/gpgpu/SubgroupFunctionNode.js +2 -2
  354. package/src/nodes/gpgpu/WorkgroupInfoNode.js +4 -4
  355. package/src/nodes/lighting/AnalyticLightNode.js +53 -0
  356. package/src/nodes/lighting/EnvironmentNode.js +28 -3
  357. package/src/nodes/lighting/LightsNode.js +7 -28
  358. package/src/nodes/lighting/PointShadowNode.js +162 -149
  359. package/src/nodes/lighting/ShadowFilterNode.js +53 -65
  360. package/src/nodes/lighting/ShadowNode.js +120 -42
  361. package/src/nodes/math/BitcastNode.js +1 -1
  362. package/src/nodes/math/BitcountNode.js +433 -0
  363. package/src/nodes/math/ConditionalNode.js +3 -3
  364. package/src/nodes/math/MathNode.js +76 -41
  365. package/src/nodes/math/OperatorNode.js +3 -2
  366. package/src/nodes/math/PackFloatNode.js +98 -0
  367. package/src/nodes/math/UnpackFloatNode.js +96 -0
  368. package/src/nodes/pmrem/PMREMNode.js +1 -1
  369. package/src/nodes/pmrem/PMREMUtils.js +9 -15
  370. package/src/nodes/tsl/TSLBase.js +1 -1
  371. package/src/nodes/tsl/TSLCore.js +38 -17
  372. package/src/nodes/utils/ArrayElementNode.js +14 -1
  373. package/src/nodes/utils/ConvertNode.js +1 -1
  374. package/src/nodes/utils/DebugNode.js +12 -12
  375. package/src/nodes/utils/EventNode.js +31 -2
  376. package/src/nodes/utils/FlipNode.js +1 -1
  377. package/src/nodes/utils/FunctionOverloadingNode.js +1 -1
  378. package/src/nodes/utils/JoinNode.js +3 -3
  379. package/src/nodes/utils/LoopNode.js +1 -1
  380. package/src/nodes/utils/MemberNode.js +2 -2
  381. package/src/nodes/utils/Packing.js +13 -1
  382. package/src/nodes/utils/PostProcessingUtils.js +33 -1
  383. package/src/nodes/utils/RTTNode.js +1 -1
  384. package/src/nodes/utils/ReflectorNode.js +3 -4
  385. package/src/nodes/utils/Remap.js +48 -0
  386. package/src/nodes/utils/RotateNode.js +1 -1
  387. package/src/nodes/utils/SampleNode.js +1 -1
  388. package/src/nodes/utils/SetNode.js +1 -1
  389. package/src/nodes/utils/SplitNode.js +1 -1
  390. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  391. package/src/nodes/utils/UVUtils.js +28 -0
  392. package/src/objects/BatchedMesh.js +44 -16
  393. package/src/objects/InstancedMesh.js +30 -3
  394. package/src/objects/Line.js +1 -1
  395. package/src/objects/Mesh.js +1 -1
  396. package/src/objects/Points.js +1 -1
  397. package/src/objects/Skeleton.js +9 -0
  398. package/src/objects/SkinnedMesh.js +26 -9
  399. package/src/renderers/WebGLRenderer.js +329 -145
  400. package/src/renderers/common/Animation.js +3 -3
  401. package/src/renderers/common/Attributes.js +15 -1
  402. package/src/renderers/common/Backend.js +29 -8
  403. package/src/renderers/common/Background.js +26 -13
  404. package/src/renderers/common/BindGroup.js +1 -16
  405. package/src/renderers/common/Binding.js +11 -0
  406. package/src/renderers/common/Bindings.js +29 -14
  407. package/src/renderers/common/BlendMode.js +143 -0
  408. package/src/renderers/common/Buffer.js +40 -0
  409. package/src/renderers/common/BundleGroup.js +1 -1
  410. package/src/renderers/common/ChainMap.js +30 -6
  411. package/src/renderers/common/ComputePipeline.js +1 -1
  412. package/src/renderers/common/CubeRenderTarget.js +51 -7
  413. package/src/renderers/common/Geometries.js +29 -3
  414. package/src/renderers/common/Info.js +333 -4
  415. package/src/renderers/common/InspectorBase.js +6 -1
  416. package/src/renderers/common/Lighting.js +5 -21
  417. package/src/renderers/common/Pipelines.js +40 -7
  418. package/src/renderers/common/PostProcessing.js +8 -206
  419. package/src/renderers/common/ReadbackBuffer.js +78 -0
  420. package/src/renderers/common/RenderBundle.js +3 -1
  421. package/src/renderers/common/RenderBundles.js +7 -3
  422. package/src/renderers/common/RenderContext.js +16 -0
  423. package/src/renderers/common/RenderContexts.js +33 -49
  424. package/src/renderers/common/RenderLists.js +2 -1
  425. package/src/renderers/common/RenderObject.js +17 -5
  426. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  427. package/src/renderers/common/RenderObjects.js +21 -5
  428. package/src/renderers/common/RenderPipeline.js +232 -17
  429. package/src/renderers/common/Renderer.js +481 -117
  430. package/src/renderers/common/Sampler.js +4 -4
  431. package/src/renderers/common/StorageBuffer.js +13 -1
  432. package/src/renderers/common/Textures.js +89 -4
  433. package/src/renderers/common/TimestampQueryPool.js +5 -3
  434. package/src/renderers/common/Uniform.js +8 -0
  435. package/src/renderers/common/UniformsGroup.js +62 -1
  436. package/src/renderers/common/XRManager.js +37 -29
  437. package/src/renderers/common/extras/PMREMGenerator.js +25 -23
  438. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  439. package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +242 -99
  440. package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
  441. package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
  442. package/src/renderers/shaders/DFGLUTData.js +19 -34
  443. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
  444. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
  445. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
  446. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
  447. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
  448. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  449. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
  450. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
  451. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
  452. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
  453. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
  454. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
  455. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
  456. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -53
  457. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
  458. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
  459. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
  460. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
  461. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
  462. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  463. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  464. package/src/renderers/shaders/ShaderChunk.js +5 -3
  465. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
  466. package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
  467. package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
  468. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
  469. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
  470. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
  471. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
  472. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
  473. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  474. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
  475. package/src/renderers/shaders/ShaderLib.js +7 -6
  476. package/src/renderers/shaders/UniformsLib.js +7 -5
  477. package/src/renderers/shaders/UniformsUtils.js +27 -5
  478. package/src/renderers/webgl/WebGLAnimation.js +2 -1
  479. package/src/renderers/webgl/WebGLBackground.js +15 -15
  480. package/src/renderers/webgl/WebGLBindingStates.js +99 -27
  481. package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
  482. package/src/renderers/webgl/WebGLCapabilities.js +9 -4
  483. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  484. package/src/renderers/webgl/WebGLGeometries.js +10 -7
  485. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
  486. package/src/renderers/webgl/WebGLLights.js +18 -1
  487. package/src/renderers/webgl/WebGLMaterials.js +24 -13
  488. package/src/renderers/webgl/WebGLObjects.js +3 -1
  489. package/src/renderers/webgl/WebGLOutput.js +270 -0
  490. package/src/renderers/webgl/WebGLProgram.js +49 -109
  491. package/src/renderers/webgl/WebGLPrograms.js +63 -51
  492. package/src/renderers/webgl/WebGLRenderLists.js +15 -0
  493. package/src/renderers/webgl/WebGLRenderStates.js +13 -2
  494. package/src/renderers/webgl/WebGLShadowMap.js +188 -24
  495. package/src/renderers/webgl/WebGLState.js +75 -37
  496. package/src/renderers/webgl/WebGLTextures.js +215 -54
  497. package/src/renderers/webgl/WebGLUniforms.js +40 -3
  498. package/src/renderers/webgl/WebGLUniformsGroups.js +19 -0
  499. package/src/renderers/webgl/WebGLUtils.js +6 -2
  500. package/src/renderers/webgl-fallback/WebGLBackend.js +253 -82
  501. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
  502. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +173 -74
  503. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
  504. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
  505. package/src/renderers/webgl-fallback/utils/WebGLState.js +223 -6
  506. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +68 -53
  507. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
  508. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +6 -2
  509. package/src/renderers/webgpu/WebGPUBackend.js +260 -140
  510. package/src/renderers/webgpu/WebGPURenderer.js +2 -1
  511. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +366 -90
  512. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +107 -34
  513. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +357 -200
  514. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
  515. package/src/renderers/webgpu/utils/WebGPUConstants.js +10 -0
  516. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +61 -23
  517. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +152 -200
  518. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +156 -59
  519. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +7 -7
  520. package/src/renderers/webgpu/utils/WebGPUUtils.js +33 -11
  521. package/src/renderers/webxr/WebXRController.js +12 -0
  522. package/src/renderers/webxr/WebXRManager.js +4 -2
  523. package/src/textures/CubeDepthTexture.js +76 -0
  524. package/src/textures/HTMLTexture.js +74 -0
  525. package/src/textures/Source.js +2 -2
  526. package/src/textures/Texture.js +16 -5
  527. package/src/utils.js +280 -3
  528. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
  529. package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
  530. package/examples/jsm/shaders/GodRaysShader.js +0 -333
  531. package/src/nodes/accessors/SceneNode.js +0 -145
  532. package/src/nodes/code/ScriptableNode.js +0 -726
  533. package/src/nodes/code/ScriptableValueNode.js +0 -253
  534. package/src/nodes/display/PosterizeNode.js +0 -65
  535. package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
  536. package/src/nodes/utils/RemapNode.js +0 -125
  537. package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
  538. package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
  539. package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
@@ -88,7 +88,7 @@ class PropertyMixer {
88
88
  this._addIndex = 4;
89
89
 
90
90
  /**
91
- * TODO
91
+ * Accumulated weight of the property binding.
92
92
  *
93
93
  * @type {number}
94
94
  * @default 0
@@ -96,7 +96,7 @@ class PropertyMixer {
96
96
  this.cumulativeWeight = 0;
97
97
 
98
98
  /**
99
- * TODO
99
+ * Accumulated additive weight of the property binding.
100
100
  *
101
101
  * @type {number}
102
102
  * @default 0
@@ -104,7 +104,7 @@ class PropertyMixer {
104
104
  this.cumulativeWeightAdditive = 0;
105
105
 
106
106
  /**
107
- * TODO
107
+ * Number of active keyframe tracks currently using this property binding.
108
108
  *
109
109
  * @type {number}
110
110
  * @default 0
@@ -112,7 +112,7 @@ class PropertyMixer {
112
112
  this.useCount = 0;
113
113
 
114
114
  /**
115
- * TODO
115
+ * Number of keyframe tracks referencing this property binding.
116
116
  *
117
117
  * @type {number}
118
118
  * @default 0
@@ -29,7 +29,7 @@ class BooleanKeyframeTrack extends KeyframeTrack {
29
29
  /**
30
30
  * The value type name.
31
31
  *
32
- * @type {String}
32
+ * @type {string}
33
33
  * @default 'bool'
34
34
  */
35
35
  BooleanKeyframeTrack.prototype.ValueTypeName = 'bool';
@@ -26,7 +26,7 @@ class ColorKeyframeTrack extends KeyframeTrack {
26
26
  /**
27
27
  * The value type name.
28
28
  *
29
- * @type {String}
29
+ * @type {string}
30
30
  * @default 'color'
31
31
  */
32
32
  ColorKeyframeTrack.prototype.ValueTypeName = 'color';
@@ -26,7 +26,7 @@ class NumberKeyframeTrack extends KeyframeTrack {
26
26
  /**
27
27
  * The value type name.
28
28
  *
29
- * @type {String}
29
+ * @type {string}
30
30
  * @default 'number'
31
31
  */
32
32
  NumberKeyframeTrack.prototype.ValueTypeName = 'number';
@@ -40,7 +40,7 @@ class QuaternionKeyframeTrack extends KeyframeTrack {
40
40
  /**
41
41
  * The value type name.
42
42
  *
43
- * @type {String}
43
+ * @type {string}
44
44
  * @default 'quaternion'
45
45
  */
46
46
  QuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';
@@ -29,7 +29,7 @@ class StringKeyframeTrack extends KeyframeTrack {
29
29
  /**
30
30
  * The value type name.
31
31
  *
32
- * @type {String}
32
+ * @type {string}
33
33
  * @default 'string'
34
34
  */
35
35
  StringKeyframeTrack.prototype.ValueTypeName = 'string';
@@ -26,7 +26,7 @@ class VectorKeyframeTrack extends KeyframeTrack {
26
26
  /**
27
27
  * The value type name.
28
28
  *
29
- * @type {String}
29
+ * @type {string}
30
30
  * @default 'vector'
31
31
  */
32
32
  VectorKeyframeTrack.prototype.ValueTypeName = 'vector';
@@ -191,7 +191,7 @@ class Audio extends Object3D {
191
191
  /**
192
192
  * Defines the source type.
193
193
  *
194
- * The property is automatically by one of the `set*()` methods.
194
+ * The property is automatically set by one of the `set*()` methods.
195
195
  *
196
196
  * @type {('empty'|'audioNode'|'mediaNode'|'mediaStreamNode'|'buffer')}
197
197
  * @readonly
@@ -10,7 +10,7 @@ class AudioContext {
10
10
  /**
11
11
  * Returns the global native audio context.
12
12
  *
13
- * @return {AudioContext} The native audio context.
13
+ * @return {Window.AudioContext} The native audio context.
14
14
  */
15
15
  static getContext() {
16
16
 
@@ -27,7 +27,7 @@ class AudioContext {
27
27
  /**
28
28
  * Allows to set the global native audio context from outside.
29
29
  *
30
- * @param {AudioContext} value - The native context to set.
30
+ * @param {Window.AudioContext} value - The native context to set.
31
31
  */
32
32
  static setContext( value ) {
33
33
 
@@ -1,6 +1,6 @@
1
1
  import { Vector3 } from '../math/Vector3.js';
2
2
  import { Quaternion } from '../math/Quaternion.js';
3
- import { Clock } from '../core/Clock.js';
3
+ import { Timer } from '../core/Timer.js';
4
4
  import { Object3D } from '../core/Object3D.js';
5
5
  import { AudioContext } from './AudioContext.js';
6
6
 
@@ -71,7 +71,7 @@ class AudioListener extends Object3D {
71
71
 
72
72
  // private
73
73
 
74
- this._clock = new Clock();
74
+ this._timer = new Timer();
75
75
 
76
76
  }
77
77
 
@@ -176,9 +176,11 @@ class AudioListener extends Object3D {
176
176
 
177
177
  super.updateMatrixWorld( force );
178
178
 
179
+ this._timer.update();
180
+
179
181
  const listener = this.context.listener;
180
182
 
181
- this.timeDelta = this._clock.getDelta();
183
+ this.timeDelta = this._timer.getDelta();
182
184
 
183
185
  this.matrixWorld.decompose( _position, _quaternion, _scale );
184
186
 
@@ -1,6 +1,12 @@
1
1
  import { WebGLCoordinateSystem } from '../constants.js';
2
2
  import { Matrix4 } from '../math/Matrix4.js';
3
3
  import { Object3D } from '../core/Object3D.js';
4
+ import { Vector3 } from '../math/Vector3.js';
5
+ import { Quaternion } from '../math/Quaternion.js';
6
+
7
+ const _position = /*@__PURE__*/ new Vector3();
8
+ const _quaternion = /*@__PURE__*/ new Quaternion();
9
+ const _scale = /*@__PURE__*/ new Vector3();
4
10
 
5
11
  /**
6
12
  * Abstract base class for cameras. This class should always be inherited
@@ -107,7 +113,19 @@ class Camera extends Object3D {
107
113
 
108
114
  super.updateMatrixWorld( force );
109
115
 
110
- this.matrixWorldInverse.copy( this.matrixWorld ).invert();
116
+ // exclude scale from view matrix to be glTF conform
117
+
118
+ this.matrixWorld.decompose( _position, _quaternion, _scale );
119
+
120
+ if ( _scale.x === 1 && _scale.y === 1 && _scale.z === 1 ) {
121
+
122
+ this.matrixWorldInverse.copy( this.matrixWorld ).invert();
123
+
124
+ } else {
125
+
126
+ this.matrixWorldInverse.compose( _position, _quaternion, _scale.set( 1, 1, 1 ) ).invert();
127
+
128
+ }
111
129
 
112
130
  }
113
131
 
@@ -115,7 +133,19 @@ class Camera extends Object3D {
115
133
 
116
134
  super.updateWorldMatrix( updateParents, updateChildren );
117
135
 
118
- this.matrixWorldInverse.copy( this.matrixWorld ).invert();
136
+ // exclude scale from view matrix to be glTF conform
137
+
138
+ this.matrixWorld.decompose( _position, _quaternion, _scale );
139
+
140
+ if ( _scale.x === 1 && _scale.y === 1 && _scale.z === 1 ) {
141
+
142
+ this.matrixWorldInverse.copy( this.matrixWorld ).invert();
143
+
144
+ } else {
145
+
146
+ this.matrixWorldInverse.compose( _position, _quaternion, _scale.set( 1, 1, 1 ) ).invert();
147
+
148
+ }
119
149
 
120
150
  }
121
151
 
@@ -203,19 +203,38 @@ class CubeCamera extends Object3D {
203
203
 
204
204
  renderTarget.texture.generateMipmaps = false;
205
205
 
206
+ // https://github.com/mrdoob/three.js/issues/31413#issuecomment-3095966812
207
+
208
+ let reversedDepthBuffer = false;
209
+
210
+ if ( renderer.isWebGLRenderer === true ) {
211
+
212
+ reversedDepthBuffer = renderer.state.buffers.depth.getReversed();
213
+
214
+ } else {
215
+
216
+ reversedDepthBuffer = renderer.reversedDepthBuffer;
217
+
218
+ }
219
+
206
220
  renderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );
221
+ if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
207
222
  renderer.render( scene, cameraPX );
208
223
 
209
224
  renderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );
225
+ if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
210
226
  renderer.render( scene, cameraNX );
211
227
 
212
228
  renderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );
229
+ if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
213
230
  renderer.render( scene, cameraPY );
214
231
 
215
232
  renderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );
233
+ if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
216
234
  renderer.render( scene, cameraNY );
217
235
 
218
236
  renderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );
237
+ if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
219
238
  renderer.render( scene, cameraPZ );
220
239
 
221
240
  // mipmaps are generated during the last call of render()
@@ -224,6 +243,7 @@ class CubeCamera extends Object3D {
224
243
  renderTarget.texture.generateMipmaps = generateMipmaps;
225
244
 
226
245
  renderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );
246
+ if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
227
247
  renderer.render( scene, cameraNZ );
228
248
 
229
249
  renderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );
package/src/constants.js CHANGED
@@ -1,4 +1,4 @@
1
- export const REVISION = '181';
1
+ export const REVISION = '184';
2
2
 
3
3
  /**
4
4
  * Represents mouse buttons and interaction types in context of controls.
@@ -155,6 +155,14 @@ export const MultiplyBlending = 4;
155
155
  */
156
156
  export const CustomBlending = 5;
157
157
 
158
+ /**
159
+ * Represents material blending.
160
+ *
161
+ * @type {number}
162
+ * @constant
163
+ */
164
+ export const MaterialBlending = 6;
165
+
158
166
  /**
159
167
  * A `source + destination` blending equation.
160
168
  *
@@ -907,6 +915,38 @@ export const RGB_ETC2_Format = 37492;
907
915
  */
908
916
  export const RGBA_ETC2_EAC_Format = 37496;
909
917
 
918
+ /**
919
+ * EAC R11 UNORM format.
920
+ *
921
+ * @type {number}
922
+ * @constant
923
+ */
924
+ export const R11_EAC_Format = 37488; // 0x9270
925
+
926
+ /**
927
+ * EAC R11 SNORM format.
928
+ *
929
+ * @type {number}
930
+ * @constant
931
+ */
932
+ export const SIGNED_R11_EAC_Format = 37489; // 0x9271
933
+
934
+ /**
935
+ * EAC RG11 UNORM format.
936
+ *
937
+ * @type {number}
938
+ * @constant
939
+ */
940
+ export const RG11_EAC_Format = 37490; // 0x9272
941
+
942
+ /**
943
+ * EAC RG11 SNORM format.
944
+ *
945
+ * @type {number}
946
+ * @constant
947
+ */
948
+ export const SIGNED_RG11_EAC_Format = 37491; // 0x9273
949
+
910
950
  /**
911
951
  * ASTC RGBA 4x4 format.
912
952
  *
@@ -1125,6 +1165,17 @@ export const InterpolateLinear = 2301;
1125
1165
  */
1126
1166
  export const InterpolateSmooth = 2302;
1127
1167
 
1168
+ /**
1169
+ * Bezier interpolation mode for keyframe tracks.
1170
+ *
1171
+ * Uses cubic Bezier curves with explicit 2D control points.
1172
+ * Requires tangent data to be set on the track.
1173
+ *
1174
+ * @type {number}
1175
+ * @constant
1176
+ */
1177
+ export const InterpolateBezier = 2303;
1178
+
1128
1179
  /**
1129
1180
  * Zero curvature ending for animations.
1130
1181
  *
@@ -1191,7 +1242,7 @@ export const TriangleStripDrawMode = 1;
1191
1242
  export const TriangleFanDrawMode = 2;
1192
1243
 
1193
1244
  /**
1194
- * Basic depth packing.
1245
+ * The depth value is inverted (1.0 - z) for visualization purposes.
1195
1246
  *
1196
1247
  * @type {number}
1197
1248
  * @constant
@@ -1199,7 +1250,7 @@ export const TriangleFanDrawMode = 2;
1199
1250
  export const BasicDepthPacking = 3200;
1200
1251
 
1201
1252
  /**
1202
- * A depth value is packed into 32 bit RGBA.
1253
+ * The depth value is packed into 32 bit RGBA.
1203
1254
  *
1204
1255
  * @type {number}
1205
1256
  * @constant
@@ -1207,7 +1258,7 @@ export const BasicDepthPacking = 3200;
1207
1258
  export const RGBADepthPacking = 3201;
1208
1259
 
1209
1260
  /**
1210
- * A depth value is packed into 24 bit RGB.
1261
+ * The depth value is packed into 24 bit RGB.
1211
1262
  *
1212
1263
  * @type {number}
1213
1264
  * @constant
@@ -1215,7 +1266,7 @@ export const RGBADepthPacking = 3201;
1215
1266
  export const RGBDepthPacking = 3202;
1216
1267
 
1217
1268
  /**
1218
- * A depth value is packed into 16 bit RG.
1269
+ * The depth value is packed into 16 bit RG.
1219
1270
  *
1220
1271
  * @type {number}
1221
1272
  * @constant
@@ -1280,6 +1331,30 @@ export const LinearTransfer = 'linear';
1280
1331
  */
1281
1332
  export const SRGBTransfer = 'srgb';
1282
1333
 
1334
+ /**
1335
+ * No normal map packing.
1336
+ *
1337
+ * @type {string}
1338
+ * @constant
1339
+ */
1340
+ export const NoNormalPacking = '';
1341
+
1342
+ /**
1343
+ * Normal RG packing.
1344
+ *
1345
+ * @type {string}
1346
+ * @constant
1347
+ */
1348
+ export const NormalRGPacking = 'rg';
1349
+
1350
+ /**
1351
+ * Normal GA packing.
1352
+ *
1353
+ * @type {string}
1354
+ * @constant
1355
+ */
1356
+ export const NormalGAPacking = 'ga';
1357
+
1283
1358
  /**
1284
1359
  * Sets the stencil buffer value to `0`.
1285
1360
  *
@@ -1624,6 +1699,16 @@ export const InterpolationSamplingMode = {
1624
1699
  EITHER: 'either'
1625
1700
  };
1626
1701
 
1702
+ /**
1703
+ * Compatibility flags for features that may not be supported across all platforms.
1704
+ *
1705
+ * @type {Object}
1706
+ * @constant
1707
+ */
1708
+ export const Compatibility = {
1709
+ TEXTURE_COMPARE: 'depthTextureCompare'
1710
+ };
1711
+
1627
1712
  /**
1628
1713
  * This type represents mouse buttons and interaction types in context of controls.
1629
1714
  *
@@ -3,6 +3,7 @@ import { Vector2 } from '../math/Vector2.js';
3
3
  import { denormalize, normalize } from '../math/MathUtils.js';
4
4
  import { StaticDrawUsage, FloatType } from '../constants.js';
5
5
  import { fromHalfFloat, toHalfFloat } from '../extras/DataUtils.js';
6
+ import { EventDispatcher } from './EventDispatcher.js';
6
7
 
7
8
  const _vector = /*@__PURE__*/ new Vector3();
8
9
  const _vector2 = /*@__PURE__*/ new Vector2();
@@ -17,7 +18,7 @@ let _id = 0;
17
18
  * When working with vector-like data, the `fromBufferAttribute( attribute, index )`
18
19
  * helper methods on vector and color class might be helpful. E.g. {@link Vector3#fromBufferAttribute}.
19
20
  */
20
- class BufferAttribute {
21
+ class BufferAttribute extends EventDispatcher {
21
22
 
22
23
  /**
23
24
  * Constructs a new buffer attribute.
@@ -28,6 +29,8 @@ class BufferAttribute {
28
29
  */
29
30
  constructor( array, itemSize, normalized = false ) {
30
31
 
32
+ super();
33
+
31
34
  if ( Array.isArray( array ) ) {
32
35
 
33
36
  throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );
@@ -674,6 +677,15 @@ class BufferAttribute {
674
677
 
675
678
  }
676
679
 
680
+ /**
681
+ * Disposes of the buffer attribute. Available only in {@link WebGPURenderer}.
682
+ */
683
+ dispose() {
684
+
685
+ this.dispatchEvent( { type: 'dispose' } );
686
+
687
+ }
688
+
677
689
  }
678
690
 
679
691
  /**
@@ -111,6 +111,16 @@ class BufferGeometry extends EventDispatcher {
111
111
  */
112
112
  this.indirect = null;
113
113
 
114
+ /**
115
+ * The offset, in bytes, into the indirect drawing buffer where the value data begins. If an array is provided, multiple indirect draw calls will be made for each offset.
116
+ *
117
+ * Can only be used with {@link WebGPURenderer} and a WebGPU backend.
118
+ *
119
+ * @type {number|Array<number>}
120
+ * @default 0
121
+ */
122
+ this.indirectOffset = 0;
123
+
114
124
  /**
115
125
  * This dictionary has as id the name of the attribute to be set and as value
116
126
  * the buffer attribute to set it to. Rather than accessing this property directly,
@@ -124,7 +134,7 @@ class BufferGeometry extends EventDispatcher {
124
134
  * This dictionary holds the morph targets of the geometry.
125
135
  *
126
136
  * Note: Once the geometry has been rendered, the morph attribute data cannot
127
- * be changed. You will have to call `dispose()?, and create a new geometry instance.
137
+ * be changed. You will have to call `dispose()`, and create a new geometry instance.
128
138
  *
129
139
  * @type {Object}
130
140
  */
@@ -224,11 +234,13 @@ class BufferGeometry extends EventDispatcher {
224
234
  * Sets the given indirect attribute to this geometry.
225
235
  *
226
236
  * @param {BufferAttribute} indirect - The attribute holding indirect draw calls.
237
+ * @param {number|Array<number>} [indirectOffset=0] - The offset, in bytes, into the indirect drawing buffer where the value data begins. If an array is provided, multiple indirect draw calls will be made for each offset.
227
238
  * @return {BufferGeometry} A reference to this instance.
228
239
  */
229
- setIndirect( indirect ) {
240
+ setIndirect( indirect, indirectOffset = 0 ) {
230
241
 
231
242
  this.indirect = indirect;
243
+ this.indirectOffset = indirectOffset;
232
244
 
233
245
  return this;
234
246
 
package/src/core/Clock.js CHANGED
@@ -1,11 +1,16 @@
1
+ import { warn } from '../utils.js';
2
+
1
3
  /**
2
4
  * Class for keeping track of time.
5
+ *
6
+ * @deprecated since r183.
3
7
  */
4
8
  class Clock {
5
9
 
6
10
  /**
7
11
  * Constructs a new clock.
8
12
  *
13
+ * @deprecated since 183.
9
14
  * @param {boolean} [autoStart=true] - Whether to automatically start the clock when
10
15
  * `getDelta()` is called for the first time.
11
16
  */
@@ -53,6 +58,8 @@ class Clock {
53
58
  */
54
59
  this.running = false;
55
60
 
61
+ warn( 'Clock: This module has been deprecated. Please use THREE.Timer instead.' ); // @deprecated, r183
62
+
56
63
  }
57
64
 
58
65
  /**
@@ -242,7 +242,8 @@ class Object3D extends EventDispatcher {
242
242
 
243
243
  /**
244
244
  * When set to `true`, the engine automatically computes the local matrix from position,
245
- * rotation and scale every frame.
245
+ * rotation and scale every frame. If set to `false`, the app is responsible for recomputing
246
+ * the local matrix by calling `updateMatrix()`.
246
247
  *
247
248
  * The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_AUTO_UPDATE`.
248
249
  *
@@ -253,7 +254,8 @@ class Object3D extends EventDispatcher {
253
254
 
254
255
  /**
255
256
  * When set to `true`, the engine automatically computes the world matrix from the current local
256
- * matrix and the object's transformation hierarchy.
257
+ * matrix and the object's transformation hierarchy. If set to `false`, the app is responsible for
258
+ * recomputing the world matrix by directly updating the `matrixWorld` property.
257
259
  *
258
260
  * The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE`.
259
261
  *
@@ -354,6 +356,19 @@ class Object3D extends EventDispatcher {
354
356
  */
355
357
  this.customDistanceMaterial = undefined;
356
358
 
359
+ /**
360
+ * Whether the 3D object is supposed to be static or not. If set to `true`, it means
361
+ * the 3D object is not going to be changed after the initial renderer. This includes
362
+ * geometry and material settings. A static 3D object can be processed by the renderer
363
+ * slightly faster since certain state checks can be bypassed.
364
+ *
365
+ * Only relevant in context of {@link WebGPURenderer}.
366
+ *
367
+ * @type {boolean}
368
+ * @default false
369
+ */
370
+ this.static = false;
371
+
357
372
  /**
358
373
  * An object that can be used to store custom data about the 3D object. It
359
374
  * should not hold references to functions as these will not be cloned.
@@ -362,6 +377,16 @@ class Object3D extends EventDispatcher {
362
377
  */
363
378
  this.userData = {};
364
379
 
380
+ /**
381
+ * The pivot point for rotation and scale transformations.
382
+ * When set, rotation and scale are applied around this point
383
+ * instead of the object's origin.
384
+ *
385
+ * @type {?Vector3}
386
+ * @default null
387
+ */
388
+ this.pivot = null;
389
+
365
390
  }
366
391
 
367
392
  /**
@@ -644,7 +669,7 @@ class Object3D extends EventDispatcher {
644
669
  }
645
670
 
646
671
  /**
647
- * Converts the given vector from this 3D object's word space to local space.
672
+ * Converts the given vector from this 3D object's world space to local space.
648
673
  *
649
674
  * @param {Vector3} vector - The vector to convert.
650
675
  * @return {Vector3} The converted vector.
@@ -1109,6 +1134,19 @@ class Object3D extends EventDispatcher {
1109
1134
 
1110
1135
  this.matrix.compose( this.position, this.quaternion, this.scale );
1111
1136
 
1137
+ const pivot = this.pivot;
1138
+
1139
+ if ( pivot !== null ) {
1140
+
1141
+ const px = pivot.x, py = pivot.y, pz = pivot.z;
1142
+ const te = this.matrix.elements;
1143
+
1144
+ te[ 12 ] += px - te[ 0 ] * px - te[ 4 ] * py - te[ 8 ] * pz;
1145
+ te[ 13 ] += py - te[ 1 ] * px - te[ 5 ] * py - te[ 9 ] * pz;
1146
+ te[ 14 ] += pz - te[ 2 ] * px - te[ 6 ] * py - te[ 10 ] * pz;
1147
+
1148
+ }
1149
+
1112
1150
  this.matrixWorldNeedsUpdate = true;
1113
1151
 
1114
1152
  }
@@ -1122,7 +1160,7 @@ class Object3D extends EventDispatcher {
1122
1160
  * `true` by default. Set these flags to `false` if you need more control over the update matrix process.
1123
1161
  *
1124
1162
  * @param {boolean} [force=false] - When set to `true`, a recomputation of world matrices is forced even
1125
- * when {@link Object3D#matrixWorldAutoUpdate} is set to `false`.
1163
+ * when {@link Object3D#matrixWorldNeedsUpdate} is `false`.
1126
1164
  */
1127
1165
  updateMatrixWorld( force ) {
1128
1166
 
@@ -1267,14 +1305,20 @@ class Object3D extends EventDispatcher {
1267
1305
  if ( this.visible === false ) object.visible = false;
1268
1306
  if ( this.frustumCulled === false ) object.frustumCulled = false;
1269
1307
  if ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;
1308
+ if ( this.static !== false ) object.static = this.static;
1270
1309
  if ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;
1271
1310
 
1272
1311
  object.layers = this.layers.mask;
1273
1312
  object.matrix = this.matrix.toArray();
1274
1313
  object.up = this.up.toArray();
1275
1314
 
1315
+ if ( this.pivot !== null ) object.pivot = this.pivot.toArray();
1316
+
1276
1317
  if ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;
1277
1318
 
1319
+ if ( this.morphTargetDictionary !== undefined ) object.morphTargetDictionary = Object.assign( {}, this.morphTargetDictionary );
1320
+ if ( this.morphTargetInfluences !== undefined ) object.morphTargetInfluences = this.morphTargetInfluences.slice();
1321
+
1278
1322
  // object specific properties
1279
1323
 
1280
1324
  if ( this.isInstancedMesh ) {
@@ -1548,6 +1592,8 @@ class Object3D extends EventDispatcher {
1548
1592
  this.quaternion.copy( source.quaternion );
1549
1593
  this.scale.copy( source.scale );
1550
1594
 
1595
+ this.pivot = ( source.pivot !== null ) ? source.pivot.clone() : null;
1596
+
1551
1597
  this.matrix.copy( source.matrix );
1552
1598
  this.matrixWorld.copy( source.matrixWorld );
1553
1599
 
@@ -1565,6 +1611,8 @@ class Object3D extends EventDispatcher {
1565
1611
  this.frustumCulled = source.frustumCulled;
1566
1612
  this.renderOrder = source.renderOrder;
1567
1613
 
1614
+ this.static = source.static;
1615
+
1568
1616
  this.animations = source.animations.slice();
1569
1617
 
1570
1618
  this.userData = JSON.parse( JSON.stringify( source.userData ) );
@@ -38,7 +38,7 @@ class Raycaster {
38
38
  this.near = near;
39
39
 
40
40
  /**
41
- * All results returned are further away than near. Near can't be negative.
41
+ * All results returned are closer than far. Far can't be lower than near.
42
42
  *
43
43
  * @type {number}
44
44
  * @default Infinity
@@ -167,7 +167,7 @@ class Raycaster {
167
167
  * @property {Object3D} object - The 3D object that has been intersected.
168
168
  * @property {Vector2} uv - U,V coordinates at point of intersection.
169
169
  * @property {Vector2} uv1 - Second set of U,V coordinates at point of intersection.
170
- * @property {Vector3} uv1 - Interpolated normal vector at point of intersection.
170
+ * @property {Vector3} normal - Interpolated normal vector at point of intersection.
171
171
  * @property {number} instanceId - The index number of the instance where the ray
172
172
  * intersects the {@link InstancedMesh}.
173
173
  */