super-three 0.181.0 → 0.185.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 (693) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -4
  3. package/build/three.cjs +21332 -19201
  4. package/build/three.core.js +20908 -19853
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +1947 -862
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +37 -16
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +33628 -25197
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +33394 -25000
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/jsm/Addons.js +14 -3
  15. package/examples/jsm/animation/CCDIKSolver.js +7 -3
  16. package/examples/jsm/controls/ArcballControls.js +13 -6
  17. package/examples/jsm/controls/DragControls.js +2 -2
  18. package/examples/jsm/controls/FirstPersonControls.js +127 -86
  19. package/examples/jsm/controls/FlyControls.js +4 -0
  20. package/examples/jsm/controls/MapControls.js +55 -1
  21. package/examples/jsm/controls/OrbitControls.js +111 -8
  22. package/examples/jsm/controls/TrackballControls.js +8 -8
  23. package/examples/jsm/controls/TransformControls.js +102 -17
  24. package/examples/jsm/csm/CSM.js +2 -1
  25. package/examples/jsm/csm/CSMFrustum.js +31 -6
  26. package/examples/jsm/csm/CSMShadowNode.js +10 -3
  27. package/examples/jsm/effects/AnaglyphEffect.js +102 -7
  28. package/examples/jsm/effects/AsciiEffect.js +14 -1
  29. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  30. package/examples/jsm/environments/RoomEnvironment.js +3 -0
  31. package/examples/jsm/exporters/DRACOExporter.js +27 -6
  32. package/examples/jsm/exporters/EXRExporter.js +1 -1
  33. package/examples/jsm/exporters/GLTFExporter.js +266 -21
  34. package/examples/jsm/exporters/PLYExporter.js +286 -73
  35. package/examples/jsm/exporters/USDZExporter.js +353 -99
  36. package/examples/jsm/generators/CityGenerator.js +346 -0
  37. package/examples/jsm/generators/ForestGenerator.js +347 -0
  38. package/examples/jsm/generators/TerrainGenerator.js +504 -0
  39. package/examples/jsm/generators/TreeGenerator.js +377 -0
  40. package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
  41. package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
  42. package/examples/jsm/geometries/DecalGeometry.js +1 -1
  43. package/examples/jsm/geometries/LoftGeometry.js +355 -0
  44. package/examples/jsm/geometries/TextGeometry.js +18 -0
  45. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  46. package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
  47. package/examples/jsm/helpers/LightProbeHelper.js +5 -4
  48. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
  49. package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
  50. package/examples/jsm/helpers/ViewHelper.js +83 -14
  51. package/examples/jsm/inspector/Extension.js +13 -0
  52. package/examples/jsm/inspector/Inspector.js +244 -91
  53. package/examples/jsm/inspector/RendererInspector.js +165 -39
  54. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
  55. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
  56. package/examples/jsm/inspector/tabs/Console.js +241 -25
  57. package/examples/jsm/inspector/tabs/Memory.js +136 -0
  58. package/examples/jsm/inspector/tabs/Parameters.js +115 -7
  59. package/examples/jsm/inspector/tabs/Performance.js +24 -9
  60. package/examples/jsm/inspector/tabs/Settings.js +306 -0
  61. package/examples/jsm/inspector/tabs/Timeline.js +1696 -0
  62. package/examples/jsm/inspector/tabs/Viewer.js +723 -9
  63. package/examples/jsm/inspector/ui/Graph.js +162 -25
  64. package/examples/jsm/inspector/ui/Item.js +92 -13
  65. package/examples/jsm/inspector/ui/List.js +2 -2
  66. package/examples/jsm/inspector/ui/Profiler.js +1991 -44
  67. package/examples/jsm/inspector/ui/Style.js +1943 -543
  68. package/examples/jsm/inspector/ui/Tab.js +226 -5
  69. package/examples/jsm/inspector/ui/Values.js +126 -8
  70. package/examples/jsm/inspector/ui/utils.js +143 -10
  71. package/examples/jsm/interaction/InteractionManager.js +226 -0
  72. package/examples/jsm/libs/basis/README.md +0 -1
  73. package/examples/jsm/libs/demuxer_mp4.js +3 -3
  74. package/examples/jsm/libs/draco/README.md +0 -1
  75. package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
  76. package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
  77. package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
  78. package/examples/jsm/libs/mikktspace.module.js +34 -9
  79. package/examples/jsm/lighting/ClusteredLighting.js +55 -0
  80. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  81. package/examples/jsm/lighting/LightProbeGrid.js +681 -0
  82. package/examples/jsm/lines/LineMaterial.js +45 -16
  83. package/examples/jsm/lines/LineSegments2.js +8 -0
  84. package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
  85. package/examples/jsm/loaders/3DMLoader.js +6 -5
  86. package/examples/jsm/loaders/3MFLoader.js +2 -2
  87. package/examples/jsm/loaders/AMFLoader.js +2 -2
  88. package/examples/jsm/loaders/ColladaLoader.js +24 -4026
  89. package/examples/jsm/loaders/DRACOLoader.js +51 -18
  90. package/examples/jsm/loaders/EXRLoader.js +701 -90
  91. package/examples/jsm/loaders/FBXLoader.js +235 -37
  92. package/examples/jsm/loaders/GCodeLoader.js +34 -8
  93. package/examples/jsm/loaders/GLTFLoader.js +146 -178
  94. package/examples/jsm/loaders/HDRLoader.js +7 -30
  95. package/examples/jsm/loaders/KMZLoader.js +5 -5
  96. package/examples/jsm/loaders/KTX2Loader.js +58 -17
  97. package/examples/jsm/loaders/LDrawLoader.js +49 -58
  98. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  99. package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
  100. package/examples/jsm/loaders/LWOLoader.js +11 -39
  101. package/examples/jsm/loaders/LottieLoader.js +1 -1
  102. package/examples/jsm/loaders/MaterialXLoader.js +31 -9
  103. package/examples/jsm/loaders/NRRDLoader.js +5 -5
  104. package/examples/jsm/loaders/PCDLoader.js +11 -9
  105. package/examples/jsm/loaders/PLYLoader.js +218 -55
  106. package/examples/jsm/loaders/SVGLoader.js +549 -497
  107. package/examples/jsm/loaders/TDSLoader.js +0 -2
  108. package/examples/jsm/loaders/TGALoader.js +0 -2
  109. package/examples/jsm/loaders/TTFLoader.js +1 -1
  110. package/examples/jsm/loaders/USDLoader.js +127 -43
  111. package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
  112. package/examples/jsm/loaders/VOXLoader.js +660 -117
  113. package/examples/jsm/loaders/VRMLLoader.js +80 -3
  114. package/examples/jsm/loaders/VTKLoader.js +42 -25
  115. package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
  116. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  117. package/examples/jsm/loaders/usd/USDAParser.js +504 -344
  118. package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
  119. package/examples/jsm/loaders/usd/USDComposer.js +4627 -0
  120. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
  121. package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
  122. package/examples/jsm/math/Octree.js +131 -1
  123. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  124. package/examples/jsm/misc/RollerCoaster.js +42 -4
  125. package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
  126. package/examples/jsm/misc/Volume.js +2 -3
  127. package/examples/jsm/misc/VolumeSlice.js +0 -1
  128. package/examples/jsm/modifiers/TessellateModifier.js +1 -1
  129. package/examples/jsm/objects/GroundedSkybox.js +1 -1
  130. package/examples/jsm/objects/LensflareMesh.js +1 -1
  131. package/examples/jsm/objects/Reflector.js +72 -25
  132. package/examples/jsm/objects/Sky.js +90 -6
  133. package/examples/jsm/objects/SkyMesh.js +150 -16
  134. package/examples/jsm/objects/Water.js +4 -3
  135. package/examples/jsm/objects/Water2.js +5 -3
  136. package/examples/jsm/objects/Water2Mesh.js +1 -1
  137. package/examples/jsm/objects/WaterMesh.js +5 -7
  138. package/examples/jsm/physics/AmmoPhysics.js +27 -15
  139. package/examples/jsm/physics/JoltPhysics.js +10 -6
  140. package/examples/jsm/physics/RapierPhysics.js +36 -7
  141. package/examples/jsm/postprocessing/EffectComposer.js +7 -5
  142. package/examples/jsm/postprocessing/OutputPass.js +9 -0
  143. package/examples/jsm/postprocessing/RenderPass.js +10 -0
  144. package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
  145. package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
  146. package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
  147. package/examples/jsm/renderers/Projector.js +246 -28
  148. package/examples/jsm/renderers/SVGRenderer.js +174 -60
  149. package/examples/jsm/shaders/GTAOShader.js +19 -6
  150. package/examples/jsm/shaders/HalftoneShader.js +12 -1
  151. package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
  152. package/examples/jsm/shaders/SAOShader.js +17 -4
  153. package/examples/jsm/shaders/SSAOShader.js +11 -1
  154. package/examples/jsm/shaders/SSRShader.js +6 -5
  155. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
  156. package/examples/jsm/shaders/VignetteShader.js +1 -1
  157. package/examples/jsm/shaders/VolumeShader.js +31 -44
  158. package/examples/jsm/transpiler/AST.js +44 -0
  159. package/examples/jsm/transpiler/GLSLDecoder.js +65 -8
  160. package/examples/jsm/transpiler/Linker.js +1 -1
  161. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
  162. package/examples/jsm/transpiler/TSLEncoder.js +46 -3
  163. package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
  164. package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
  165. package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
  166. package/examples/jsm/tsl/display/AfterImageNode.js +11 -1
  167. package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
  168. package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
  169. package/examples/jsm/tsl/display/BloomNode.js +75 -25
  170. package/examples/jsm/tsl/display/CRT.js +150 -0
  171. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
  172. package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
  173. package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
  174. package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
  175. package/examples/jsm/tsl/display/FSR1Node.js +477 -0
  176. package/examples/jsm/tsl/display/FXAANode.js +13 -14
  177. package/examples/jsm/tsl/display/GTAONode.js +40 -17
  178. package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
  179. package/examples/jsm/tsl/display/GodraysNode.js +615 -0
  180. package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
  181. package/examples/jsm/tsl/display/LensflareNode.js +1 -1
  182. package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
  183. package/examples/jsm/tsl/display/OutlineNode.js +69 -19
  184. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
  185. package/examples/jsm/tsl/display/PixelationPassNode.js +9 -8
  186. package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
  187. package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
  188. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  189. package/examples/jsm/tsl/display/SMAANode.js +2 -2
  190. package/examples/jsm/tsl/display/SSAAPassNode.js +15 -27
  191. package/examples/jsm/tsl/display/SSGINode.js +96 -62
  192. package/examples/jsm/tsl/display/SSRNode.js +831 -134
  193. package/examples/jsm/tsl/display/SSSNode.js +8 -6
  194. package/examples/jsm/tsl/display/Shape.js +29 -0
  195. package/examples/jsm/tsl/display/SharpenNode.js +283 -0
  196. package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
  197. package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
  198. package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
  199. package/examples/jsm/tsl/display/TAAUNode.js +835 -0
  200. package/examples/jsm/tsl/display/TRAANode.js +315 -126
  201. package/examples/jsm/tsl/display/TemporalReprojectNode.js +1023 -0
  202. package/examples/jsm/tsl/display/TransitionNode.js +1 -1
  203. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  204. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  205. package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +622 -0
  206. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
  207. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
  208. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
  209. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
  210. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
  211. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
  212. package/examples/jsm/tsl/math/Bayer.js +53 -3
  213. package/examples/jsm/tsl/math/curlNoise.js +107 -0
  214. package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
  215. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
  216. package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
  217. package/examples/jsm/tsl/utils/RNoise.js +51 -0
  218. package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
  219. package/examples/jsm/utils/BufferGeometryUtils.js +128 -62
  220. package/examples/jsm/utils/ColorUtils.js +76 -0
  221. package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
  222. package/examples/jsm/utils/LDrawUtils.js +1 -1
  223. package/examples/jsm/utils/SceneOptimizer.js +1 -1
  224. package/examples/jsm/utils/ShadowMapViewer.js +24 -10
  225. package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
  226. package/examples/jsm/utils/SkeletonUtils.js +14 -8
  227. package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
  228. package/examples/jsm/webxr/ARButton.js +1 -1
  229. package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
  230. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
  231. package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
  232. package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
  233. package/package.json +28 -34
  234. package/src/Three.Core.js +3 -1
  235. package/src/Three.TSL.js +35 -14
  236. package/src/Three.WebGPU.Nodes.js +5 -0
  237. package/src/Three.WebGPU.js +13 -0
  238. package/src/Three.js +1 -0
  239. package/src/animation/AnimationAction.js +18 -4
  240. package/src/animation/AnimationClip.js +0 -139
  241. package/src/animation/AnimationMixer.js +6 -0
  242. package/src/animation/AnimationUtils.js +1 -12
  243. package/src/animation/KeyframeTrack.js +47 -8
  244. package/src/animation/PropertyBinding.js +2 -2
  245. package/src/animation/PropertyMixer.js +4 -4
  246. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  247. package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
  248. package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
  249. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
  250. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  251. package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
  252. package/src/audio/Audio.js +1 -1
  253. package/src/audio/AudioContext.js +2 -2
  254. package/src/audio/AudioListener.js +5 -3
  255. package/src/cameras/Camera.js +34 -4
  256. package/src/cameras/CubeCamera.js +20 -0
  257. package/src/cameras/StereoCamera.js +5 -2
  258. package/src/constants.js +90 -5
  259. package/src/core/BufferAttribute.js +13 -1
  260. package/src/core/BufferGeometry.js +43 -9
  261. package/src/core/Clock.js +7 -0
  262. package/src/core/Object3D.js +69 -11
  263. package/src/core/Raycaster.js +3 -3
  264. package/src/core/RenderTarget.js +19 -6
  265. package/src/extras/PMREMGenerator.js +13 -22
  266. package/src/extras/TextureUtils.js +6 -2
  267. package/src/extras/core/ShapePath.js +149 -160
  268. package/src/extras/curves/CatmullRomCurve3.js +3 -2
  269. package/src/geometries/ExtrudeGeometry.js +2 -2
  270. package/src/geometries/PolyhedronGeometry.js +1 -1
  271. package/src/geometries/SphereGeometry.js +8 -3
  272. package/src/geometries/TorusGeometry.js +8 -3
  273. package/src/helpers/CameraHelper.js +3 -0
  274. package/src/helpers/DirectionalLightHelper.js +6 -1
  275. package/src/helpers/HemisphereLightHelper.js +5 -0
  276. package/src/helpers/PointLightHelper.js +3 -25
  277. package/src/helpers/SpotLightHelper.js +4 -1
  278. package/src/lights/DirectionalLight.js +13 -0
  279. package/src/lights/HemisphereLight.js +10 -0
  280. package/src/lights/Light.js +1 -11
  281. package/src/lights/LightProbe.js +0 -15
  282. package/src/lights/LightShadow.js +15 -6
  283. package/src/lights/PointLight.js +15 -0
  284. package/src/lights/PointLightShadow.js +0 -86
  285. package/src/lights/SpotLight.js +22 -1
  286. package/src/lights/webgpu/IESSpotLight.js +2 -1
  287. package/src/loaders/AudioLoader.js +11 -1
  288. package/src/loaders/Cache.js +28 -0
  289. package/src/loaders/DataTextureLoader.js +75 -42
  290. package/src/loaders/FileLoader.js +2 -3
  291. package/src/loaders/ImageBitmapLoader.js +12 -9
  292. package/src/loaders/Loader.js +6 -0
  293. package/src/loaders/LoadingManager.js +5 -0
  294. package/src/loaders/MaterialLoader.js +37 -266
  295. package/src/loaders/ObjectLoader.js +48 -6
  296. package/src/loaders/nodes/NodeLoader.js +2 -2
  297. package/src/loaders/nodes/NodeObjectLoader.js +18 -0
  298. package/src/materials/LineBasicMaterial.js +4 -0
  299. package/src/materials/Material.js +198 -1
  300. package/src/materials/MeshBasicMaterial.js +24 -0
  301. package/src/materials/MeshDepthMaterial.js +10 -0
  302. package/src/materials/MeshDistanceMaterial.js +10 -0
  303. package/src/materials/MeshLambertMaterial.js +49 -1
  304. package/src/materials/MeshMatcapMaterial.js +25 -1
  305. package/src/materials/MeshNormalMaterial.js +9 -1
  306. package/src/materials/MeshPhongMaterial.js +49 -1
  307. package/src/materials/MeshPhysicalMaterial.js +38 -0
  308. package/src/materials/MeshStandardMaterial.js +42 -1
  309. package/src/materials/MeshToonMaterial.js +35 -2
  310. package/src/materials/PointsMaterial.js +7 -0
  311. package/src/materials/ShaderMaterial.js +106 -1
  312. package/src/materials/SpriteMaterial.js +7 -0
  313. package/src/materials/nodes/Line2NodeMaterial.js +380 -297
  314. package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
  315. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  316. package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
  317. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +3 -30
  318. package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
  319. package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -15
  320. package/src/materials/nodes/NodeMaterial.js +153 -89
  321. package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
  322. package/src/materials/nodes/manager/NodeMaterialObserver.js +234 -100
  323. package/src/math/Box3.js +5 -0
  324. package/src/math/FrustumArray.js +103 -133
  325. package/src/math/Interpolant.js +1 -1
  326. package/src/math/Line3.js +6 -5
  327. package/src/math/MathUtils.js +12 -12
  328. package/src/math/Matrix2.js +13 -9
  329. package/src/math/Matrix3.js +24 -9
  330. package/src/math/Matrix4.js +112 -74
  331. package/src/math/Plane.js +4 -3
  332. package/src/math/Quaternion.js +3 -29
  333. package/src/math/Sphere.js +1 -1
  334. package/src/math/Triangle.js +1 -1
  335. package/src/math/Vector2.js +13 -9
  336. package/src/math/Vector3.js +17 -15
  337. package/src/math/Vector4.js +15 -11
  338. package/src/math/interpolants/BezierInterpolant.js +106 -0
  339. package/src/nodes/Nodes.js +86 -71
  340. package/src/nodes/TSL.js +15 -13
  341. package/src/nodes/accessors/Arrays.js +5 -5
  342. package/src/nodes/accessors/Batch.js +108 -0
  343. package/src/nodes/accessors/Bitangent.js +7 -7
  344. package/src/nodes/accessors/BufferAttributeNode.js +120 -17
  345. package/src/nodes/accessors/BufferNode.js +29 -2
  346. package/src/nodes/accessors/Camera.js +149 -28
  347. package/src/nodes/accessors/ClippingNode.js +5 -5
  348. package/src/nodes/accessors/CubeTextureNode.js +27 -2
  349. package/src/nodes/accessors/Instance.js +264 -0
  350. package/src/nodes/accessors/MaterialNode.js +27 -3
  351. package/src/nodes/accessors/MaterialProperties.js +6 -8
  352. package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
  353. package/src/nodes/accessors/ModelNode.js +1 -1
  354. package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
  355. package/src/nodes/accessors/Normal.js +24 -24
  356. package/src/nodes/accessors/Object3DNode.js +1 -1
  357. package/src/nodes/accessors/Position.js +39 -3
  358. package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
  359. package/src/nodes/accessors/ReferenceNode.js +9 -8
  360. package/src/nodes/accessors/ReflectVector.js +3 -3
  361. package/src/nodes/accessors/RendererReferenceNode.js +1 -2
  362. package/src/nodes/accessors/SceneProperties.js +47 -0
  363. package/src/nodes/accessors/Skinning.js +263 -0
  364. package/src/nodes/accessors/StorageBufferNode.js +16 -27
  365. package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
  366. package/src/nodes/accessors/StorageTextureNode.js +74 -11
  367. package/src/nodes/accessors/Tangent.js +8 -18
  368. package/src/nodes/accessors/Texture3DNode.js +32 -35
  369. package/src/nodes/accessors/TextureNode.js +124 -25
  370. package/src/nodes/accessors/UniformArrayNode.js +6 -4
  371. package/src/nodes/accessors/UserDataNode.js +1 -2
  372. package/src/nodes/accessors/VertexColorNode.js +1 -2
  373. package/src/nodes/code/FunctionCallNode.js +1 -1
  374. package/src/nodes/code/FunctionNode.js +4 -19
  375. package/src/nodes/core/ArrayNode.js +21 -2
  376. package/src/nodes/core/AssignNode.js +3 -3
  377. package/src/nodes/core/AttributeNode.js +3 -3
  378. package/src/nodes/core/BypassNode.js +1 -1
  379. package/src/nodes/core/ContextNode.js +104 -5
  380. package/src/nodes/core/IndexNode.js +2 -1
  381. package/src/nodes/core/InputNode.js +1 -1
  382. package/src/nodes/core/InspectorNode.js +1 -1
  383. package/src/nodes/core/IsolateNode.js +1 -1
  384. package/src/nodes/core/MRTNode.js +55 -4
  385. package/src/nodes/core/Node.js +151 -17
  386. package/src/nodes/core/NodeBuilder.js +479 -101
  387. package/src/nodes/core/NodeError.js +28 -0
  388. package/src/nodes/core/NodeFrame.js +12 -4
  389. package/src/nodes/core/NodeUtils.js +20 -18
  390. package/src/nodes/core/OutputStructNode.js +13 -11
  391. package/src/nodes/core/OverrideContextNode.js +153 -0
  392. package/src/nodes/core/ParameterNode.js +4 -4
  393. package/src/nodes/core/PropertyNode.js +66 -4
  394. package/src/nodes/core/StackNode.js +91 -20
  395. package/src/nodes/core/StackTrace.js +139 -0
  396. package/src/nodes/core/StructNode.js +20 -8
  397. package/src/nodes/core/StructTypeNode.js +17 -23
  398. package/src/nodes/core/SubBuildNode.js +2 -2
  399. package/src/nodes/core/UniformGroupNode.js +36 -6
  400. package/src/nodes/core/UniformNode.js +21 -5
  401. package/src/nodes/core/VarNode.js +56 -23
  402. package/src/nodes/core/VaryingNode.js +14 -21
  403. package/src/nodes/display/BlendModes.js +1 -105
  404. package/src/nodes/display/BumpMapNode.js +6 -1
  405. package/src/nodes/display/ColorAdjustment.js +27 -9
  406. package/src/nodes/display/ColorSpaceNode.js +3 -3
  407. package/src/nodes/display/FrontFacingNode.js +38 -9
  408. package/src/nodes/display/NormalMapNode.js +41 -6
  409. package/src/nodes/display/PassNode.js +157 -56
  410. package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
  411. package/src/nodes/display/RenderOutputNode.js +19 -10
  412. package/src/nodes/display/ScreenNode.js +4 -2
  413. package/src/nodes/display/ToneMappingNode.js +1 -1
  414. package/src/nodes/display/ToonOutlinePassNode.js +2 -2
  415. package/src/nodes/display/ViewportDepthNode.js +52 -4
  416. package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
  417. package/src/nodes/display/ViewportTextureNode.js +39 -11
  418. package/src/nodes/fog/Fog.js +18 -35
  419. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
  420. package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
  421. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  422. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  423. package/src/nodes/functions/PhysicalLightingModel.js +126 -45
  424. package/src/nodes/functions/VolumetricLightingModel.js +40 -7
  425. package/src/nodes/geometry/RangeNode.js +5 -3
  426. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  427. package/src/nodes/gpgpu/BarrierNode.js +9 -0
  428. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -3
  429. package/src/nodes/gpgpu/ComputeNode.js +74 -48
  430. package/src/nodes/gpgpu/SubgroupFunctionNode.js +2 -2
  431. package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -5
  432. package/src/nodes/lighting/AnalyticLightNode.js +53 -0
  433. package/src/nodes/lighting/EnvironmentNode.js +30 -5
  434. package/src/nodes/lighting/IESSpotLightNode.js +40 -2
  435. package/src/nodes/lighting/LightingContextNode.js +10 -2
  436. package/src/nodes/lighting/LightsNode.js +97 -65
  437. package/src/nodes/lighting/PointShadowNode.js +166 -148
  438. package/src/nodes/lighting/ShadowFilterNode.js +74 -117
  439. package/src/nodes/lighting/ShadowNode.js +149 -51
  440. package/src/nodes/materialx/lib/mx_noise.js +2 -2
  441. package/src/nodes/math/BitcastNode.js +1 -1
  442. package/src/nodes/math/BitcountNode.js +433 -0
  443. package/src/nodes/math/ConditionalNode.js +6 -6
  444. package/src/nodes/math/MathNode.js +115 -52
  445. package/src/nodes/math/OperatorNode.js +24 -23
  446. package/src/nodes/math/PackFloatNode.js +98 -0
  447. package/src/nodes/math/UnpackFloatNode.js +96 -0
  448. package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
  449. package/src/nodes/pmrem/PMREMNode.js +34 -3
  450. package/src/nodes/pmrem/PMREMUtils.js +9 -15
  451. package/src/nodes/tsl/TSLBase.js +1 -1
  452. package/src/nodes/tsl/TSLCore.js +99 -33
  453. package/src/nodes/utils/ArrayElementNode.js +14 -1
  454. package/src/nodes/utils/ConvertNode.js +1 -1
  455. package/src/nodes/utils/DebugNode.js +12 -12
  456. package/src/nodes/utils/EquirectUV.js +30 -5
  457. package/src/nodes/utils/EventNode.js +31 -2
  458. package/src/nodes/utils/FlipNode.js +1 -1
  459. package/src/nodes/utils/FunctionOverloadingNode.js +2 -2
  460. package/src/nodes/utils/JoinNode.js +3 -3
  461. package/src/nodes/utils/LoopNode.js +1 -1
  462. package/src/nodes/utils/MemberNode.js +2 -2
  463. package/src/nodes/utils/Packing.js +48 -5
  464. package/src/nodes/utils/PostProcessingUtils.js +33 -1
  465. package/src/nodes/utils/RTTNode.js +41 -25
  466. package/src/nodes/utils/ReflectorNode.js +4 -4
  467. package/src/nodes/utils/Remap.js +48 -0
  468. package/src/nodes/utils/RotateNode.js +1 -1
  469. package/src/nodes/utils/SampleNode.js +1 -1
  470. package/src/nodes/utils/SetNode.js +1 -1
  471. package/src/nodes/utils/SplitNode.js +1 -1
  472. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  473. package/src/nodes/utils/StorageArrayElementNode.js +1 -1
  474. package/src/nodes/utils/UVUtils.js +28 -0
  475. package/src/objects/BatchedMesh.js +66 -30
  476. package/src/objects/InstancedMesh.js +19 -3
  477. package/src/objects/Line.js +1 -1
  478. package/src/objects/Mesh.js +1 -1
  479. package/src/objects/Points.js +1 -1
  480. package/src/objects/SkinnedMesh.js +26 -9
  481. package/src/renderers/WebGLRenderer.js +344 -156
  482. package/src/renderers/common/Animation.js +3 -3
  483. package/src/renderers/common/Attributes.js +15 -1
  484. package/src/renderers/common/Backend.js +78 -13
  485. package/src/renderers/common/Background.js +26 -13
  486. package/src/renderers/common/BindGroup.js +1 -16
  487. package/src/renderers/common/Binding.js +11 -0
  488. package/src/renderers/common/Bindings.js +141 -57
  489. package/src/renderers/common/BlendMode.js +143 -0
  490. package/src/renderers/common/Buffer.js +49 -0
  491. package/src/renderers/common/BundleGroup.js +1 -1
  492. package/src/renderers/common/ChainMap.js +30 -6
  493. package/src/renderers/common/ClippingContext.js +10 -2
  494. package/src/renderers/common/ComputePipeline.js +1 -1
  495. package/src/renderers/common/CubeRenderTarget.js +51 -7
  496. package/src/renderers/common/Geometries.js +29 -3
  497. package/src/renderers/common/Info.js +374 -4
  498. package/src/renderers/common/InspectorBase.js +6 -1
  499. package/src/renderers/common/Lighting.js +51 -19
  500. package/src/renderers/common/Pipelines.js +40 -7
  501. package/src/renderers/common/PostProcessing.js +8 -206
  502. package/src/renderers/common/ReadbackBuffer.js +78 -0
  503. package/src/renderers/common/RenderBundle.js +3 -1
  504. package/src/renderers/common/RenderBundles.js +7 -3
  505. package/src/renderers/common/RenderContext.js +16 -0
  506. package/src/renderers/common/RenderContexts.js +33 -49
  507. package/src/renderers/common/RenderList.js +41 -4
  508. package/src/renderers/common/RenderLists.js +2 -1
  509. package/src/renderers/common/RenderObject.js +88 -16
  510. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  511. package/src/renderers/common/RenderObjects.js +21 -5
  512. package/src/renderers/common/RenderPipeline.js +232 -17
  513. package/src/renderers/common/Renderer.js +700 -163
  514. package/src/renderers/common/Sampler.js +16 -48
  515. package/src/renderers/common/StorageBuffer.js +13 -1
  516. package/src/renderers/common/Textures.js +121 -9
  517. package/src/renderers/common/TimestampQueryPool.js +6 -4
  518. package/src/renderers/common/Uniform.js +8 -0
  519. package/src/renderers/common/UniformsGroup.js +84 -1
  520. package/src/renderers/common/XRManager.js +377 -51
  521. package/src/renderers/common/extras/PMREMGenerator.js +40 -61
  522. package/src/renderers/common/nodes/NodeBuilderState.js +10 -2
  523. package/src/renderers/common/nodes/NodeLibrary.js +4 -4
  524. package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +298 -106
  525. package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
  526. package/src/renderers/common/nodes/NodeUniformBuffer.js +65 -0
  527. package/src/renderers/shaders/DFGLUTData.js +19 -34
  528. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
  529. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
  530. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
  531. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
  532. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
  533. package/src/renderers/shaders/ShaderChunk/common.glsl.js +13 -4
  534. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
  535. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  536. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +9 -13
  537. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
  538. package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
  539. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
  540. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
  541. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
  542. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
  543. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +3 -1
  544. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
  545. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -53
  546. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -2
  547. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
  548. package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -0
  549. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
  550. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
  551. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
  552. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
  553. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  554. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +2 -2
  555. package/src/renderers/shaders/ShaderChunk.js +5 -3
  556. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
  557. package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
  558. package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +2 -3
  559. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
  560. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
  561. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
  562. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
  563. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
  564. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  565. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
  566. package/src/renderers/shaders/ShaderLib.js +7 -6
  567. package/src/renderers/shaders/UniformsLib.js +7 -5
  568. package/src/renderers/shaders/UniformsUtils.js +27 -5
  569. package/src/renderers/webgl/WebGLAnimation.js +2 -1
  570. package/src/renderers/webgl/WebGLBackground.js +15 -15
  571. package/src/renderers/webgl/WebGLBindingStates.js +99 -27
  572. package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
  573. package/src/renderers/webgl/WebGLCapabilities.js +9 -4
  574. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  575. package/src/renderers/webgl/WebGLGeometries.js +10 -7
  576. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
  577. package/src/renderers/webgl/WebGLLights.js +18 -1
  578. package/src/renderers/webgl/WebGLMaterials.js +24 -13
  579. package/src/renderers/webgl/WebGLObjects.js +3 -1
  580. package/src/renderers/webgl/WebGLOutput.js +271 -0
  581. package/src/renderers/webgl/WebGLProgram.js +54 -113
  582. package/src/renderers/webgl/WebGLPrograms.js +74 -55
  583. package/src/renderers/webgl/WebGLRenderLists.js +24 -1
  584. package/src/renderers/webgl/WebGLRenderStates.js +13 -2
  585. package/src/renderers/webgl/WebGLShaderCache.js +5 -11
  586. package/src/renderers/webgl/WebGLShadowMap.js +188 -24
  587. package/src/renderers/webgl/WebGLState.js +75 -37
  588. package/src/renderers/webgl/WebGLTextures.js +230 -56
  589. package/src/renderers/webgl/WebGLUniforms.js +40 -3
  590. package/src/renderers/webgl/WebGLUniformsGroups.js +82 -35
  591. package/src/renderers/webgl/WebGLUtils.js +6 -2
  592. package/src/renderers/webgl-fallback/WebGLBackend.js +322 -92
  593. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
  594. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +295 -66
  595. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
  596. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
  597. package/src/renderers/webgl-fallback/utils/WebGLState.js +223 -6
  598. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +118 -73
  599. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
  600. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +9 -3
  601. package/src/renderers/webgpu/WebGPUBackend.js +733 -302
  602. package/src/renderers/webgpu/WebGPURenderer.js +2 -1
  603. package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
  604. package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
  605. package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
  606. package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
  607. package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
  608. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
  609. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
  610. package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
  611. package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
  612. package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
  613. package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
  614. package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
  615. package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
  616. package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
  617. package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
  618. package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
  619. package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
  620. package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
  621. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
  622. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
  623. package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
  624. package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
  625. package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
  626. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
  627. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +526 -93
  628. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
  629. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +194 -61
  630. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +395 -234
  631. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
  632. package/src/renderers/webgpu/utils/WebGPUConstants.js +10 -0
  633. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +224 -91
  634. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +228 -213
  635. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +428 -175
  636. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +40 -25
  637. package/src/renderers/webgpu/utils/WebGPUUtils.js +70 -13
  638. package/src/renderers/webxr/WebXRController.js +12 -0
  639. package/src/renderers/webxr/WebXRManager.js +4 -2
  640. package/src/textures/CubeDepthTexture.js +76 -0
  641. package/src/textures/DepthTexture.js +1 -1
  642. package/src/textures/ExternalTexture.js +0 -3
  643. package/src/textures/HTMLTexture.js +74 -0
  644. package/src/textures/Source.js +2 -2
  645. package/src/textures/Texture.js +16 -5
  646. package/src/utils.js +280 -3
  647. package/examples/fonts/LICENSE +0 -13
  648. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  649. package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
  650. package/examples/fonts/README.md +0 -11
  651. package/examples/fonts/droid/NOTICE +0 -190
  652. package/examples/fonts/droid/README.txt +0 -18
  653. package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
  654. package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
  655. package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
  656. package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
  657. package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
  658. package/examples/fonts/gentilis_bold.typeface.json +0 -1
  659. package/examples/fonts/gentilis_regular.typeface.json +0 -1
  660. package/examples/fonts/helvetiker_bold.typeface.json +0 -1
  661. package/examples/fonts/helvetiker_regular.typeface.json +0 -1
  662. package/examples/fonts/optimer_bold.typeface.json +0 -1
  663. package/examples/fonts/optimer_regular.typeface.json +0 -1
  664. package/examples/fonts/ttf/README.md +0 -9
  665. package/examples/fonts/ttf/kenpixel.ttf +0 -0
  666. package/examples/jsm/libs/ammo.wasm.js +0 -822
  667. package/examples/jsm/libs/ammo.wasm.wasm +0 -0
  668. package/examples/jsm/libs/draco/draco_encoder.js +0 -33
  669. package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
  670. package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
  671. package/examples/jsm/libs/opentype.module.js +0 -14506
  672. package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
  673. package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
  674. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  675. package/examples/jsm/lighting/TiledLighting.js +0 -42
  676. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
  677. package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
  678. package/examples/jsm/shaders/GodRaysShader.js +0 -333
  679. package/examples/jsm/tsl/display/AnamorphicNode.js +0 -282
  680. package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
  681. package/src/nodes/accessors/BatchNode.js +0 -163
  682. package/src/nodes/accessors/InstanceNode.js +0 -244
  683. package/src/nodes/accessors/InstancedMeshNode.js +0 -50
  684. package/src/nodes/accessors/SceneNode.js +0 -145
  685. package/src/nodes/accessors/SkinningNode.js +0 -327
  686. package/src/nodes/code/ScriptableNode.js +0 -726
  687. package/src/nodes/code/ScriptableValueNode.js +0 -253
  688. package/src/nodes/display/PosterizeNode.js +0 -65
  689. package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
  690. package/src/nodes/utils/RemapNode.js +0 -125
  691. package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
  692. package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
  693. package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
@@ -7,25 +7,25 @@ import { Vector2 } from '../../math/Vector2.js';
7
7
  import { Vector3 } from '../../math/Vector3.js';
8
8
  import { Vector4 } from '../../math/Vector4.js';
9
9
  import { WebXRController } from '../webxr/WebXRController.js';
10
- import { AddEquation, BackSide, CustomBlending, DepthFormat, DepthStencilFormat, FrontSide, RGBAFormat, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, ZeroFactor } from '../../constants.js';
10
+ import { AddEquation, BackSide, CustomBlending, DepthFormat, DepthStencilFormat, FrontSide, RGBAFormat, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, ZeroFactor, LinearFilter } from '../../constants.js';
11
11
  import { DepthTexture } from '../../textures/DepthTexture.js';
12
12
  import { XRRenderTarget } from './XRRenderTarget.js';
13
13
  import { CylinderGeometry } from '../../geometries/CylinderGeometry.js';
14
- import QuadMesh from './QuadMesh.js';
15
- import NodeMaterial from '../../materials/nodes/NodeMaterial.js';
16
14
  import { PlaneGeometry } from '../../geometries/PlaneGeometry.js';
17
15
  import { MeshBasicMaterial } from '../../materials/MeshBasicMaterial.js';
18
16
  import { Mesh } from '../../objects/Mesh.js';
19
- import { warn } from '../../utils.js';
17
+ import { warn, warnOnce } from '../../utils.js';
18
+ import { renderOutput } from '../../nodes/display/RenderOutputNode.js';
19
+ import { RenderTarget } from '../../core/RenderTarget.js';
20
20
 
21
21
  const _cameraLPos = /*@__PURE__*/ new Vector3();
22
22
  const _cameraRPos = /*@__PURE__*/ new Vector3();
23
23
 
24
+ const _contextNodeLib = /*@__PURE__*/ new WeakMap();
25
+
24
26
  /**
25
27
  * The XR manager is built on top of the WebXR Device API to
26
- * manage XR sessions with `WebGPURenderer`.
27
- *
28
- * XR is currently only supported with a WebGL 2 backend.
28
+ * manage XR sessions with renderer backends.
29
29
  *
30
30
  * @augments EventDispatcher
31
31
  */
@@ -84,6 +84,7 @@ class XRManager extends EventDispatcher {
84
84
  */
85
85
  this._cameraL = new PerspectiveCamera();
86
86
  this._cameraL.viewport = new Vector4();
87
+ this._cameraL.matrixWorldAutoUpdate = false;
87
88
 
88
89
  /**
89
90
  * Represents the camera for the right eye.
@@ -93,6 +94,7 @@ class XRManager extends EventDispatcher {
93
94
  */
94
95
  this._cameraR = new PerspectiveCamera();
95
96
  this._cameraR.viewport = new Vector4();
97
+ this._cameraR.matrixWorldAutoUpdate = false;
96
98
 
97
99
  /**
98
100
  * A list of cameras used for rendering the XR views.
@@ -167,6 +169,7 @@ class XRManager extends EventDispatcher {
167
169
  /**
168
170
  * Whether the XR session uses layers.
169
171
  *
172
+ * @private
170
173
  * @type {boolean}
171
174
  * @default false
172
175
  */
@@ -180,8 +183,7 @@ class XRManager extends EventDispatcher {
180
183
  * @readonly
181
184
  */
182
185
  this._supportsGlBinding = typeof XRWebGLBinding !== 'undefined';
183
-
184
- this._frameBufferTargets = null;
186
+ this._supportsWebGPUBinding = typeof globalThis.XRGPUBinding !== 'undefined';
185
187
 
186
188
  /**
187
189
  * Helper function to create native WebXR Layer.
@@ -227,6 +229,15 @@ class XRManager extends EventDispatcher {
227
229
  */
228
230
  this._currentPixelRatio = null;
229
231
 
232
+ /**
233
+ * The renderer's sample count before XR temporarily overrides it.
234
+ *
235
+ * @private
236
+ * @type {?number}
237
+ * @default null
238
+ */
239
+ this._currentSamples = null;
240
+
230
241
  /**
231
242
  * The current size of the renderer's canvas
232
243
  * in logical pixel unit.
@@ -342,6 +353,16 @@ class XRManager extends EventDispatcher {
342
353
  */
343
354
  this._glBinding = null;
344
355
 
356
+ /**
357
+ * A reference to the current XR WebGPU binding.
358
+ *
359
+ * @private
360
+ * @type {?XRGPUBinding}
361
+ * @default null
362
+ */
363
+
364
+ this._webgpuBinding = null;
365
+
345
366
  /**
346
367
  * A reference to the current XR projection layer.
347
368
  *
@@ -445,16 +466,10 @@ class XRManager extends EventDispatcher {
445
466
  /**
446
467
  * Returns the foveation value.
447
468
  *
448
- * @return {number|undefined} The foveation value. Returns `undefined` if no base or projection layer is defined.
469
+ * @return {number|undefined} The foveation value.
449
470
  */
450
471
  getFoveation() {
451
472
 
452
- if ( this._glProjLayer === null && this._glBaseLayer === null ) {
453
-
454
- return undefined;
455
-
456
- }
457
-
458
473
  return this._foveation;
459
474
 
460
475
  }
@@ -591,6 +606,20 @@ class XRManager extends EventDispatcher {
591
606
 
592
607
  }
593
608
 
609
+ /**
610
+ * Returns the current base layer.
611
+ *
612
+ * This is an `XRProjectionLayer` when the targeted XR device supports the
613
+ * WebXR Layers API, or an `XRWebGLLayer` otherwise.
614
+ *
615
+ * @return {?(XRWebGLLayer|XRProjectionLayer)} The XR base layer.
616
+ */
617
+ getBaseLayer() {
618
+
619
+ return this._glProjLayer !== null ? this._glProjLayer : this._glBaseLayer;
620
+
621
+ }
622
+
594
623
 
595
624
  /**
596
625
  * Returns the current XR binding.
@@ -612,6 +641,258 @@ class XRManager extends EventDispatcher {
612
641
 
613
642
  }
614
643
 
644
+ /**
645
+ * Applies WebXR fixed foveation to the internal post-processing render target
646
+ * used by the first XR render pass before compositing into a projection layer.
647
+ *
648
+ * Browser-side `XRWebGLBinding.foveateBoundTexture()` failures are treated as
649
+ * non-fatal so they do not interrupt rendering.
650
+ *
651
+ * @param {RenderTarget} renderTarget - The internal render target.
652
+ */
653
+ foveateBoundTexture( renderTarget ) {
654
+
655
+ if ( renderTarget.isPostProcessingRenderTarget !== true ) return;
656
+ if ( this.isPresenting !== true ) return;
657
+ if ( this._glProjLayer === null ) return;
658
+
659
+ const backend = this._renderer.backend;
660
+
661
+ if ( backend === undefined || backend.isWebGLBackend !== true ) return;
662
+ if ( backend.state === null ) return;
663
+
664
+ const outputRenderTarget = this._renderer.getOutputRenderTarget();
665
+
666
+ if ( outputRenderTarget === null || outputRenderTarget.isXRRenderTarget !== true ) return;
667
+
668
+ const glBinding = this.getBinding();
669
+
670
+ if ( glBinding === null || typeof glBinding.foveateBoundTexture !== 'function' ) return;
671
+
672
+ this._renderer._textures.updateRenderTarget( renderTarget );
673
+
674
+ const { textureGPU, glTextureType } = backend.get( renderTarget.texture );
675
+
676
+ if ( textureGPU === undefined || glTextureType === undefined ) return;
677
+ if ( renderTarget._xrFoveationTextureGPU === textureGPU ) return;
678
+
679
+ renderTarget._xrFoveationTextureGPU = textureGPU;
680
+
681
+ backend.state.bindTexture( glTextureType, textureGPU );
682
+
683
+ try {
684
+
685
+ glBinding.foveateBoundTexture( glTextureType, this.getFoveation() );
686
+
687
+ } catch ( error ) {
688
+
689
+ warnOnce( `XRManager: Unable to foveate bound XR post-processing texture. ${error.name}: ${error.message}` );
690
+
691
+ } finally {
692
+
693
+ backend.state.unbindTexture();
694
+
695
+ }
696
+
697
+ }
698
+
699
+ /**
700
+ * Returns the current XR WebGPU binding.
701
+ *
702
+ * Creates a new binding if needed and the browser is
703
+ * capable of doing so.
704
+ *
705
+ * @return {?XRGPUBinding} The XR WebGPU binding. Returns `null` if one cannot be created.
706
+ */
707
+ getWebGPUBinding() {
708
+
709
+ if ( this._webgpuBinding === null && this._supportsWebGPUBinding ) {
710
+
711
+ this._webgpuBinding = new globalThis.XRGPUBinding( this._session, this._renderer.backend.device );
712
+
713
+ }
714
+
715
+ return this._webgpuBinding;
716
+
717
+ }
718
+
719
+ /**
720
+ * Returns whether the current XR session is using WebGPU.
721
+ *
722
+ * @private
723
+ * @return {boolean} Whether the current session uses the WebGPU backend and the `webgpu` session feature.
724
+ */
725
+ _isWebGPUSession() {
726
+
727
+ return this._renderer.backend.isWebGPUBackend === true &&
728
+ this._session !== null &&
729
+ this._session.enabledFeatures.includes( 'webgpu' );
730
+
731
+ }
732
+
733
+ /**
734
+ * Validates the current WebGPU XR session requirements.
735
+ *
736
+ * @private
737
+ */
738
+ _validateWebGPUSession() {
739
+
740
+ const renderer = this._renderer;
741
+
742
+ if ( renderer.backend.isWebGPUBackend !== true ) return;
743
+
744
+ if ( this._session.enabledFeatures.includes( 'webgpu' ) === false ) {
745
+
746
+ throw new Error( 'THREE.XRManager: WebGPU XR sessions require the "webgpu" session feature. Use VRButtonGPU/XRButton with "webgpu" enabled or use a WebGL backend.' );
747
+
748
+ }
749
+
750
+ if ( renderer.samples > 0 ) {
751
+
752
+ warnOnce( 'THREE.XRManager: WebGPU XR does not support MSAA yet. Disabling MSAA for this XR session.' );
753
+
754
+ if ( this._currentSamples === null ) this._currentSamples = renderer.samples;
755
+ renderer._samples = 0;
756
+
757
+ }
758
+
759
+ }
760
+
761
+ /**
762
+ * Initializes the WebGPU XR projection layer and render target.
763
+ *
764
+ * @private
765
+ * @async
766
+ * @param {XRSession} session - The XR session.
767
+ * @return {Promise<void>}
768
+ */
769
+ async _initWebGPUSession( session ) {
770
+
771
+ const webgpuBinding = this.getWebGPUBinding();
772
+ const glProjLayer = webgpuBinding.createProjectionLayer( {
773
+ colorFormat: webgpuBinding.getPreferredColorFormat(),
774
+ depthStencilFormat: 'depth24plus'
775
+ } );
776
+
777
+ this._glProjLayer = glProjLayer;
778
+
779
+ session.updateRenderState( { layers: [ glProjLayer ] } );
780
+
781
+ this._referenceSpace = await session.requestReferenceSpace( this.getReferenceSpaceType() );
782
+
783
+ this._xrRenderTarget = new RenderTarget( glProjLayer.textureWidth, glProjLayer.textureHeight, {
784
+ depth: 2,
785
+ minFilter: LinearFilter,
786
+ magFilter: LinearFilter,
787
+ depthBuffer: true,
788
+ multiview: false,
789
+ useArrayDepthTexture: true,
790
+ samples: 0
791
+ } );
792
+
793
+ this._xrRenderTarget.texture.isArrayTexture = true;
794
+
795
+ if ( this._useMultiviewIfPossible === true ) {
796
+
797
+ warnOnce( 'THREE.XRManager: WebGPU XR does not support multiview yet. Disabling multiview for this XR session.' );
798
+
799
+ }
800
+
801
+ this._useMultiview = false;
802
+
803
+ }
804
+
805
+ /**
806
+ * Releases WebGPU XR resources associated with the current session.
807
+ *
808
+ * @private
809
+ */
810
+ _disposeWebGPUSession() {
811
+
812
+ const renderer = this._renderer;
813
+ const xrRenderTarget = this._xrRenderTarget;
814
+
815
+ if ( xrRenderTarget === null || renderer.backend.isWebGPUBackend !== true ) return;
816
+
817
+ // XR textures are external (from XRGPUBinding), so clear cached state before disposal.
818
+ const backend = renderer.backend;
819
+ const texturesModule = renderer._textures;
820
+
821
+ const renderTargetData = backend.get ? backend.get( xrRenderTarget ) : null;
822
+ if ( renderTargetData ) {
823
+
824
+ renderTargetData.descriptors = undefined;
825
+
826
+ }
827
+
828
+ const deleteResource = ( resource ) => {
829
+
830
+ if ( resource === null || resource === undefined ) return;
831
+
832
+ if ( backend.delete ) backend.delete( resource );
833
+ if ( texturesModule.delete ) texturesModule.delete( resource );
834
+
835
+ };
836
+
837
+ for ( let i = 0; i < xrRenderTarget.textures.length; i ++ ) {
838
+
839
+ deleteResource( xrRenderTarget.textures[ i ] );
840
+
841
+ }
842
+
843
+ deleteResource( xrRenderTarget.depthTexture );
844
+ deleteResource( xrRenderTarget );
845
+
846
+ if ( renderer._renderContexts && renderer._renderContexts.dispose ) {
847
+
848
+ renderer._renderContexts.dispose();
849
+
850
+ }
851
+
852
+ xrRenderTarget.dispose();
853
+
854
+ }
855
+
856
+ /**
857
+ * Collects WebGPU XR sub-image data for the current frame.
858
+ *
859
+ * @private
860
+ * @param {Array<XRView>} views - The XR views for the current pose.
861
+ * @return {{colorTexture:?GPUTexture, viewDescriptors:Array<Object>, viewports:Array<XRViewport>}} The WebGPU XR view data.
862
+ */
863
+ _getWebGPUViewData( views ) {
864
+
865
+ const webgpuBinding = this.getWebGPUBinding();
866
+ const viewData = {
867
+ colorTexture: null,
868
+ viewDescriptors: [],
869
+ viewports: []
870
+ };
871
+
872
+ for ( let i = 0; i < views.length; i ++ ) {
873
+
874
+ const gpuSubImage = webgpuBinding.getViewSubImage( this._glProjLayer, views[ i ] );
875
+
876
+ if ( viewData.colorTexture === null ) {
877
+
878
+ viewData.colorTexture = gpuSubImage.colorTexture;
879
+
880
+ }
881
+
882
+ viewData.viewports.push( gpuSubImage.viewport );
883
+
884
+ if ( gpuSubImage.getViewDescriptor ) {
885
+
886
+ viewData.viewDescriptors.push( gpuSubImage.getViewDescriptor() );
887
+
888
+ }
889
+
890
+ }
891
+
892
+ return viewData;
893
+
894
+ }
895
+
615
896
  /**
616
897
  * Returns the current XR frame.
617
898
  *
@@ -829,19 +1110,23 @@ class XRManager extends EventDispatcher {
829
1110
  const renderer = this._renderer;
830
1111
 
831
1112
  const wasPresenting = this.isPresenting;
832
- const rendererOutputTarget = renderer.getOutputRenderTarget();
833
- const rendererFramebufferTarget = renderer._frameBufferTarget;
1113
+
834
1114
  this.isPresenting = false;
835
1115
 
836
1116
  const rendererSize = new Vector2();
837
1117
  renderer.getSize( rendererSize );
838
- const rendererQuad = renderer._quad;
1118
+
1119
+ const currentRenderTarget = renderer.getRenderTarget();
839
1120
 
840
1121
  for ( const layer of this._layers ) {
841
1122
 
842
1123
  layer.renderTarget.isXRRenderTarget = this._session !== null;
843
1124
  layer.renderTarget._hasExternalTextures = layer.renderTarget.isXRRenderTarget;
844
1125
 
1126
+ const currentContextNode = renderer.contextNode;
1127
+
1128
+ let contextNode;
1129
+
845
1130
  if ( layer.renderTarget.isXRRenderTarget && this._sessionUsesLayers ) {
846
1131
 
847
1132
  layer.xrlayer.transform = new XRRigidTransform( layer.plane.getWorldPosition( translationObject ), layer.plane.getWorldQuaternion( quaternionObject ) );
@@ -853,42 +1138,46 @@ class XRManager extends EventDispatcher {
853
1138
  undefined );
854
1139
 
855
1140
  renderer._setXRLayerSize( layer.renderTarget.width, layer.renderTarget.height );
856
- renderer.setOutputRenderTarget( layer.renderTarget );
857
- renderer.setRenderTarget( null );
858
- renderer._frameBufferTarget = null;
859
1141
 
860
- this._frameBufferTargets || ( this._frameBufferTargets = new WeakMap() );
861
- const { frameBufferTarget, quad } = this._frameBufferTargets.get( layer.renderTarget ) || { frameBufferTarget: null, quad: null };
862
- if ( ! frameBufferTarget ) {
1142
+ contextNode = _contextNodeLib.get( currentContextNode );
863
1143
 
864
- renderer._quad = new QuadMesh( new NodeMaterial() );
865
- this._frameBufferTargets.set( layer.renderTarget, { frameBufferTarget: renderer._getFrameBufferTarget(), quad: renderer._quad } );
1144
+ if ( contextNode === undefined ) {
866
1145
 
867
- } else {
1146
+ // Apply ToneMapping and OutputColorSpace directly in the material shader
868
1147
 
869
- renderer._frameBufferTarget = frameBufferTarget;
870
- renderer._quad = quad;
1148
+ contextNode = currentContextNode.context( {
871
1149
 
872
- }
1150
+ getOutput: ( outputNode ) => {
1151
+
1152
+ return renderOutput( outputNode, renderer.toneMapping, renderer.outputColorSpace );
1153
+
1154
+ }
1155
+
1156
+ } );
873
1157
 
874
- layer.rendercall();
1158
+ _contextNodeLib.set( currentContextNode, contextNode );
875
1159
 
876
- renderer._frameBufferTarget = null;
1160
+ }
877
1161
 
878
1162
  } else {
879
1163
 
880
- renderer.setRenderTarget( layer.renderTarget );
881
- layer.rendercall();
1164
+ contextNode = currentContextNode;
882
1165
 
883
1166
  }
884
1167
 
1168
+ renderer.contextNode = contextNode;
1169
+
1170
+ renderer.setRenderTarget( layer.renderTarget );
1171
+
1172
+ layer.rendercall();
1173
+
1174
+ renderer.contextNode = currentContextNode;
1175
+
885
1176
  }
886
1177
 
887
- renderer.setRenderTarget( null );
888
- renderer.setOutputRenderTarget( rendererOutputTarget );
889
- renderer._frameBufferTarget = rendererFramebufferTarget;
1178
+ renderer.setRenderTarget( currentRenderTarget );
890
1179
  renderer._setXRLayerSize( rendererSize.x, rendererSize.y );
891
- renderer._quad = rendererQuad;
1180
+
892
1181
  this.isPresenting = wasPresenting;
893
1182
 
894
1183
  }
@@ -917,18 +1206,16 @@ class XRManager extends EventDispatcher {
917
1206
  async setSession( session ) {
918
1207
 
919
1208
  const renderer = this._renderer;
920
- const backend = renderer.backend;
1209
+
1210
+ if ( renderer.initialized === false ) await renderer.init();
921
1211
 
922
1212
  this._gl = renderer.getContext();
923
1213
  const gl = this._gl;
924
- const attributes = gl.getContextAttributes();
925
1214
 
926
1215
  this._session = session;
927
1216
 
928
1217
  if ( session !== null ) {
929
1218
 
930
- if ( backend.isWebGPUBackend === true ) throw new Error( 'THREE.XRManager: XR is currently not supported with a WebGPU backend. Use WebGL by passing "{ forceWebGL: true }" to the constructor of the renderer.' );
931
-
932
1219
  session.addEventListener( 'select', this._onSessionEvent );
933
1220
  session.addEventListener( 'selectstart', this._onSessionEvent );
934
1221
  session.addEventListener( 'selectend', this._onSessionEvent );
@@ -938,7 +1225,7 @@ class XRManager extends EventDispatcher {
938
1225
  session.addEventListener( 'end', this._onSessionEnd );
939
1226
  session.addEventListener( 'inputsourceschange', this._onInputSourcesChange );
940
1227
 
941
- await backend.makeXRCompatible();
1228
+ this._validateWebGPUSession();
942
1229
 
943
1230
  this._currentPixelRatio = renderer.getPixelRatio();
944
1231
  renderer.getSize( this._currentSize );
@@ -949,7 +1236,11 @@ class XRManager extends EventDispatcher {
949
1236
 
950
1237
  //
951
1238
 
952
- if ( this._supportsLayers === true ) {
1239
+ if ( this._isWebGPUSession() ) {
1240
+
1241
+ await this._initWebGPUSession( session );
1242
+
1243
+ } else if ( this._supportsLayers === true ) {
953
1244
 
954
1245
  // default path using XRProjectionLayer
955
1246
 
@@ -957,6 +1248,10 @@ class XRManager extends EventDispatcher {
957
1248
  let depthType = null;
958
1249
  let glDepthFormat = null;
959
1250
 
1251
+ const attributes = gl.getContextAttributes();
1252
+ await renderer.backend.makeXRCompatible();
1253
+ this.setFoveation( this.getFoveation() );
1254
+
960
1255
  if ( renderer.depth ) {
961
1256
 
962
1257
  glDepthFormat = renderer.stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24;
@@ -1039,6 +1334,8 @@ class XRManager extends EventDispatcher {
1039
1334
  } else {
1040
1335
 
1041
1336
  // fallback to XRWebGLLayer
1337
+ await renderer.backend.makeXRCompatible();
1338
+ this.setFoveation( this.getFoveation() );
1042
1339
 
1043
1340
  const layerInit = {
1044
1341
  antialias: renderer.currentSamples > 0,
@@ -1076,8 +1373,6 @@ class XRManager extends EventDispatcher {
1076
1373
 
1077
1374
  //
1078
1375
 
1079
- this.setFoveation( this.getFoveation() );
1080
-
1081
1376
  renderer._animation.setAnimationLoop( this._onAnimationFrame );
1082
1377
  renderer._animation.setContext( session );
1083
1378
  renderer._animation.start();
@@ -1130,8 +1425,8 @@ class XRManager extends EventDispatcher {
1130
1425
 
1131
1426
  // inherit camera layers and enable eye layers (1 = left, 2 = right)
1132
1427
  cameraXR.layers.mask = camera.layers.mask | 0b110;
1133
- cameraL.layers.mask = cameraXR.layers.mask & 0b011;
1134
- cameraR.layers.mask = cameraXR.layers.mask & 0b101;
1428
+ cameraL.layers.mask = cameraXR.layers.mask & ~ 0b100;
1429
+ cameraR.layers.mask = cameraXR.layers.mask & ~ 0b010;
1135
1430
 
1136
1431
 
1137
1432
  const parent = camera.parent;
@@ -1375,13 +1670,23 @@ function onSessionEnd() {
1375
1670
  this._currentDepthNear = null;
1376
1671
  this._currentDepthFar = null;
1377
1672
 
1673
+ if ( this._currentSamples !== null ) {
1674
+
1675
+ renderer._samples = this._currentSamples;
1676
+ this._currentSamples = null;
1677
+
1678
+ }
1679
+
1378
1680
  // restore framebuffer/rendering state
1379
1681
 
1380
1682
  renderer._resetXRState();
1381
1683
 
1684
+ this._disposeWebGPUSession();
1685
+
1382
1686
  this._session = null;
1383
1687
  this._xrRenderTarget = null;
1384
1688
  this._glBinding = null;
1689
+ this._webgpuBinding = null;
1385
1690
  this._glBaseLayer = null;
1386
1691
  this._glProjLayer = null;
1387
1692
 
@@ -1565,7 +1870,9 @@ function onAnimationFrame( time, frame ) {
1565
1870
 
1566
1871
  const views = pose.views;
1567
1872
 
1568
- if ( this._glBaseLayer !== null ) {
1873
+ const webgpuViewData = this._isWebGPUSession() ? this._getWebGPUViewData( views ) : null;
1874
+
1875
+ if ( this._glBaseLayer !== null && webgpuViewData === null ) {
1569
1876
 
1570
1877
  backend.setXRTarget( glBaseLayer.framebuffer );
1571
1878
 
@@ -1588,8 +1895,13 @@ function onAnimationFrame( time, frame ) {
1588
1895
 
1589
1896
  let viewport;
1590
1897
 
1591
- if ( this._supportsLayers === true ) {
1898
+ if ( webgpuViewData !== null ) {
1899
+
1900
+ viewport = webgpuViewData.viewports[ i ];
1592
1901
 
1902
+ } else if ( this._supportsLayers === true ) {
1903
+
1904
+ // WebGL path: Use XRWebGLBinding
1593
1905
  const glSubImage = this._glBinding.getViewSubImage( this._glProjLayer, view );
1594
1906
  viewport = glSubImage.viewport;
1595
1907
 
@@ -1617,6 +1929,7 @@ function onAnimationFrame( time, frame ) {
1617
1929
  camera = new PerspectiveCamera();
1618
1930
  camera.layers.enable( i );
1619
1931
  camera.viewport = new Vector4();
1932
+ camera.matrixWorldAutoUpdate = false;
1620
1933
  this._cameras[ i ] = camera;
1621
1934
 
1622
1935
  }
@@ -1642,8 +1955,21 @@ function onAnimationFrame( time, frame ) {
1642
1955
 
1643
1956
  }
1644
1957
 
1958
+ if ( webgpuViewData !== null && webgpuViewData.colorTexture !== null ) {
1959
+
1960
+ backend.setXRRenderTargetTextures(
1961
+ this._xrRenderTarget,
1962
+ webgpuViewData.colorTexture,
1963
+ webgpuViewData.viewDescriptors
1964
+ );
1965
+
1966
+ }
1967
+
1645
1968
  renderer.setOutputRenderTarget( this._xrRenderTarget );
1646
1969
 
1970
+ const frameBufferTarget = renderer._getFrameBufferTarget();
1971
+ renderer.xr.foveateBoundTexture( frameBufferTarget );
1972
+
1647
1973
  }
1648
1974
 
1649
1975
  //