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
@@ -6,143 +6,158 @@ export { default as ArrayNode } from './core/ArrayNode.js';
6
6
  export { default as AssignNode } from './core/AssignNode.js';
7
7
  export { default as AttributeNode } from './core/AttributeNode.js';
8
8
  export { default as BypassNode } from './core/BypassNode.js';
9
- export { default as IsolateNode } from './core/IsolateNode.js';
10
9
  export { default as ConstNode } from './core/ConstNode.js';
11
10
  export { default as ContextNode } from './core/ContextNode.js';
12
11
  export { default as IndexNode } from './core/IndexNode.js';
12
+ export { default as InputNode } from './core/InputNode.js';
13
+ export { default as InspectorNode } from './core/InspectorNode.js';
14
+ export { default as IsolateNode } from './core/IsolateNode.js';
13
15
  export { default as LightingModel } from './core/LightingModel.js';
16
+ export { default as MRTNode } from './core/MRTNode.js';
14
17
  export { default as Node } from './core/Node.js';
15
- export { default as VarNode } from './core/VarNode.js';
16
18
  export { default as NodeAttribute } from './core/NodeAttribute.js';
17
19
  export { default as NodeBuilder } from './core/NodeBuilder.js';
18
20
  export { default as NodeCache } from './core/NodeCache.js';
19
21
  export { default as NodeCode } from './core/NodeCode.js';
22
+ export { default as NodeError } from './core/NodeError.js';
20
23
  export { default as NodeFrame } from './core/NodeFrame.js';
21
24
  export { default as NodeFunctionInput } from './core/NodeFunctionInput.js';
22
25
  export { default as NodeUniform } from './core/NodeUniform.js';
23
26
  export { default as NodeVar } from './core/NodeVar.js';
24
27
  export { default as NodeVarying } from './core/NodeVarying.js';
28
+ export { default as OutputStructNode } from './core/OutputStructNode.js';
29
+ export { default as OverrideContextNode } from './core/OverrideContextNode.js';
25
30
  export { default as ParameterNode } from './core/ParameterNode.js';
26
31
  export { default as PropertyNode } from './core/PropertyNode.js';
27
32
  export { default as StackNode } from './core/StackNode.js';
33
+ export { default as StackTrace } from './core/StackTrace.js';
34
+ export { default as StructNode } from './core/StructNode.js';
35
+ export { default as StructTypeNode } from './core/StructTypeNode.js';
36
+ export { default as SubBuildNode } from './core/SubBuildNode.js';
28
37
  export { default as TempNode } from './core/TempNode.js';
29
38
  export { default as UniformGroupNode } from './core/UniformGroupNode.js';
30
39
  export { default as UniformNode } from './core/UniformNode.js';
40
+ export { default as VarNode } from './core/VarNode.js';
31
41
  export { default as VaryingNode } from './core/VaryingNode.js';
32
- export { default as StructNode } from './core/StructNode.js';
33
- export { default as StructTypeNode } from './core/StructTypeNode.js';
34
- export { default as OutputStructNode } from './core/OutputStructNode.js';
35
- export { default as MRTNode } from './core/MRTNode.js';
36
- export { default as SubBuildNode } from './core/SubBuildNode.js';
37
42
 
38
43
  import * as NodeUtils from './core/NodeUtils.js';
39
44
  export { NodeUtils };
40
45
 
41
- // utils
42
- export { default as ArrayElementNode } from './utils/ArrayElementNode.js';
43
- export { default as ConvertNode } from './utils/ConvertNode.js';
44
- export { default as FunctionOverloadingNode } from './utils/FunctionOverloadingNode.js';
45
- export { default as JoinNode } from './utils/JoinNode.js';
46
- export { default as LoopNode } from './utils/LoopNode.js';
47
- export { default as MaxMipLevelNode } from './utils/MaxMipLevelNode.js';
48
- export { default as RemapNode } from './utils/RemapNode.js';
49
- export { default as RotateNode } from './utils/RotateNode.js';
50
- export { default as SetNode } from './utils/SetNode.js';
51
- export { default as SplitNode } from './utils/SplitNode.js';
52
- export { default as SpriteSheetUVNode } from './utils/SpriteSheetUVNode.js';
53
- export { default as StorageArrayElementNode } from './utils/StorageArrayElementNode.js';
54
- export { default as ReflectorNode } from './utils/ReflectorNode.js';
55
- export { default as RTTNode } from './utils/RTTNode.js';
56
- export { default as MemberNode } from './utils/MemberNode.js';
57
- export { default as DebugNode } from './utils/DebugNode.js';
58
- export { default as EventNode } from './utils/EventNode.js';
59
-
60
- // math
61
- export { default as BitcastNode } from './math/BitcastNode.js';
62
-
63
46
  // accessors
64
- export { default as UniformArrayNode } from './accessors/UniformArrayNode.js';
65
47
  export { default as BufferAttributeNode } from './accessors/BufferAttributeNode.js';
66
48
  export { default as BufferNode } from './accessors/BufferNode.js';
67
- export { default as VertexColorNode } from './accessors/VertexColorNode.js';
49
+ export { default as BuiltinNode } from './accessors/BuiltinNode.js';
50
+ export { default as ClippingNode } from './accessors/ClippingNode.js';
68
51
  export { default as CubeTextureNode } from './accessors/CubeTextureNode.js';
69
- export { default as InstanceNode } from './accessors/InstanceNode.js';
70
- export { default as InstancedMeshNode } from './accessors/InstancedMeshNode.js';
71
- export { default as BatchNode } from './accessors/BatchNode.js';
72
52
  export { default as MaterialNode } from './accessors/MaterialNode.js';
73
53
  export { default as MaterialReferenceNode } from './accessors/MaterialReferenceNode.js';
74
- export { default as RendererReferenceNode } from './accessors/RendererReferenceNode.js';
75
- export { default as MorphNode } from './accessors/MorphNode.js';
76
54
  export { default as ModelNode } from './accessors/ModelNode.js';
77
55
  export { default as Object3DNode } from './accessors/Object3DNode.js';
78
56
  export { default as PointUVNode } from './accessors/PointUVNode.js';
57
+ export { default as ReferenceBaseNode } from './accessors/ReferenceBaseNode.js';
79
58
  export { default as ReferenceNode } from './accessors/ReferenceNode.js';
80
- export { default as SkinningNode } from './accessors/SkinningNode.js';
81
- export { default as SceneNode } from './accessors/SceneNode.js';
59
+ export { default as RendererReferenceNode } from './accessors/RendererReferenceNode.js';
82
60
  export { default as StorageBufferNode } from './accessors/StorageBufferNode.js';
83
- export { default as TextureNode } from './accessors/TextureNode.js';
84
- export { default as TextureSizeNode } from './accessors/TextureSizeNode.js';
61
+ export { default as StorageTexture3DNode } from './accessors/StorageTexture3DNode.js';
85
62
  export { default as StorageTextureNode } from './accessors/StorageTextureNode.js';
86
63
  export { default as Texture3DNode } from './accessors/Texture3DNode.js';
64
+ export { default as TextureNode } from './accessors/TextureNode.js';
65
+ export { default as TextureSizeNode } from './accessors/TextureSizeNode.js';
66
+ export { default as UniformArrayNode } from './accessors/UniformArrayNode.js';
87
67
  export { default as UserDataNode } from './accessors/UserDataNode.js';
68
+ export { default as VelocityNode } from './accessors/VelocityNode.js';
69
+ export { default as VertexColorNode } from './accessors/VertexColorNode.js';
70
+
71
+ // code
72
+ export { default as CodeNode } from './code/CodeNode.js';
73
+ export { default as ExpressionNode } from './code/ExpressionNode.js';
74
+ export { default as FunctionCallNode } from './code/FunctionCallNode.js';
75
+ export { default as FunctionNode } from './code/FunctionNode.js';
88
76
 
89
77
  // display
90
78
  export { default as BumpMapNode } from './display/BumpMapNode.js';
91
79
  export { default as ColorSpaceNode } from './display/ColorSpaceNode.js';
92
80
  export { default as FrontFacingNode } from './display/FrontFacingNode.js';
93
81
  export { default as NormalMapNode } from './display/NormalMapNode.js';
94
- export { default as PosterizeNode } from './display/PosterizeNode.js';
95
- export { default as ToneMappingNode } from './display/ToneMappingNode.js';
96
- export { default as ScreenNode } from './display/ScreenNode.js';
97
- export { default as ViewportTextureNode } from './display/ViewportTextureNode.js';
98
- export { default as ViewportSharedTextureNode } from './display/ViewportSharedTextureNode.js';
99
- export { default as ViewportDepthTextureNode } from './display/ViewportDepthTextureNode.js';
100
- export { default as ViewportDepthNode } from './display/ViewportDepthNode.js';
101
- export { default as RenderOutputNode } from './display/RenderOutputNode.js';
102
82
  export { default as PassNode } from './display/PassNode.js';
83
+ export { default as RenderOutputNode } from './display/RenderOutputNode.js';
84
+ export { default as ScreenNode } from './display/ScreenNode.js';
85
+ export { default as ToneMappingNode } from './display/ToneMappingNode.js';
103
86
  export { default as ToonOutlinePassNode } from './display/ToonOutlinePassNode.js';
104
-
105
- // code
106
- export { default as ExpressionNode } from './code/ExpressionNode.js';
107
- export { default as CodeNode } from './code/CodeNode.js';
108
- export { default as FunctionCallNode } from './code/FunctionCallNode.js';
109
- export { default as FunctionNode } from './code/FunctionNode.js';
110
- export { default as ScriptableNode } from './code/ScriptableNode.js';
111
- export { default as ScriptableValueNode } from './code/ScriptableValueNode.js';
87
+ export { default as ViewportDepthNode } from './display/ViewportDepthNode.js';
88
+ export { default as ViewportDepthTextureNode } from './display/ViewportDepthTextureNode.js';
89
+ export { default as ViewportSharedTextureNode } from './display/ViewportSharedTextureNode.js';
90
+ export { default as ViewportTextureNode } from './display/ViewportTextureNode.js';
112
91
 
113
92
  // geometry
114
93
  export { default as RangeNode } from './geometry/RangeNode.js';
115
94
 
116
95
  // gpgpu
96
+ export { default as AtomicFunctionNode } from './gpgpu/AtomicFunctionNode.js';
97
+ export { default as BarrierNode } from './gpgpu/BarrierNode.js';
98
+ export { default as ComputeBuiltinNode } from './gpgpu/ComputeBuiltinNode.js';
117
99
  export { default as ComputeNode } from './gpgpu/ComputeNode.js';
100
+ export { default as SubgroupFunctionNode } from './gpgpu/SubgroupFunctionNode.js';
101
+ export { default as WorkgroupInfoNode } from './gpgpu/WorkgroupInfoNode.js';
118
102
 
119
103
  // lighting
120
- export { default as PointLightNode } from './lighting/PointLightNode.js';
104
+ export { default as AmbientLightNode } from './lighting/AmbientLightNode.js';
105
+ export { default as AnalyticLightNode } from './lighting/AnalyticLightNode.js';
106
+ export { default as AONode } from './lighting/AONode.js';
107
+ export { default as BasicEnvironmentNode } from './lighting/BasicEnvironmentNode.js';
108
+ export { default as BasicLightMapNode } from './lighting/BasicLightMapNode.js';
121
109
  export { default as DirectionalLightNode } from './lighting/DirectionalLightNode.js';
122
- export { default as RectAreaLightNode } from './lighting/RectAreaLightNode.js';
123
- export { default as SpotLightNode } from './lighting/SpotLightNode.js';
110
+ export { default as EnvironmentNode } from './lighting/EnvironmentNode.js';
111
+ export { default as HemisphereLightNode } from './lighting/HemisphereLightNode.js';
124
112
  export { default as IESSpotLightNode } from './lighting/IESSpotLightNode.js';
125
- export { default as ProjectorLightNode } from './lighting/ProjectorLightNode.js';
126
- export { default as AmbientLightNode } from './lighting/AmbientLightNode.js';
127
- export { default as LightsNode } from './lighting/LightsNode.js';
128
- export { default as LightingNode } from './lighting/LightingNode.js';
113
+ export { default as IrradianceNode } from './lighting/IrradianceNode.js';
129
114
  export { default as LightingContextNode } from './lighting/LightingContextNode.js';
130
- export { default as HemisphereLightNode } from './lighting/HemisphereLightNode.js';
115
+ export { default as LightingNode } from './lighting/LightingNode.js';
131
116
  export { default as LightProbeNode } from './lighting/LightProbeNode.js';
132
- export { default as EnvironmentNode } from './lighting/EnvironmentNode.js';
133
- export { default as BasicEnvironmentNode } from './lighting/BasicEnvironmentNode.js';
134
- export { default as IrradianceNode } from './lighting/IrradianceNode.js';
135
- export { default as AONode } from './lighting/AONode.js';
136
- export { default as AnalyticLightNode } from './lighting/AnalyticLightNode.js';
117
+ export { default as LightsNode } from './lighting/LightsNode.js';
118
+ export { default as PointLightNode } from './lighting/PointLightNode.js';
119
+ export { default as PointShadowNode } from './lighting/PointShadowNode.js';
120
+ export { default as ProjectorLightNode } from './lighting/ProjectorLightNode.js';
121
+ export { default as RectAreaLightNode } from './lighting/RectAreaLightNode.js';
137
122
  export { default as ShadowBaseNode } from './lighting/ShadowBaseNode.js';
138
123
  export { default as ShadowNode } from './lighting/ShadowNode.js';
124
+ export { default as SpotLightNode } from './lighting/SpotLightNode.js';
139
125
 
140
- // pmrem
141
- export { default as PMREMNode } from './pmrem/PMREMNode.js';
126
+ // math
127
+ export { default as BitcastNode } from './math/BitcastNode.js';
128
+ export { default as BitcountNode } from './math/BitcountNode.js';
129
+ export { default as ConditionalNode } from './math/ConditionalNode.js';
130
+ export { default as MathNode } from './math/MathNode.js';
131
+ export { default as OperatorNode } from './math/OperatorNode.js';
132
+ export { default as PackFloatNode } from './math/PackFloatNode.js';
133
+ export { default as UnpackFloatNode } from './math/UnpackFloatNode.js';
142
134
 
143
135
  // parsers
144
136
  export { default as GLSLNodeParser } from './parsers/GLSLNodeParser.js'; // @TODO: Move to jsm/renderers/webgl.
145
137
 
138
+ // pmrem
139
+ export { default as PMREMNode } from './pmrem/PMREMNode.js';
140
+
141
+ // utils
142
+ export { default as ArrayElementNode } from './utils/ArrayElementNode.js';
143
+ export { default as ConvertNode } from './utils/ConvertNode.js';
144
+ export { default as CubeMapNode } from './utils/CubeMapNode.js';
145
+ export { default as DebugNode } from './utils/DebugNode.js';
146
+ export { default as EventNode } from './utils/EventNode.js';
147
+ export { default as FlipNode } from './utils/FlipNode.js';
148
+ export { default as FunctionOverloadingNode } from './utils/FunctionOverloadingNode.js';
149
+ export { default as JoinNode } from './utils/JoinNode.js';
150
+ export { default as LoopNode } from './utils/LoopNode.js';
151
+ export { default as MaxMipLevelNode } from './utils/MaxMipLevelNode.js';
152
+ export { default as MemberNode } from './utils/MemberNode.js';
153
+ export { default as ReflectorNode } from './utils/ReflectorNode.js';
154
+ export { default as RotateNode } from './utils/RotateNode.js';
155
+ export { default as RTTNode } from './utils/RTTNode.js';
156
+ export { default as SampleNode } from './utils/SampleNode.js';
157
+ export { default as SetNode } from './utils/SetNode.js';
158
+ export { default as SplitNode } from './utils/SplitNode.js';
159
+ export { default as StorageArrayElementNode } from './utils/StorageArrayElementNode.js';
160
+
146
161
  // lighting models
147
162
  export { default as PhongLightingModel } from './functions/PhongLightingModel.js';
148
163
  export { default as PhysicalLightingModel } from './functions/PhysicalLightingModel.js';
package/src/nodes/TSL.js CHANGED
@@ -7,6 +7,7 @@ export * from './core/AttributeNode.js';
7
7
  export * from './core/BypassNode.js';
8
8
  export * from './core/IsolateNode.js';
9
9
  export * from './core/ContextNode.js';
10
+ export * from './core/OverrideContextNode.js';
10
11
  export * from './core/IndexNode.js';
11
12
  export * from './core/ParameterNode.js';
12
13
  export * from './core/PropertyNode.js';
@@ -20,8 +21,11 @@ export * from './core/MRTNode.js';
20
21
 
21
22
  // math
22
23
  export * from './math/BitcastNode.js';
24
+ export * from './math/BitcountNode.js';
23
25
  export * from './math/Hash.js';
24
26
  export * from './math/MathUtils.js';
27
+ export * from './math/PackFloatNode.js';
28
+ export * from './math/UnpackFloatNode.js';
25
29
  export * from './math/TriNoise3D.js';
26
30
 
27
31
  // utils
@@ -32,12 +36,12 @@ export * from './utils/MatcapUV.js';
32
36
  export * from './utils/MaxMipLevelNode.js';
33
37
  export * from './utils/Oscillators.js';
34
38
  export * from './utils/Packing.js';
35
- export * from './utils/RemapNode.js';
39
+ export * from './utils/Remap.js';
36
40
  export * from './utils/UVUtils.js';
37
41
  export * from './utils/SpriteUtils.js';
38
42
  export * from './utils/ViewportUtils.js';
39
43
  export * from './utils/RotateNode.js';
40
- export * from './utils/SpriteSheetUVNode.js';
44
+ export * from './utils/SpriteSheetUV.js';
41
45
  export * from './utils/Timer.js';
42
46
  export * from './utils/TriplanarTextures.js';
43
47
  export * from './utils/ReflectorNode.js';
@@ -60,14 +64,13 @@ export * from './accessors/BuiltinNode.js';
60
64
  export * from './accessors/Camera.js';
61
65
  export * from './accessors/VertexColorNode.js';
62
66
  export * from './accessors/CubeTextureNode.js';
63
- export * from './accessors/InstanceNode.js';
64
- export * from './accessors/InstancedMeshNode.js';
65
- export * from './accessors/BatchNode.js';
67
+ export * from './accessors/Instance.js';
68
+ export * from './accessors/Batch.js';
66
69
  export * from './accessors/MaterialNode.js';
67
70
  export * from './accessors/MaterialProperties.js';
68
71
  export * from './accessors/MaterialReferenceNode.js';
69
72
  export * from './accessors/RendererReferenceNode.js';
70
- export * from './accessors/MorphNode.js';
73
+ export * from './accessors/Morph.js';
71
74
  export * from './accessors/TextureBicubic.js';
72
75
  export * from './accessors/ModelNode.js';
73
76
  export * from './accessors/ModelViewProjectionNode.js';
@@ -77,13 +80,14 @@ export * from './accessors/PointUVNode.js';
77
80
  export * from './accessors/Position.js';
78
81
  export * from './accessors/ReferenceNode.js';
79
82
  export * from './accessors/ReflectVector.js';
80
- export * from './accessors/SkinningNode.js';
81
- export * from './accessors/SceneNode.js';
83
+ export * from './accessors/Skinning.js';
84
+ export * from './accessors/SceneProperties.js';
82
85
  export * from './accessors/StorageBufferNode.js';
86
+ export * from './accessors/StorageTexture3DNode.js';
87
+ export * from './accessors/StorageTextureNode.js';
83
88
  export * from './accessors/Tangent.js';
84
89
  export * from './accessors/TextureNode.js';
85
90
  export * from './accessors/TextureSizeNode.js';
86
- export * from './accessors/StorageTextureNode.js';
87
91
  export * from './accessors/Texture3DNode.js';
88
92
  export * from './accessors/UV.js';
89
93
  export * from './accessors/UserDataNode.js';
@@ -96,7 +100,7 @@ export * from './display/ColorAdjustment.js';
96
100
  export * from './display/ColorSpaceNode.js';
97
101
  export * from './display/FrontFacingNode.js';
98
102
  export * from './display/NormalMapNode.js';
99
- export * from './display/PosterizeNode.js';
103
+ export * from './display/PremultiplyAlphaFunctions.js';
100
104
  export * from './display/ToneMappingNode.js';
101
105
  export * from './display/ScreenNode.js';
102
106
  export * from './display/ViewportTextureNode.js';
@@ -116,8 +120,6 @@ export * from './code/ExpressionNode.js';
116
120
  export * from './code/CodeNode.js';
117
121
  export * from './code/FunctionCallNode.js';
118
122
  export * from './code/FunctionNode.js';
119
- export * from './code/ScriptableNode.js';
120
- export * from './code/ScriptableValueNode.js';
121
123
 
122
124
  // fog
123
125
  export * from './fog/Fog.js';
@@ -160,7 +162,7 @@ export * from './materialx/MaterialXNodes.js';
160
162
  export { default as BRDF_GGX } from './functions/BSDF/BRDF_GGX.js';
161
163
  export { default as BRDF_Lambert } from './functions/BSDF/BRDF_Lambert.js';
162
164
  export { default as D_GGX } from './functions/BSDF/D_GGX.js';
163
- export { default as DFGApprox } from './functions/BSDF/DFGApprox.js';
165
+ export { default as DFGLUT } from './functions/BSDF/DFGLUT.js';
164
166
  export { default as F_Schlick } from './functions/BSDF/F_Schlick.js';
165
167
  export { default as Schlick_to_F0 } from './functions/BSDF/Schlick_to_F0.js';
166
168
  export { default as V_GGX_SmithCorrelated } from './functions/BSDF/V_GGX_SmithCorrelated.js';
@@ -16,9 +16,9 @@ export const attributeArray = ( count, type = 'float' ) => {
16
16
 
17
17
  let itemSize, typedArray;
18
18
 
19
- if ( type.isStruct === true ) {
19
+ if ( type.isStructTypeNode === true ) {
20
20
 
21
- itemSize = type.layout.getLength();
21
+ itemSize = type.getLength();
22
22
  typedArray = getTypedArrayFromType( 'float' );
23
23
 
24
24
  } else {
@@ -48,9 +48,9 @@ export const instancedArray = ( count, type = 'float' ) => {
48
48
 
49
49
  let itemSize, typedArray;
50
50
 
51
- if ( type.isStruct === true ) {
51
+ if ( type.isStructTypeNode === true ) {
52
52
 
53
- itemSize = type.layout.getLength();
53
+ itemSize = type.getLength();
54
54
  typedArray = getTypedArrayFromType( 'float' );
55
55
 
56
56
  } else {
@@ -61,7 +61,7 @@ export const instancedArray = ( count, type = 'float' ) => {
61
61
  }
62
62
 
63
63
  const buffer = new StorageInstancedBufferAttribute( count, itemSize, typedArray );
64
- const node = storage( buffer, type, count );
64
+ const node = storage( buffer, type, buffer.count );
65
65
 
66
66
  return node;
67
67
 
@@ -0,0 +1,108 @@
1
+
2
+ import { normalLocal } from './Normal.js';
3
+ import { positionLocal } from './Position.js';
4
+ import { vec3, mat3, mat4, int, ivec2, float, Fn } from '../tsl/TSLBase.js';
5
+ import { textureLoad } from './TextureNode.js';
6
+ import { textureSize } from './TextureSizeNode.js';
7
+ import { tangentLocal } from './Tangent.js';
8
+ import { instanceIndex, drawIndex } from '../core/IndexNode.js';
9
+ import { varyingProperty } from '../core/PropertyNode.js';
10
+
11
+ /**
12
+ * TSL function that retrieves the batching color for a given instance ID from a colors texture.
13
+ *
14
+ * @param {Node<texture>} colorsTexture - The colors texture.
15
+ * @param {Node<int>} id - The instance or batch ID.
16
+ * @returns {Node<vec4>} The retrieved color.
17
+ */
18
+ const getBatchingColor = /*@__PURE__*/ Fn( ( [ colorsTexture, id ] ) => {
19
+
20
+ const size = int( textureSize( textureLoad( colorsTexture ), 0 ).x ).toConst();
21
+ const j = int( id );
22
+ const x = j.mod( size ).toConst();
23
+ const y = j.div( size ).toConst();
24
+ return textureLoad( colorsTexture, ivec2( x, y ) );
25
+
26
+ } );
27
+
28
+ /**
29
+ * TSL function that retrieves the indirect index for a given batch ID.
30
+ *
31
+ * @param {BatchedMesh} batchMesh - The batched mesh.
32
+ * @param {Node<int>} id - The draw or instance ID.
33
+ * @returns {Node<uint>} The indirect index.
34
+ */
35
+ const getIndirectIndex = /*@__PURE__*/ Fn( ( [ indirectTexture, id ] ) => {
36
+
37
+ const size = int( textureSize( textureLoad( indirectTexture ), 0 ).x ).toConst();
38
+ const x = int( id ).mod( size ).toConst();
39
+ const y = int( id ).div( size ).toConst();
40
+ return textureLoad( indirectTexture, ivec2( x, y ) ).x;
41
+
42
+ } );
43
+
44
+ /**
45
+ * TSL object representing a varying property for the batching color vector.
46
+ *
47
+ * @type {VaryingNode<vec4>}
48
+ */
49
+ export const batchColor = /*@__PURE__*/ varyingProperty( 'vec4', 'vBatchColor' );
50
+
51
+ /**
52
+ * TSL function representing the vertex shader batching setup.
53
+ * Applies the batch transformation matrix to positionLocal, normalLocal, and tangentLocal.
54
+ * Also assigns the batch color if a color texture is present.
55
+ *
56
+ * @tsl
57
+ * @function
58
+ * @param {BatchedMesh} batchMesh - The batched mesh.
59
+ */
60
+ export const batch = /*@__PURE__*/ Fn( ( [ batchMesh ], builder ) => {
61
+
62
+ const batchingIdNode = builder.getDrawIndex() === null ? instanceIndex : drawIndex;
63
+
64
+ const indirectId = getIndirectIndex( batchMesh._indirectTexture, int( batchingIdNode ) );
65
+
66
+ const matricesTexture = batchMesh._matricesTexture;
67
+
68
+ const size = int( textureSize( textureLoad( matricesTexture ), 0 ).x ).toConst();
69
+ const j = float( indirectId ).mul( 4 ).toInt().toConst();
70
+
71
+ const x = j.mod( size ).toConst();
72
+ const y = j.div( size ).toConst();
73
+ const batchingMatrix = mat4(
74
+ textureLoad( matricesTexture, ivec2( x, y ) ),
75
+ textureLoad( matricesTexture, ivec2( x.add( 1 ), y ) ),
76
+ textureLoad( matricesTexture, ivec2( x.add( 2 ), y ) ),
77
+ textureLoad( matricesTexture, ivec2( x.add( 3 ), y ) )
78
+ );
79
+
80
+ const colorsTexture = batchMesh._colorsTexture;
81
+
82
+ if ( colorsTexture !== null ) {
83
+
84
+ const color = getBatchingColor( colorsTexture, indirectId );
85
+
86
+ batchColor.assign( color );
87
+
88
+ }
89
+
90
+ const bm = mat3( batchingMatrix );
91
+
92
+ positionLocal.assign( batchingMatrix.mul( positionLocal ) );
93
+
94
+ const transformedNormal = normalLocal.div( vec3( bm[ 0 ].dot( bm[ 0 ] ), bm[ 1 ].dot( bm[ 1 ] ), bm[ 2 ].dot( bm[ 2 ] ) ) );
95
+
96
+ const batchingNormal = bm.mul( transformedNormal ).xyz;
97
+
98
+ normalLocal.assign( batchingNormal );
99
+
100
+ if ( builder.hasGeometryAttribute( 'tangent' ) ) {
101
+
102
+ tangentLocal.mulAssign( bm );
103
+
104
+ }
105
+
106
+ }, 'void' );
107
+
108
+
@@ -2,7 +2,7 @@ import { Fn } from '../tsl/TSLCore.js';
2
2
  import { normalGeometry, normalLocal, normalView, normalWorld } from './Normal.js';
3
3
  import { tangentGeometry, tangentLocal, tangentView, tangentWorld } from './Tangent.js';
4
4
  import { bitangentViewFrame } from './TangentUtils.js';
5
- import { directionToFaceDirection } from '../display/FrontFacingNode.js';
5
+ import { negateOnBackSide } from '../display/FrontFacingNode.js';
6
6
 
7
7
  /**
8
8
  * Returns the bitangent node and assigns it to a varying if the material is not flat shaded.
@@ -13,11 +13,11 @@ import { directionToFaceDirection } from '../display/FrontFacingNode.js';
13
13
  * @param {string} varyingName - The name of the varying to assign the bitangent to.
14
14
  * @returns {Node<vec3>} The bitangent node.
15
15
  */
16
- const getBitangent = /*@__PURE__*/ Fn( ( [ crossNormalTangent, varyingName ], { subBuildFn, material } ) => {
16
+ const getBitangent = /*@__PURE__*/ Fn( ( [ crossNormalTangent, varyingName ], builder ) => {
17
17
 
18
18
  let bitangent = crossNormalTangent.mul( tangentGeometry.w ).xyz;
19
19
 
20
- if ( subBuildFn === 'NORMAL' && material.flatShading !== true ) {
20
+ if ( builder.subBuildFn === 'NORMAL' && builder.isFlatShading() !== true ) {
21
21
 
22
22
  bitangent = bitangent.toVarying( varyingName );
23
23
 
@@ -49,11 +49,11 @@ export const bitangentLocal = /*@__PURE__*/ getBitangent( normalLocal.cross( tan
49
49
  * @tsl
50
50
  * @type {Node<vec3>}
51
51
  */
52
- export const bitangentView = /*@__PURE__*/ ( Fn( ( { subBuildFn, geometry, material } ) => {
52
+ export const bitangentView = /*@__PURE__*/ ( Fn( ( builder ) => {
53
53
 
54
54
  let node;
55
55
 
56
- if ( subBuildFn === 'VERTEX' || geometry.hasAttribute( 'tangent' ) ) {
56
+ if ( builder.subBuildFn === 'VERTEX' || builder.geometry.hasAttribute( 'tangent' ) ) {
57
57
 
58
58
  node = getBitangent( normalView.cross( tangentView ), 'v_bitangentView' ).normalize();
59
59
 
@@ -63,9 +63,9 @@ export const bitangentView = /*@__PURE__*/ ( Fn( ( { subBuildFn, geometry, mater
63
63
 
64
64
  }
65
65
 
66
- if ( material.flatShading !== true ) {
66
+ if ( builder.isFlatShading() !== true ) {
67
67
 
68
- node = directionToFaceDirection( node );
68
+ node = negateOnBackSide( node );
69
69
 
70
70
  }
71
71