super-three 0.179.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 (696) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -4
  3. package/build/three.cjs +14522 -12207
  4. package/build/three.core.js +12005 -10954
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +2270 -1005
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +63 -18
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +16573 -7890
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +16533 -7888
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  15. package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  16. package/examples/jsm/Addons.js +12 -4
  17. package/examples/jsm/animation/CCDIKSolver.js +8 -4
  18. package/examples/jsm/controls/ArcballControls.js +15 -12
  19. package/examples/jsm/controls/DragControls.js +9 -59
  20. package/examples/jsm/controls/FirstPersonControls.js +61 -57
  21. package/examples/jsm/controls/FlyControls.js +5 -1
  22. package/examples/jsm/controls/MapControls.js +55 -1
  23. package/examples/jsm/controls/OrbitControls.js +113 -10
  24. package/examples/jsm/controls/PointerLockControls.js +2 -10
  25. package/examples/jsm/controls/TrackballControls.js +9 -9
  26. package/examples/jsm/controls/TransformControls.js +35 -3
  27. package/examples/jsm/csm/CSM.js +2 -1
  28. package/examples/jsm/csm/CSMShadowNode.js +6 -2
  29. package/examples/jsm/effects/AnaglyphEffect.js +102 -7
  30. package/examples/jsm/effects/AsciiEffect.js +8 -8
  31. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  32. package/examples/jsm/environments/RoomEnvironment.js +3 -0
  33. package/examples/jsm/exporters/DRACOExporter.js +2 -2
  34. package/examples/jsm/exporters/EXRExporter.js +2 -2
  35. package/examples/jsm/exporters/GLTFExporter.js +185 -34
  36. package/examples/jsm/exporters/KTX2Exporter.js +4 -2
  37. package/examples/jsm/exporters/PLYExporter.js +1 -1
  38. package/examples/jsm/exporters/USDZExporter.js +31 -5
  39. package/examples/jsm/geometries/DecalGeometry.js +3 -3
  40. package/examples/jsm/geometries/ParametricGeometry.js +1 -1
  41. package/examples/jsm/geometries/TeapotGeometry.js +2 -2
  42. package/examples/jsm/geometries/TextGeometry.js +21 -2
  43. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  44. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  45. package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
  46. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
  47. package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
  48. package/examples/jsm/helpers/ViewHelper.js +110 -13
  49. package/examples/jsm/inspector/Extension.js +13 -0
  50. package/examples/jsm/inspector/Inspector.js +542 -0
  51. package/examples/jsm/inspector/RendererInspector.js +425 -0
  52. package/examples/jsm/inspector/extensions/extensions.json +6 -0
  53. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
  54. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
  55. package/examples/jsm/inspector/tabs/Console.js +238 -0
  56. package/examples/jsm/inspector/tabs/Memory.js +128 -0
  57. package/examples/jsm/inspector/tabs/Parameters.js +380 -0
  58. package/examples/jsm/inspector/tabs/Performance.js +268 -0
  59. package/examples/jsm/inspector/tabs/Settings.js +264 -0
  60. package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
  61. package/examples/jsm/inspector/tabs/Viewer.js +268 -0
  62. package/examples/jsm/inspector/ui/Graph.js +95 -0
  63. package/examples/jsm/inspector/ui/Item.js +170 -0
  64. package/examples/jsm/inspector/ui/List.js +75 -0
  65. package/examples/jsm/inspector/ui/Profiler.js +2072 -0
  66. package/examples/jsm/inspector/ui/Style.js +1667 -0
  67. package/examples/jsm/inspector/ui/Tab.js +265 -0
  68. package/examples/jsm/inspector/ui/Values.js +476 -0
  69. package/examples/jsm/inspector/ui/utils.js +69 -0
  70. package/examples/jsm/interaction/InteractionManager.js +226 -0
  71. package/examples/jsm/interactive/HTMLMesh.js +6 -10
  72. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  73. package/examples/jsm/interactive/SelectionBox.js +30 -0
  74. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  75. package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
  76. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  77. package/examples/jsm/lighting/LightProbeGrid.js +651 -0
  78. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  79. package/examples/jsm/lines/Line2.js +3 -3
  80. package/examples/jsm/lines/LineGeometry.js +1 -1
  81. package/examples/jsm/lines/LineMaterial.js +7 -1
  82. package/examples/jsm/lines/LineSegments2.js +2 -2
  83. package/examples/jsm/lines/Wireframe.js +2 -2
  84. package/examples/jsm/lines/WireframeGeometry2.js +1 -1
  85. package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
  86. package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
  87. package/examples/jsm/loaders/3DMLoader.js +5 -4
  88. package/examples/jsm/loaders/3MFLoader.js +3 -3
  89. package/examples/jsm/loaders/AMFLoader.js +2 -2
  90. package/examples/jsm/loaders/ColladaLoader.js +27 -4029
  91. package/examples/jsm/loaders/DDSLoader.js +1 -1
  92. package/examples/jsm/loaders/DRACOLoader.js +73 -22
  93. package/examples/jsm/loaders/EXRLoader.js +692 -53
  94. package/examples/jsm/loaders/FBXLoader.js +237 -39
  95. package/examples/jsm/loaders/FontLoader.js +23 -5
  96. package/examples/jsm/loaders/GCodeLoader.js +34 -8
  97. package/examples/jsm/loaders/GLTFLoader.js +159 -185
  98. package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
  99. package/examples/jsm/loaders/HDRLoader.js +485 -0
  100. package/examples/jsm/loaders/KMZLoader.js +5 -5
  101. package/examples/jsm/loaders/KTX2Loader.js +162 -53
  102. package/examples/jsm/loaders/KTXLoader.js +2 -2
  103. package/examples/jsm/loaders/LDrawLoader.js +41 -50
  104. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  105. package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
  106. package/examples/jsm/loaders/LWOLoader.js +9 -41
  107. package/examples/jsm/loaders/MaterialXLoader.js +22 -5
  108. package/examples/jsm/loaders/NRRDLoader.js +2 -2
  109. package/examples/jsm/loaders/OBJLoader.js +1 -1
  110. package/examples/jsm/loaders/PCDLoader.js +4 -2
  111. package/examples/jsm/loaders/PDBLoader.js +1 -1
  112. package/examples/jsm/loaders/RGBELoader.js +7 -473
  113. package/examples/jsm/loaders/SVGLoader.js +4 -4
  114. package/examples/jsm/loaders/TDSLoader.js +0 -2
  115. package/examples/jsm/loaders/TGALoader.js +0 -2
  116. package/examples/jsm/loaders/TTFLoader.js +4 -4
  117. package/examples/jsm/loaders/USDLoader.js +100 -40
  118. package/examples/jsm/loaders/UltraHDRLoader.js +287 -162
  119. package/examples/jsm/loaders/VOXLoader.js +660 -117
  120. package/examples/jsm/loaders/VRMLLoader.js +79 -2
  121. package/examples/jsm/loaders/VTKLoader.js +42 -25
  122. package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
  123. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  124. package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
  125. package/examples/jsm/loaders/usd/USDAParser.js +450 -363
  126. package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
  127. package/examples/jsm/loaders/usd/USDComposer.js +4594 -0
  128. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
  129. package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  130. package/examples/jsm/math/ColorSpaces.js +19 -1
  131. package/examples/jsm/math/ConvexHull.js +3 -3
  132. package/examples/jsm/math/ImprovedNoise.js +1 -1
  133. package/examples/jsm/math/Lut.js +2 -2
  134. package/examples/jsm/math/Octree.js +131 -1
  135. package/examples/jsm/math/SimplexNoise.js +1 -1
  136. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  137. package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
  138. package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
  139. package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
  140. package/examples/jsm/misc/RollerCoaster.js +42 -4
  141. package/examples/jsm/misc/TubePainter.js +383 -40
  142. package/examples/jsm/misc/Volume.js +1 -2
  143. package/examples/jsm/misc/VolumeSlice.js +0 -1
  144. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  145. package/examples/jsm/modifiers/TessellateModifier.js +1 -1
  146. package/examples/jsm/objects/LensflareMesh.js +1 -1
  147. package/examples/jsm/objects/Reflector.js +73 -25
  148. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  149. package/examples/jsm/objects/Sky.js +91 -7
  150. package/examples/jsm/objects/SkyMesh.js +151 -17
  151. package/examples/jsm/objects/Water.js +7 -6
  152. package/examples/jsm/objects/Water2.js +5 -3
  153. package/examples/jsm/objects/WaterMesh.js +11 -13
  154. package/examples/jsm/physics/AmmoPhysics.js +12 -7
  155. package/examples/jsm/physics/JoltPhysics.js +10 -6
  156. package/examples/jsm/physics/RapierPhysics.js +9 -5
  157. package/examples/jsm/postprocessing/EffectComposer.js +7 -5
  158. package/examples/jsm/postprocessing/GlitchPass.js +2 -2
  159. package/examples/jsm/postprocessing/OutlinePass.js +1 -1
  160. package/examples/jsm/postprocessing/OutputPass.js +9 -0
  161. package/examples/jsm/postprocessing/RenderPass.js +10 -0
  162. package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
  163. package/examples/jsm/postprocessing/SSRPass.js +37 -8
  164. package/examples/jsm/postprocessing/UnrealBloomPass.js +56 -24
  165. package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
  166. package/examples/jsm/renderers/CSS3DRenderer.js +8 -7
  167. package/examples/jsm/renderers/Projector.js +246 -28
  168. package/examples/jsm/renderers/SVGRenderer.js +175 -61
  169. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
  170. package/examples/jsm/shaders/AfterimageShader.js +1 -1
  171. package/examples/jsm/shaders/BleachBypassShader.js +1 -1
  172. package/examples/jsm/shaders/BokehShader.js +1 -1
  173. package/examples/jsm/shaders/BokehShader2.js +1 -1
  174. package/examples/jsm/shaders/DotScreenShader.js +1 -1
  175. package/examples/jsm/shaders/FocusShader.js +1 -1
  176. package/examples/jsm/shaders/GTAOShader.js +21 -8
  177. package/examples/jsm/shaders/HalftoneShader.js +12 -1
  178. package/examples/jsm/shaders/KaleidoShader.js +1 -1
  179. package/examples/jsm/shaders/PoissonDenoiseShader.js +8 -4
  180. package/examples/jsm/shaders/SAOShader.js +17 -4
  181. package/examples/jsm/shaders/SSAOShader.js +11 -1
  182. package/examples/jsm/shaders/SSRShader.js +7 -6
  183. package/examples/jsm/shaders/SepiaShader.js +1 -1
  184. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
  185. package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
  186. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +3 -5
  187. package/examples/jsm/shaders/VignetteShader.js +1 -1
  188. package/examples/jsm/transpiler/AST.js +44 -0
  189. package/examples/jsm/transpiler/GLSLDecoder.js +85 -25
  190. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
  191. package/examples/jsm/transpiler/TSLEncoder.js +52 -10
  192. package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
  193. package/examples/jsm/transpiler/WGSLEncoder.js +51 -0
  194. package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
  195. package/examples/jsm/tsl/display/AfterImageNode.js +36 -24
  196. package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
  197. package/examples/jsm/tsl/display/AnamorphicNode.js +40 -5
  198. package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
  199. package/examples/jsm/tsl/display/BloomNode.js +23 -9
  200. package/examples/jsm/tsl/display/CRT.js +150 -0
  201. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +5 -37
  202. package/examples/jsm/tsl/display/DenoiseNode.js +3 -1
  203. package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
  204. package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
  205. package/examples/jsm/tsl/display/FSR1Node.js +477 -0
  206. package/examples/jsm/tsl/display/FXAANode.js +2 -2
  207. package/examples/jsm/tsl/display/GTAONode.js +59 -9
  208. package/examples/jsm/tsl/display/GaussianBlurNode.js +68 -35
  209. package/examples/jsm/tsl/display/GodraysNode.js +615 -0
  210. package/examples/jsm/tsl/display/LensflareNode.js +1 -1
  211. package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
  212. package/examples/jsm/tsl/display/OutlineNode.js +81 -20
  213. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
  214. package/examples/jsm/tsl/display/PixelationPassNode.js +7 -6
  215. package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
  216. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  217. package/examples/jsm/tsl/display/SMAANode.js +2 -2
  218. package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
  219. package/examples/jsm/tsl/display/SSGINode.js +638 -0
  220. package/examples/jsm/tsl/display/SSRNode.js +186 -69
  221. package/examples/jsm/tsl/display/SSSNode.js +490 -0
  222. package/examples/jsm/tsl/display/Shape.js +29 -0
  223. package/examples/jsm/tsl/display/SharpenNode.js +283 -0
  224. package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
  225. package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
  226. package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
  227. package/examples/jsm/tsl/display/TAAUNode.js +835 -0
  228. package/examples/jsm/tsl/display/TRAANode.js +381 -75
  229. package/examples/jsm/tsl/display/TransitionNode.js +1 -1
  230. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  231. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  232. package/examples/jsm/tsl/display/hashBlur.js +16 -18
  233. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  234. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
  235. package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
  236. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
  237. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
  238. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
  239. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
  240. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
  241. package/examples/jsm/tsl/math/Bayer.js +53 -3
  242. package/examples/jsm/utils/BufferGeometryUtils.js +3 -4
  243. package/examples/jsm/utils/ColorUtils.js +76 -0
  244. package/examples/jsm/utils/LDrawUtils.js +1 -1
  245. package/examples/jsm/utils/ShadowMapViewer.js +24 -10
  246. package/examples/jsm/utils/ShadowMapViewerGPU.js +13 -6
  247. package/examples/jsm/utils/SkeletonUtils.js +14 -8
  248. package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
  249. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  250. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  251. package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
  252. package/examples/jsm/webxr/XRHandModelFactory.js +4 -7
  253. package/package.json +27 -38
  254. package/src/Three.Core.js +7 -3
  255. package/src/Three.TSL.js +61 -16
  256. package/src/Three.WebGPU.Nodes.js +7 -0
  257. package/src/Three.WebGPU.js +11 -0
  258. package/src/Three.js +1 -0
  259. package/src/animation/AnimationAction.js +12 -2
  260. package/src/animation/AnimationClip.js +21 -5
  261. package/src/animation/AnimationMixer.js +9 -3
  262. package/src/animation/AnimationObjectGroup.js +2 -1
  263. package/src/animation/AnimationUtils.js +1 -12
  264. package/src/animation/KeyframeTrack.js +54 -14
  265. package/src/animation/PropertyBinding.js +12 -11
  266. package/src/animation/PropertyMixer.js +4 -4
  267. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  268. package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
  269. package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
  270. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
  271. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  272. package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
  273. package/src/audio/Audio.js +11 -10
  274. package/src/audio/AudioContext.js +2 -2
  275. package/src/audio/AudioListener.js +5 -3
  276. package/src/audio/PositionalAudio.js +1 -1
  277. package/src/cameras/Camera.js +32 -2
  278. package/src/cameras/CubeCamera.js +20 -0
  279. package/src/cameras/OrthographicCamera.js +1 -1
  280. package/src/cameras/PerspectiveCamera.js +1 -1
  281. package/src/cameras/StereoCamera.js +2 -2
  282. package/src/constants.js +100 -7
  283. package/src/core/BufferAttribute.js +13 -1
  284. package/src/core/BufferGeometry.js +24 -12
  285. package/src/core/Clock.js +7 -0
  286. package/src/core/EventDispatcher.js +1 -1
  287. package/src/core/InterleavedBuffer.js +1 -1
  288. package/src/core/InterleavedBufferAttribute.js +3 -2
  289. package/src/core/Object3D.js +55 -6
  290. package/src/core/Raycaster.js +4 -3
  291. package/src/core/RenderTarget.js +14 -5
  292. package/src/extras/Controls.js +5 -4
  293. package/src/extras/DataUtils.js +2 -1
  294. package/src/extras/Earcut.js +6 -0
  295. package/src/extras/ImageUtils.js +2 -2
  296. package/src/extras/PMREMGenerator.js +259 -57
  297. package/src/extras/TextureUtils.js +6 -1
  298. package/src/extras/core/Curve.js +2 -1
  299. package/src/extras/core/Interpolations.js +7 -1
  300. package/src/extras/core/ShapePath.js +4 -4
  301. package/src/extras/curves/CatmullRomCurve3.js +3 -2
  302. package/src/extras/lib/earcut.js +8 -8
  303. package/src/geometries/BoxGeometry.js +1 -0
  304. package/src/geometries/CapsuleGeometry.js +1 -0
  305. package/src/geometries/CircleGeometry.js +1 -0
  306. package/src/geometries/ConeGeometry.js +1 -0
  307. package/src/geometries/CylinderGeometry.js +1 -0
  308. package/src/geometries/DodecahedronGeometry.js +1 -0
  309. package/src/geometries/ExtrudeGeometry.js +10 -8
  310. package/src/geometries/IcosahedronGeometry.js +1 -0
  311. package/src/geometries/LatheGeometry.js +1 -0
  312. package/src/geometries/OctahedronGeometry.js +1 -0
  313. package/src/geometries/PlaneGeometry.js +1 -0
  314. package/src/geometries/PolyhedronGeometry.js +1 -1
  315. package/src/geometries/RingGeometry.js +1 -0
  316. package/src/geometries/ShapeGeometry.js +1 -0
  317. package/src/geometries/SphereGeometry.js +1 -0
  318. package/src/geometries/TetrahedronGeometry.js +1 -0
  319. package/src/geometries/TorusGeometry.js +9 -3
  320. package/src/geometries/TorusKnotGeometry.js +1 -0
  321. package/src/geometries/TubeGeometry.js +1 -0
  322. package/src/helpers/CameraHelper.js +4 -1
  323. package/src/helpers/DirectionalLightHelper.js +4 -1
  324. package/src/helpers/HemisphereLightHelper.js +3 -0
  325. package/src/helpers/PointLightHelper.js +1 -25
  326. package/src/helpers/SpotLightHelper.js +3 -0
  327. package/src/lights/DirectionalLight.js +13 -0
  328. package/src/lights/HemisphereLight.js +10 -0
  329. package/src/lights/Light.js +1 -11
  330. package/src/lights/LightProbe.js +0 -15
  331. package/src/lights/LightShadow.js +15 -6
  332. package/src/lights/PointLight.js +15 -0
  333. package/src/lights/PointLightShadow.js +0 -86
  334. package/src/lights/SpotLight.js +22 -1
  335. package/src/lights/webgpu/IESSpotLight.js +2 -1
  336. package/src/lights/webgpu/ProjectorLight.js +1 -1
  337. package/src/loaders/AnimationLoader.js +2 -1
  338. package/src/loaders/AudioLoader.js +13 -2
  339. package/src/loaders/BufferGeometryLoader.js +2 -2
  340. package/src/loaders/Cache.js +30 -2
  341. package/src/loaders/DataTextureLoader.js +6 -4
  342. package/src/loaders/FileLoader.js +4 -4
  343. package/src/loaders/ImageBitmapLoader.js +17 -13
  344. package/src/loaders/ImageLoader.js +1 -1
  345. package/src/loaders/Loader.js +9 -3
  346. package/src/loaders/LoadingManager.js +25 -3
  347. package/src/loaders/MaterialLoader.js +6 -4
  348. package/src/loaders/ObjectLoader.js +57 -17
  349. package/src/loaders/TextureLoader.js +1 -1
  350. package/src/loaders/nodes/NodeLoader.js +5 -4
  351. package/src/loaders/nodes/NodeObjectLoader.js +18 -0
  352. package/src/materials/Material.js +18 -3
  353. package/src/materials/MeshBasicMaterial.js +1 -0
  354. package/src/materials/MeshDepthMaterial.js +1 -0
  355. package/src/materials/MeshDistanceMaterial.js +1 -1
  356. package/src/materials/MeshLambertMaterial.js +11 -1
  357. package/src/materials/MeshMatcapMaterial.js +22 -0
  358. package/src/materials/MeshNormalMaterial.js +1 -0
  359. package/src/materials/MeshPhongMaterial.js +11 -1
  360. package/src/materials/MeshPhysicalMaterial.js +2 -1
  361. package/src/materials/MeshStandardMaterial.js +8 -7
  362. package/src/materials/MeshToonMaterial.js +2 -1
  363. package/src/materials/PointsMaterial.js +1 -1
  364. package/src/materials/ShaderMaterial.js +22 -3
  365. package/src/materials/nodes/Line2NodeMaterial.js +36 -9
  366. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
  367. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  368. package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
  369. package/src/materials/nodes/NodeMaterial.js +95 -35
  370. package/src/materials/nodes/PointsNodeMaterial.js +81 -28
  371. package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
  372. package/src/materials/nodes/manager/NodeMaterialObserver.js +194 -88
  373. package/src/math/Color.js +6 -5
  374. package/src/math/ColorManagement.js +9 -3
  375. package/src/math/Cylindrical.js +1 -1
  376. package/src/math/Euler.js +2 -1
  377. package/src/math/Line3.js +6 -5
  378. package/src/math/MathUtils.js +23 -21
  379. package/src/math/Matrix2.js +14 -10
  380. package/src/math/Matrix3.js +15 -11
  381. package/src/math/Matrix4.js +94 -81
  382. package/src/math/Plane.js +5 -4
  383. package/src/math/Quaternion.js +60 -84
  384. package/src/math/Sphere.js +1 -1
  385. package/src/math/Spherical.js +1 -1
  386. package/src/math/Triangle.js +1 -1
  387. package/src/math/Vector2.js +11 -7
  388. package/src/math/Vector3.js +15 -13
  389. package/src/math/Vector4.js +13 -9
  390. package/src/math/interpolants/BezierInterpolant.js +108 -0
  391. package/src/nodes/Nodes.js +86 -65
  392. package/src/nodes/TSL.js +11 -8
  393. package/src/nodes/accessors/Arrays.js +1 -1
  394. package/src/nodes/accessors/BatchNode.js +10 -10
  395. package/src/nodes/accessors/Bitangent.js +5 -5
  396. package/src/nodes/accessors/BufferAttributeNode.js +107 -15
  397. package/src/nodes/accessors/BufferNode.js +30 -3
  398. package/src/nodes/accessors/Camera.js +260 -13
  399. package/src/nodes/accessors/ClippingNode.js +10 -9
  400. package/src/nodes/accessors/CubeTextureNode.js +32 -6
  401. package/src/nodes/accessors/InstanceNode.js +164 -39
  402. package/src/nodes/accessors/Lights.js +10 -0
  403. package/src/nodes/accessors/MaterialNode.js +9 -1
  404. package/src/nodes/accessors/MaterialProperties.js +2 -5
  405. package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
  406. package/src/nodes/accessors/ModelNode.js +1 -1
  407. package/src/nodes/accessors/Normal.js +16 -15
  408. package/src/nodes/accessors/Object3DNode.js +2 -2
  409. package/src/nodes/accessors/Position.js +51 -3
  410. package/src/nodes/accessors/ReferenceBaseNode.js +7 -7
  411. package/src/nodes/accessors/ReferenceNode.js +11 -10
  412. package/src/nodes/accessors/RendererReferenceNode.js +1 -2
  413. package/src/nodes/accessors/SceneProperties.js +47 -0
  414. package/src/nodes/accessors/SkinningNode.js +27 -26
  415. package/src/nodes/accessors/StorageBufferNode.js +14 -24
  416. package/src/nodes/accessors/StorageTextureNode.js +62 -9
  417. package/src/nodes/accessors/Tangent.js +4 -14
  418. package/src/nodes/accessors/Texture3DNode.js +41 -31
  419. package/src/nodes/accessors/TextureNode.js +193 -63
  420. package/src/nodes/accessors/UniformArrayNode.js +6 -4
  421. package/src/nodes/accessors/UserDataNode.js +1 -2
  422. package/src/nodes/accessors/VertexColorNode.js +1 -2
  423. package/src/nodes/code/FunctionCallNode.js +25 -5
  424. package/src/nodes/code/FunctionNode.js +25 -3
  425. package/src/nodes/core/ArrayNode.js +22 -2
  426. package/src/nodes/core/AssignNode.js +6 -5
  427. package/src/nodes/core/AttributeNode.js +5 -4
  428. package/src/nodes/core/BypassNode.js +1 -1
  429. package/src/nodes/core/ContextNode.js +133 -15
  430. package/src/nodes/core/IndexNode.js +4 -3
  431. package/src/nodes/core/InputNode.js +3 -2
  432. package/src/nodes/core/InspectorNode.js +128 -0
  433. package/src/nodes/core/{CacheNode.js → IsolateNode.js} +41 -8
  434. package/src/nodes/core/MRTNode.js +48 -2
  435. package/src/nodes/core/Node.js +264 -46
  436. package/src/nodes/core/NodeBuilder.js +453 -87
  437. package/src/nodes/core/NodeError.js +28 -0
  438. package/src/nodes/core/NodeFrame.js +31 -23
  439. package/src/nodes/core/NodeFunction.js +2 -1
  440. package/src/nodes/core/NodeParser.js +2 -1
  441. package/src/nodes/core/NodeUniform.js +1 -1
  442. package/src/nodes/core/NodeUtils.js +25 -97
  443. package/src/nodes/core/OutputStructNode.js +12 -10
  444. package/src/nodes/core/ParameterNode.js +34 -3
  445. package/src/nodes/core/PropertyNode.js +26 -3
  446. package/src/nodes/core/StackNode.js +99 -23
  447. package/src/nodes/core/StackTrace.js +139 -0
  448. package/src/nodes/core/StructNode.js +22 -8
  449. package/src/nodes/core/StructTypeNode.js +13 -18
  450. package/src/nodes/core/SubBuildNode.js +4 -4
  451. package/src/nodes/core/UniformGroupNode.js +36 -6
  452. package/src/nodes/core/UniformNode.js +37 -13
  453. package/src/nodes/core/VarNode.js +96 -34
  454. package/src/nodes/core/VaryingNode.js +2 -18
  455. package/src/nodes/display/BlendModes.js +0 -63
  456. package/src/nodes/display/BumpMapNode.js +1 -1
  457. package/src/nodes/display/ColorAdjustment.js +18 -1
  458. package/src/nodes/display/ColorSpaceNode.js +3 -3
  459. package/src/nodes/display/FrontFacingNode.js +4 -8
  460. package/src/nodes/display/NormalMapNode.js +41 -5
  461. package/src/nodes/display/PassNode.js +175 -25
  462. package/src/nodes/display/RenderOutputNode.js +35 -9
  463. package/src/nodes/display/ScreenNode.js +47 -15
  464. package/src/nodes/display/ToneMappingNode.js +32 -5
  465. package/src/nodes/display/ToonOutlinePassNode.js +10 -2
  466. package/src/nodes/display/ViewportDepthNode.js +52 -4
  467. package/src/nodes/display/ViewportDepthTextureNode.js +14 -6
  468. package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
  469. package/src/nodes/display/ViewportTextureNode.js +72 -14
  470. package/src/nodes/fog/Fog.js +18 -34
  471. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  472. package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
  473. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  474. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  475. package/src/nodes/functions/BasicLightingModel.js +2 -1
  476. package/src/nodes/functions/PhysicalLightingModel.js +128 -46
  477. package/src/nodes/functions/VolumetricLightingModel.js +5 -5
  478. package/src/nodes/geometry/RangeNode.js +44 -6
  479. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  480. package/src/nodes/gpgpu/BarrierNode.js +9 -0
  481. package/src/nodes/gpgpu/ComputeBuiltinNode.js +4 -4
  482. package/src/nodes/gpgpu/ComputeNode.js +76 -38
  483. package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  484. package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -4
  485. package/src/nodes/lighting/AnalyticLightNode.js +53 -0
  486. package/src/nodes/lighting/EnvironmentNode.js +34 -9
  487. package/src/nodes/lighting/LightsNode.js +10 -32
  488. package/src/nodes/lighting/PointShadowNode.js +167 -148
  489. package/src/nodes/lighting/ShadowFilterNode.js +55 -65
  490. package/src/nodes/lighting/ShadowNode.js +189 -44
  491. package/src/nodes/math/BitcastNode.js +156 -0
  492. package/src/nodes/math/BitcountNode.js +433 -0
  493. package/src/nodes/math/ConditionalNode.js +25 -8
  494. package/src/nodes/math/MathNode.js +98 -57
  495. package/src/nodes/math/OperatorNode.js +8 -5
  496. package/src/nodes/math/PackFloatNode.js +98 -0
  497. package/src/nodes/math/UnpackFloatNode.js +96 -0
  498. package/src/nodes/pmrem/PMREMNode.js +1 -1
  499. package/src/nodes/pmrem/PMREMUtils.js +111 -2
  500. package/src/nodes/shapes/Shapes.js +1 -1
  501. package/src/nodes/tsl/TSLBase.js +6 -3
  502. package/src/nodes/tsl/TSLCore.js +488 -166
  503. package/src/nodes/utils/ArrayElementNode.js +14 -1
  504. package/src/nodes/utils/ConvertNode.js +1 -1
  505. package/src/nodes/utils/DebugNode.js +14 -13
  506. package/src/nodes/utils/EventNode.js +67 -2
  507. package/src/nodes/utils/FlipNode.js +1 -1
  508. package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
  509. package/src/nodes/utils/JoinNode.js +7 -4
  510. package/src/nodes/utils/LoopNode.js +20 -24
  511. package/src/nodes/utils/MemberNode.js +60 -8
  512. package/src/nodes/utils/Packing.js +13 -1
  513. package/src/nodes/utils/PostProcessingUtils.js +60 -1
  514. package/src/nodes/utils/RTTNode.js +14 -4
  515. package/src/nodes/utils/ReflectorNode.js +61 -11
  516. package/src/nodes/utils/Remap.js +48 -0
  517. package/src/nodes/utils/RotateNode.js +1 -1
  518. package/src/nodes/utils/SampleNode.js +12 -2
  519. package/src/nodes/utils/SetNode.js +1 -1
  520. package/src/nodes/utils/SplitNode.js +12 -1
  521. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  522. package/src/nodes/utils/Timer.js +0 -47
  523. package/src/nodes/utils/UVUtils.js +28 -0
  524. package/src/objects/BatchedMesh.js +46 -18
  525. package/src/objects/InstancedMesh.js +30 -3
  526. package/src/objects/LOD.js +1 -1
  527. package/src/objects/Line.js +3 -2
  528. package/src/objects/LineSegments.js +2 -1
  529. package/src/objects/Mesh.js +1 -1
  530. package/src/objects/Points.js +1 -1
  531. package/src/objects/Skeleton.js +12 -2
  532. package/src/objects/SkinnedMesh.js +29 -10
  533. package/src/objects/Sprite.js +4 -3
  534. package/src/renderers/WebGLRenderer.js +372 -179
  535. package/src/renderers/common/Animation.js +16 -4
  536. package/src/renderers/common/Attributes.js +16 -2
  537. package/src/renderers/common/Backend.js +137 -35
  538. package/src/renderers/common/Background.js +28 -14
  539. package/src/renderers/common/BindGroup.js +1 -16
  540. package/src/renderers/common/Binding.js +11 -0
  541. package/src/renderers/common/Bindings.js +83 -12
  542. package/src/renderers/common/BlendMode.js +143 -0
  543. package/src/renderers/common/Buffer.js +40 -0
  544. package/src/renderers/common/BundleGroup.js +1 -1
  545. package/src/renderers/common/CanvasTarget.js +341 -0
  546. package/src/renderers/common/ChainMap.js +30 -6
  547. package/src/renderers/common/ComputePipeline.js +1 -1
  548. package/src/renderers/common/CubeRenderTarget.js +51 -7
  549. package/src/renderers/common/DataMap.js +1 -1
  550. package/src/renderers/common/Geometries.js +55 -3
  551. package/src/renderers/common/Info.js +337 -6
  552. package/src/renderers/common/InspectorBase.js +151 -0
  553. package/src/renderers/common/Lighting.js +5 -21
  554. package/src/renderers/common/Pipelines.js +41 -8
  555. package/src/renderers/common/PostProcessing.js +9 -226
  556. package/src/renderers/common/QuadMesh.js +7 -1
  557. package/src/renderers/common/ReadbackBuffer.js +78 -0
  558. package/src/renderers/common/RenderBundle.js +3 -1
  559. package/src/renderers/common/RenderBundles.js +7 -3
  560. package/src/renderers/common/RenderContext.js +18 -2
  561. package/src/renderers/common/RenderContexts.js +33 -49
  562. package/src/renderers/common/RenderList.js +7 -3
  563. package/src/renderers/common/RenderLists.js +2 -1
  564. package/src/renderers/common/RenderObject.js +32 -6
  565. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  566. package/src/renderers/common/RenderObjects.js +22 -6
  567. package/src/renderers/common/RenderPipeline.js +232 -17
  568. package/src/renderers/common/Renderer.js +927 -335
  569. package/src/renderers/common/RendererUtils.js +9 -0
  570. package/src/renderers/common/SampledTexture.js +9 -1
  571. package/src/renderers/common/Sampler.js +52 -14
  572. package/src/renderers/common/StorageBuffer.js +13 -1
  573. package/src/renderers/common/StorageTexture.js +9 -1
  574. package/src/renderers/common/Textures.js +208 -47
  575. package/src/renderers/common/TimestampQueryPool.js +70 -6
  576. package/src/renderers/common/Uniform.js +8 -0
  577. package/src/renderers/common/UniformsGroup.js +64 -2
  578. package/src/renderers/common/XRManager.js +79 -51
  579. package/src/renderers/common/extras/PMREMGenerator.js +176 -79
  580. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  581. package/src/renderers/common/nodes/NodeLibrary.js +9 -7
  582. package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +260 -95
  583. package/src/renderers/common/nodes/NodeSampler.js +13 -1
  584. package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
  585. package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
  586. package/src/renderers/shaders/DFGLUTData.js +49 -0
  587. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
  588. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
  589. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
  590. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
  591. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
  592. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
  593. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -2
  594. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
  595. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
  596. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
  597. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
  598. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
  599. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
  600. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
  601. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
  602. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +152 -59
  603. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
  604. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  605. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
  606. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
  607. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
  608. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
  609. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
  610. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +221 -190
  611. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
  612. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  613. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  614. package/src/renderers/shaders/ShaderChunk.js +5 -3
  615. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
  616. package/src/renderers/shaders/ShaderLib/depth.glsl.js +4 -1
  617. package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
  618. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
  619. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
  620. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
  621. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
  622. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
  623. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  624. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
  625. package/src/renderers/shaders/ShaderLib.js +7 -6
  626. package/src/renderers/shaders/UniformsLib.js +8 -5
  627. package/src/renderers/shaders/UniformsUtils.js +52 -9
  628. package/src/renderers/webgl/WebGLAnimation.js +2 -1
  629. package/src/renderers/webgl/WebGLBackground.js +15 -15
  630. package/src/renderers/webgl/WebGLBindingStates.js +99 -27
  631. package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
  632. package/src/renderers/webgl/WebGLCapabilities.js +11 -5
  633. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  634. package/src/renderers/webgl/WebGLExtensions.js +2 -25
  635. package/src/renderers/webgl/WebGLGeometries.js +10 -7
  636. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
  637. package/src/renderers/webgl/WebGLInfo.js +3 -1
  638. package/src/renderers/webgl/WebGLLights.js +18 -1
  639. package/src/renderers/webgl/WebGLMaterials.js +24 -13
  640. package/src/renderers/webgl/WebGLObjects.js +3 -1
  641. package/src/renderers/webgl/WebGLOutput.js +270 -0
  642. package/src/renderers/webgl/WebGLProgram.js +63 -122
  643. package/src/renderers/webgl/WebGLPrograms.js +65 -52
  644. package/src/renderers/webgl/WebGLRenderLists.js +15 -0
  645. package/src/renderers/webgl/WebGLRenderStates.js +13 -2
  646. package/src/renderers/webgl/WebGLShadowMap.js +191 -26
  647. package/src/renderers/webgl/WebGLState.js +79 -40
  648. package/src/renderers/webgl/WebGLTextures.js +234 -68
  649. package/src/renderers/webgl/WebGLUniforms.js +40 -3
  650. package/src/renderers/webgl/WebGLUniformsGroups.js +24 -3
  651. package/src/renderers/webgl/WebGLUtils.js +8 -3
  652. package/src/renderers/webgl-fallback/WebGLBackend.js +438 -235
  653. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
  654. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +339 -84
  655. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
  656. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
  657. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
  658. package/src/renderers/webgl-fallback/utils/WebGLState.js +229 -11
  659. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +237 -72
  660. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +56 -27
  661. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +8 -3
  662. package/src/renderers/webgpu/WebGPUBackend.js +403 -253
  663. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
  664. package/src/renderers/webgpu/WebGPURenderer.js +5 -3
  665. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +491 -123
  666. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +108 -34
  667. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +360 -201
  668. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
  669. package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -2
  670. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +111 -54
  671. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +155 -205
  672. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +407 -149
  673. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +36 -13
  674. package/src/renderers/webgpu/utils/WebGPUUtils.js +55 -13
  675. package/src/renderers/webxr/WebXRController.js +12 -0
  676. package/src/renderers/webxr/WebXRManager.js +45 -29
  677. package/src/textures/CubeDepthTexture.js +76 -0
  678. package/src/textures/ExternalTexture.js +15 -4
  679. package/src/textures/HTMLTexture.js +74 -0
  680. package/src/textures/Source.js +5 -4
  681. package/src/textures/Texture.js +19 -7
  682. package/src/textures/VideoTexture.js +2 -3
  683. package/src/utils.js +344 -3
  684. package/examples/jsm/loaders/RGBMLoader.js +0 -1148
  685. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
  686. package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
  687. package/examples/jsm/shaders/GodRaysShader.js +0 -333
  688. package/src/nodes/accessors/SceneNode.js +0 -144
  689. package/src/nodes/code/ScriptableNode.js +0 -726
  690. package/src/nodes/code/ScriptableValueNode.js +0 -253
  691. package/src/nodes/display/PosterizeNode.js +0 -65
  692. package/src/nodes/functions/BSDF/DFGApprox.js +0 -30
  693. package/src/nodes/utils/RemapNode.js +0 -125
  694. package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
  695. package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
  696. package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
package/src/constants.js CHANGED
@@ -1,4 +1,4 @@
1
- export const REVISION = '179';
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
  *
@@ -721,6 +729,14 @@ export const UnsignedInt248Type = 1020;
721
729
  */
722
730
  export const UnsignedInt5999Type = 35902;
723
731
 
732
+ /**
733
+ * An unsigned int 10_11_11 (packed) data type for textures.
734
+ *
735
+ * @type {number}
736
+ * @constant
737
+ */
738
+ export const UnsignedInt101111Type = 35899;
739
+
724
740
  /**
725
741
  * Discards the red, green and blue components and reads just the alpha component.
726
742
  *
@@ -899,6 +915,38 @@ export const RGB_ETC2_Format = 37492;
899
915
  */
900
916
  export const RGBA_ETC2_EAC_Format = 37496;
901
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
+
902
950
  /**
903
951
  * ASTC RGBA 4x4 format.
904
952
  *
@@ -1117,6 +1165,17 @@ export const InterpolateLinear = 2301;
1117
1165
  */
1118
1166
  export const InterpolateSmooth = 2302;
1119
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
+
1120
1179
  /**
1121
1180
  * Zero curvature ending for animations.
1122
1181
  *
@@ -1183,7 +1242,7 @@ export const TriangleStripDrawMode = 1;
1183
1242
  export const TriangleFanDrawMode = 2;
1184
1243
 
1185
1244
  /**
1186
- * Basic depth packing.
1245
+ * The depth value is inverted (1.0 - z) for visualization purposes.
1187
1246
  *
1188
1247
  * @type {number}
1189
1248
  * @constant
@@ -1191,7 +1250,7 @@ export const TriangleFanDrawMode = 2;
1191
1250
  export const BasicDepthPacking = 3200;
1192
1251
 
1193
1252
  /**
1194
- * A depth value is packed into 32 bit RGBA.
1253
+ * The depth value is packed into 32 bit RGBA.
1195
1254
  *
1196
1255
  * @type {number}
1197
1256
  * @constant
@@ -1199,7 +1258,7 @@ export const BasicDepthPacking = 3200;
1199
1258
  export const RGBADepthPacking = 3201;
1200
1259
 
1201
1260
  /**
1202
- * A depth value is packed into 24 bit RGB.
1261
+ * The depth value is packed into 24 bit RGB.
1203
1262
  *
1204
1263
  * @type {number}
1205
1264
  * @constant
@@ -1207,7 +1266,7 @@ export const RGBADepthPacking = 3201;
1207
1266
  export const RGBDepthPacking = 3202;
1208
1267
 
1209
1268
  /**
1210
- * A depth value is packed into 16 bit RG.
1269
+ * The depth value is packed into 16 bit RG.
1211
1270
  *
1212
1271
  * @type {number}
1213
1272
  * @constant
@@ -1272,6 +1331,30 @@ export const LinearTransfer = 'linear';
1272
1331
  */
1273
1332
  export const SRGBTransfer = 'srgb';
1274
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
+
1275
1358
  /**
1276
1359
  * Sets the stencil buffer value to `0`.
1277
1360
  *
@@ -1616,6 +1699,16 @@ export const InterpolationSamplingMode = {
1616
1699
  EITHER: 'either'
1617
1700
  };
1618
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
+
1619
1712
  /**
1620
1713
  * This type represents mouse buttons and interaction types in context of controls.
1621
1714
  *
@@ -1662,6 +1755,6 @@ export const InterpolationSamplingMode = {
1662
1755
  * @property {string} NORMAL - Normal sampling mode.
1663
1756
  * @property {string} CENTROID - Centroid sampling mode.
1664
1757
  * @property {string} SAMPLE - Sample-specific sampling mode.
1665
- * @property {string} FLAT_FIRST - Flat interpolation using the first vertex.
1666
- * @property {string} FLAT_EITHER - Flat interpolation using either vertex.
1758
+ * @property {string} FIRST - Flat interpolation using the first vertex.
1759
+ * @property {string} EITHER - Flat interpolation using either vertex.
1667
1760
  */
@@ -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
  /**
@@ -8,7 +8,7 @@ import { Object3D } from './Object3D.js';
8
8
  import { Matrix4 } from '../math/Matrix4.js';
9
9
  import { Matrix3 } from '../math/Matrix3.js';
10
10
  import { generateUUID } from '../math/MathUtils.js';
11
- import { arrayNeedsUint32 } from '../utils.js';
11
+ import { arrayNeedsUint32, warn, error } from '../utils.js';
12
12
 
13
13
  let _id = 0;
14
14
 
@@ -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
  */
@@ -156,7 +166,7 @@ class BufferGeometry extends EventDispatcher {
156
166
  /**
157
167
  * Bounding box for the geometry which can be calculated with `computeBoundingBox()`.
158
168
  *
159
- * @type {Box3}
169
+ * @type {?Box3}
160
170
  * @default null
161
171
  */
162
172
  this.boundingBox = null;
@@ -164,7 +174,7 @@ class BufferGeometry extends EventDispatcher {
164
174
  /**
165
175
  * Bounding sphere for the geometry which can be calculated with `computeBoundingSphere()`.
166
176
  *
167
- * @type {Sphere}
177
+ * @type {?Sphere}
168
178
  * @default null
169
179
  */
170
180
  this.boundingSphere = null;
@@ -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
 
@@ -596,7 +608,7 @@ class BufferGeometry extends EventDispatcher {
596
608
 
597
609
  if ( points.length > positionAttribute.count ) {
598
610
 
599
- console.warn( 'THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' );
611
+ warn( 'BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' );
600
612
 
601
613
  }
602
614
 
@@ -626,7 +638,7 @@ class BufferGeometry extends EventDispatcher {
626
638
 
627
639
  if ( position && position.isGLBufferAttribute ) {
628
640
 
629
- console.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this );
641
+ error( 'BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this );
630
642
 
631
643
  this.boundingBox.set(
632
644
  new Vector3( - Infinity, - Infinity, - Infinity ),
@@ -677,7 +689,7 @@ class BufferGeometry extends EventDispatcher {
677
689
 
678
690
  if ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {
679
691
 
680
- console.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this );
692
+ error( 'BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this );
681
693
 
682
694
  }
683
695
 
@@ -701,7 +713,7 @@ class BufferGeometry extends EventDispatcher {
701
713
 
702
714
  if ( position && position.isGLBufferAttribute ) {
703
715
 
704
- console.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this );
716
+ error( 'BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this );
705
717
 
706
718
  this.boundingSphere.set( new Vector3(), Infinity );
707
719
 
@@ -792,7 +804,7 @@ class BufferGeometry extends EventDispatcher {
792
804
 
793
805
  if ( isNaN( this.boundingSphere.radius ) ) {
794
806
 
795
- console.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this );
807
+ error( 'BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this );
796
808
 
797
809
  }
798
810
 
@@ -820,7 +832,7 @@ class BufferGeometry extends EventDispatcher {
820
832
  attributes.normal === undefined ||
821
833
  attributes.uv === undefined ) {
822
834
 
823
- console.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );
835
+ error( 'BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );
824
836
  return;
825
837
 
826
838
  }
@@ -1130,7 +1142,7 @@ class BufferGeometry extends EventDispatcher {
1130
1142
 
1131
1143
  if ( this.index === null ) {
1132
1144
 
1133
- console.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );
1145
+ warn( 'BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );
1134
1146
  return this;
1135
1147
 
1136
1148
  }
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
  /**
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * This modules allows to dispatch event objects on custom JavaScript objects.
3
3
  *
4
- * Main repository: [eventdispatcher.js]{@link https://github.com/mrdoob/eventdispatcher.js/}
4
+ * Main repository: [eventdispatcher.js](https://github.com/mrdoob/eventdispatcher.js/)
5
5
  *
6
6
  * Code Example:
7
7
  * ```js
@@ -5,7 +5,7 @@ import { StaticDrawUsage } from '../constants.js';
5
5
  * "Interleaved" means that multiple attributes, possibly of different types,
6
6
  * (e.g., position, normal, uv, color) are packed into a single array buffer.
7
7
  *
8
- * An introduction into interleaved arrays can be found here: [Interleaved array basics]{@link https://blog.tojicode.com/2011/05/interleaved-array-basics.html}
8
+ * An introduction into interleaved arrays can be found here: [Interleaved array basics](https://blog.tojicode.com/2011/05/interleaved-array-basics.html)
9
9
  */
10
10
  class InterleavedBuffer {
11
11
 
@@ -1,6 +1,7 @@
1
1
  import { Vector3 } from '../math/Vector3.js';
2
2
  import { BufferAttribute } from './BufferAttribute.js';
3
3
  import { denormalize, normalize } from '../math/MathUtils.js';
4
+ import { log } from '../utils.js';
4
5
 
5
6
  const _vector = /*@__PURE__*/ new Vector3();
6
7
 
@@ -439,7 +440,7 @@ class InterleavedBufferAttribute {
439
440
 
440
441
  if ( data === undefined ) {
441
442
 
442
- console.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );
443
+ log( 'InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );
443
444
 
444
445
  const array = [];
445
446
 
@@ -489,7 +490,7 @@ class InterleavedBufferAttribute {
489
490
 
490
491
  if ( data === undefined ) {
491
492
 
492
- console.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );
493
+ log( 'InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );
493
494
 
494
495
  const array = [];
495
496
 
@@ -6,6 +6,7 @@ import { Euler } from '../math/Euler.js';
6
6
  import { Layers } from './Layers.js';
7
7
  import { Matrix3 } from '../math/Matrix3.js';
8
8
  import { generateUUID } from '../math/MathUtils.js';
9
+ import { error } from '../utils.js';
9
10
 
10
11
  let _object3DId = 0;
11
12
 
@@ -241,7 +242,8 @@ class Object3D extends EventDispatcher {
241
242
 
242
243
  /**
243
244
  * When set to `true`, the engine automatically computes the local matrix from position,
244
- * 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()`.
245
247
  *
246
248
  * The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_AUTO_UPDATE`.
247
249
  *
@@ -252,7 +254,8 @@ class Object3D extends EventDispatcher {
252
254
 
253
255
  /**
254
256
  * When set to `true`, the engine automatically computes the world matrix from the current local
255
- * 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.
256
259
  *
257
260
  * The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE`.
258
261
  *
@@ -353,6 +356,19 @@ class Object3D extends EventDispatcher {
353
356
  */
354
357
  this.customDistanceMaterial = undefined;
355
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
+
356
372
  /**
357
373
  * An object that can be used to store custom data about the 3D object. It
358
374
  * should not hold references to functions as these will not be cloned.
@@ -361,6 +377,16 @@ class Object3D extends EventDispatcher {
361
377
  */
362
378
  this.userData = {};
363
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
+
364
390
  }
365
391
 
366
392
  /**
@@ -643,7 +669,7 @@ class Object3D extends EventDispatcher {
643
669
  }
644
670
 
645
671
  /**
646
- * 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.
647
673
  *
648
674
  * @param {Vector3} vector - The vector to convert.
649
675
  * @return {Vector3} The converted vector.
@@ -733,7 +759,7 @@ class Object3D extends EventDispatcher {
733
759
 
734
760
  if ( object === this ) {
735
761
 
736
- console.error( 'THREE.Object3D.add: object can\'t be added as a child of itself.', object );
762
+ error( 'Object3D.add: object can\'t be added as a child of itself.', object );
737
763
  return this;
738
764
 
739
765
  }
@@ -752,7 +778,7 @@ class Object3D extends EventDispatcher {
752
778
 
753
779
  } else {
754
780
 
755
- console.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );
781
+ error( 'Object3D.add: object not an instance of THREE.Object3D.', object );
756
782
 
757
783
  }
758
784
 
@@ -1108,6 +1134,19 @@ class Object3D extends EventDispatcher {
1108
1134
 
1109
1135
  this.matrix.compose( this.position, this.quaternion, this.scale );
1110
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
+
1111
1150
  this.matrixWorldNeedsUpdate = true;
1112
1151
 
1113
1152
  }
@@ -1121,7 +1160,7 @@ class Object3D extends EventDispatcher {
1121
1160
  * `true` by default. Set these flags to `false` if you need more control over the update matrix process.
1122
1161
  *
1123
1162
  * @param {boolean} [force=false] - When set to `true`, a recomputation of world matrices is forced even
1124
- * when {@link Object3D#matrixWorldAutoUpdate} is set to `false`.
1163
+ * when {@link Object3D#matrixWorldNeedsUpdate} is `false`.
1125
1164
  */
1126
1165
  updateMatrixWorld( force ) {
1127
1166
 
@@ -1266,14 +1305,20 @@ class Object3D extends EventDispatcher {
1266
1305
  if ( this.visible === false ) object.visible = false;
1267
1306
  if ( this.frustumCulled === false ) object.frustumCulled = false;
1268
1307
  if ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;
1308
+ if ( this.static !== false ) object.static = this.static;
1269
1309
  if ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;
1270
1310
 
1271
1311
  object.layers = this.layers.mask;
1272
1312
  object.matrix = this.matrix.toArray();
1273
1313
  object.up = this.up.toArray();
1274
1314
 
1315
+ if ( this.pivot !== null ) object.pivot = this.pivot.toArray();
1316
+
1275
1317
  if ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;
1276
1318
 
1319
+ if ( this.morphTargetDictionary !== undefined ) object.morphTargetDictionary = Object.assign( {}, this.morphTargetDictionary );
1320
+ if ( this.morphTargetInfluences !== undefined ) object.morphTargetInfluences = this.morphTargetInfluences.slice();
1321
+
1277
1322
  // object specific properties
1278
1323
 
1279
1324
  if ( this.isInstancedMesh ) {
@@ -1547,6 +1592,8 @@ class Object3D extends EventDispatcher {
1547
1592
  this.quaternion.copy( source.quaternion );
1548
1593
  this.scale.copy( source.scale );
1549
1594
 
1595
+ this.pivot = ( source.pivot !== null ) ? source.pivot.clone() : null;
1596
+
1550
1597
  this.matrix.copy( source.matrix );
1551
1598
  this.matrixWorld.copy( source.matrixWorld );
1552
1599
 
@@ -1564,6 +1611,8 @@ class Object3D extends EventDispatcher {
1564
1611
  this.frustumCulled = source.frustumCulled;
1565
1612
  this.renderOrder = source.renderOrder;
1566
1613
 
1614
+ this.static = source.static;
1615
+
1567
1616
  this.animations = source.animations.slice();
1568
1617
 
1569
1618
  this.userData = JSON.parse( JSON.stringify( source.userData ) );
@@ -1,6 +1,7 @@
1
1
  import { Matrix4 } from '../math/Matrix4.js';
2
2
  import { Ray } from '../math/Ray.js';
3
3
  import { Layers } from './Layers.js';
4
+ import { error } from '../utils.js';
4
5
 
5
6
  const _matrix = /*@__PURE__*/ new Matrix4();
6
7
 
@@ -37,7 +38,7 @@ class Raycaster {
37
38
  this.near = near;
38
39
 
39
40
  /**
40
- * 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.
41
42
  *
42
43
  * @type {number}
43
44
  * @default Infinity
@@ -131,7 +132,7 @@ class Raycaster {
131
132
 
132
133
  } else {
133
134
 
134
- console.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );
135
+ error( 'Raycaster: Unsupported camera type: ' + camera.type );
135
136
 
136
137
  }
137
138
 
@@ -166,7 +167,7 @@ class Raycaster {
166
167
  * @property {Object3D} object - The 3D object that has been intersected.
167
168
  * @property {Vector2} uv - U,V coordinates at point of intersection.
168
169
  * @property {Vector2} uv1 - Second set of U,V coordinates at point of intersection.
169
- * @property {Vector3} uv1 - Interpolated normal vector at point of intersection.
170
+ * @property {Vector3} normal - Interpolated normal vector at point of intersection.
170
171
  * @property {number} instanceId - The index number of the instance where the ray
171
172
  * intersects the {@link InstancedMesh}.
172
173
  */
@@ -124,10 +124,6 @@ class RenderTarget extends EventDispatcher {
124
124
  */
125
125
  this.viewport = new Vector4( 0, 0, width, height );
126
126
 
127
- const image = { width: width, height: height, depth: options.depth };
128
-
129
- const texture = new Texture( image );
130
-
131
127
  /**
132
128
  * An array of textures. Each color attachment is represented as a separate texture.
133
129
  * Has at least a single entry for the default color attachment.
@@ -136,6 +132,9 @@ class RenderTarget extends EventDispatcher {
136
132
  */
137
133
  this.textures = [];
138
134
 
135
+ const image = { width: width, height: height, depth: options.depth };
136
+ const texture = new Texture( image );
137
+
139
138
  const count = options.count;
140
139
  for ( let i = 0; i < count; i ++ ) {
141
140
 
@@ -294,7 +293,16 @@ class RenderTarget extends EventDispatcher {
294
293
  this.textures[ i ].image.width = width;
295
294
  this.textures[ i ].image.height = height;
296
295
  this.textures[ i ].image.depth = depth;
297
- this.textures[ i ].isArrayTexture = this.textures[ i ].image.depth > 1;
296
+
297
+ if ( this.textures[ i ].isData3DTexture !== true ) { // Fix for #31693
298
+
299
+ // TODO: Reconsider setting isArrayTexture flag here and in the ctor of Texture.
300
+ // Maybe a method `isArrayTexture()` or just a getter could replace a flag since
301
+ // both are evaluated on each call?
302
+
303
+ this.textures[ i ].isArrayTexture = this.textures[ i ].image.depth > 1;
304
+
305
+ }
298
306
 
299
307
  }
300
308
 
@@ -361,6 +369,7 @@ class RenderTarget extends EventDispatcher {
361
369
  if ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();
362
370
 
363
371
  this.samples = source.samples;
372
+ this.multiview = source.multiview;
364
373
 
365
374
  return this;
366
375