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
@@ -1,15 +1,18 @@
1
1
  import {
2
2
  InterpolateLinear,
3
3
  InterpolateSmooth,
4
- InterpolateDiscrete
4
+ InterpolateDiscrete,
5
+ InterpolateBezier
5
6
  } from '../constants.js';
6
7
  import { CubicInterpolant } from '../math/interpolants/CubicInterpolant.js';
7
8
  import { LinearInterpolant } from '../math/interpolants/LinearInterpolant.js';
8
9
  import { DiscreteInterpolant } from '../math/interpolants/DiscreteInterpolant.js';
10
+ import { BezierInterpolant } from '../math/interpolants/BezierInterpolant.js';
9
11
  import * as AnimationUtils from './AnimationUtils.js';
12
+ import { warn, error } from '../utils.js';
10
13
 
11
14
  /**
12
- * Represents s a timed sequence of keyframes, which are composed of lists of
15
+ * Represents a timed sequence of keyframes, which are composed of lists of
13
16
  * times and related values, and which are used to animate a specific property
14
17
  * of an object.
15
18
  */
@@ -21,7 +24,7 @@ class KeyframeTrack {
21
24
  * @param {string} name - The keyframe track's name.
22
25
  * @param {Array<number>} times - A list of keyframe times.
23
26
  * @param {Array<number|string|boolean>} values - A list of keyframe values.
24
- * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type.
27
+ * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth|InterpolateBezier)} [interpolation] - The interpolation type.
25
28
  */
26
29
  constructor( name, times, values, interpolation ) {
27
30
 
@@ -139,10 +142,37 @@ class KeyframeTrack {
139
142
 
140
143
  }
141
144
 
145
+ /**
146
+ * Factory method for creating a new Bezier interpolant.
147
+ *
148
+ * The Bezier interpolant requires tangent data to be set via the `settings` property
149
+ * on the track before creating the interpolant. The settings should contain:
150
+ * - `inTangents`: Float32Array with [time, value] pairs per keyframe per component
151
+ * - `outTangents`: Float32Array with [time, value] pairs per keyframe per component
152
+ *
153
+ * @static
154
+ * @param {TypedArray} [result] - The result buffer.
155
+ * @return {BezierInterpolant} The new interpolant.
156
+ */
157
+ InterpolantFactoryMethodBezier( result ) {
158
+
159
+ const interpolant = new BezierInterpolant( this.times, this.values, this.getValueSize(), result );
160
+
161
+ // Pass tangent data from track settings to interpolant
162
+ if ( this.settings ) {
163
+
164
+ interpolant.settings = this.settings;
165
+
166
+ }
167
+
168
+ return interpolant;
169
+
170
+ }
171
+
142
172
  /**
143
173
  * Defines the interpolation factor method for this keyframe track.
144
174
  *
145
- * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} interpolation - The interpolation type.
175
+ * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth|InterpolateBezier)} interpolation - The interpolation type.
146
176
  * @return {KeyframeTrack} A reference to this keyframe track.
147
177
  */
148
178
  setInterpolation( interpolation ) {
@@ -169,6 +199,12 @@ class KeyframeTrack {
169
199
 
170
200
  break;
171
201
 
202
+ case InterpolateBezier:
203
+
204
+ factoryMethod = this.InterpolantFactoryMethodBezier;
205
+
206
+ break;
207
+
172
208
  }
173
209
 
174
210
  if ( factoryMethod === undefined ) {
@@ -191,7 +227,7 @@ class KeyframeTrack {
191
227
 
192
228
  }
193
229
 
194
- console.warn( 'THREE.KeyframeTrack:', message );
230
+ warn( 'KeyframeTrack:', message );
195
231
  return this;
196
232
 
197
233
  }
@@ -205,7 +241,7 @@ class KeyframeTrack {
205
241
  /**
206
242
  * Returns the current interpolation type.
207
243
  *
208
- * @return {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} The interpolation type.
244
+ * @return {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth|InterpolateBezier)} The interpolation type.
209
245
  */
210
246
  getInterpolation() {
211
247
 
@@ -223,6 +259,10 @@ class KeyframeTrack {
223
259
 
224
260
  return InterpolateSmooth;
225
261
 
262
+ case this.InterpolantFactoryMethodBezier:
263
+
264
+ return InterpolateBezier;
265
+
226
266
  }
227
267
 
228
268
  }
@@ -351,7 +391,7 @@ class KeyframeTrack {
351
391
  const valueSize = this.getValueSize();
352
392
  if ( valueSize - Math.floor( valueSize ) !== 0 ) {
353
393
 
354
- console.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );
394
+ error( 'KeyframeTrack: Invalid value size in track.', this );
355
395
  valid = false;
356
396
 
357
397
  }
@@ -363,7 +403,7 @@ class KeyframeTrack {
363
403
 
364
404
  if ( nKeys === 0 ) {
365
405
 
366
- console.error( 'THREE.KeyframeTrack: Track is empty.', this );
406
+ error( 'KeyframeTrack: Track is empty.', this );
367
407
  valid = false;
368
408
 
369
409
  }
@@ -376,7 +416,7 @@ class KeyframeTrack {
376
416
 
377
417
  if ( typeof currTime === 'number' && isNaN( currTime ) ) {
378
418
 
379
- console.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );
419
+ error( 'KeyframeTrack: Time is not a valid number.', this, i, currTime );
380
420
  valid = false;
381
421
  break;
382
422
 
@@ -384,7 +424,7 @@ class KeyframeTrack {
384
424
 
385
425
  if ( prevTime !== null && prevTime > currTime ) {
386
426
 
387
- console.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );
427
+ error( 'KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );
388
428
  valid = false;
389
429
  break;
390
430
 
@@ -404,7 +444,7 @@ class KeyframeTrack {
404
444
 
405
445
  if ( isNaN( value ) ) {
406
446
 
407
- console.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );
447
+ error( 'KeyframeTrack: Value is not a valid number.', this, i, value );
408
448
  valid = false;
409
449
  break;
410
450
 
@@ -424,7 +464,7 @@ class KeyframeTrack {
424
464
  * Optimizes this keyframe track by removing equivalent sequential keys (which are
425
465
  * common in morph target sequences).
426
466
  *
427
- * @return {AnimationClip} A reference to this animation clip.
467
+ * @return {KeyframeTrack} A reference to this keyframe track.
428
468
  */
429
469
  optimize() {
430
470
 
@@ -564,7 +604,7 @@ class KeyframeTrack {
564
604
  /**
565
605
  * The value type name.
566
606
  *
567
- * @type {String}
607
+ * @type {string}
568
608
  * @default ''
569
609
  */
570
610
  KeyframeTrack.prototype.ValueTypeName = '';
@@ -588,7 +628,7 @@ KeyframeTrack.prototype.ValueBufferType = Float32Array;
588
628
  /**
589
629
  * The default interpolation type of this keyframe track.
590
630
  *
591
- * @type {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)}
631
+ * @type {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth|InterpolateBezier)}
592
632
  * @default InterpolateLinear
593
633
  */
594
634
  KeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;
@@ -1,3 +1,4 @@
1
+ import { warn, error } from '../utils.js';
1
2
  // Characters [].:/ are reserved for track binding syntax.
2
3
  const _RESERVED_CHARS_RE = '\\[\\]\\.:\\/';
3
4
  const _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );
@@ -507,7 +508,7 @@ class PropertyBinding {
507
508
  // ensure there is a value node
508
509
  if ( ! targetObject ) {
509
510
 
510
- console.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );
511
+ warn( 'PropertyBinding: No target node found for track: ' + this.path + '.' );
511
512
  return;
512
513
 
513
514
  }
@@ -523,14 +524,14 @@ class PropertyBinding {
523
524
 
524
525
  if ( ! targetObject.material ) {
525
526
 
526
- console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );
527
+ error( 'PropertyBinding: Can not bind to material as node does not have a material.', this );
527
528
  return;
528
529
 
529
530
  }
530
531
 
531
532
  if ( ! targetObject.material.materials ) {
532
533
 
533
- console.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );
534
+ error( 'PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );
534
535
  return;
535
536
 
536
537
  }
@@ -543,7 +544,7 @@ class PropertyBinding {
543
544
 
544
545
  if ( ! targetObject.skeleton ) {
545
546
 
546
- console.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );
547
+ error( 'PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );
547
548
  return;
548
549
 
549
550
  }
@@ -578,14 +579,14 @@ class PropertyBinding {
578
579
 
579
580
  if ( ! targetObject.material ) {
580
581
 
581
- console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );
582
+ error( 'PropertyBinding: Can not bind to material as node does not have a material.', this );
582
583
  return;
583
584
 
584
585
  }
585
586
 
586
587
  if ( ! targetObject.material.map ) {
587
588
 
588
- console.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );
589
+ error( 'PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );
589
590
  return;
590
591
 
591
592
  }
@@ -597,7 +598,7 @@ class PropertyBinding {
597
598
 
598
599
  if ( targetObject[ objectName ] === undefined ) {
599
600
 
600
- console.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );
601
+ error( 'PropertyBinding: Can not bind to objectName of node undefined.', this );
601
602
  return;
602
603
 
603
604
  }
@@ -611,7 +612,7 @@ class PropertyBinding {
611
612
 
612
613
  if ( targetObject[ objectIndex ] === undefined ) {
613
614
 
614
- console.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );
615
+ error( 'PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );
615
616
  return;
616
617
 
617
618
  }
@@ -629,7 +630,7 @@ class PropertyBinding {
629
630
 
630
631
  const nodeName = parsedPath.nodeName;
631
632
 
632
- console.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +
633
+ error( 'PropertyBinding: Trying to update property for track: ' + nodeName +
633
634
  '.' + propertyName + ' but it wasn\'t found.', targetObject );
634
635
  return;
635
636
 
@@ -664,14 +665,14 @@ class PropertyBinding {
664
665
  // support resolving morphTarget names into indices.
665
666
  if ( ! targetObject.geometry ) {
666
667
 
667
- console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );
668
+ error( 'PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );
668
669
  return;
669
670
 
670
671
  }
671
672
 
672
673
  if ( ! targetObject.geometry.morphAttributes ) {
673
674
 
674
- console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );
675
+ error( 'PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );
675
676
  return;
676
677
 
677
678
  }
@@ -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';
@@ -1,9 +1,10 @@
1
1
  import { Object3D } from '../core/Object3D.js';
2
+ import { warn } from '../utils.js';
2
3
 
3
4
  /**
4
5
  * Represents a non-positional ( global ) audio object.
5
6
  *
6
- * This and related audio modules make use of the [Web Audio API]{@link https://www.w3.org/TR/webaudio-1.1/}.
7
+ * This and related audio modules make use of the [Web Audio API](https://www.w3.org/TR/webaudio-1.1/).
7
8
  *
8
9
  * ```js
9
10
  * // create an AudioListener and add it to the camera
@@ -190,7 +191,7 @@ class Audio extends Object3D {
190
191
  /**
191
192
  * Defines the source type.
192
193
  *
193
- * The property is automatically by one of the `set*()` methods.
194
+ * The property is automatically set by one of the `set*()` methods.
194
195
  *
195
196
  * @type {('empty'|'audioNode'|'mediaNode'|'mediaStreamNode'|'buffer')}
196
197
  * @readonly
@@ -314,14 +315,14 @@ class Audio extends Object3D {
314
315
 
315
316
  if ( this.isPlaying === true ) {
316
317
 
317
- console.warn( 'THREE.Audio: Audio is already playing.' );
318
+ warn( 'Audio: Audio is already playing.' );
318
319
  return;
319
320
 
320
321
  }
321
322
 
322
323
  if ( this.hasPlaybackControl === false ) {
323
324
 
324
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
325
+ warn( 'Audio: this Audio has no playback control.' );
325
326
  return;
326
327
 
327
328
  }
@@ -358,7 +359,7 @@ class Audio extends Object3D {
358
359
 
359
360
  if ( this.hasPlaybackControl === false ) {
360
361
 
361
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
362
+ warn( 'Audio: this Audio has no playback control.' );
362
363
  return;
363
364
 
364
365
  }
@@ -400,7 +401,7 @@ class Audio extends Object3D {
400
401
 
401
402
  if ( this.hasPlaybackControl === false ) {
402
403
 
403
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
404
+ warn( 'Audio: this Audio has no playback control.' );
404
405
  return;
405
406
 
406
407
  }
@@ -593,7 +594,7 @@ class Audio extends Object3D {
593
594
 
594
595
  if ( this.hasPlaybackControl === false ) {
595
596
 
596
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
597
+ warn( 'Audio: this Audio has no playback control.' );
597
598
  return;
598
599
 
599
600
  }
@@ -642,7 +643,7 @@ class Audio extends Object3D {
642
643
 
643
644
  if ( this.hasPlaybackControl === false ) {
644
645
 
645
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
646
+ warn( 'Audio: this Audio has no playback control.' );
646
647
  return false;
647
648
 
648
649
  }
@@ -663,7 +664,7 @@ class Audio extends Object3D {
663
664
 
664
665
  if ( this.hasPlaybackControl === false ) {
665
666
 
666
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
667
+ warn( 'Audio: this Audio has no playback control.' );
667
668
  return;
668
669
 
669
670
  }
@@ -741,7 +742,7 @@ class Audio extends Object3D {
741
742
 
742
743
  if ( source.sourceType !== 'buffer' ) {
743
744
 
744
- console.warn( 'THREE.Audio: Audio source type cannot be copied.' );
745
+ warn( 'Audio: Audio source type cannot be copied.' );
745
746
 
746
747
  return this;
747
748
 
@@ -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
 
@@ -154,7 +154,7 @@ class PositionalAudio extends Audio {
154
154
  * Defines which algorithm to use to reduce the volume of the audio source
155
155
  * as it moves away from the listener.
156
156
  *
157
- * Read [the spec]{@link https://www.w3.org/TR/webaudio-1.1/#enumdef-distancemodeltype}
157
+ * Read [the spec](https://www.w3.org/TR/webaudio-1.1/#enumdef-distancemodeltype)
158
158
  * for more details.
159
159
  *
160
160
  * @param {('linear'|'inverse'|'exponential')} value - The distance model to set.
@@ -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 );
@@ -1,7 +1,7 @@
1
1
  import { Camera } from './Camera.js';
2
2
 
3
3
  /**
4
- * Camera that uses [orthographic projection]{@link https://en.wikipedia.org/wiki/Orthographic_projection}.
4
+ * Camera that uses [orthographic projection](https://en.wikipedia.org/wiki/Orthographic_projection).
5
5
  *
6
6
  * In this projection mode, an object's size in the rendered image stays
7
7
  * constant regardless of its distance from the camera. This can be useful
@@ -8,7 +8,7 @@ const _minTarget = /*@__PURE__*/ new Vector2();
8
8
  const _maxTarget = /*@__PURE__*/ new Vector2();
9
9
 
10
10
  /**
11
- * Camera that uses [perspective projection]{@link https://en.wikipedia.org/wiki/Perspective_(graphical)}.
11
+ * Camera that uses [perspective projection](https://en.wikipedia.org/wiki/Perspective_(graphical)).
12
12
  *
13
13
  * This projection mode is designed to mimic the way the human eye sees. It
14
14
  * is the most common projection mode used for rendering a 3D scene.
@@ -9,8 +9,8 @@ const _projectionMatrix = /*@__PURE__*/ new Matrix4();
9
9
  /**
10
10
  * A special type of camera that uses two perspective cameras with
11
11
  * stereoscopic projection. Can be used for rendering stereo effects
12
- * like [3D Anaglyph]{@link https://en.wikipedia.org/wiki/Anaglyph_3D} or
13
- * [Parallax Barrier]{@link https://en.wikipedia.org/wiki/parallax_barrier}.
12
+ * like [3D Anaglyph](https://en.wikipedia.org/wiki/Anaglyph_3D) or
13
+ * [Parallax Barrier](https://en.wikipedia.org/wiki/parallax_barrier).
14
14
  */
15
15
  class StereoCamera {
16
16