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
@@ -1,11 +1,11 @@
1
1
  import TempNode from '../core/TempNode.js';
2
2
  import { default as TextureNode/*, texture*/ } from '../accessors/TextureNode.js';
3
3
  import { NodeUpdateType } from '../core/constants.js';
4
- import { nodeObject } from '../tsl/TSLBase.js';
4
+ import { context } from '../tsl/TSLBase.js';
5
5
  import { uniform } from '../core/UniformNode.js';
6
6
  import { viewZToOrthographicDepth, perspectiveDepthToViewZ } from './ViewportDepthNode.js';
7
7
 
8
- import { HalfFloatType/*, FloatType*/ } from '../../constants.js';
8
+ import { HalfFloatType, FloatType } from '../../constants.js';
9
9
  import { Vector2 } from '../../math/Vector2.js';
10
10
  import { Vector4 } from '../../math/Vector4.js';
11
11
  import { DepthTexture } from '../../textures/DepthTexture.js';
@@ -44,13 +44,23 @@ class PassTextureNode extends TextureNode {
44
44
  */
45
45
  this.passNode = passNode;
46
46
 
47
+ /**
48
+ * This flag can be used for type testing.
49
+ *
50
+ * @type {boolean}
51
+ * @default true
52
+ * @readonly
53
+ */
54
+ this.isPassTextureNode = true;
55
+
47
56
  this.setUpdateMatrix( false );
48
57
 
49
58
  }
50
59
 
51
60
  setup( builder ) {
52
61
 
53
- this.passNode.build( builder );
62
+ const properties = builder.getNodeProperties( this );
63
+ properties.passNode = this.passNode;
54
64
 
55
65
  return super.setup( builder );
56
66
 
@@ -107,6 +117,15 @@ class PassMultipleTextureNode extends PassTextureNode {
107
117
  */
108
118
  this.previousTexture = previousTexture;
109
119
 
120
+ /**
121
+ * This flag can be used for type testing.
122
+ *
123
+ * @type {boolean}
124
+ * @default true
125
+ * @readonly
126
+ */
127
+ this.isPassMultipleTextureNode = true;
128
+
110
129
  }
111
130
 
112
131
  /**
@@ -136,6 +155,7 @@ class PassMultipleTextureNode extends PassTextureNode {
136
155
  newNode.depthNode = this.depthNode;
137
156
  newNode.compareNode = this.compareNode;
138
157
  newNode.gradNode = this.gradNode;
158
+ newNode.gatherNode = this.gatherNode;
139
159
  newNode.offsetNode = this.offsetNode;
140
160
 
141
161
  return newNode;
@@ -150,7 +170,7 @@ class PassMultipleTextureNode extends PassTextureNode {
150
170
  * via MRT for further processing.
151
171
  *
152
172
  * ```js
153
- * const postProcessing = new PostProcessing( renderer );
173
+ * const postProcessing = new RenderPipeline( renderer );
154
174
  *
155
175
  * const scenePass = pass( scene, camera );
156
176
  *
@@ -207,15 +227,6 @@ class PassNode extends TempNode {
207
227
  */
208
228
  this.options = options;
209
229
 
210
- /**
211
- * The pass's pixel ratio. Will be kept automatically kept in sync with the renderer's pixel ratio.
212
- *
213
- * @private
214
- * @type {number}
215
- * @default 1
216
- */
217
- this._pixelRatio = 1;
218
-
219
230
  /**
220
231
  * The pass's pixel width. Will be kept automatically kept in sync with the renderer's width.
221
232
  * @private
@@ -232,14 +243,21 @@ class PassNode extends TempNode {
232
243
  */
233
244
  this._height = 1;
234
245
 
235
- const depthTexture = new DepthTexture();
236
- depthTexture.isRenderTargetTexture = true;
237
- //depthTexture.type = FloatType;
238
- depthTexture.name = 'depth';
239
-
240
- const renderTarget = new RenderTarget( this._width * this._pixelRatio, this._height * this._pixelRatio, { type: HalfFloatType, ...options, } );
246
+ const renderTarget = new RenderTarget( this._width, this._height, { type: HalfFloatType, ...options, } );
241
247
  renderTarget.texture.name = 'output';
242
- renderTarget.depthTexture = depthTexture;
248
+
249
+ let depthTexture = null;
250
+
251
+ if ( this.scope === PassNode.DEPTH || options.depthBuffer !== false ) {
252
+
253
+ depthTexture = new DepthTexture();
254
+ depthTexture.isRenderTargetTexture = true;
255
+ //depthTexture.type = FloatType;
256
+ depthTexture.name = 'depth';
257
+
258
+ renderTarget.depthTexture = depthTexture;
259
+
260
+ }
243
261
 
244
262
  /**
245
263
  * The pass's render target.
@@ -248,17 +266,61 @@ class PassNode extends TempNode {
248
266
  */
249
267
  this.renderTarget = renderTarget;
250
268
 
269
+ /**
270
+ * An optional override material for the pass.
271
+ *
272
+ * @type {Material|null}
273
+ */
274
+ this.overrideMaterial = null;
275
+
276
+ /**
277
+ * Whether the pass is transparent.
278
+ *
279
+ * @type {boolean}
280
+ * @default false
281
+ */
282
+ this.transparent = true;
283
+
284
+ /**
285
+ * Whether the pass is opaque.
286
+ *
287
+ * @type {boolean}
288
+ * @default true
289
+ */
290
+ this.opaque = true;
291
+
292
+ /**
293
+ * An optional global context for the pass.
294
+ *
295
+ * @type {ContextNode|null}
296
+ */
297
+ this.contextNode = null;
298
+
299
+ /**
300
+ * A cache for the context node.
301
+ *
302
+ * @private
303
+ * @type {?Object}
304
+ * @default null
305
+ */
306
+ this._contextNodeCache = null;
307
+
251
308
  /**
252
309
  * A dictionary holding the internal result textures.
253
310
  *
254
311
  * @private
255
- * @type {Object<string, Texture>}
312
+ * @type {{ output: Texture, depth: ?DepthTexture }}
256
313
  */
257
314
  this._textures = {
258
- output: renderTarget.texture,
259
- depth: depthTexture
315
+ output: renderTarget.texture
260
316
  };
261
317
 
318
+ if ( depthTexture !== null ) {
319
+
320
+ this._textures.depth = depthTexture;
321
+
322
+ }
323
+
262
324
  /**
263
325
  * A dictionary holding the internal texture nodes.
264
326
  *
@@ -509,6 +571,12 @@ class PassNode extends TempNode {
509
571
 
510
572
  if ( texture === undefined ) {
511
573
 
574
+ if ( name === 'depth' ) {
575
+
576
+ throw new Error( 'THREE.PassNode: Depth texture is not available for this pass.' );
577
+
578
+ }
579
+
512
580
  const refTexture = this.renderTarget.texture;
513
581
 
514
582
  texture = refTexture.clone();
@@ -584,7 +652,7 @@ class PassNode extends TempNode {
584
652
 
585
653
  if ( textureNode === undefined ) {
586
654
 
587
- textureNode = nodeObject( new PassMultipleTextureNode( this, name ) );
655
+ textureNode = new PassMultipleTextureNode( this, name );
588
656
  textureNode.updateTexture();
589
657
  this._textureNodes[ name ] = textureNode;
590
658
 
@@ -608,7 +676,7 @@ class PassNode extends TempNode {
608
676
 
609
677
  if ( this._textureNodes[ name ] === undefined ) this.getTextureNode( name );
610
678
 
611
- textureNode = nodeObject( new PassMultipleTextureNode( this, name, true ) );
679
+ textureNode = new PassMultipleTextureNode( this, name, true );
612
680
  textureNode.updateTexture();
613
681
  this._previousTextureNodes[ name ] = textureNode;
614
682
 
@@ -697,7 +765,13 @@ class PassNode extends TempNode {
697
765
 
698
766
  this.renderTarget.samples = this.options.samples === undefined ? renderer.samples : this.options.samples;
699
767
 
700
- this.renderTarget.texture.type = renderer.getColorBufferType();
768
+ this.renderTarget.texture.type = renderer.getOutputBufferType();
769
+
770
+ if ( renderer.reversedDepthBuffer === true && this.renderTarget.depthTexture !== null ) {
771
+
772
+ this.renderTarget.depthTexture.type = FloatType;
773
+
774
+ }
701
775
 
702
776
  return this.scope === PassNode.COLOR ? this.getTextureNode() : this.getLinearDepthNode();
703
777
 
@@ -709,13 +783,11 @@ class PassNode extends TempNode {
709
783
  const { scene } = this;
710
784
 
711
785
  let camera;
712
- let pixelRatio;
713
786
 
714
787
  const outputRenderTarget = renderer.getOutputRenderTarget();
715
788
 
716
789
  if ( outputRenderTarget && outputRenderTarget.isXRRenderTarget === true ) {
717
790
 
718
- pixelRatio = 1;
719
791
  camera = renderer.xr.getCamera();
720
792
 
721
793
  renderer.xr.updateCamera( camera );
@@ -725,20 +797,21 @@ class PassNode extends TempNode {
725
797
  } else {
726
798
 
727
799
  camera = this.camera;
728
- pixelRatio = renderer.getPixelRatio();
729
800
 
730
- renderer.getSize( _size );
801
+ renderer.getDrawingBufferSize( _size );
731
802
 
732
803
  }
733
804
 
734
- this._pixelRatio = pixelRatio;
735
-
736
805
  this.setSize( _size.width, _size.height );
737
806
 
738
807
  const currentRenderTarget = renderer.getRenderTarget();
739
808
  const currentMRT = renderer.getMRT();
740
809
  const currentAutoClear = renderer.autoClear;
810
+ const currentTransparent = renderer.transparent;
811
+ const currentOpaque = renderer.opaque;
741
812
  const currentMask = camera.layers.mask;
813
+ const currentContextNode = renderer.contextNode;
814
+ const currentOverrideMaterial = scene.overrideMaterial;
742
815
 
743
816
  this._cameraNear.value = camera.near;
744
817
  this._cameraFar.value = camera.far;
@@ -755,9 +828,32 @@ class PassNode extends TempNode {
755
828
 
756
829
  }
757
830
 
831
+ if ( this.overrideMaterial !== null ) {
832
+
833
+ scene.overrideMaterial = this.overrideMaterial;
834
+
835
+ }
836
+
758
837
  renderer.setRenderTarget( this.renderTarget );
759
838
  renderer.setMRT( this._mrt );
760
839
  renderer.autoClear = true;
840
+ renderer.transparent = this.transparent;
841
+ renderer.opaque = this.opaque;
842
+
843
+ if ( this.contextNode !== null ) {
844
+
845
+ if ( this._contextNodeCache === null || this._contextNodeCache.version !== this.version ) {
846
+
847
+ this._contextNodeCache = {
848
+ version: this.version,
849
+ context: context( { ...renderer.contextNode.getFlowContextData(), ...this.contextNode.getFlowContextData() } )
850
+ };
851
+
852
+ }
853
+
854
+ renderer.contextNode = this._contextNodeCache.context;
855
+
856
+ }
761
857
 
762
858
  const currentSceneName = scene.name;
763
859
 
@@ -766,10 +862,14 @@ class PassNode extends TempNode {
766
862
  renderer.render( scene, camera );
767
863
 
768
864
  scene.name = currentSceneName;
865
+ scene.overrideMaterial = currentOverrideMaterial;
769
866
 
770
867
  renderer.setRenderTarget( currentRenderTarget );
771
868
  renderer.setMRT( currentMRT );
772
869
  renderer.autoClear = currentAutoClear;
870
+ renderer.transparent = currentTransparent;
871
+ renderer.opaque = currentOpaque;
872
+ renderer.contextNode = currentContextNode;
773
873
 
774
874
  camera.layers.mask = currentMask;
775
875
 
@@ -786,13 +886,31 @@ class PassNode extends TempNode {
786
886
  this._width = width;
787
887
  this._height = height;
788
888
 
789
- const effectiveWidth = Math.floor( this._width * this._pixelRatio * this._resolutionScale );
790
- const effectiveHeight = Math.floor( this._height * this._pixelRatio * this._resolutionScale );
889
+ const effectiveWidth = Math.floor( this._width * this._resolutionScale );
890
+ const effectiveHeight = Math.floor( this._height * this._resolutionScale );
791
891
 
792
892
  this.renderTarget.setSize( effectiveWidth, effectiveHeight );
793
893
 
794
- if ( this._scissor !== null ) this.renderTarget.scissor.copy( this._scissor );
795
- if ( this._viewport !== null ) this.renderTarget.viewport.copy( this._viewport );
894
+ // scissor
895
+
896
+ if ( this._scissor !== null ) {
897
+
898
+ this.renderTarget.scissor.copy( this._scissor ).multiplyScalar( this._resolutionScale ).floor();
899
+ this.renderTarget.scissorTest = true;
900
+
901
+ } else {
902
+
903
+ this.renderTarget.scissorTest = false;
904
+
905
+ }
906
+
907
+ // viewport
908
+
909
+ if ( this._viewport !== null ) {
910
+
911
+ this.renderTarget.viewport.copy( this._viewport ).multiplyScalar( this._resolutionScale ).floor();
912
+
913
+ }
796
914
 
797
915
  }
798
916
 
@@ -827,8 +945,6 @@ class PassNode extends TempNode {
827
945
 
828
946
  }
829
947
 
830
- this._scissor.multiplyScalar( this._pixelRatio * this._resolutionScale ).floor();
831
-
832
948
  }
833
949
 
834
950
  }
@@ -863,25 +979,10 @@ class PassNode extends TempNode {
863
979
 
864
980
  }
865
981
 
866
- this._viewport.multiplyScalar( this._pixelRatio * this._resolutionScale ).floor();
867
-
868
982
  }
869
983
 
870
984
  }
871
985
 
872
- /**
873
- * Sets the pixel ratio the pass's render target and updates the size.
874
- *
875
- * @param {number} pixelRatio - The pixel ratio to set.
876
- */
877
- setPixelRatio( pixelRatio ) {
878
-
879
- this._pixelRatio = pixelRatio;
880
-
881
- this.setSize( this._width, this._height );
882
-
883
- }
884
-
885
986
  /**
886
987
  * Frees internal resources. Should be called when the node is no longer in use.
887
988
  */
@@ -920,7 +1021,7 @@ export default PassNode;
920
1021
  * @param {Object} options - Options for the internal render target.
921
1022
  * @returns {PassNode}
922
1023
  */
923
- export const pass = ( scene, camera, options ) => nodeObject( new PassNode( PassNode.COLOR, scene, camera, options ) );
1024
+ export const pass = ( scene, camera, options ) => new PassNode( PassNode.COLOR, scene, camera, options );
924
1025
 
925
1026
  /**
926
1027
  * TSL function for creating a pass texture node.
@@ -931,7 +1032,7 @@ export const pass = ( scene, camera, options ) => nodeObject( new PassNode( Pass
931
1032
  * @param {Texture} texture - The output texture.
932
1033
  * @returns {PassTextureNode}
933
1034
  */
934
- export const passTexture = ( pass, texture ) => nodeObject( new PassTextureNode( pass, texture ) );
1035
+ export const passTexture = ( pass, texture ) => new PassTextureNode( pass, texture );
935
1036
 
936
1037
  /**
937
1038
  * TSL function for creating a depth pass node.
@@ -943,4 +1044,4 @@ export const passTexture = ( pass, texture ) => nodeObject( new PassTextureNode(
943
1044
  * @param {Object} options - Options for the internal render target.
944
1045
  * @returns {PassNode}
945
1046
  */
946
- export const depthPass = ( scene, camera, options ) => nodeObject( new PassNode( PassNode.DEPTH, scene, camera, options ) );
1047
+ export const depthPass = ( scene, camera, options ) => new PassNode( PassNode.DEPTH, scene, camera, options );
@@ -0,0 +1,39 @@
1
+ import { Fn, vec4 } from '../tsl/TSLCore.js';
2
+
3
+ /**
4
+ * Premultiplies the RGB channels of a color by its alpha channel.
5
+ *
6
+ * This function is useful for converting a non-premultiplied alpha color
7
+ * into a premultiplied alpha format, where the RGB values are scaled
8
+ * by the alpha value. Premultiplied alpha is often used in graphics
9
+ * rendering for certain operations, such as compositing and image processing.
10
+ *
11
+ * @tsl
12
+ * @function
13
+ * @param {Node<vec4>} color - The input color with non-premultiplied alpha.
14
+ * @return {Node<vec4>} The color with premultiplied alpha.
15
+ */
16
+ export const premultiplyAlpha = /*@__PURE__*/ Fn( ( [ color ] ) => {
17
+
18
+ return vec4( color.rgb.mul( color.a ), color.a );
19
+
20
+ }, { color: 'vec4', return: 'vec4' } );
21
+
22
+ /**
23
+ * Unpremultiplies the RGB channels of a color by its alpha channel.
24
+ *
25
+ * This function is useful for converting a premultiplied alpha color
26
+ * back into a non-premultiplied alpha format, where the RGB values are
27
+ * divided by the alpha value. Unpremultiplied alpha is often used in graphics
28
+ * rendering for certain operations, such as compositing and image processing.
29
+ *
30
+ * @tsl
31
+ * @function
32
+ * @param {Node<vec4>} color - The input color with premultiplied alpha.
33
+ * @return {Node<vec4>} The color with non-premultiplied alpha.
34
+ */
35
+ export const unpremultiplyAlpha = /*@__PURE__*/ Fn( ( [ color ] ) => {
36
+
37
+ return color.a.equal( 0 ).select( vec4( 0 ), vec4( color.rgb.div( color.a ), color.a ) );
38
+
39
+ }, { color: 'vec4', return: 'vec4' } );
@@ -1,22 +1,23 @@
1
1
  import TempNode from '../core/TempNode.js';
2
- import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
2
+ import { addMethodChaining, nodeObject, vec4 } from '../tsl/TSLCore.js';
3
+ import { premultiplyAlpha, unpremultiplyAlpha } from './PremultiplyAlphaFunctions.js';
3
4
 
4
5
  import { NoColorSpace, NoToneMapping } from '../../constants.js';
5
6
  import { ColorManagement } from '../../math/ColorManagement.js';
6
7
 
7
8
  /**
8
- * Normally, tone mapping and color conversion happens automatically
9
- * before outputting pixel too the default (screen) framebuffer. In certain
10
- * post processing setups this happens to late because certain effects
9
+ * Normally, tone mapping and color conversion happens automatically just
10
+ * before outputting a pixel to the default (screen) framebuffer. In certain
11
+ * post processing setups this is too late because some effects such as FXAA
11
12
  * require e.g. sRGB input. For such scenarios, `RenderOutputNode` can be used
12
13
  * to apply tone mapping and color space conversion at an arbitrary point
13
14
  * in the effect chain.
14
15
  *
15
16
  * When applying tone mapping and color space conversion manually with this node,
16
- * you have to set {@link PostProcessing#outputColorTransform} to `false`.
17
+ * you have to set {@link RenderPipeline#outputColorTransform} to `false`.
17
18
  *
18
19
  * ```js
19
- * const postProcessing = new PostProcessing( renderer );
20
+ * const postProcessing = new RenderPipeline( renderer );
20
21
  * postProcessing.outputColorTransform = false;
21
22
  *
22
23
  * const scenePass = pass( scene, camera );
@@ -108,9 +109,15 @@ class RenderOutputNode extends TempNode {
108
109
 
109
110
  let outputNode = this.colorNode || context.color;
110
111
 
111
- // tone mapping
112
+ // clamp alpha
113
+ outputNode = vec4( outputNode.rgb, outputNode.a.clamp( 0.0, 1.0 ) );
114
+
115
+ // unpremultiply
116
+ outputNode = unpremultiplyAlpha( outputNode );
112
117
 
118
+ // tone mapping
113
119
  const toneMapping = ( this._toneMapping !== null ? this._toneMapping : context.toneMapping ) || NoToneMapping;
120
+
114
121
  const outputColorSpace = ( this.outputColorSpace !== null ? this.outputColorSpace : context.outputColorSpace ) || NoColorSpace;
115
122
 
116
123
  if ( toneMapping !== NoToneMapping ) {
@@ -120,13 +127,15 @@ class RenderOutputNode extends TempNode {
120
127
  }
121
128
 
122
129
  // working to output color space
123
-
124
130
  if ( outputColorSpace !== NoColorSpace && outputColorSpace !== ColorManagement.workingColorSpace ) {
125
131
 
126
132
  outputNode = outputNode.workingToColorSpace( outputColorSpace );
127
133
 
128
134
  }
129
135
 
136
+ // premultiply in output color space
137
+ outputNode = premultiplyAlpha( outputNode );
138
+
130
139
  return outputNode;
131
140
 
132
141
  }
@@ -136,7 +145,7 @@ class RenderOutputNode extends TempNode {
136
145
  export default RenderOutputNode;
137
146
 
138
147
  /**
139
- * TSL function for creating a posterize node.
148
+ * TSL function for creating a render output node.
140
149
  *
141
150
  * @tsl
142
151
  * @function
@@ -145,6 +154,6 @@ export default RenderOutputNode;
145
154
  * @param {?string} [outputColorSpace=null] - The output color space.
146
155
  * @returns {RenderOutputNode}
147
156
  */
148
- export const renderOutput = ( color, toneMapping = null, outputColorSpace = null ) => nodeObject( new RenderOutputNode( nodeObject( color ), toneMapping, outputColorSpace ) );
157
+ export const renderOutput = ( color, toneMapping = null, outputColorSpace = null ) => new RenderOutputNode( nodeObject( color ), toneMapping, outputColorSpace );
149
158
 
150
159
  addMethodChaining( 'renderOutput', renderOutput );
@@ -1,4 +1,5 @@
1
1
  import Node from '../core/Node.js';
2
+ import StackTrace from '../core/StackTrace.js';
2
3
  import { NodeUpdateType } from '../core/constants.js';
3
4
  import { uniform } from '../core/UniformNode.js';
4
5
  import { Fn, nodeImmutable, vec2 } from '../tsl/TSLBase.js';
@@ -49,6 +50,7 @@ class ScreenNode extends Node {
49
50
  /**
50
51
  * This output node.
51
52
  *
53
+ * @private
52
54
  * @type {?Node}
53
55
  * @default null
54
56
  */
@@ -70,7 +72,7 @@ class ScreenNode extends Node {
70
72
  *
71
73
  * @return {('float'|'vec2'|'vec4')} The node type.
72
74
  */
73
- getNodeType() {
75
+ generateNodeType() {
74
76
 
75
77
  if ( this.scope === ScreenNode.DPR ) return 'float';
76
78
  if ( this.scope === ScreenNode.VIEWPORT ) return 'vec4';
@@ -283,7 +285,7 @@ export const viewportUV = /*@__PURE__*/ viewportCoordinate.div( viewportSize );
283
285
  */
284
286
  export const viewportResolution = /*@__PURE__*/ ( Fn( () => { // @deprecated, r169
285
287
 
286
- warn( 'TSL: "viewportResolution" is deprecated. Use "screenSize" instead.' );
288
+ warn( 'TSL: "viewportResolution" is deprecated. Use "screenSize" instead.', new StackTrace() );
287
289
 
288
290
  return screenSize;
289
291
 
@@ -134,7 +134,7 @@ export default ToneMappingNode;
134
134
  * @param {Node<vec3> | Color} color - The color node to process.
135
135
  * @returns {ToneMappingNode<vec3>}
136
136
  */
137
- export const toneMapping = ( mapping, exposure, color ) => nodeObject( new ToneMappingNode( mapping, nodeObject( exposure ), nodeObject( color ) ) );
137
+ export const toneMapping = ( mapping, exposure, color ) => new ToneMappingNode( mapping, nodeObject( exposure ), nodeObject( color ) );
138
138
 
139
139
  /**
140
140
  * TSL object that represents the global tone mapping exposure of the renderer.
@@ -14,7 +14,7 @@ import PassNode from './PassNode.js';
14
14
  * will receive the outline.
15
15
  *
16
16
  * ```js
17
- * const postProcessing = new PostProcessing( renderer );
17
+ * const postProcessing = new RenderPipeline( renderer );
18
18
  *
19
19
  * const scenePass = toonOutlinePass( scene, camera );
20
20
  *
@@ -188,4 +188,4 @@ export default ToonOutlinePassNode;
188
188
  * @param {number} [alpha=1] - Defines the outline's alpha.
189
189
  * @returns {ToonOutlinePassNode}
190
190
  */
191
- export const toonOutlinePass = ( scene, camera, color = new Color( 0, 0, 0 ), thickness = 0.003, alpha = 1 ) => nodeObject( new ToonOutlinePassNode( scene, camera, nodeObject( color ), nodeObject( thickness ), nodeObject( alpha ) ) );
191
+ export const toonOutlinePass = ( scene, camera, color = new Color( 0, 0, 0 ), thickness = 0.003, alpha = 1 ) => new ToonOutlinePassNode( scene, camera, nodeObject( color ), nodeObject( thickness ), nodeObject( alpha ) );
@@ -1,5 +1,5 @@
1
1
  import Node from '../core/Node.js';
2
- import { float, log, log2, nodeImmutable, nodeProxy } from '../tsl/TSLBase.js';
2
+ import { float, Fn, log, log2, nodeImmutable, nodeProxy } from '../tsl/TSLBase.js';
3
3
  import { cameraNear, cameraFar } from '../accessors/Camera.js';
4
4
  import { positionView } from '../accessors/Position.js';
5
5
  import { viewportDepthTexture } from './ViewportDepthTextureNode.js';
@@ -86,7 +86,7 @@ class ViewportDepthNode extends Node {
86
86
 
87
87
  if ( value !== null ) {
88
88
 
89
- node = depthBase().assign( value );
89
+ node = depthBase().assign( value );
90
90
 
91
91
  }
92
92
 
@@ -152,6 +152,18 @@ export default ViewportDepthNode;
152
152
  */
153
153
  export const viewZToOrthographicDepth = ( viewZ, near, far ) => viewZ.add( near ).div( near.sub( far ) );
154
154
 
155
+ /**
156
+ * TSL function for converting a viewZ value to a reversed orthographic depth value.
157
+ *
158
+ * @tsl
159
+ * @function
160
+ * @param {Node<float>} viewZ - The viewZ node.
161
+ * @param {Node<float>} near - The camera's near value.
162
+ * @param {Node<float>} far - The camera's far value.
163
+ * @returns {Node<float>}
164
+ */
165
+ export const viewZToReversedOrthographicDepth = ( viewZ, near, far ) => viewZ.add( far ).div( far.sub( near ) );
166
+
155
167
  /**
156
168
  * TSL function for converting an orthographic depth value to a viewZ value.
157
169
  *
@@ -162,7 +174,19 @@ export const viewZToOrthographicDepth = ( viewZ, near, far ) => viewZ.add( near
162
174
  * @param {Node<float>} far - The camera's far value.
163
175
  * @returns {Node<float>}
164
176
  */
165
- export const orthographicDepthToViewZ = ( depth, near, far ) => near.sub( far ).mul( depth ).sub( near );
177
+ export const orthographicDepthToViewZ = /*@__PURE__*/ Fn( ( [ depth, near, far ], builder ) => {
178
+
179
+ if ( builder.renderer.reversedDepthBuffer === true ) {
180
+
181
+ return far.sub( near ).mul( depth ).sub( far );
182
+
183
+ } else {
184
+
185
+ return near.sub( far ).mul( depth ).sub( near );
186
+
187
+ }
188
+
189
+ } );
166
190
 
167
191
  /**
168
192
  * TSL function for converting a viewZ value to a perspective depth value.
@@ -178,6 +202,18 @@ export const orthographicDepthToViewZ = ( depth, near, far ) => near.sub( far ).
178
202
  */
179
203
  export const viewZToPerspectiveDepth = ( viewZ, near, far ) => near.add( viewZ ).mul( far ).div( far.sub( near ).mul( viewZ ) );
180
204
 
205
+ /**
206
+ * TSL function for converting a viewZ value to a reversed perspective depth value.
207
+ *
208
+ * @tsl
209
+ * @function
210
+ * @param {Node<float>} viewZ - The viewZ node.
211
+ * @param {Node<float>} near - The camera's near value.
212
+ * @param {Node<float>} far - The camera's far value.
213
+ * @returns {Node<float>}
214
+ */
215
+ export const viewZToReversedPerspectiveDepth = ( viewZ, near, far ) => near.mul( viewZ.add( far ) ).div( viewZ.mul( near.sub( far ) ) );
216
+
181
217
  /**
182
218
  * TSL function for converting a perspective depth value to a viewZ value.
183
219
  *
@@ -188,7 +224,19 @@ export const viewZToPerspectiveDepth = ( viewZ, near, far ) => near.add( viewZ )
188
224
  * @param {Node<float>} far - The camera's far value.
189
225
  * @returns {Node<float>}
190
226
  */
191
- export const perspectiveDepthToViewZ = ( depth, near, far ) => near.mul( far ).div( far.sub( near ).mul( depth ).sub( far ) );
227
+ export const perspectiveDepthToViewZ = /*@__PURE__*/ Fn( ( [ depth, near, far ], builder ) => {
228
+
229
+ if ( builder.renderer.reversedDepthBuffer === true ) {
230
+
231
+ return near.mul( far ).div( near.sub( far ).mul( depth ).sub( near ) );
232
+
233
+ } else {
234
+
235
+ return near.mul( far ).div( far.sub( near ).mul( depth ).sub( far ) );
236
+
237
+ }
238
+
239
+ } );
192
240
 
193
241
  /**
194
242
  * TSL function for converting a viewZ value to a logarithmic depth value.