@unikia/upe-renderer 0.0.0-stage → 0.187.11

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 (2248) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSE.types +21 -0
  3. package/README.md +35 -2
  4. package/README.three.md +85 -0
  5. package/UPSTREAM.md +11 -0
  6. package/build/three.cjs +17 -0
  7. package/build/three.core.d.ts +1 -0
  8. package/build/three.core.js +61178 -0
  9. package/build/three.d.cts +1 -0
  10. package/build/three.module.d.ts +1 -0
  11. package/build/three.module.js +19537 -0
  12. package/build/three.tsl.d.ts +1 -0
  13. package/build/three.tsl.js +41943 -0
  14. package/build/three.webgpu.d.ts +1 -0
  15. package/build/three.webgpu.js +54819 -0
  16. package/build/three.webgpu.nodes.d.ts +1 -0
  17. package/build/three.webgpu.nodes.js +96449 -0
  18. package/examples/jsm/Addons.d.ts +300 -0
  19. package/examples/jsm/Addons.js +303 -0
  20. package/examples/jsm/animation/AnimationClipCreator.d.ts +12 -0
  21. package/examples/jsm/animation/AnimationClipCreator.js +168 -0
  22. package/examples/jsm/animation/CCDIKSolver.d.ts +44 -0
  23. package/examples/jsm/animation/CCDIKSolver.js +607 -0
  24. package/examples/jsm/capabilities/WebGL.d.ts +6 -0
  25. package/examples/jsm/capabilities/WebGL.js +113 -0
  26. package/examples/jsm/capabilities/WebGPU.d.ts +7 -0
  27. package/examples/jsm/capabilities/WebGPU.js +59 -0
  28. package/examples/jsm/controls/ArcballControls.d.ts +208 -0
  29. package/examples/jsm/controls/ArcballControls.js +3543 -0
  30. package/examples/jsm/controls/DragControls.d.ts +81 -0
  31. package/examples/jsm/controls/DragControls.js +452 -0
  32. package/examples/jsm/controls/FirstPersonControls.d.ts +105 -0
  33. package/examples/jsm/controls/FirstPersonControls.js +512 -0
  34. package/examples/jsm/controls/FlyControls.d.ts +44 -0
  35. package/examples/jsm/controls/FlyControls.js +384 -0
  36. package/examples/jsm/controls/MapControls.d.ts +21 -0
  37. package/examples/jsm/controls/MapControls.js +116 -0
  38. package/examples/jsm/controls/OrbitControls.d.ts +295 -0
  39. package/examples/jsm/controls/OrbitControls.js +1985 -0
  40. package/examples/jsm/controls/PointerLockControls.d.ts +84 -0
  41. package/examples/jsm/controls/PointerLockControls.js +264 -0
  42. package/examples/jsm/controls/TrackballControls.d.ts +152 -0
  43. package/examples/jsm/controls/TrackballControls.js +1106 -0
  44. package/examples/jsm/controls/TransformControls.d.ts +363 -0
  45. package/examples/jsm/controls/TransformControls.js +2003 -0
  46. package/examples/jsm/csm/CSM.d.ts +55 -0
  47. package/examples/jsm/csm/CSM.js +598 -0
  48. package/examples/jsm/csm/CSMFrustum.d.ts +85 -0
  49. package/examples/jsm/csm/CSMFrustum.js +234 -0
  50. package/examples/jsm/csm/CSMHelper.d.ts +28 -0
  51. package/examples/jsm/csm/CSMHelper.js +243 -0
  52. package/examples/jsm/csm/CSMShader.d.ts +4 -0
  53. package/examples/jsm/csm/CSMShader.js +378 -0
  54. package/examples/jsm/csm/CSMShadowNode.d.ts +44 -0
  55. package/examples/jsm/csm/CSMShadowNode.js +619 -0
  56. package/examples/jsm/curves/CurveExtras.d.ts +68 -0
  57. package/examples/jsm/curves/CurveExtras.js +694 -0
  58. package/examples/jsm/curves/NURBSCurve.d.ts +28 -0
  59. package/examples/jsm/curves/NURBSCurve.js +169 -0
  60. package/examples/jsm/curves/NURBSSurface.d.ts +13 -0
  61. package/examples/jsm/curves/NURBSSurface.js +98 -0
  62. package/examples/jsm/curves/NURBSUtils.d.ts +146 -0
  63. package/examples/jsm/curves/NURBSUtils.js +532 -0
  64. package/examples/jsm/curves/NURBSVolume.d.ts +23 -0
  65. package/examples/jsm/curves/NURBSVolume.js +82 -0
  66. package/examples/jsm/effects/AnaglyphEffect.d.ts +21 -0
  67. package/examples/jsm/effects/AnaglyphEffect.js +274 -0
  68. package/examples/jsm/effects/AsciiEffect.d.ts +18 -0
  69. package/examples/jsm/effects/AsciiEffect.js +323 -0
  70. package/examples/jsm/effects/OutlineEffect.d.ts +28 -0
  71. package/examples/jsm/effects/OutlineEffect.js +489 -0
  72. package/examples/jsm/effects/ParallaxBarrierEffect.d.ts +11 -0
  73. package/examples/jsm/effects/ParallaxBarrierEffect.js +155 -0
  74. package/examples/jsm/effects/StereoEffect.d.ts +9 -0
  75. package/examples/jsm/effects/StereoEffect.js +91 -0
  76. package/examples/jsm/environments/ColorEnvironment.d.ts +9 -0
  77. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  78. package/examples/jsm/environments/DebugEnvironment.d.ts +5 -0
  79. package/examples/jsm/environments/DebugEnvironment.js +102 -0
  80. package/examples/jsm/environments/RoomEnvironment.d.ts +6 -0
  81. package/examples/jsm/environments/RoomEnvironment.js +185 -0
  82. package/examples/jsm/exporters/DRACOExporter.d.ts +17 -0
  83. package/examples/jsm/exporters/DRACOExporter.js +332 -0
  84. package/examples/jsm/exporters/EXRExporter.d.ts +27 -0
  85. package/examples/jsm/exporters/EXRExporter.js +1275 -0
  86. package/examples/jsm/exporters/GLTFExporter.d.ts +161 -0
  87. package/examples/jsm/exporters/GLTFExporter.js +3856 -0
  88. package/examples/jsm/exporters/KTX2Exporter.d.ts +7 -0
  89. package/examples/jsm/exporters/KTX2Exporter.js +347 -0
  90. package/examples/jsm/exporters/OBJExporter.d.ts +7 -0
  91. package/examples/jsm/exporters/OBJExporter.js +351 -0
  92. package/examples/jsm/exporters/PLYExporter.d.ts +31 -0
  93. package/examples/jsm/exporters/PLYExporter.js +786 -0
  94. package/examples/jsm/exporters/STLExporter.d.ts +21 -0
  95. package/examples/jsm/exporters/STLExporter.js +221 -0
  96. package/examples/jsm/exporters/USDZExporter.d.ts +30 -0
  97. package/examples/jsm/exporters/USDZExporter.js +1489 -0
  98. package/examples/jsm/generators/CityGenerator.d.ts +131 -0
  99. package/examples/jsm/generators/CityGenerator.js +679 -0
  100. package/examples/jsm/generators/ForestGenerator.d.ts +73 -0
  101. package/examples/jsm/generators/ForestGenerator.js +347 -0
  102. package/examples/jsm/generators/TerrainGenerator.d.ts +57 -0
  103. package/examples/jsm/generators/TerrainGenerator.js +516 -0
  104. package/examples/jsm/generators/TreeGenerator.d.ts +102 -0
  105. package/examples/jsm/generators/TreeGenerator.js +371 -0
  106. package/examples/jsm/generators/city/BenchGenerator.d.ts +29 -0
  107. package/examples/jsm/generators/city/BenchGenerator.js +127 -0
  108. package/examples/jsm/generators/city/CarGenerator.d.ts +43 -0
  109. package/examples/jsm/generators/city/CarGenerator.js +479 -0
  110. package/examples/jsm/generators/city/CityGeneratorUtils.js +31 -0
  111. package/examples/jsm/generators/city/HydrantGenerator.d.ts +27 -0
  112. package/examples/jsm/generators/city/HydrantGenerator.js +106 -0
  113. package/examples/jsm/generators/city/InstancedMeshGenerator.d.ts +29 -0
  114. package/examples/jsm/generators/city/InstancedMeshGenerator.js +86 -0
  115. package/examples/jsm/generators/city/PersonGenerator.d.ts +44 -0
  116. package/examples/jsm/generators/city/PersonGenerator.js +447 -0
  117. package/examples/jsm/generators/city/SidewalkGenerator.d.ts +40 -0
  118. package/examples/jsm/generators/city/SidewalkGenerator.js +248 -0
  119. package/examples/jsm/generators/city/SkyscraperGenerator.d.ts +83 -0
  120. package/examples/jsm/generators/city/SkyscraperGenerator.js +1799 -0
  121. package/examples/jsm/generators/city/StreetTreeGenerator.d.ts +30 -0
  122. package/examples/jsm/generators/city/StreetTreeGenerator.js +231 -0
  123. package/examples/jsm/generators/city/StreetlightGenerator.d.ts +28 -0
  124. package/examples/jsm/generators/city/StreetlightGenerator.js +100 -0
  125. package/examples/jsm/generators/city/TrafficlightGenerator.d.ts +29 -0
  126. package/examples/jsm/generators/city/TrafficlightGenerator.js +106 -0
  127. package/examples/jsm/generators/city/TrashcanGenerator.d.ts +24 -0
  128. package/examples/jsm/generators/city/TrashcanGenerator.js +100 -0
  129. package/examples/jsm/geometries/BoxLineGeometry.d.ts +12 -0
  130. package/examples/jsm/geometries/BoxLineGeometry.js +92 -0
  131. package/examples/jsm/geometries/ConvexGeometry.d.ts +5 -0
  132. package/examples/jsm/geometries/ConvexGeometry.js +72 -0
  133. package/examples/jsm/geometries/DecalGeometry.d.ts +16 -0
  134. package/examples/jsm/geometries/DecalGeometry.js +420 -0
  135. package/examples/jsm/geometries/LoftGeometry.d.ts +83 -0
  136. package/examples/jsm/geometries/LoftGeometry.js +355 -0
  137. package/examples/jsm/geometries/ParametricFunctions.d.ts +8 -0
  138. package/examples/jsm/geometries/ParametricFunctions.js +100 -0
  139. package/examples/jsm/geometries/ParametricGeometry.d.ts +18 -0
  140. package/examples/jsm/geometries/ParametricGeometry.js +172 -0
  141. package/examples/jsm/geometries/RoundedBoxGeometry.d.ts +5 -0
  142. package/examples/jsm/geometries/RoundedBoxGeometry.js +216 -0
  143. package/examples/jsm/geometries/TeapotGeometry.d.ts +37 -0
  144. package/examples/jsm/geometries/TeapotGeometry.js +689 -0
  145. package/examples/jsm/geometries/TextGeometry.d.ts +89 -0
  146. package/examples/jsm/geometries/TextGeometry.js +102 -0
  147. package/examples/jsm/gpgpu/BitonicSort.d.ts +21 -0
  148. package/examples/jsm/gpgpu/BitonicSort.js +722 -0
  149. package/examples/jsm/gpgpu/CountingSort.d.ts +31 -0
  150. package/examples/jsm/gpgpu/CountingSort.js +271 -0
  151. package/examples/jsm/helpers/AnimationPathHelper.d.ts +38 -0
  152. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  153. package/examples/jsm/helpers/LightProbeGridHelper.d.ts +12 -0
  154. package/examples/jsm/helpers/LightProbeGridHelper.js +166 -0
  155. package/examples/jsm/helpers/LightProbeGridHelperWebGL.d.ts +12 -0
  156. package/examples/jsm/helpers/LightProbeGridHelperWebGL.js +221 -0
  157. package/examples/jsm/helpers/LightProbeHelper.d.ts +12 -0
  158. package/examples/jsm/helpers/LightProbeHelper.js +166 -0
  159. package/examples/jsm/helpers/LightProbeHelperGPU.d.ts +12 -0
  160. package/examples/jsm/helpers/LightProbeHelperGPU.js +102 -0
  161. package/examples/jsm/helpers/OctreeHelper.d.ts +17 -0
  162. package/examples/jsm/helpers/OctreeHelper.js +109 -0
  163. package/examples/jsm/helpers/PositionalAudioHelper.d.ts +13 -0
  164. package/examples/jsm/helpers/PositionalAudioHelper.js +169 -0
  165. package/examples/jsm/helpers/RapierHelper.d.ts +13 -0
  166. package/examples/jsm/helpers/RapierHelper.js +59 -0
  167. package/examples/jsm/helpers/RectAreaLightHelper.d.ts +10 -0
  168. package/examples/jsm/helpers/RectAreaLightHelper.js +118 -0
  169. package/examples/jsm/helpers/TextureHelper.d.ts +10 -0
  170. package/examples/jsm/helpers/TextureHelper.js +265 -0
  171. package/examples/jsm/helpers/TextureHelperGPU.d.ts +10 -0
  172. package/examples/jsm/helpers/TextureHelperGPU.js +214 -0
  173. package/examples/jsm/helpers/VertexNormalsHelper.d.ts +14 -0
  174. package/examples/jsm/helpers/VertexNormalsHelper.js +155 -0
  175. package/examples/jsm/helpers/VertexTangentsHelper.d.ts +12 -0
  176. package/examples/jsm/helpers/VertexTangentsHelper.js +133 -0
  177. package/examples/jsm/helpers/ViewHelper.d.ts +20 -0
  178. package/examples/jsm/helpers/ViewHelper.js +529 -0
  179. package/examples/jsm/inspector/Extension.d.ts +22 -0
  180. package/examples/jsm/inspector/Extension.js +107 -0
  181. package/examples/jsm/inspector/Inspector.d.ts +54 -0
  182. package/examples/jsm/inspector/Inspector.js +644 -0
  183. package/examples/jsm/inspector/RendererInspector.d.ts +9 -0
  184. package/examples/jsm/inspector/RendererInspector.js +624 -0
  185. package/examples/jsm/inspector/Storage.js +49 -0
  186. package/examples/jsm/inspector/extensions/color-grading/ColorGrading.d.ts +34 -0
  187. package/examples/jsm/inspector/extensions/color-grading/ColorGrading.js +2614 -0
  188. package/examples/jsm/inspector/extensions/color-grading/ColorWheel.js +352 -0
  189. package/examples/jsm/inspector/extensions/color-grading/CurveEditor.js +599 -0
  190. package/examples/jsm/inspector/extensions/color-grading/LUT3DStyle.js +1201 -0
  191. package/examples/jsm/inspector/extensions/color-grading/LUTMath.js +788 -0
  192. package/examples/jsm/inspector/extensions/color-grading/modules/BrightnessModule.js +72 -0
  193. package/examples/jsm/inspector/extensions/color-grading/modules/ColorWheelModule.js +112 -0
  194. package/examples/jsm/inspector/extensions/color-grading/modules/ContrastModule.js +82 -0
  195. package/examples/jsm/inspector/extensions/color-grading/modules/CurvesModule.js +109 -0
  196. package/examples/jsm/inspector/extensions/color-grading/modules/ExposureHueModule.js +110 -0
  197. package/examples/jsm/inspector/extensions/color-grading/modules/ExposureModule.js +73 -0
  198. package/examples/jsm/inspector/extensions/color-grading/modules/HueModule.js +78 -0
  199. package/examples/jsm/inspector/extensions/color-grading/modules/ImportedCubeModule.js +89 -0
  200. package/examples/jsm/inspector/extensions/color-grading/modules/Module.js +285 -0
  201. package/examples/jsm/inspector/extensions/color-grading/modules/OutputModule.js +101 -0
  202. package/examples/jsm/inspector/extensions/color-grading/modules/RendererModule.js +225 -0
  203. package/examples/jsm/inspector/extensions/color-grading/modules/SatVibranceModule.js +102 -0
  204. package/examples/jsm/inspector/extensions/color-grading/modules/SaturationModule.js +76 -0
  205. package/examples/jsm/inspector/extensions/color-grading/modules/VibranceModule.js +76 -0
  206. package/examples/jsm/inspector/extensions/color-grading/modules/WhiteBalanceModule.js +86 -0
  207. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.d.ts +20 -0
  208. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +911 -0
  209. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.d.ts +11 -0
  210. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +282 -0
  211. package/examples/jsm/inspector/tabs/Console.js +420 -0
  212. package/examples/jsm/inspector/tabs/Memory.js +134 -0
  213. package/examples/jsm/inspector/tabs/Parameters.d.ts +122 -0
  214. package/examples/jsm/inspector/tabs/Parameters.js +444 -0
  215. package/examples/jsm/inspector/tabs/Performance.js +298 -0
  216. package/examples/jsm/inspector/tabs/Settings.js +310 -0
  217. package/examples/jsm/inspector/tabs/Timeline.js +1824 -0
  218. package/examples/jsm/inspector/tabs/Viewer.js +1389 -0
  219. package/examples/jsm/inspector/ui/Graph.js +232 -0
  220. package/examples/jsm/inspector/ui/Item.d.ts +5 -0
  221. package/examples/jsm/inspector/ui/Item.js +249 -0
  222. package/examples/jsm/inspector/ui/List.js +81 -0
  223. package/examples/jsm/inspector/ui/Profiler.js +2273 -0
  224. package/examples/jsm/inspector/ui/Style.js +2268 -0
  225. package/examples/jsm/inspector/ui/Tab.d.ts +9 -0
  226. package/examples/jsm/inspector/ui/Tab.js +269 -0
  227. package/examples/jsm/inspector/ui/Values.d.ts +103 -0
  228. package/examples/jsm/inspector/ui/Values.js +578 -0
  229. package/examples/jsm/inspector/ui/utils.js +189 -0
  230. package/examples/jsm/interaction/InteractionManager.d.ts +18 -0
  231. package/examples/jsm/interaction/InteractionManager.js +226 -0
  232. package/examples/jsm/interactive/HTMLMesh.d.ts +13 -0
  233. package/examples/jsm/interactive/HTMLMesh.js +617 -0
  234. package/examples/jsm/interactive/InteractiveGroup.d.ts +28 -0
  235. package/examples/jsm/interactive/InteractiveGroup.js +224 -0
  236. package/examples/jsm/interactive/SelectionBox.d.ts +16 -0
  237. package/examples/jsm/interactive/SelectionBox.js +324 -0
  238. package/examples/jsm/interactive/SelectionHelper.d.ts +17 -0
  239. package/examples/jsm/interactive/SelectionHelper.js +150 -0
  240. package/examples/jsm/libs/basis/README.md +45 -0
  241. package/examples/jsm/libs/basis/basis_transcoder.js +19 -0
  242. package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  243. package/examples/jsm/libs/chevrotain.module.min.js +141 -0
  244. package/examples/jsm/libs/demuxer_mp4.js +109 -0
  245. package/examples/jsm/libs/draco/README.md +31 -0
  246. package/examples/jsm/libs/draco/draco_decoder.js +34 -0
  247. package/examples/jsm/libs/draco/draco_decoder.wasm +0 -0
  248. package/examples/jsm/libs/draco/draco_wasm_wrapper.js +117 -0
  249. package/examples/jsm/libs/draco/gltf/draco_decoder.js +33 -0
  250. package/examples/jsm/libs/draco/gltf/draco_decoder.wasm +0 -0
  251. package/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -0
  252. package/examples/jsm/libs/fflate.module.d.ts +1 -0
  253. package/examples/jsm/libs/fflate.module.js +2699 -0
  254. package/examples/jsm/libs/ktx-parse.module.js +1 -0
  255. package/examples/jsm/libs/lil-gui.module.min.d.ts +608 -0
  256. package/examples/jsm/libs/lil-gui.module.min.js +8 -0
  257. package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
  258. package/examples/jsm/libs/meshopt_decoder.module.d.ts +1 -0
  259. package/examples/jsm/libs/meshopt_decoder.module.js +196 -0
  260. package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
  261. package/examples/jsm/libs/mikktspace.README.md +27 -0
  262. package/examples/jsm/libs/mikktspace.module.d.ts +19 -0
  263. package/examples/jsm/libs/mikktspace.module.js +765 -0
  264. package/examples/jsm/libs/motion-controllers.module.js +397 -0
  265. package/examples/jsm/libs/potpack.module.js +125 -0
  266. package/examples/jsm/libs/stats.module.d.ts +3 -0
  267. package/examples/jsm/libs/stats.module.js +167 -0
  268. package/examples/jsm/libs/tween.module.d.ts +2 -0
  269. package/examples/jsm/libs/tween.module.js +876 -0
  270. package/examples/jsm/libs/utif.module.js +1665 -0
  271. package/examples/jsm/libs/zstddec.module.d.ts +5 -0
  272. package/examples/jsm/libs/zstddec.module.js +1 -0
  273. package/examples/jsm/lighting/ClusteredLighting.d.ts +45 -0
  274. package/examples/jsm/lighting/ClusteredLighting.js +153 -0
  275. package/examples/jsm/lighting/DynamicLighting.d.ts +16 -0
  276. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  277. package/examples/jsm/lighting/LightMapper.js +295 -0
  278. package/examples/jsm/lighting/LightProbeGrid.d.ts +177 -0
  279. package/examples/jsm/lighting/LightProbeGrid.js +923 -0
  280. package/examples/jsm/lighting/LightProbeGridUtils.js +107 -0
  281. package/examples/jsm/lighting/LightProbeGridWebGL.d.ts +178 -0
  282. package/examples/jsm/lighting/LightProbeGridWebGL.js +846 -0
  283. package/examples/jsm/lighting/vxgi/VXGIConeTracer.js +243 -0
  284. package/examples/jsm/lighting/vxgi/VXGIIrradiance.js +43 -0
  285. package/examples/jsm/lighting/vxgi/VXGINode.d.ts +100 -0
  286. package/examples/jsm/lighting/vxgi/VXGINode.js +617 -0
  287. package/examples/jsm/lighting/vxgi/VXGISceneCollector.js +793 -0
  288. package/examples/jsm/lighting/vxgi/VXGIVolume.d.ts +245 -0
  289. package/examples/jsm/lighting/vxgi/VXGIVolume.js +1440 -0
  290. package/examples/jsm/lights/LightProbeGenerator.d.ts +16 -0
  291. package/examples/jsm/lights/LightProbeGenerator.js +337 -0
  292. package/examples/jsm/lights/RectAreaLightTexturesLib.d.ts +7 -0
  293. package/examples/jsm/lights/RectAreaLightTexturesLib.js +127 -0
  294. package/examples/jsm/lights/RectAreaLightUniformsLib.d.ts +5 -0
  295. package/examples/jsm/lights/RectAreaLightUniformsLib.js +40 -0
  296. package/examples/jsm/lights/SunLight.d.ts +53 -0
  297. package/examples/jsm/lights/SunLight.js +100 -0
  298. package/examples/jsm/lights/SunLightNode.d.ts +25 -0
  299. package/examples/jsm/lights/SunLightNode.js +56 -0
  300. package/examples/jsm/lights/SunLightShadow.d.ts +57 -0
  301. package/examples/jsm/lights/SunLightShadow.js +319 -0
  302. package/examples/jsm/lights/SunShadowNode.d.ts +53 -0
  303. package/examples/jsm/lights/SunShadowNode.js +312 -0
  304. package/examples/jsm/lines/Line2.d.ts +25 -0
  305. package/examples/jsm/lines/Line2.js +56 -0
  306. package/examples/jsm/lines/LineGeometry.d.ts +27 -0
  307. package/examples/jsm/lines/LineGeometry.js +157 -0
  308. package/examples/jsm/lines/LineMaterial.d.ts +82 -0
  309. package/examples/jsm/lines/LineMaterial.js +742 -0
  310. package/examples/jsm/lines/LineSegments2.d.ts +39 -0
  311. package/examples/jsm/lines/LineSegments2.js +434 -0
  312. package/examples/jsm/lines/LineSegmentsGeometry.d.ts +53 -0
  313. package/examples/jsm/lines/LineSegmentsGeometry.js +298 -0
  314. package/examples/jsm/lines/Wireframe.d.ts +14 -0
  315. package/examples/jsm/lines/Wireframe.js +108 -0
  316. package/examples/jsm/lines/WireframeGeometry2.d.ts +8 -0
  317. package/examples/jsm/lines/WireframeGeometry2.js +49 -0
  318. package/examples/jsm/lines/webgpu/Line2.d.ts +14 -0
  319. package/examples/jsm/lines/webgpu/Line2.js +46 -0
  320. package/examples/jsm/lines/webgpu/LineSegments2.d.ts +15 -0
  321. package/examples/jsm/lines/webgpu/LineSegments2.js +419 -0
  322. package/examples/jsm/lines/webgpu/Wireframe.d.ts +13 -0
  323. package/examples/jsm/lines/webgpu/Wireframe.js +86 -0
  324. package/examples/jsm/loaders/3DMLoader.d.ts +12 -0
  325. package/examples/jsm/loaders/3DMLoader.js +1946 -0
  326. package/examples/jsm/loaders/3MFLoader.d.ts +9 -0
  327. package/examples/jsm/loaders/3MFLoader.js +1826 -0
  328. package/examples/jsm/loaders/AMFLoader.d.ts +7 -0
  329. package/examples/jsm/loaders/AMFLoader.js +543 -0
  330. package/examples/jsm/loaders/BVHLoader.d.ts +14 -0
  331. package/examples/jsm/loaders/BVHLoader.js +486 -0
  332. package/examples/jsm/loaders/ColladaLoader.d.ts +35 -0
  333. package/examples/jsm/loaders/ColladaLoader.js +161 -0
  334. package/examples/jsm/loaders/DDSLoader.d.ts +22 -0
  335. package/examples/jsm/loaders/DDSLoader.js +385 -0
  336. package/examples/jsm/loaders/DRACOLoader.d.ts +39 -0
  337. package/examples/jsm/loaders/DRACOLoader.js +776 -0
  338. package/examples/jsm/loaders/EXRLoader.d.ts +24 -0
  339. package/examples/jsm/loaders/EXRLoader.js +3411 -0
  340. package/examples/jsm/loaders/FBXLoader.d.ts +8 -0
  341. package/examples/jsm/loaders/FBXLoader.js +4660 -0
  342. package/examples/jsm/loaders/FontLoader.d.ts +41 -0
  343. package/examples/jsm/loaders/FontLoader.js +262 -0
  344. package/examples/jsm/loaders/GCodeLoader.d.ts +8 -0
  345. package/examples/jsm/loaders/GCodeLoader.js +314 -0
  346. package/examples/jsm/loaders/GLTFGaussianSplatLoaderExtension.d.ts +14 -0
  347. package/examples/jsm/loaders/GLTFGaussianSplatLoaderExtension.js +330 -0
  348. package/examples/jsm/loaders/GLTFLoader.d.ts +153 -0
  349. package/examples/jsm/loaders/GLTFLoader.js +5006 -0
  350. package/examples/jsm/loaders/GaussianSplatPLYLoader.d.ts +9 -0
  351. package/examples/jsm/loaders/GaussianSplatPLYLoader.js +388 -0
  352. package/examples/jsm/loaders/HDRCubeTextureLoader.d.ts +18 -0
  353. package/examples/jsm/loaders/HDRCubeTextureLoader.js +167 -0
  354. package/examples/jsm/loaders/HDRLoader.d.ts +12 -0
  355. package/examples/jsm/loaders/HDRLoader.js +463 -0
  356. package/examples/jsm/loaders/IESLoader.d.ts +5 -0
  357. package/examples/jsm/loaders/IESLoader.js +413 -0
  358. package/examples/jsm/loaders/JXLLoader.js +159 -0
  359. package/examples/jsm/loaders/KMZLoader.d.ts +9 -0
  360. package/examples/jsm/loaders/KMZLoader.js +169 -0
  361. package/examples/jsm/loaders/KSPLATLoader.d.ts +9 -0
  362. package/examples/jsm/loaders/KSPLATLoader.js +465 -0
  363. package/examples/jsm/loaders/KTX2Loader.d.ts +58 -0
  364. package/examples/jsm/loaders/KTX2Loader.js +1321 -0
  365. package/examples/jsm/loaders/KTXLoader.d.ts +22 -0
  366. package/examples/jsm/loaders/KTXLoader.js +199 -0
  367. package/examples/jsm/loaders/LDrawLoader.d.ts +38 -0
  368. package/examples/jsm/loaders/LDrawLoader.js +2503 -0
  369. package/examples/jsm/loaders/LUT3dlLoader.d.ts +39 -0
  370. package/examples/jsm/loaders/LUT3dlLoader.js +209 -0
  371. package/examples/jsm/loaders/LUTCubeLoader.d.ts +42 -0
  372. package/examples/jsm/loaders/LUTCubeLoader.js +194 -0
  373. package/examples/jsm/loaders/LUTImageLoader.d.ts +18 -0
  374. package/examples/jsm/loaders/LUTImageLoader.js +192 -0
  375. package/examples/jsm/loaders/LWOLoader.d.ts +25 -0
  376. package/examples/jsm/loaders/LWOLoader.js +1057 -0
  377. package/examples/jsm/loaders/MD2Loader.d.ts +7 -0
  378. package/examples/jsm/loaders/MD2Loader.js +437 -0
  379. package/examples/jsm/loaders/MDDLoader.d.ts +12 -0
  380. package/examples/jsm/loaders/MDDLoader.js +151 -0
  381. package/examples/jsm/loaders/MTLLoader.d.ts +95 -0
  382. package/examples/jsm/loaders/MTLLoader.js +601 -0
  383. package/examples/jsm/loaders/MaterialXLoader.d.ts +70 -0
  384. package/examples/jsm/loaders/MaterialXLoader.js +279 -0
  385. package/examples/jsm/loaders/NRRDLoader.d.ts +15 -0
  386. package/examples/jsm/loaders/NRRDLoader.js +720 -0
  387. package/examples/jsm/loaders/OBJLoader.d.ts +10 -0
  388. package/examples/jsm/loaders/OBJLoader.js +961 -0
  389. package/examples/jsm/loaders/PCDLoader.d.ts +8 -0
  390. package/examples/jsm/loaders/PCDLoader.js +624 -0
  391. package/examples/jsm/loaders/PDBLoader.d.ts +15 -0
  392. package/examples/jsm/loaders/PDBLoader.js +274 -0
  393. package/examples/jsm/loaders/PLYLoader.d.ts +11 -0
  394. package/examples/jsm/loaders/PLYLoader.js +992 -0
  395. package/examples/jsm/loaders/PVRLoader.d.ts +16 -0
  396. package/examples/jsm/loaders/PVRLoader.js +270 -0
  397. package/examples/jsm/loaders/RGBELoader.d.ts +7 -0
  398. package/examples/jsm/loaders/RGBELoader.js +18 -0
  399. package/examples/jsm/loaders/SPLATLoader.d.ts +9 -0
  400. package/examples/jsm/loaders/SPLATLoader.js +141 -0
  401. package/examples/jsm/loaders/SPZLoader.d.ts +18 -0
  402. package/examples/jsm/loaders/SPZLoader.js +563 -0
  403. package/examples/jsm/loaders/STLLoader.d.ts +7 -0
  404. package/examples/jsm/loaders/STLLoader.js +423 -0
  405. package/examples/jsm/loaders/SVGLoader.d.ts +67 -0
  406. package/examples/jsm/loaders/SVGLoader.js +3297 -0
  407. package/examples/jsm/loaders/TDSLoader.d.ts +35 -0
  408. package/examples/jsm/loaders/TDSLoader.js +1146 -0
  409. package/examples/jsm/loaders/TGALoader.d.ts +7 -0
  410. package/examples/jsm/loaders/TGALoader.js +539 -0
  411. package/examples/jsm/loaders/TIFFLoader.d.ts +7 -0
  412. package/examples/jsm/loaders/TIFFLoader.js +59 -0
  413. package/examples/jsm/loaders/TTFLoader.d.ts +10 -0
  414. package/examples/jsm/loaders/TTFLoader.js +263 -0
  415. package/examples/jsm/loaders/USDLoader.d.ts +14 -0
  416. package/examples/jsm/loaders/USDLoader.js +317 -0
  417. package/examples/jsm/loaders/USDZLoader.d.ts +14 -0
  418. package/examples/jsm/loaders/USDZLoader.js +16 -0
  419. package/examples/jsm/loaders/UltraHDRLoader.d.ts +28 -0
  420. package/examples/jsm/loaders/UltraHDRLoader.js +757 -0
  421. package/examples/jsm/loaders/VOXLoader.d.ts +38 -0
  422. package/examples/jsm/loaders/VOXLoader.js +922 -0
  423. package/examples/jsm/loaders/VRMLLoader.d.ts +7 -0
  424. package/examples/jsm/loaders/VRMLLoader.js +3650 -0
  425. package/examples/jsm/loaders/VTKLoader.d.ts +13 -0
  426. package/examples/jsm/loaders/VTKLoader.js +1295 -0
  427. package/examples/jsm/loaders/XYZLoader.d.ts +7 -0
  428. package/examples/jsm/loaders/XYZLoader.js +145 -0
  429. package/examples/jsm/loaders/collada/ColladaComposer.js +3051 -0
  430. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  431. package/examples/jsm/loaders/lwo/IFFParser.js +1217 -0
  432. package/examples/jsm/loaders/lwo/LWO2Parser.js +414 -0
  433. package/examples/jsm/loaders/lwo/LWO3Parser.js +373 -0
  434. package/examples/jsm/loaders/materialx/MaterialXArchive.js +108 -0
  435. package/examples/jsm/loaders/materialx/MaterialXDocument.js +1350 -0
  436. package/examples/jsm/loaders/materialx/MaterialXHextile.d.ts +24 -0
  437. package/examples/jsm/loaders/materialx/MaterialXHextile.js +183 -0
  438. package/examples/jsm/loaders/materialx/MaterialXInterfaceValidation.d.ts +8 -0
  439. package/examples/jsm/loaders/materialx/MaterialXInterfaceValidation.js +293 -0
  440. package/examples/jsm/loaders/materialx/MaterialXLog.d.ts +33 -0
  441. package/examples/jsm/loaders/materialx/MaterialXLog.js +79 -0
  442. package/examples/jsm/loaders/materialx/MaterialXNodeDefs.js +99 -0
  443. package/examples/jsm/loaders/materialx/MaterialXNodeInterfaceRegistry.js +763 -0
  444. package/examples/jsm/loaders/materialx/MaterialXNodeLibrary.js +871 -0
  445. package/examples/jsm/loaders/materialx/MaterialXSurfaceMappings.js +565 -0
  446. package/examples/jsm/loaders/materialx/MaterialXUtils.js +82 -0
  447. package/examples/jsm/loaders/materialx/compile/MaterialXCompileRegistry.js +999 -0
  448. package/examples/jsm/loaders/materialx/parse/MaterialXParser.js +28 -0
  449. package/examples/jsm/loaders/usd/USDAParser.js +923 -0
  450. package/examples/jsm/loaders/usd/USDCParser.js +1875 -0
  451. package/examples/jsm/loaders/usd/USDComposer.js +4660 -0
  452. package/examples/jsm/materials/LDrawConditionalLineMaterial.d.ts +9 -0
  453. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +183 -0
  454. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.d.ts +9 -0
  455. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +154 -0
  456. package/examples/jsm/materials/WoodNodeMaterial.d.ts +75 -0
  457. package/examples/jsm/materials/WoodNodeMaterial.js +431 -0
  458. package/examples/jsm/math/Capsule.d.ts +26 -0
  459. package/examples/jsm/math/Capsule.js +159 -0
  460. package/examples/jsm/math/ColorConverter.d.ts +19 -0
  461. package/examples/jsm/math/ColorConverter.js +62 -0
  462. package/examples/jsm/math/ColorSpaces.d.ts +15 -0
  463. package/examples/jsm/math/ColorSpaces.js +147 -0
  464. package/examples/jsm/math/ConvexHull.d.ts +89 -0
  465. package/examples/jsm/math/ConvexHull.js +1695 -0
  466. package/examples/jsm/math/ImprovedNoise.d.ts +4 -0
  467. package/examples/jsm/math/ImprovedNoise.js +88 -0
  468. package/examples/jsm/math/Lut.d.ts +27 -0
  469. package/examples/jsm/math/Lut.js +317 -0
  470. package/examples/jsm/math/MeshSurfaceSampler.d.ts +21 -0
  471. package/examples/jsm/math/MeshSurfaceSampler.js +315 -0
  472. package/examples/jsm/math/OBB.d.ts +24 -0
  473. package/examples/jsm/math/OBB.js +535 -0
  474. package/examples/jsm/math/Octree.d.ts +54 -0
  475. package/examples/jsm/math/Octree.js +825 -0
  476. package/examples/jsm/math/SimplexNoise.d.ts +9 -0
  477. package/examples/jsm/math/SimplexNoise.js +470 -0
  478. package/examples/jsm/misc/ConvexObjectBreaker.d.ts +25 -0
  479. package/examples/jsm/misc/ConvexObjectBreaker.js +539 -0
  480. package/examples/jsm/misc/GPUComputationRenderer.d.ts +55 -0
  481. package/examples/jsm/misc/GPUComputationRenderer.js +508 -0
  482. package/examples/jsm/misc/Gyroscope.d.ts +5 -0
  483. package/examples/jsm/misc/Gyroscope.js +78 -0
  484. package/examples/jsm/misc/MD2Character.d.ts +33 -0
  485. package/examples/jsm/misc/MD2Character.js +391 -0
  486. package/examples/jsm/misc/MD2CharacterComplex.d.ts +55 -0
  487. package/examples/jsm/misc/MD2CharacterComplex.js +740 -0
  488. package/examples/jsm/misc/MorphAnimMesh.d.ts +13 -0
  489. package/examples/jsm/misc/MorphAnimMesh.js +119 -0
  490. package/examples/jsm/misc/MorphBlendMesh.d.ts +21 -0
  491. package/examples/jsm/misc/MorphBlendMesh.js +425 -0
  492. package/examples/jsm/misc/ProgressiveLightMap.d.ts +58 -0
  493. package/examples/jsm/misc/ProgressiveLightMap.js +370 -0
  494. package/examples/jsm/misc/ProgressiveLightMapGPU.d.ts +27 -0
  495. package/examples/jsm/misc/ProgressiveLightMapGPU.js +322 -0
  496. package/examples/jsm/misc/RollerCoaster.d.ts +26 -0
  497. package/examples/jsm/misc/RollerCoaster.js +661 -0
  498. package/examples/jsm/misc/SculptGL.LICENSE.txt +21 -0
  499. package/examples/jsm/misc/Sculptor.d.ts +259 -0
  500. package/examples/jsm/misc/Sculptor.js +1679 -0
  501. package/examples/jsm/misc/SculptorMesh.js +1504 -0
  502. package/examples/jsm/misc/SculptorTools.js +1180 -0
  503. package/examples/jsm/misc/SculptorUtils.js +345 -0
  504. package/examples/jsm/misc/TileCreasedNormalsPlugin.d.ts +49 -0
  505. package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
  506. package/examples/jsm/misc/TubePainter.d.ts +10 -0
  507. package/examples/jsm/misc/TubePainter.js +611 -0
  508. package/examples/jsm/misc/Volume.d.ts +37 -0
  509. package/examples/jsm/misc/Volume.js +520 -0
  510. package/examples/jsm/misc/VolumeSlice.d.ts +28 -0
  511. package/examples/jsm/misc/VolumeSlice.js +275 -0
  512. package/examples/jsm/modifiers/CurveModifier.d.ts +41 -0
  513. package/examples/jsm/modifiers/CurveModifier.js +374 -0
  514. package/examples/jsm/modifiers/CurveModifierGPU.d.ts +31 -0
  515. package/examples/jsm/modifiers/CurveModifierGPU.js +256 -0
  516. package/examples/jsm/modifiers/EdgeSplitModifier.d.ts +26 -0
  517. package/examples/jsm/modifiers/EdgeSplitModifier.js +299 -0
  518. package/examples/jsm/modifiers/SimplifyModifier.d.ts +6 -0
  519. package/examples/jsm/modifiers/SimplifyModifier.js +139 -0
  520. package/examples/jsm/modifiers/TessellateModifier.d.ts +9 -0
  521. package/examples/jsm/modifiers/TessellateModifier.js +340 -0
  522. package/examples/jsm/objects/GaussianSplat.d.ts +35 -0
  523. package/examples/jsm/objects/GaussianSplat.js +1040 -0
  524. package/examples/jsm/objects/GroundedSkybox.d.ts +5 -0
  525. package/examples/jsm/objects/GroundedSkybox.js +69 -0
  526. package/examples/jsm/objects/Lensflare.d.ts +21 -0
  527. package/examples/jsm/objects/Lensflare.js +489 -0
  528. package/examples/jsm/objects/LensflareMesh.d.ts +21 -0
  529. package/examples/jsm/objects/LensflareMesh.js +376 -0
  530. package/examples/jsm/objects/MarchingCubes.d.ts +76 -0
  531. package/examples/jsm/objects/MarchingCubes.js +1261 -0
  532. package/examples/jsm/objects/Reflector.d.ts +54 -0
  533. package/examples/jsm/objects/Reflector.js +390 -0
  534. package/examples/jsm/objects/ReflectorForSSRPass.d.ts +62 -0
  535. package/examples/jsm/objects/ReflectorForSSRPass.js +393 -0
  536. package/examples/jsm/objects/Refractor.d.ts +21 -0
  537. package/examples/jsm/objects/Refractor.js +389 -0
  538. package/examples/jsm/objects/ShadowMesh.d.ts +10 -0
  539. package/examples/jsm/objects/ShadowMesh.js +130 -0
  540. package/examples/jsm/objects/Sky.d.ts +28 -0
  541. package/examples/jsm/objects/Sky.js +342 -0
  542. package/examples/jsm/objects/SkyMesh.d.ts +26 -0
  543. package/examples/jsm/objects/SkyMesh.js +403 -0
  544. package/examples/jsm/objects/Water.d.ts +22 -0
  545. package/examples/jsm/objects/Water.js +374 -0
  546. package/examples/jsm/objects/Water2.d.ts +21 -0
  547. package/examples/jsm/objects/Water2.js +403 -0
  548. package/examples/jsm/objects/Water2Mesh.d.ts +53 -0
  549. package/examples/jsm/objects/Water2Mesh.js +199 -0
  550. package/examples/jsm/objects/WaterMesh.d.ts +40 -0
  551. package/examples/jsm/objects/WaterMesh.js +194 -0
  552. package/examples/jsm/offscreen/jank.js +45 -0
  553. package/examples/jsm/offscreen/offscreen.js +8 -0
  554. package/examples/jsm/offscreen/scene.js +86 -0
  555. package/examples/jsm/physics/AmmoPhysics.d.ts +9 -0
  556. package/examples/jsm/physics/AmmoPhysics.js +366 -0
  557. package/examples/jsm/physics/JoltPhysics.d.ts +10 -0
  558. package/examples/jsm/physics/JoltPhysics.js +334 -0
  559. package/examples/jsm/physics/RapierPhysics.d.ts +26 -0
  560. package/examples/jsm/physics/RapierPhysics.js +461 -0
  561. package/examples/jsm/pipelines/MeshletDrawingPipeline.js +5571 -0
  562. package/examples/jsm/pipelines/VisibilityBufferDrawingPipeline.js +954 -0
  563. package/examples/jsm/postprocessing/AfterimagePass.d.ts +17 -0
  564. package/examples/jsm/postprocessing/AfterimagePass.js +187 -0
  565. package/examples/jsm/postprocessing/BloomPass.d.ts +14 -0
  566. package/examples/jsm/postprocessing/BloomPass.js +274 -0
  567. package/examples/jsm/postprocessing/BokehPass.d.ts +23 -0
  568. package/examples/jsm/postprocessing/BokehPass.js +218 -0
  569. package/examples/jsm/postprocessing/ClearPass.d.ts +9 -0
  570. package/examples/jsm/postprocessing/ClearPass.js +97 -0
  571. package/examples/jsm/postprocessing/CubeTexturePass.d.ts +14 -0
  572. package/examples/jsm/postprocessing/CubeTexturePass.js +146 -0
  573. package/examples/jsm/postprocessing/DotScreenPass.d.ts +10 -0
  574. package/examples/jsm/postprocessing/DotScreenPass.js +114 -0
  575. package/examples/jsm/postprocessing/EffectComposer.d.ts +30 -0
  576. package/examples/jsm/postprocessing/EffectComposer.js +365 -0
  577. package/examples/jsm/postprocessing/FXAAPass.d.ts +7 -0
  578. package/examples/jsm/postprocessing/FXAAPass.js +40 -0
  579. package/examples/jsm/postprocessing/FilmPass.d.ts +10 -0
  580. package/examples/jsm/postprocessing/FilmPass.js +113 -0
  581. package/examples/jsm/postprocessing/GTAOPass.d.ts +121 -0
  582. package/examples/jsm/postprocessing/GTAOPass.js +735 -0
  583. package/examples/jsm/postprocessing/GlitchPass.d.ts +16 -0
  584. package/examples/jsm/postprocessing/GlitchPass.js +177 -0
  585. package/examples/jsm/postprocessing/HalftonePass.d.ts +37 -0
  586. package/examples/jsm/postprocessing/HalftonePass.js +134 -0
  587. package/examples/jsm/postprocessing/LUTPass.d.ts +13 -0
  588. package/examples/jsm/postprocessing/LUTPass.js +138 -0
  589. package/examples/jsm/postprocessing/MaskPass.d.ts +14 -0
  590. package/examples/jsm/postprocessing/MaskPass.js +195 -0
  591. package/examples/jsm/postprocessing/OutlinePass.d.ts +64 -0
  592. package/examples/jsm/postprocessing/OutlinePass.js +776 -0
  593. package/examples/jsm/postprocessing/OutputPass.d.ts +14 -0
  594. package/examples/jsm/postprocessing/OutputPass.js +148 -0
  595. package/examples/jsm/postprocessing/Pass.d.ts +31 -0
  596. package/examples/jsm/postprocessing/Pass.js +191 -0
  597. package/examples/jsm/postprocessing/RenderPass.d.ts +28 -0
  598. package/examples/jsm/postprocessing/RenderPass.js +193 -0
  599. package/examples/jsm/postprocessing/RenderPixelatedPass.d.ts +30 -0
  600. package/examples/jsm/postprocessing/RenderPixelatedPass.js +314 -0
  601. package/examples/jsm/postprocessing/RenderTransitionPass.d.ts +33 -0
  602. package/examples/jsm/postprocessing/RenderTransitionPass.js +267 -0
  603. package/examples/jsm/postprocessing/SAOPass.d.ts +70 -0
  604. package/examples/jsm/postprocessing/SAOPass.js +407 -0
  605. package/examples/jsm/postprocessing/SMAAPass.d.ts +21 -0
  606. package/examples/jsm/postprocessing/SMAAPass.js +230 -0
  607. package/examples/jsm/postprocessing/SSAARenderPass.d.ts +26 -0
  608. package/examples/jsm/postprocessing/SSAARenderPass.js +313 -0
  609. package/examples/jsm/postprocessing/SSAOPass.d.ts +68 -0
  610. package/examples/jsm/postprocessing/SSAOPass.js +527 -0
  611. package/examples/jsm/postprocessing/SSRPass.d.ts +99 -0
  612. package/examples/jsm/postprocessing/SSRPass.js +858 -0
  613. package/examples/jsm/postprocessing/SavePass.d.ts +12 -0
  614. package/examples/jsm/postprocessing/SavePass.js +132 -0
  615. package/examples/jsm/postprocessing/ShaderPass.d.ts +11 -0
  616. package/examples/jsm/postprocessing/ShaderPass.js +135 -0
  617. package/examples/jsm/postprocessing/TAARenderPass.d.ts +8 -0
  618. package/examples/jsm/postprocessing/TAARenderPass.js +243 -0
  619. package/examples/jsm/postprocessing/TexturePass.d.ts +12 -0
  620. package/examples/jsm/postprocessing/TexturePass.js +131 -0
  621. package/examples/jsm/postprocessing/UnrealBloomPass.d.ts +26 -0
  622. package/examples/jsm/postprocessing/UnrealBloomPass.js +541 -0
  623. package/examples/jsm/renderers/CSS2DRenderer.d.ts +29 -0
  624. package/examples/jsm/renderers/CSS2DRenderer.js +352 -0
  625. package/examples/jsm/renderers/CSS3DRenderer.d.ts +26 -0
  626. package/examples/jsm/renderers/CSS3DRenderer.js +454 -0
  627. package/examples/jsm/renderers/Projector.d.ts +60 -0
  628. package/examples/jsm/renderers/Projector.js +1154 -0
  629. package/examples/jsm/renderers/SVGRenderer.d.ts +26 -0
  630. package/examples/jsm/renderers/SVGRenderer.js +800 -0
  631. package/examples/jsm/shaders/ACESFilmicToneMappingShader.d.ts +11 -0
  632. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +96 -0
  633. package/examples/jsm/shaders/AfterimageShader.d.ts +12 -0
  634. package/examples/jsm/shaders/AfterimageShader.js +63 -0
  635. package/examples/jsm/shaders/BasicShader.d.ts +6 -0
  636. package/examples/jsm/shaders/BasicShader.js +36 -0
  637. package/examples/jsm/shaders/BleachBypassShader.d.ts +10 -0
  638. package/examples/jsm/shaders/BleachBypassShader.js +68 -0
  639. package/examples/jsm/shaders/BlendShader.d.ts +13 -0
  640. package/examples/jsm/shaders/BlendShader.js +56 -0
  641. package/examples/jsm/shaders/BokehShader.d.ts +21 -0
  642. package/examples/jsm/shaders/BokehShader.js +151 -0
  643. package/examples/jsm/shaders/BokehShader2.d.ts +44 -0
  644. package/examples/jsm/shaders/BokehShader2.js +404 -0
  645. package/examples/jsm/shaders/BrightnessContrastShader.d.ts +12 -0
  646. package/examples/jsm/shaders/BrightnessContrastShader.js +62 -0
  647. package/examples/jsm/shaders/ColorCorrectionShader.d.ts +13 -0
  648. package/examples/jsm/shaders/ColorCorrectionShader.js +59 -0
  649. package/examples/jsm/shaders/ColorifyShader.d.ts +10 -0
  650. package/examples/jsm/shaders/ColorifyShader.js +57 -0
  651. package/examples/jsm/shaders/ConvolutionShader.d.ts +17 -0
  652. package/examples/jsm/shaders/ConvolutionShader.js +74 -0
  653. package/examples/jsm/shaders/CopyShader.d.ts +10 -0
  654. package/examples/jsm/shaders/CopyShader.js +52 -0
  655. package/examples/jsm/shaders/DOFMipMapShader.d.ts +13 -0
  656. package/examples/jsm/shaders/DOFMipMapShader.js +63 -0
  657. package/examples/jsm/shaders/DepthLimitedBlurShader.d.ts +28 -0
  658. package/examples/jsm/shaders/DepthLimitedBlurShader.js +183 -0
  659. package/examples/jsm/shaders/DigitalGlitch.d.ts +19 -0
  660. package/examples/jsm/shaders/DigitalGlitch.js +104 -0
  661. package/examples/jsm/shaders/DotScreenShader.d.ts +13 -0
  662. package/examples/jsm/shaders/DotScreenShader.js +75 -0
  663. package/examples/jsm/shaders/ExposureShader.d.ts +11 -0
  664. package/examples/jsm/shaders/ExposureShader.js +51 -0
  665. package/examples/jsm/shaders/FXAAShader.d.ts +11 -0
  666. package/examples/jsm/shaders/FXAAShader.js +298 -0
  667. package/examples/jsm/shaders/FilmShader.d.ts +12 -0
  668. package/examples/jsm/shaders/FilmShader.js +73 -0
  669. package/examples/jsm/shaders/FocusShader.d.ts +14 -0
  670. package/examples/jsm/shaders/FocusShader.js +94 -0
  671. package/examples/jsm/shaders/FreiChenShader.d.ts +11 -0
  672. package/examples/jsm/shaders/FreiChenShader.js +103 -0
  673. package/examples/jsm/shaders/GTAOShader.d.ts +59 -0
  674. package/examples/jsm/shaders/GTAOShader.js +437 -0
  675. package/examples/jsm/shaders/GammaCorrectionShader.d.ts +9 -0
  676. package/examples/jsm/shaders/GammaCorrectionShader.js +52 -0
  677. package/examples/jsm/shaders/HalftoneShader.d.ts +22 -0
  678. package/examples/jsm/shaders/HalftoneShader.js +332 -0
  679. package/examples/jsm/shaders/HorizontalBlurShader.d.ts +10 -0
  680. package/examples/jsm/shaders/HorizontalBlurShader.js +68 -0
  681. package/examples/jsm/shaders/HorizontalTiltShiftShader.d.ts +12 -0
  682. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +70 -0
  683. package/examples/jsm/shaders/HueSaturationShader.d.ts +12 -0
  684. package/examples/jsm/shaders/HueSaturationShader.js +74 -0
  685. package/examples/jsm/shaders/KaleidoShader.d.ts +12 -0
  686. package/examples/jsm/shaders/KaleidoShader.js +65 -0
  687. package/examples/jsm/shaders/LuminosityHighPassShader.d.ts +15 -0
  688. package/examples/jsm/shaders/LuminosityHighPassShader.js +68 -0
  689. package/examples/jsm/shaders/LuminosityShader.d.ts +10 -0
  690. package/examples/jsm/shaders/LuminosityShader.js +54 -0
  691. package/examples/jsm/shaders/MirrorShader.d.ts +11 -0
  692. package/examples/jsm/shaders/MirrorShader.js +62 -0
  693. package/examples/jsm/shaders/NormalMapShader.d.ts +13 -0
  694. package/examples/jsm/shaders/NormalMapShader.js +60 -0
  695. package/examples/jsm/shaders/OutputShader.d.ts +11 -0
  696. package/examples/jsm/shaders/OutputShader.js +103 -0
  697. package/examples/jsm/shaders/PoissonDenoiseShader.d.ts +28 -0
  698. package/examples/jsm/shaders/PoissonDenoiseShader.js +230 -0
  699. package/examples/jsm/shaders/RGBShiftShader.d.ts +11 -0
  700. package/examples/jsm/shaders/RGBShiftShader.js +61 -0
  701. package/examples/jsm/shaders/SAOShader.d.ts +29 -0
  702. package/examples/jsm/shaders/SAOShader.js +201 -0
  703. package/examples/jsm/shaders/SMAAShader.d.ts +43 -0
  704. package/examples/jsm/shaders/SMAAShader.js +489 -0
  705. package/examples/jsm/shaders/SSAOShader.d.ts +49 -0
  706. package/examples/jsm/shaders/SSAOShader.js +331 -0
  707. package/examples/jsm/shaders/SSRShader.d.ts +62 -0
  708. package/examples/jsm/shaders/SSRShader.js +396 -0
  709. package/examples/jsm/shaders/SepiaShader.d.ts +10 -0
  710. package/examples/jsm/shaders/SepiaShader.js +57 -0
  711. package/examples/jsm/shaders/SobelOperatorShader.d.ts +11 -0
  712. package/examples/jsm/shaders/SobelOperatorShader.js +98 -0
  713. package/examples/jsm/shaders/SubsurfaceScatteringShader.d.ts +38 -0
  714. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +95 -0
  715. package/examples/jsm/shaders/TechnicolorShader.d.ts +10 -0
  716. package/examples/jsm/shaders/TechnicolorShader.js +51 -0
  717. package/examples/jsm/shaders/ToonShader.d.ts +54 -0
  718. package/examples/jsm/shaders/ToonShader.js +349 -0
  719. package/examples/jsm/shaders/TriangleBlurShader.d.ts +11 -0
  720. package/examples/jsm/shaders/TriangleBlurShader.js +79 -0
  721. package/examples/jsm/shaders/UnpackDepthRGBAShader.d.ts +11 -0
  722. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +60 -0
  723. package/examples/jsm/shaders/VelocityShader.d.ts +16 -0
  724. package/examples/jsm/shaders/VelocityShader.js +137 -0
  725. package/examples/jsm/shaders/VerticalBlurShader.d.ts +10 -0
  726. package/examples/jsm/shaders/VerticalBlurShader.js +66 -0
  727. package/examples/jsm/shaders/VerticalTiltShiftShader.d.ts +12 -0
  728. package/examples/jsm/shaders/VerticalTiltShiftShader.js +70 -0
  729. package/examples/jsm/shaders/VignetteShader.d.ts +11 -0
  730. package/examples/jsm/shaders/VignetteShader.js +56 -0
  731. package/examples/jsm/shaders/VolumeShader.d.ts +14 -0
  732. package/examples/jsm/shaders/VolumeShader.js +285 -0
  733. package/examples/jsm/shaders/WaterRefractionShader.d.ts +14 -0
  734. package/examples/jsm/shaders/WaterRefractionShader.js +106 -0
  735. package/examples/jsm/textures/FlakesTexture.d.ts +3 -0
  736. package/examples/jsm/textures/FlakesTexture.js +54 -0
  737. package/examples/jsm/transpiler/AST.d.ts +293 -0
  738. package/examples/jsm/transpiler/AST.js +694 -0
  739. package/examples/jsm/transpiler/GLSLDecoder.d.ts +7 -0
  740. package/examples/jsm/transpiler/GLSLDecoder.js +1718 -0
  741. package/examples/jsm/transpiler/Linker.js +327 -0
  742. package/examples/jsm/transpiler/ShaderToyDecoder.d.ts +3 -0
  743. package/examples/jsm/transpiler/ShaderToyDecoder.js +51 -0
  744. package/examples/jsm/transpiler/TSLEncoder.d.ts +51 -0
  745. package/examples/jsm/transpiler/TSLEncoder.js +1055 -0
  746. package/examples/jsm/transpiler/Transpiler.d.ts +5 -0
  747. package/examples/jsm/transpiler/Transpiler.js +67 -0
  748. package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  749. package/examples/jsm/transpiler/WGSLEncoder.js +868 -0
  750. package/examples/jsm/tsl/WebGLNodesHandler.d.ts +17 -0
  751. package/examples/jsm/tsl/WebGLNodesHandler.js +607 -0
  752. package/examples/jsm/tsl/display/AfterImageNode.d.ts +15 -0
  753. package/examples/jsm/tsl/display/AfterImageNode.js +256 -0
  754. package/examples/jsm/tsl/display/AnaglyphPassNode.d.ts +42 -0
  755. package/examples/jsm/tsl/display/AnaglyphPassNode.js +550 -0
  756. package/examples/jsm/tsl/display/BilateralBlurNode.d.ts +27 -0
  757. package/examples/jsm/tsl/display/BilateralBlurNode.js +377 -0
  758. package/examples/jsm/tsl/display/BleachBypass.d.ts +3 -0
  759. package/examples/jsm/tsl/display/BleachBypass.js +33 -0
  760. package/examples/jsm/tsl/display/BloomNode.d.ts +44 -0
  761. package/examples/jsm/tsl/display/BloomNode.js +599 -0
  762. package/examples/jsm/tsl/display/CRT.d.ts +22 -0
  763. package/examples/jsm/tsl/display/CRT.js +150 -0
  764. package/examples/jsm/tsl/display/ChromaticAberrationNode.d.ts +19 -0
  765. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +163 -0
  766. package/examples/jsm/tsl/display/DenoiseNode.d.ts +26 -0
  767. package/examples/jsm/tsl/display/DenoiseNode.js +354 -0
  768. package/examples/jsm/tsl/display/DepthOfFieldNode.d.ts +28 -0
  769. package/examples/jsm/tsl/display/DepthOfFieldNode.js +572 -0
  770. package/examples/jsm/tsl/display/DotScreenNode.d.ts +17 -0
  771. package/examples/jsm/tsl/display/DotScreenNode.js +104 -0
  772. package/examples/jsm/tsl/display/FSR1Node.d.ts +17 -0
  773. package/examples/jsm/tsl/display/FSR1Node.js +481 -0
  774. package/examples/jsm/tsl/display/FXAANode.d.ts +11 -0
  775. package/examples/jsm/tsl/display/FXAANode.js +357 -0
  776. package/examples/jsm/tsl/display/FilmNode.d.ts +17 -0
  777. package/examples/jsm/tsl/display/FilmNode.js +101 -0
  778. package/examples/jsm/tsl/display/GTAONode.d.ts +37 -0
  779. package/examples/jsm/tsl/display/GTAONode.js +727 -0
  780. package/examples/jsm/tsl/display/GaussianBlurNode.d.ts +56 -0
  781. package/examples/jsm/tsl/display/GaussianBlurNode.js +412 -0
  782. package/examples/jsm/tsl/display/GodraysNode.d.ts +20 -0
  783. package/examples/jsm/tsl/display/GodraysNode.js +604 -0
  784. package/examples/jsm/tsl/display/ImportanceSampledEnvironment.d.ts +84 -0
  785. package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +564 -0
  786. package/examples/jsm/tsl/display/LensflareNode.d.ts +34 -0
  787. package/examples/jsm/tsl/display/LensflareNode.js +282 -0
  788. package/examples/jsm/tsl/display/Lut3DNode.d.ts +19 -0
  789. package/examples/jsm/tsl/display/Lut3DNode.js +109 -0
  790. package/examples/jsm/tsl/display/MotionBlur.d.ts +7 -0
  791. package/examples/jsm/tsl/display/MotionBlur.js +33 -0
  792. package/examples/jsm/tsl/display/OITPassNode.d.ts +64 -0
  793. package/examples/jsm/tsl/display/OITPassNode.js +341 -0
  794. package/examples/jsm/tsl/display/OutlineNode.d.ts +31 -0
  795. package/examples/jsm/tsl/display/OutlineNode.js +916 -0
  796. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.d.ts +12 -0
  797. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +90 -0
  798. package/examples/jsm/tsl/display/PixelationPassNode.d.ts +27 -0
  799. package/examples/jsm/tsl/display/PixelationPassNode.js +227 -0
  800. package/examples/jsm/tsl/display/RGBShiftNode.d.ts +15 -0
  801. package/examples/jsm/tsl/display/RGBShiftNode.js +96 -0
  802. package/examples/jsm/tsl/display/RecurrentDenoiseNode.d.ts +89 -0
  803. package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +812 -0
  804. package/examples/jsm/tsl/display/RetroPassNode.d.ts +17 -0
  805. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  806. package/examples/jsm/tsl/display/SMAANode.d.ts +17 -0
  807. package/examples/jsm/tsl/display/SMAANode.js +729 -0
  808. package/examples/jsm/tsl/display/SSAAPassNode.d.ts +18 -0
  809. package/examples/jsm/tsl/display/SSAAPassNode.js +344 -0
  810. package/examples/jsm/tsl/display/SSAONode.d.ts +116 -0
  811. package/examples/jsm/tsl/display/SSAONode.js +422 -0
  812. package/examples/jsm/tsl/display/SSGINode.d.ts +33 -0
  813. package/examples/jsm/tsl/display/SSGINode.js +698 -0
  814. package/examples/jsm/tsl/display/SSRNode.d.ts +315 -0
  815. package/examples/jsm/tsl/display/SSRNode.js +1430 -0
  816. package/examples/jsm/tsl/display/SSSNode.d.ts +20 -0
  817. package/examples/jsm/tsl/display/SSSNode.js +479 -0
  818. package/examples/jsm/tsl/display/Sepia.d.ts +3 -0
  819. package/examples/jsm/tsl/display/Sepia.js +24 -0
  820. package/examples/jsm/tsl/display/Shape.d.ts +3 -0
  821. package/examples/jsm/tsl/display/Shape.js +29 -0
  822. package/examples/jsm/tsl/display/SharpenNode.d.ts +22 -0
  823. package/examples/jsm/tsl/display/SharpenNode.js +284 -0
  824. package/examples/jsm/tsl/display/SobelOperatorNode.d.ts +11 -0
  825. package/examples/jsm/tsl/display/SobelOperatorNode.js +168 -0
  826. package/examples/jsm/tsl/display/StereoCompositePassNode.d.ts +13 -0
  827. package/examples/jsm/tsl/display/StereoCompositePassNode.js +190 -0
  828. package/examples/jsm/tsl/display/StereoPassNode.d.ts +13 -0
  829. package/examples/jsm/tsl/display/StereoPassNode.js +117 -0
  830. package/examples/jsm/tsl/display/TAAUNode.d.ts +31 -0
  831. package/examples/jsm/tsl/display/TAAUNode.js +700 -0
  832. package/examples/jsm/tsl/display/TRAANode.d.ts +26 -0
  833. package/examples/jsm/tsl/display/TRAANode.js +609 -0
  834. package/examples/jsm/tsl/display/TemporalReprojectNode.d.ts +64 -0
  835. package/examples/jsm/tsl/display/TemporalReprojectNode.js +1024 -0
  836. package/examples/jsm/tsl/display/TransitionNode.d.ts +31 -0
  837. package/examples/jsm/tsl/display/TransitionNode.js +141 -0
  838. package/examples/jsm/tsl/display/boxBlur.d.ts +10 -0
  839. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  840. package/examples/jsm/tsl/display/depthAwareBlend.d.ts +15 -0
  841. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  842. package/examples/jsm/tsl/display/depthAwareBlur.d.ts +10 -0
  843. package/examples/jsm/tsl/display/depthAwareBlur.js +63 -0
  844. package/examples/jsm/tsl/display/hashBlur.d.ts +12 -0
  845. package/examples/jsm/tsl/display/hashBlur.js +55 -0
  846. package/examples/jsm/tsl/display/lensDirt.js +30 -0
  847. package/examples/jsm/tsl/display/radialBlur.d.ts +12 -0
  848. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  849. package/examples/jsm/tsl/lighting/ClusteredLightsNode.d.ts +54 -0
  850. package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +994 -0
  851. package/examples/jsm/tsl/lighting/DynamicLightsNode.d.ts +21 -0
  852. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +201 -0
  853. package/examples/jsm/tsl/lighting/LightProbeGridNode.js +183 -0
  854. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.d.ts +9 -0
  855. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +67 -0
  856. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.d.ts +9 -0
  857. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +117 -0
  858. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.d.ts +9 -0
  859. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +105 -0
  860. package/examples/jsm/tsl/lighting/data/PointLightDataNode.d.ts +9 -0
  861. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +140 -0
  862. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.d.ts +9 -0
  863. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +167 -0
  864. package/examples/jsm/tsl/math/Bayer.d.ts +5 -0
  865. package/examples/jsm/tsl/math/Bayer.js +84 -0
  866. package/examples/jsm/tsl/math/curlNoise.d.ts +38 -0
  867. package/examples/jsm/tsl/math/curlNoise.js +107 -0
  868. package/examples/jsm/tsl/math/voronoiNoise.d.ts +52 -0
  869. package/examples/jsm/tsl/math/voronoiNoise.js +112 -0
  870. package/examples/jsm/tsl/shadows/TileShadowNode.d.ts +14 -0
  871. package/examples/jsm/tsl/shadows/TileShadowNode.js +542 -0
  872. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.d.ts +14 -0
  873. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  874. package/examples/jsm/tsl/utils/GroundedSkybox.d.ts +17 -0
  875. package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
  876. package/examples/jsm/tsl/utils/RNoise.d.ts +12 -0
  877. package/examples/jsm/tsl/utils/RNoise.js +51 -0
  878. package/examples/jsm/tsl/utils/Raymarching.d.ts +8 -0
  879. package/examples/jsm/tsl/utils/Raymarching.js +70 -0
  880. package/examples/jsm/tsl/utils/SoftParticles.d.ts +21 -0
  881. package/examples/jsm/tsl/utils/SoftParticles.js +53 -0
  882. package/examples/jsm/tsl/utils/SpecularHelpers.d.ts +20 -0
  883. package/examples/jsm/tsl/utils/SpecularHelpers.js +302 -0
  884. package/examples/jsm/tsl/utils/TAAUtils.js +184 -0
  885. package/examples/jsm/utils/BufferGeometryUtils.d.ts +37 -0
  886. package/examples/jsm/utils/BufferGeometryUtils.js +1523 -0
  887. package/examples/jsm/utils/CameraUtils.d.ts +9 -0
  888. package/examples/jsm/utils/CameraUtils.js +82 -0
  889. package/examples/jsm/utils/ColorUtils.d.ts +5 -0
  890. package/examples/jsm/utils/ColorUtils.js +76 -0
  891. package/examples/jsm/utils/GaussianSplatUtils.d.ts +68 -0
  892. package/examples/jsm/utils/GaussianSplatUtils.js +229 -0
  893. package/examples/jsm/utils/GeometryCompressionUtils.d.ts +21 -0
  894. package/examples/jsm/utils/GeometryCompressionUtils.js +547 -0
  895. package/examples/jsm/utils/GeometryUtils.d.ts +25 -0
  896. package/examples/jsm/utils/GeometryUtils.js +226 -0
  897. package/examples/jsm/utils/LDrawUtils.d.ts +5 -0
  898. package/examples/jsm/utils/LDrawUtils.js +211 -0
  899. package/examples/jsm/utils/MeshletGeometryUtils.js +417 -0
  900. package/examples/jsm/utils/SceneOptimizer.d.ts +18 -0
  901. package/examples/jsm/utils/SceneOptimizer.js +459 -0
  902. package/examples/jsm/utils/SceneUtils.d.ts +57 -0
  903. package/examples/jsm/utils/SceneUtils.js +363 -0
  904. package/examples/jsm/utils/ShadowMapViewer.d.ts +26 -0
  905. package/examples/jsm/utils/ShadowMapViewer.js +244 -0
  906. package/examples/jsm/utils/ShadowMapViewerGPU.d.ts +26 -0
  907. package/examples/jsm/utils/ShadowMapViewerGPU.js +233 -0
  908. package/examples/jsm/utils/SkeletonUtils.d.ts +32 -0
  909. package/examples/jsm/utils/SkeletonUtils.js +496 -0
  910. package/examples/jsm/utils/SortUtils.d.ts +7 -0
  911. package/examples/jsm/utils/SortUtils.js +175 -0
  912. package/examples/jsm/utils/UVsDebug.d.ts +3 -0
  913. package/examples/jsm/utils/UVsDebug.js +173 -0
  914. package/examples/jsm/utils/WebGLTextureUtils.d.ts +3 -0
  915. package/examples/jsm/utils/WebGLTextureUtils.js +115 -0
  916. package/examples/jsm/utils/WebGPUTextureUtils.d.ts +3 -0
  917. package/examples/jsm/utils/WebGPUTextureUtils.js +81 -0
  918. package/examples/jsm/utils/WorkerPool.d.ts +26 -0
  919. package/examples/jsm/utils/WorkerPool.js +167 -0
  920. package/examples/jsm/utils/unwrapUVs.js +865 -0
  921. package/examples/jsm/webxr/ARButton.d.ts +9 -0
  922. package/examples/jsm/webxr/ARButton.js +251 -0
  923. package/examples/jsm/webxr/OculusHandModel.d.ts +23 -0
  924. package/examples/jsm/webxr/OculusHandModel.js +194 -0
  925. package/examples/jsm/webxr/OculusHandPointerModel.d.ts +67 -0
  926. package/examples/jsm/webxr/OculusHandPointerModel.js +539 -0
  927. package/examples/jsm/webxr/Text2D.d.ts +3 -0
  928. package/examples/jsm/webxr/Text2D.js +52 -0
  929. package/examples/jsm/webxr/VRButton.d.ts +7 -0
  930. package/examples/jsm/webxr/VRButton.js +264 -0
  931. package/examples/jsm/webxr/WebGLXRFallback.d.ts +14 -0
  932. package/examples/jsm/webxr/WebGLXRFallback.js +75 -0
  933. package/examples/jsm/webxr/XRButton.d.ts +7 -0
  934. package/examples/jsm/webxr/XRButton.js +246 -0
  935. package/examples/jsm/webxr/XRControllerModelFactory.d.ts +23 -0
  936. package/examples/jsm/webxr/XRControllerModelFactory.js +415 -0
  937. package/examples/jsm/webxr/XREstimatedLight.d.ts +69 -0
  938. package/examples/jsm/webxr/XREstimatedLight.js +261 -0
  939. package/examples/jsm/webxr/XRHandMeshModel.d.ts +20 -0
  940. package/examples/jsm/webxr/XRHandMeshModel.js +177 -0
  941. package/examples/jsm/webxr/XRHandModelFactory.d.ts +32 -0
  942. package/examples/jsm/webxr/XRHandModelFactory.js +198 -0
  943. package/examples/jsm/webxr/XRHandPrimitiveModel.d.ts +24 -0
  944. package/examples/jsm/webxr/XRHandPrimitiveModel.js +147 -0
  945. package/examples/jsm/webxr/XRPlanes.d.ts +5 -0
  946. package/examples/jsm/webxr/XRPlanes.js +118 -0
  947. package/index.d.ts +6 -0
  948. package/package.json +68 -4
  949. package/src/Three.Core.d.ts +176 -0
  950. package/src/Three.Core.js +189 -0
  951. package/src/Three.Legacy.js +0 -0
  952. package/src/Three.TSL.d.ts +686 -0
  953. package/src/Three.TSL.js +3 -0
  954. package/src/Three.WebGPU.Nodes.d.ts +36 -0
  955. package/src/Three.WebGPU.Nodes.js +34 -0
  956. package/src/Three.WebGPU.d.ts +44 -0
  957. package/src/Three.WebGPU.js +44 -0
  958. package/src/Three.d.ts +47 -0
  959. package/src/Three.js +10 -0
  960. package/src/animation/AnimationAction.d.ts +286 -0
  961. package/src/animation/AnimationAction.js +946 -0
  962. package/src/animation/AnimationClip.d.ts +168 -0
  963. package/src/animation/AnimationClip.js +502 -0
  964. package/src/animation/AnimationMixer.d.ts +175 -0
  965. package/src/animation/AnimationMixer.js +860 -0
  966. package/src/animation/AnimationObjectGroup.d.ts +58 -0
  967. package/src/animation/AnimationObjectGroup.js +423 -0
  968. package/src/animation/AnimationUtils.d.ts +182 -0
  969. package/src/animation/AnimationUtils.js +519 -0
  970. package/src/animation/KeyframeTrack.d.ts +197 -0
  971. package/src/animation/KeyframeTrack.js +692 -0
  972. package/src/animation/PropertyBinding.d.ts +101 -0
  973. package/src/animation/PropertyBinding.js +794 -0
  974. package/src/animation/PropertyMixer.d.ts +75 -0
  975. package/src/animation/PropertyMixer.js +385 -0
  976. package/src/animation/tracks/BooleanKeyframeTrack.d.ts +18 -0
  977. package/src/animation/tracks/BooleanKeyframeTrack.js +55 -0
  978. package/src/animation/tracks/ColorKeyframeTrack.d.ts +17 -0
  979. package/src/animation/tracks/ColorKeyframeTrack.js +36 -0
  980. package/src/animation/tracks/NumberKeyframeTrack.d.ts +17 -0
  981. package/src/animation/tracks/NumberKeyframeTrack.js +36 -0
  982. package/src/animation/tracks/QuaternionKeyframeTrack.d.ts +17 -0
  983. package/src/animation/tracks/QuaternionKeyframeTrack.js +51 -0
  984. package/src/animation/tracks/StringKeyframeTrack.d.ts +18 -0
  985. package/src/animation/tracks/StringKeyframeTrack.js +55 -0
  986. package/src/animation/tracks/VectorKeyframeTrack.d.ts +17 -0
  987. package/src/animation/tracks/VectorKeyframeTrack.js +36 -0
  988. package/src/audio/Audio.d.ts +340 -0
  989. package/src/audio/Audio.js +778 -0
  990. package/src/audio/AudioAnalyser.d.ts +63 -0
  991. package/src/audio/AudioAnalyser.js +97 -0
  992. package/src/audio/AudioContext.d.ts +19 -0
  993. package/src/audio/AudioContext.js +40 -0
  994. package/src/audio/AudioListener.d.ts +75 -0
  995. package/src/audio/AudioListener.js +218 -0
  996. package/src/audio/PositionalAudio.d.ts +108 -0
  997. package/src/audio/PositionalAudio.js +253 -0
  998. package/src/cameras/ArrayCamera.d.ts +35 -0
  999. package/src/cameras/ArrayCamera.js +66 -0
  1000. package/src/cameras/Camera.d.ts +42 -0
  1001. package/src/cameras/Camera.js +160 -0
  1002. package/src/cameras/CubeCamera.d.ts +89 -0
  1003. package/src/cameras/CubeCamera.js +259 -0
  1004. package/src/cameras/OrthographicCamera.d.ts +144 -0
  1005. package/src/cameras/OrthographicCamera.js +245 -0
  1006. package/src/cameras/PerspectiveCamera.d.ts +241 -0
  1007. package/src/cameras/PerspectiveCamera.js +407 -0
  1008. package/src/cameras/StereoCamera.d.ts +44 -0
  1009. package/src/cameras/StereoCamera.js +149 -0
  1010. package/src/constants.d.ts +976 -0
  1011. package/src/constants.js +1774 -0
  1012. package/src/core/BufferAttribute.d.ts +650 -0
  1013. package/src/core/BufferAttribute.js +1093 -0
  1014. package/src/core/BufferGeometry.d.ts +442 -0
  1015. package/src/core/BufferGeometry.js +1472 -0
  1016. package/src/core/Clock.d.ts +73 -0
  1017. package/src/core/Clock.js +135 -0
  1018. package/src/core/EventDispatcher.d.ts +82 -0
  1019. package/src/core/EventDispatcher.js +131 -0
  1020. package/src/core/GLBufferAttribute.d.ts +138 -0
  1021. package/src/core/GLBufferAttribute.js +171 -0
  1022. package/src/core/InstancedBufferAttribute.d.ts +32 -0
  1023. package/src/core/InstancedBufferAttribute.js +68 -0
  1024. package/src/core/InstancedBufferGeometry.d.ts +37 -0
  1025. package/src/core/InstancedBufferGeometry.js +60 -0
  1026. package/src/core/InstancedInterleavedBuffer.d.ts +22 -0
  1027. package/src/core/InstancedInterleavedBuffer.js +74 -0
  1028. package/src/core/InterleavedBuffer.d.ts +162 -0
  1029. package/src/core/InterleavedBuffer.js +305 -0
  1030. package/src/core/InterleavedBufferAttribute.d.ts +201 -0
  1031. package/src/core/InterleavedBufferAttribute.js +583 -0
  1032. package/src/core/Layers.d.ts +72 -0
  1033. package/src/core/Layers.js +121 -0
  1034. package/src/core/Object3D.d.ts +725 -0
  1035. package/src/core/Object3D.js +1719 -0
  1036. package/src/core/Raycaster.d.ts +212 -0
  1037. package/src/core/Raycaster.js +268 -0
  1038. package/src/core/RenderTarget.d.ts +153 -0
  1039. package/src/core/RenderTarget.js +501 -0
  1040. package/src/core/RenderTarget3D.d.ts +9 -0
  1041. package/src/core/RenderTarget3D.js +52 -0
  1042. package/src/core/Timer.d.ts +77 -0
  1043. package/src/core/Timer.js +184 -0
  1044. package/src/core/Uniform.d.ts +38 -0
  1045. package/src/core/Uniform.js +46 -0
  1046. package/src/core/UniformsGroup.d.ts +39 -0
  1047. package/src/core/UniformsGroup.js +184 -0
  1048. package/src/extras/Controls.d.ts +59 -0
  1049. package/src/extras/Controls.js +112 -0
  1050. package/src/extras/DataUtils.d.ts +22 -0
  1051. package/src/extras/DataUtils.js +217 -0
  1052. package/src/extras/Earcut.d.ts +17 -0
  1053. package/src/extras/Earcut.js +28 -0
  1054. package/src/extras/ImageUtils.d.ts +33 -0
  1055. package/src/extras/ImageUtils.js +137 -0
  1056. package/src/extras/PMREMGenerator.d.ts +95 -0
  1057. package/src/extras/PMREMGenerator.js +770 -0
  1058. package/src/extras/ShapeUtils.d.ts +25 -0
  1059. package/src/extras/ShapeUtils.js +114 -0
  1060. package/src/extras/TextureUtils.d.ts +42 -0
  1061. package/src/extras/TextureUtils.js +297 -0
  1062. package/src/extras/core/Curve.d.ts +162 -0
  1063. package/src/extras/core/Curve.js +521 -0
  1064. package/src/extras/core/CurvePath.d.ts +77 -0
  1065. package/src/extras/core/CurvePath.js +309 -0
  1066. package/src/extras/core/Interpolations.d.ts +36 -0
  1067. package/src/extras/core/Interpolations.js +111 -0
  1068. package/src/extras/core/Path.d.ts +166 -0
  1069. package/src/extras/core/Path.js +329 -0
  1070. package/src/extras/core/Shape.d.ts +86 -0
  1071. package/src/extras/core/Shape.js +165 -0
  1072. package/src/extras/core/ShapePath.d.ts +94 -0
  1073. package/src/extras/core/ShapePath.js +356 -0
  1074. package/src/extras/curves/ArcCurve.d.ts +41 -0
  1075. package/src/extras/curves/ArcCurve.js +39 -0
  1076. package/src/extras/curves/CatmullRomCurve3.d.ts +77 -0
  1077. package/src/extras/curves/CatmullRomCurve3.js +327 -0
  1078. package/src/extras/curves/CubicBezierCurve.d.ts +72 -0
  1079. package/src/extras/curves/CubicBezierCurve.js +145 -0
  1080. package/src/extras/curves/CubicBezierCurve3.d.ts +72 -0
  1081. package/src/extras/curves/CubicBezierCurve3.js +129 -0
  1082. package/src/extras/curves/Curves.d.ts +10 -0
  1083. package/src/extras/curves/Curves.js +10 -0
  1084. package/src/extras/curves/EllipseCurve.d.ts +115 -0
  1085. package/src/extras/curves/EllipseCurve.js +258 -0
  1086. package/src/extras/curves/LineCurve.d.ts +42 -0
  1087. package/src/extras/curves/LineCurve.js +128 -0
  1088. package/src/extras/curves/LineCurve3.d.ts +42 -0
  1089. package/src/extras/curves/LineCurve3.js +128 -0
  1090. package/src/extras/curves/QuadraticBezierCurve.d.ts +64 -0
  1091. package/src/extras/curves/QuadraticBezierCurve.js +133 -0
  1092. package/src/extras/curves/QuadraticBezierCurve3.d.ts +64 -0
  1093. package/src/extras/curves/QuadraticBezierCurve3.js +118 -0
  1094. package/src/extras/curves/SplineCurve.d.ts +52 -0
  1095. package/src/extras/curves/SplineCurve.js +145 -0
  1096. package/src/extras/lib/earcut.js +685 -0
  1097. package/src/geometries/BoxGeometry.d.ts +59 -0
  1098. package/src/geometries/BoxGeometry.js +219 -0
  1099. package/src/geometries/CapsuleGeometry.d.ts +56 -0
  1100. package/src/geometries/CapsuleGeometry.js +218 -0
  1101. package/src/geometries/CircleGeometry.d.ts +51 -0
  1102. package/src/geometries/CircleGeometry.js +142 -0
  1103. package/src/geometries/ConeGeometry.d.ts +64 -0
  1104. package/src/geometries/ConeGeometry.js +70 -0
  1105. package/src/geometries/CylinderGeometry.d.ts +64 -0
  1106. package/src/geometries/CylinderGeometry.js +333 -0
  1107. package/src/geometries/DodecahedronGeometry.d.ts +25 -0
  1108. package/src/geometries/DodecahedronGeometry.js +99 -0
  1109. package/src/geometries/EdgesGeometry.d.ts +41 -0
  1110. package/src/geometries/EdgesGeometry.js +182 -0
  1111. package/src/geometries/ExtrudeGeometry.d.ts +138 -0
  1112. package/src/geometries/ExtrudeGeometry.js +910 -0
  1113. package/src/geometries/Geometries.d.ts +21 -0
  1114. package/src/geometries/Geometries.js +21 -0
  1115. package/src/geometries/IcosahedronGeometry.d.ts +26 -0
  1116. package/src/geometries/IcosahedronGeometry.js +75 -0
  1117. package/src/geometries/LatheGeometry.d.ts +55 -0
  1118. package/src/geometries/LatheGeometry.js +232 -0
  1119. package/src/geometries/OctahedronGeometry.d.ts +25 -0
  1120. package/src/geometries/OctahedronGeometry.js +70 -0
  1121. package/src/geometries/PlaneGeometry.d.ts +48 -0
  1122. package/src/geometries/PlaneGeometry.js +133 -0
  1123. package/src/geometries/PolyhedronGeometry.d.ts +54 -0
  1124. package/src/geometries/PolyhedronGeometry.js +348 -0
  1125. package/src/geometries/RingGeometry.d.ts +59 -0
  1126. package/src/geometries/RingGeometry.js +165 -0
  1127. package/src/geometries/ShapeGeometry.d.ts +53 -0
  1128. package/src/geometries/ShapeGeometry.js +233 -0
  1129. package/src/geometries/SphereGeometry.d.ts +67 -0
  1130. package/src/geometries/SphereGeometry.js +180 -0
  1131. package/src/geometries/TetrahedronGeometry.d.ts +25 -0
  1132. package/src/geometries/TetrahedronGeometry.js +67 -0
  1133. package/src/geometries/TorusGeometry.d.ts +69 -0
  1134. package/src/geometries/TorusGeometry.js +161 -0
  1135. package/src/geometries/TorusKnotGeometry.d.ts +59 -0
  1136. package/src/geometries/TorusKnotGeometry.js +206 -0
  1137. package/src/geometries/TubeGeometry.d.ts +86 -0
  1138. package/src/geometries/TubeGeometry.js +253 -0
  1139. package/src/geometries/WireframeGeometry.d.ts +40 -0
  1140. package/src/geometries/WireframeGeometry.js +179 -0
  1141. package/src/helpers/ArrowHelper.d.ts +72 -0
  1142. package/src/helpers/ArrowHelper.js +173 -0
  1143. package/src/helpers/AxesHelper.d.ts +33 -0
  1144. package/src/helpers/AxesHelper.js +98 -0
  1145. package/src/helpers/Box3Helper.d.ts +28 -0
  1146. package/src/helpers/Box3Helper.js +85 -0
  1147. package/src/helpers/BoxHelper.d.ts +48 -0
  1148. package/src/helpers/BoxHelper.js +151 -0
  1149. package/src/helpers/CameraHelper.d.ts +54 -0
  1150. package/src/helpers/CameraHelper.js +347 -0
  1151. package/src/helpers/DirectionalLightHelper.d.ts +55 -0
  1152. package/src/helpers/DirectionalLightHelper.js +152 -0
  1153. package/src/helpers/GridHelper.d.ts +28 -0
  1154. package/src/helpers/GridHelper.js +84 -0
  1155. package/src/helpers/HemisphereLightHelper.d.ts +44 -0
  1156. package/src/helpers/HemisphereLightHelper.js +134 -0
  1157. package/src/helpers/PlaneHelper.d.ts +33 -0
  1158. package/src/helpers/PlaneHelper.js +98 -0
  1159. package/src/helpers/PointLightHelper.d.ts +43 -0
  1160. package/src/helpers/PointLightHelper.js +115 -0
  1161. package/src/helpers/PolarGridHelper.d.ts +37 -0
  1162. package/src/helpers/PolarGridHelper.js +128 -0
  1163. package/src/helpers/SkeletonHelper.d.ts +44 -0
  1164. package/src/helpers/SkeletonHelper.js +196 -0
  1165. package/src/helpers/SpotLightHelper.d.ts +45 -0
  1166. package/src/helpers/SpotLightHelper.js +156 -0
  1167. package/src/lights/AmbientLight.d.ts +28 -0
  1168. package/src/lights/AmbientLight.js +42 -0
  1169. package/src/lights/DirectionalLight.d.ts +68 -0
  1170. package/src/lights/DirectionalLight.js +113 -0
  1171. package/src/lights/DirectionalLightShadow.d.ts +18 -0
  1172. package/src/lights/DirectionalLightShadow.js +31 -0
  1173. package/src/lights/HemisphereLight.d.ts +41 -0
  1174. package/src/lights/HemisphereLight.js +76 -0
  1175. package/src/lights/Light.d.ts +39 -0
  1176. package/src/lights/Light.js +86 -0
  1177. package/src/lights/LightProbe.d.ts +46 -0
  1178. package/src/lights/LightProbe.js +77 -0
  1179. package/src/lights/LightShadow.d.ts +201 -0
  1180. package/src/lights/LightShadow.js +380 -0
  1181. package/src/lights/PointLight.d.ts +72 -0
  1182. package/src/lights/PointLight.js +131 -0
  1183. package/src/lights/PointLightShadow.d.ts +18 -0
  1184. package/src/lights/PointLightShadow.js +31 -0
  1185. package/src/lights/RectAreaLight.d.ts +62 -0
  1186. package/src/lights/RectAreaLight.js +115 -0
  1187. package/src/lights/SpotLight.d.ts +124 -0
  1188. package/src/lights/SpotLight.js +194 -0
  1189. package/src/lights/SpotLightShadow.d.ts +44 -0
  1190. package/src/lights/SpotLightShadow.js +98 -0
  1191. package/src/lights/webgpu/IESSpotLight.d.ts +18 -0
  1192. package/src/lights/webgpu/IESSpotLight.js +47 -0
  1193. package/src/lights/webgpu/ProjectorLight.d.ts +16 -0
  1194. package/src/lights/webgpu/ProjectorLight.js +46 -0
  1195. package/src/loaders/AnimationLoader.d.ts +9 -0
  1196. package/src/loaders/AnimationLoader.js +100 -0
  1197. package/src/loaders/AudioLoader.d.ts +6 -0
  1198. package/src/loaders/AudioLoader.js +110 -0
  1199. package/src/loaders/BufferGeometryLoader.d.ts +10 -0
  1200. package/src/loaders/BufferGeometryLoader.js +249 -0
  1201. package/src/loaders/Cache.d.ts +21 -0
  1202. package/src/loaders/Cache.js +115 -0
  1203. package/src/loaders/CompressedTextureLoader.d.ts +14 -0
  1204. package/src/loaders/CompressedTextureLoader.js +169 -0
  1205. package/src/loaders/CubeTextureLoader.d.ts +14 -0
  1206. package/src/loaders/CubeTextureLoader.js +105 -0
  1207. package/src/loaders/DataTextureLoader.d.ts +48 -0
  1208. package/src/loaders/DataTextureLoader.js +207 -0
  1209. package/src/loaders/FileLoader.d.ts +19 -0
  1210. package/src/loaders/FileLoader.js +369 -0
  1211. package/src/loaders/ImageBitmapLoader.d.ts +22 -0
  1212. package/src/loaders/ImageBitmapLoader.js +227 -0
  1213. package/src/loaders/ImageLoader.d.ts +17 -0
  1214. package/src/loaders/ImageLoader.js +169 -0
  1215. package/src/loaders/Loader.d.ts +51 -0
  1216. package/src/loaders/Loader.js +269 -0
  1217. package/src/loaders/LoaderUtils.d.ts +5 -0
  1218. package/src/loaders/LoaderUtils.js +59 -0
  1219. package/src/loaders/LoadingManager.d.ts +73 -0
  1220. package/src/loaders/LoadingManager.js +334 -0
  1221. package/src/loaders/MaterialLoader.d.ts +29 -0
  1222. package/src/loaders/MaterialLoader.js +211 -0
  1223. package/src/loaders/ObjectLoader.d.ts +35 -0
  1224. package/src/loaders/ObjectLoader.js +1328 -0
  1225. package/src/loaders/TextureLoader.d.ts +18 -0
  1226. package/src/loaders/TextureLoader.js +76 -0
  1227. package/src/loaders/nodes/NodeLoader.d.ts +21 -0
  1228. package/src/loaders/nodes/NodeLoader.js +196 -0
  1229. package/src/loaders/nodes/NodeMaterialLoader.d.ts +11 -0
  1230. package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
  1231. package/src/loaders/nodes/NodeObjectLoader.d.ts +22 -0
  1232. package/src/loaders/nodes/NodeObjectLoader.js +169 -0
  1233. package/src/materials/LineBasicMaterial.d.ts +93 -0
  1234. package/src/materials/LineBasicMaterial.js +126 -0
  1235. package/src/materials/LineDashedMaterial.d.ts +56 -0
  1236. package/src/materials/LineDashedMaterial.js +86 -0
  1237. package/src/materials/Material.d.ts +663 -0
  1238. package/src/materials/Material.js +1254 -0
  1239. package/src/materials/Materials.d.ts +18 -0
  1240. package/src/materials/Materials.js +39 -0
  1241. package/src/materials/MeshBasicMaterial.d.ts +204 -0
  1242. package/src/materials/MeshBasicMaterial.js +274 -0
  1243. package/src/materials/MeshDepthMaterial.d.ts +119 -0
  1244. package/src/materials/MeshDepthMaterial.js +158 -0
  1245. package/src/materials/MeshDistanceMaterial.d.ts +102 -0
  1246. package/src/materials/MeshDistanceMaterial.js +129 -0
  1247. package/src/materials/MeshLambertMaterial.d.ts +331 -0
  1248. package/src/materials/MeshLambertMaterial.js +441 -0
  1249. package/src/materials/MeshMatcapMaterial.d.ts +199 -0
  1250. package/src/materials/MeshMatcapMaterial.js +269 -0
  1251. package/src/materials/MeshNormalMaterial.d.ts +134 -0
  1252. package/src/materials/MeshNormalMaterial.js +183 -0
  1253. package/src/materials/MeshPhongMaterial.d.ts +343 -0
  1254. package/src/materials/MeshPhongMaterial.js +460 -0
  1255. package/src/materials/MeshPhysicalMaterial.d.ts +353 -0
  1256. package/src/materials/MeshPhysicalMaterial.js +685 -0
  1257. package/src/materials/MeshStandardMaterial.d.ts +352 -0
  1258. package/src/materials/MeshStandardMaterial.js +466 -0
  1259. package/src/materials/MeshToonMaterial.d.ts +265 -0
  1260. package/src/materials/MeshToonMaterial.js +354 -0
  1261. package/src/materials/PointsMaterial.d.ts +113 -0
  1262. package/src/materials/PointsMaterial.js +146 -0
  1263. package/src/materials/RawShaderMaterial.d.ts +17 -0
  1264. package/src/materials/RawShaderMaterial.js +42 -0
  1265. package/src/materials/ShaderMaterial.d.ts +268 -0
  1266. package/src/materials/ShaderMaterial.js +499 -0
  1267. package/src/materials/ShadowMaterial.d.ts +61 -0
  1268. package/src/materials/ShadowMaterial.js +91 -0
  1269. package/src/materials/SpriteMaterial.d.ts +100 -0
  1270. package/src/materials/SpriteMaterial.js +143 -0
  1271. package/src/materials/nodes/Line2NodeMaterial.d.ts +102 -0
  1272. package/src/materials/nodes/Line2NodeMaterial.js +656 -0
  1273. package/src/materials/nodes/LineBasicNodeMaterial.d.ts +38 -0
  1274. package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
  1275. package/src/materials/nodes/LineDashedNodeMaterial.d.ts +88 -0
  1276. package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
  1277. package/src/materials/nodes/MeshBasicNodeMaterial.d.ts +55 -0
  1278. package/src/materials/nodes/MeshBasicNodeMaterial.js +134 -0
  1279. package/src/materials/nodes/MeshLambertNodeMaterial.d.ts +55 -0
  1280. package/src/materials/nodes/MeshLambertNodeMaterial.js +95 -0
  1281. package/src/materials/nodes/MeshMatcapNodeMaterial.d.ts +45 -0
  1282. package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
  1283. package/src/materials/nodes/MeshNormalNodeMaterial.d.ts +41 -0
  1284. package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
  1285. package/src/materials/nodes/MeshPhongNodeMaterial.d.ts +77 -0
  1286. package/src/materials/nodes/MeshPhongNodeMaterial.js +145 -0
  1287. package/src/materials/nodes/MeshPhysicalNodeMaterial.d.ts +286 -0
  1288. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +563 -0
  1289. package/src/materials/nodes/MeshSSSNodeMaterial.d.ts +110 -0
  1290. package/src/materials/nodes/MeshSSSNodeMaterial.js +162 -0
  1291. package/src/materials/nodes/MeshStandardNodeMaterial.d.ts +93 -0
  1292. package/src/materials/nodes/MeshStandardNodeMaterial.js +176 -0
  1293. package/src/materials/nodes/MeshToonNodeMaterial.d.ts +45 -0
  1294. package/src/materials/nodes/MeshToonNodeMaterial.js +79 -0
  1295. package/src/materials/nodes/NodeMaterial.d.ts +503 -0
  1296. package/src/materials/nodes/NodeMaterial.js +1400 -0
  1297. package/src/materials/nodes/NodeMaterialInstance.js +193 -0
  1298. package/src/materials/nodes/NodeMaterials.d.ts +18 -0
  1299. package/src/materials/nodes/NodeMaterials.js +22 -0
  1300. package/src/materials/nodes/PointsNodeMaterial.d.ts +60 -0
  1301. package/src/materials/nodes/PointsNodeMaterial.js +212 -0
  1302. package/src/materials/nodes/ShadowNodeMaterial.d.ts +45 -0
  1303. package/src/materials/nodes/ShadowNodeMaterial.js +76 -0
  1304. package/src/materials/nodes/SpriteNodeMaterial.d.ts +74 -0
  1305. package/src/materials/nodes/SpriteNodeMaterial.js +176 -0
  1306. package/src/materials/nodes/VolumeNodeMaterial.d.ts +56 -0
  1307. package/src/materials/nodes/VolumeNodeMaterial.js +81 -0
  1308. package/src/materials/nodes/manager/NodeMaterialObserver.d.ts +58 -0
  1309. package/src/materials/nodes/manager/NodeMaterialObserver.js +1142 -0
  1310. package/src/math/Box2.d.ts +48 -0
  1311. package/src/math/Box2.js +381 -0
  1312. package/src/math/Box3.d.ts +310 -0
  1313. package/src/math/Box3.js +810 -0
  1314. package/src/math/Color.d.ts +376 -0
  1315. package/src/math/Color.js +967 -0
  1316. package/src/math/ColorManagement.d.ts +59 -0
  1317. package/src/math/ColorManagement.js +196 -0
  1318. package/src/math/Cylindrical.d.ts +26 -0
  1319. package/src/math/Cylindrical.js +120 -0
  1320. package/src/math/Euler.d.ts +50 -0
  1321. package/src/math/Euler.js +449 -0
  1322. package/src/math/Frustum.d.ts +30 -0
  1323. package/src/math/Frustum.js +294 -0
  1324. package/src/math/FrustumArray.d.ts +86 -0
  1325. package/src/math/FrustumArray.js +240 -0
  1326. package/src/math/Interpolant.d.ts +113 -0
  1327. package/src/math/Interpolant.js +320 -0
  1328. package/src/math/Line3.d.ts +30 -0
  1329. package/src/math/Line3.js +335 -0
  1330. package/src/math/MathUtils.d.ts +153 -0
  1331. package/src/math/MathUtils.js +740 -0
  1332. package/src/math/Matrix2.d.ts +53 -0
  1333. package/src/math/Matrix2.js +128 -0
  1334. package/src/math/Matrix3.d.ts +193 -0
  1335. package/src/math/Matrix3.js +628 -0
  1336. package/src/math/Matrix4.d.ts +506 -0
  1337. package/src/math/Matrix4.js +1332 -0
  1338. package/src/math/Plane.d.ts +55 -0
  1339. package/src/math/Plane.js +397 -0
  1340. package/src/math/Quaternion.d.ts +189 -0
  1341. package/src/math/Quaternion.js +908 -0
  1342. package/src/math/Ray.d.ts +60 -0
  1343. package/src/math/Ray.js +705 -0
  1344. package/src/math/Sphere.d.ts +55 -0
  1345. package/src/math/Sphere.js +420 -0
  1346. package/src/math/Spherical.d.ts +27 -0
  1347. package/src/math/Spherical.js +147 -0
  1348. package/src/math/SphericalHarmonics3.d.ts +50 -0
  1349. package/src/math/SphericalHarmonics3.js +341 -0
  1350. package/src/math/Triangle.d.ts +110 -0
  1351. package/src/math/Triangle.js +538 -0
  1352. package/src/math/Vector2.d.ts +321 -0
  1353. package/src/math/Vector2.js +870 -0
  1354. package/src/math/Vector3.d.ts +301 -0
  1355. package/src/math/Vector3.js +1263 -0
  1356. package/src/math/Vector4.d.ts +241 -0
  1357. package/src/math/Vector4.js +1063 -0
  1358. package/src/math/interpolants/BezierInterpolant.d.ts +23 -0
  1359. package/src/math/interpolants/BezierInterpolant.js +119 -0
  1360. package/src/math/interpolants/CubicInterpolant.d.ts +22 -0
  1361. package/src/math/interpolants/CubicInterpolant.js +159 -0
  1362. package/src/math/interpolants/DiscreteInterpolant.d.ts +12 -0
  1363. package/src/math/interpolants/DiscreteInterpolant.js +34 -0
  1364. package/src/math/interpolants/LinearInterpolant.d.ts +11 -0
  1365. package/src/math/interpolants/LinearInterpolant.js +51 -0
  1366. package/src/math/interpolants/QuaternionLinearInterpolant.d.ts +11 -0
  1367. package/src/math/interpolants/QuaternionLinearInterpolant.js +48 -0
  1368. package/src/nodes/Nodes.d.ts +170 -0
  1369. package/src/nodes/Nodes.js +166 -0
  1370. package/src/nodes/TSL.d.ts +183 -0
  1371. package/src/nodes/TSL.js +185 -0
  1372. package/src/nodes/accessors/AccessorsUtils.d.ts +8 -0
  1373. package/src/nodes/accessors/AccessorsUtils.js +53 -0
  1374. package/src/nodes/accessors/Arrays.d.ts +22 -0
  1375. package/src/nodes/accessors/Arrays.js +68 -0
  1376. package/src/nodes/accessors/Batch.d.ts +25 -0
  1377. package/src/nodes/accessors/Batch.js +186 -0
  1378. package/src/nodes/accessors/Bitangent.d.ts +6 -0
  1379. package/src/nodes/accessors/Bitangent.js +82 -0
  1380. package/src/nodes/accessors/BufferAttributeNode.d.ts +247 -0
  1381. package/src/nodes/accessors/BufferAttributeNode.js +472 -0
  1382. package/src/nodes/accessors/BufferNode.d.ts +33 -0
  1383. package/src/nodes/accessors/BufferNode.js +138 -0
  1384. package/src/nodes/accessors/BuiltinNode.d.ts +13 -0
  1385. package/src/nodes/accessors/BuiltinNode.js +69 -0
  1386. package/src/nodes/accessors/Camera.d.ts +16 -0
  1387. package/src/nodes/accessors/Camera.js +410 -0
  1388. package/src/nodes/accessors/ClippingNode.d.ts +19 -0
  1389. package/src/nodes/accessors/ClippingNode.js +266 -0
  1390. package/src/nodes/accessors/CubeTextureNode.d.ts +38 -0
  1391. package/src/nodes/accessors/CubeTextureNode.js +203 -0
  1392. package/src/nodes/accessors/Instance.d.ts +32 -0
  1393. package/src/nodes/accessors/Instance.js +387 -0
  1394. package/src/nodes/accessors/Lights.d.ts +17 -0
  1395. package/src/nodes/accessors/Lights.js +152 -0
  1396. package/src/nodes/accessors/MaterialNode.d.ts +134 -0
  1397. package/src/nodes/accessors/MaterialNode.js +837 -0
  1398. package/src/nodes/accessors/MaterialProperties.d.ts +8 -0
  1399. package/src/nodes/accessors/MaterialProperties.js +57 -0
  1400. package/src/nodes/accessors/MaterialReferenceNode.d.ts +15 -0
  1401. package/src/nodes/accessors/MaterialReferenceNode.js +84 -0
  1402. package/src/nodes/accessors/ModelNode.d.ts +49 -0
  1403. package/src/nodes/accessors/ModelNode.js +260 -0
  1404. package/src/nodes/accessors/ModelViewProjectionNode.d.ts +3 -0
  1405. package/src/nodes/accessors/ModelViewProjectionNode.js +13 -0
  1406. package/src/nodes/accessors/Morph.d.ts +11 -0
  1407. package/src/nodes/accessors/Morph.js +356 -0
  1408. package/src/nodes/accessors/Normal.d.ts +36 -0
  1409. package/src/nodes/accessors/Normal.js +201 -0
  1410. package/src/nodes/accessors/Object3DNode.d.ts +42 -0
  1411. package/src/nodes/accessors/Object3DNode.js +274 -0
  1412. package/src/nodes/accessors/PointUVNode.d.ts +9 -0
  1413. package/src/nodes/accessors/PointUVNode.js +61 -0
  1414. package/src/nodes/accessors/Position.d.ts +11 -0
  1415. package/src/nodes/accessors/Position.js +126 -0
  1416. package/src/nodes/accessors/ReferenceAttributeNode.js +279 -0
  1417. package/src/nodes/accessors/ReferenceBaseNode.d.ts +26 -0
  1418. package/src/nodes/accessors/ReferenceBaseNode.js +294 -0
  1419. package/src/nodes/accessors/ReferenceElementNode.d.ts +15 -0
  1420. package/src/nodes/accessors/ReferenceElementNode.js +72 -0
  1421. package/src/nodes/accessors/ReferenceNode.d.ts +37 -0
  1422. package/src/nodes/accessors/ReferenceNode.js +362 -0
  1423. package/src/nodes/accessors/ReflectVector.d.ts +7 -0
  1424. package/src/nodes/accessors/ReflectVector.js +36 -0
  1425. package/src/nodes/accessors/RendererReferenceNode.d.ts +14 -0
  1426. package/src/nodes/accessors/RendererReferenceNode.js +78 -0
  1427. package/src/nodes/accessors/SceneProperties.d.ts +5 -0
  1428. package/src/nodes/accessors/SceneProperties.js +47 -0
  1429. package/src/nodes/accessors/Skinning.d.ts +23 -0
  1430. package/src/nodes/accessors/Skinning.js +380 -0
  1431. package/src/nodes/accessors/StorageBufferNode.d.ts +82 -0
  1432. package/src/nodes/accessors/StorageBufferNode.js +396 -0
  1433. package/src/nodes/accessors/StorageTexture3DNode.d.ts +17 -0
  1434. package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
  1435. package/src/nodes/accessors/StorageTextureNode.d.ts +47 -0
  1436. package/src/nodes/accessors/StorageTextureNode.js +331 -0
  1437. package/src/nodes/accessors/Tangent.d.ts +6 -0
  1438. package/src/nodes/accessors/Tangent.js +60 -0
  1439. package/src/nodes/accessors/TangentUtils.d.ts +21 -0
  1440. package/src/nodes/accessors/TangentUtils.js +46 -0
  1441. package/src/nodes/accessors/Texture3DNode.d.ts +29 -0
  1442. package/src/nodes/accessors/Texture3DNode.js +196 -0
  1443. package/src/nodes/accessors/TextureBicubic.d.ts +6 -0
  1444. package/src/nodes/accessors/TextureBicubic.js +95 -0
  1445. package/src/nodes/accessors/TextureNode.d.ts +104 -0
  1446. package/src/nodes/accessors/TextureNode.js +1142 -0
  1447. package/src/nodes/accessors/TextureSizeNode.d.ts +17 -0
  1448. package/src/nodes/accessors/TextureSizeNode.js +85 -0
  1449. package/src/nodes/accessors/UV.d.ts +3 -0
  1450. package/src/nodes/accessors/UV.js +11 -0
  1451. package/src/nodes/accessors/UniformArrayNode.d.ts +29 -0
  1452. package/src/nodes/accessors/UniformArrayNode.js +368 -0
  1453. package/src/nodes/accessors/UserDataNode.d.ts +14 -0
  1454. package/src/nodes/accessors/UserDataNode.js +76 -0
  1455. package/src/nodes/accessors/VelocityNode.d.ts +19 -0
  1456. package/src/nodes/accessors/VelocityNode.js +229 -0
  1457. package/src/nodes/accessors/VertexColorNode.d.ts +11 -0
  1458. package/src/nodes/accessors/VertexColorNode.js +109 -0
  1459. package/src/nodes/code/CodeNode.d.ts +22 -0
  1460. package/src/nodes/code/CodeNode.js +187 -0
  1461. package/src/nodes/code/ExpressionNode.d.ts +9 -0
  1462. package/src/nodes/code/ExpressionNode.js +74 -0
  1463. package/src/nodes/code/FunctionCallNode.d.ts +27 -0
  1464. package/src/nodes/code/FunctionCallNode.js +187 -0
  1465. package/src/nodes/code/FunctionNode.d.ts +40 -0
  1466. package/src/nodes/code/FunctionNode.js +180 -0
  1467. package/src/nodes/core/ArrayNode.d.ts +33 -0
  1468. package/src/nodes/core/ArrayNode.js +174 -0
  1469. package/src/nodes/core/AssignNode.d.ts +15 -0
  1470. package/src/nodes/core/AssignNode.js +203 -0
  1471. package/src/nodes/core/AttributeNode.d.ts +21 -0
  1472. package/src/nodes/core/AttributeNode.js +207 -0
  1473. package/src/nodes/core/BypassNode.d.ts +17 -0
  1474. package/src/nodes/core/BypassNode.js +99 -0
  1475. package/src/nodes/core/ConstNode.d.ts +16 -0
  1476. package/src/nodes/core/ConstNode.js +97 -0
  1477. package/src/nodes/core/ContextNode.d.ts +65 -0
  1478. package/src/nodes/core/ContextNode.js +341 -0
  1479. package/src/nodes/core/IndexNode.d.ts +33 -0
  1480. package/src/nodes/core/IndexNode.js +236 -0
  1481. package/src/nodes/core/InputNode.d.ts +23 -0
  1482. package/src/nodes/core/InputNode.js +142 -0
  1483. package/src/nodes/core/InspectorNode.d.ts +15 -0
  1484. package/src/nodes/core/InspectorNode.js +114 -0
  1485. package/src/nodes/core/IsolateNode.d.ts +31 -0
  1486. package/src/nodes/core/IsolateNode.js +141 -0
  1487. package/src/nodes/core/LightingModel.d.ts +33 -0
  1488. package/src/nodes/core/LightingModel.js +77 -0
  1489. package/src/nodes/core/MRTNode.d.ts +38 -0
  1490. package/src/nodes/core/MRTNode.js +243 -0
  1491. package/src/nodes/core/Node.d.ts +622 -0
  1492. package/src/nodes/core/Node.js +1520 -0
  1493. package/src/nodes/core/NodeAttribute.d.ts +47 -0
  1494. package/src/nodes/core/NodeAttribute.js +53 -0
  1495. package/src/nodes/core/NodeBuilder.d.ts +25 -0
  1496. package/src/nodes/core/NodeBuilder.js +3918 -0
  1497. package/src/nodes/core/NodeCache.d.ts +50 -0
  1498. package/src/nodes/core/NodeCache.js +75 -0
  1499. package/src/nodes/core/NodeCode.d.ts +4 -0
  1500. package/src/nodes/core/NodeCode.js +46 -0
  1501. package/src/nodes/core/NodeError.d.ts +9 -0
  1502. package/src/nodes/core/NodeError.js +28 -0
  1503. package/src/nodes/core/NodeFrame.d.ts +36 -0
  1504. package/src/nodes/core/NodeFrame.js +322 -0
  1505. package/src/nodes/core/NodeFunction.d.ts +13 -0
  1506. package/src/nodes/core/NodeFunction.js +69 -0
  1507. package/src/nodes/core/NodeFunctionInput.d.ts +7 -0
  1508. package/src/nodes/core/NodeFunctionInput.js +61 -0
  1509. package/src/nodes/core/NodeParser.d.ts +18 -0
  1510. package/src/nodes/core/NodeParser.js +23 -0
  1511. package/src/nodes/core/NodeUniform.d.ts +66 -0
  1512. package/src/nodes/core/NodeUniform.js +91 -0
  1513. package/src/nodes/core/NodeUtils.d.ts +26 -0
  1514. package/src/nodes/core/NodeUtils.js +521 -0
  1515. package/src/nodes/core/NodeVar.d.ts +51 -0
  1516. package/src/nodes/core/NodeVar.js +69 -0
  1517. package/src/nodes/core/NodeVarying.d.ts +59 -0
  1518. package/src/nodes/core/NodeVarying.js +63 -0
  1519. package/src/nodes/core/OutputStructNode.d.ts +11 -0
  1520. package/src/nodes/core/OutputStructNode.js +111 -0
  1521. package/src/nodes/core/OverrideContextNode.d.ts +92 -0
  1522. package/src/nodes/core/OverrideContextNode.js +154 -0
  1523. package/src/nodes/core/ParameterNode.d.ts +18 -0
  1524. package/src/nodes/core/ParameterNode.js +94 -0
  1525. package/src/nodes/core/PropertyNode.d.ts +66 -0
  1526. package/src/nodes/core/PropertyNode.js +435 -0
  1527. package/src/nodes/core/StackNode.d.ts +25 -0
  1528. package/src/nodes/core/StackNode.js +459 -0
  1529. package/src/nodes/core/StackTrace.d.ts +9 -0
  1530. package/src/nodes/core/StackTrace.js +139 -0
  1531. package/src/nodes/core/StructNode.d.ts +37 -0
  1532. package/src/nodes/core/StructNode.js +139 -0
  1533. package/src/nodes/core/StructType.d.ts +10 -0
  1534. package/src/nodes/core/StructType.js +13 -0
  1535. package/src/nodes/core/StructTypeNode.d.ts +57 -0
  1536. package/src/nodes/core/StructTypeNode.js +154 -0
  1537. package/src/nodes/core/SubBuildNode.d.ts +14 -0
  1538. package/src/nodes/core/SubBuildNode.js +97 -0
  1539. package/src/nodes/core/TempNode.d.ts +16 -0
  1540. package/src/nodes/core/TempNode.js +63 -0
  1541. package/src/nodes/core/UniformGroupNode.d.ts +22 -0
  1542. package/src/nodes/core/UniformGroupNode.js +174 -0
  1543. package/src/nodes/core/UniformNode.d.ts +162 -0
  1544. package/src/nodes/core/UniformNode.js +273 -0
  1545. package/src/nodes/core/VarNode.d.ts +45 -0
  1546. package/src/nodes/core/VarNode.js +282 -0
  1547. package/src/nodes/core/VaryingNode.d.ts +36 -0
  1548. package/src/nodes/core/VaryingNode.js +251 -0
  1549. package/src/nodes/core/constants.d.ts +72 -0
  1550. package/src/nodes/core/constants.js +68 -0
  1551. package/src/nodes/display/BlendModes.d.ts +76 -0
  1552. package/src/nodes/display/BlendModes.js +96 -0
  1553. package/src/nodes/display/BumpMapNode.d.ts +16 -0
  1554. package/src/nodes/display/BumpMapNode.js +132 -0
  1555. package/src/nodes/display/ColorAdjustment.d.ts +54 -0
  1556. package/src/nodes/display/ColorAdjustment.js +171 -0
  1557. package/src/nodes/display/ColorSpaceFunctions.d.ts +5 -0
  1558. package/src/nodes/display/ColorSpaceFunctions.js +42 -0
  1559. package/src/nodes/display/ColorSpaceNode.d.ts +54 -0
  1560. package/src/nodes/display/ColorSpaceNode.js +164 -0
  1561. package/src/nodes/display/FrontFacingNode.d.ts +71 -0
  1562. package/src/nodes/display/FrontFacingNode.js +137 -0
  1563. package/src/nodes/display/NormalMapNode.d.ts +18 -0
  1564. package/src/nodes/display/NormalMapNode.js +153 -0
  1565. package/src/nodes/display/PassNode.d.ts +124 -0
  1566. package/src/nodes/display/PassNode.js +1167 -0
  1567. package/src/nodes/display/PremultiplyAlphaFunctions.d.ts +37 -0
  1568. package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
  1569. package/src/nodes/display/RenderOutputNode.d.ts +29 -0
  1570. package/src/nodes/display/RenderOutputNode.js +176 -0
  1571. package/src/nodes/display/ScreenNode.d.ts +44 -0
  1572. package/src/nodes/display/ScreenNode.js +255 -0
  1573. package/src/nodes/display/ToneMappingFunctions.d.ts +13 -0
  1574. package/src/nodes/display/ToneMappingFunctions.js +200 -0
  1575. package/src/nodes/display/ToneMappingNode.d.ts +29 -0
  1576. package/src/nodes/display/ToneMappingNode.js +147 -0
  1577. package/src/nodes/display/ToonOutlinePassNode.d.ts +23 -0
  1578. package/src/nodes/display/ToonOutlinePassNode.js +255 -0
  1579. package/src/nodes/display/ViewportDepthNode.d.ts +41 -0
  1580. package/src/nodes/display/ViewportDepthNode.js +372 -0
  1581. package/src/nodes/display/ViewportDepthTextureNode.d.ts +14 -0
  1582. package/src/nodes/display/ViewportDepthTextureNode.js +63 -0
  1583. package/src/nodes/display/ViewportSharedTextureNode.d.ts +16 -0
  1584. package/src/nodes/display/ViewportSharedTextureNode.js +73 -0
  1585. package/src/nodes/display/ViewportTextureNode.d.ts +33 -0
  1586. package/src/nodes/display/ViewportTextureNode.js +256 -0
  1587. package/src/nodes/fog/Fog.d.ts +27 -0
  1588. package/src/nodes/fog/Fog.js +97 -0
  1589. package/src/nodes/functions/BSDF/BRDF_EON.js +65 -0
  1590. package/src/nodes/functions/BSDF/BRDF_GGX.d.ts +15 -0
  1591. package/src/nodes/functions/BSDF/BRDF_GGX.js +57 -0
  1592. package/src/nodes/functions/BSDF/BRDF_Lambert.d.ts +6 -0
  1593. package/src/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
  1594. package/src/nodes/functions/BSDF/BRDF_Sheen.d.ts +6 -0
  1595. package/src/nodes/functions/BSDF/BRDF_Sheen.js +43 -0
  1596. package/src/nodes/functions/BSDF/DFGLUT.d.ts +13 -0
  1597. package/src/nodes/functions/BSDF/DFGLUT.js +57 -0
  1598. package/src/nodes/functions/BSDF/D_GGX.d.ts +9 -0
  1599. package/src/nodes/functions/BSDF/D_GGX.js +16 -0
  1600. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.d.ts +9 -0
  1601. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +25 -0
  1602. package/src/nodes/functions/BSDF/EnvironmentBRDF.d.ts +8 -0
  1603. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +13 -0
  1604. package/src/nodes/functions/BSDF/F_Schlick.d.ts +6 -0
  1605. package/src/nodes/functions/BSDF/F_Schlick.js +16 -0
  1606. package/src/nodes/functions/BSDF/LTC.d.ts +13 -0
  1607. package/src/nodes/functions/BSDF/LTC.js +148 -0
  1608. package/src/nodes/functions/BSDF/Schlick_to_F0.d.ts +9 -0
  1609. package/src/nodes/functions/BSDF/Schlick_to_F0.js +13 -0
  1610. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.d.ts +10 -0
  1611. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +18 -0
  1612. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.d.ts +15 -0
  1613. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +26 -0
  1614. package/src/nodes/functions/BasicLightingModel.d.ts +7 -0
  1615. package/src/nodes/functions/BasicLightingModel.js +100 -0
  1616. package/src/nodes/functions/PhongLightingModel.d.ts +7 -0
  1617. package/src/nodes/functions/PhongLightingModel.js +99 -0
  1618. package/src/nodes/functions/PhysicalLightingModel.d.ts +40 -0
  1619. package/src/nodes/functions/PhysicalLightingModel.js +969 -0
  1620. package/src/nodes/functions/ShadowMaskModel.d.ts +8 -0
  1621. package/src/nodes/functions/ShadowMaskModel.js +58 -0
  1622. package/src/nodes/functions/ToonLightingModel.d.ts +4 -0
  1623. package/src/nodes/functions/ToonLightingModel.js +70 -0
  1624. package/src/nodes/functions/VolumetricLightingModel.d.ts +6 -0
  1625. package/src/nodes/functions/VolumetricLightingModel.js +216 -0
  1626. package/src/nodes/functions/material/getAlphaHashThreshold.d.ts +5 -0
  1627. package/src/nodes/functions/material/getAlphaHashThreshold.js +62 -0
  1628. package/src/nodes/functions/material/getGeometryRoughness.d.ts +5 -0
  1629. package/src/nodes/functions/material/getGeometryRoughness.js +19 -0
  1630. package/src/nodes/functions/material/getParallaxCorrectNormal.d.ts +9 -0
  1631. package/src/nodes/functions/material/getParallaxCorrectNormal.js +36 -0
  1632. package/src/nodes/functions/material/getRoughness.d.ts +6 -0
  1633. package/src/nodes/functions/material/getRoughness.js +20 -0
  1634. package/src/nodes/functions/material/getShIrradianceAt.d.ts +5 -0
  1635. package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  1636. package/src/nodes/geometry/RangeNode.d.ts +62 -0
  1637. package/src/nodes/geometry/RangeNode.js +193 -0
  1638. package/src/nodes/gpgpu/AtomicFunctionNode.d.ts +91 -0
  1639. package/src/nodes/gpgpu/AtomicFunctionNode.js +330 -0
  1640. package/src/nodes/gpgpu/BarrierNode.d.ts +15 -0
  1641. package/src/nodes/gpgpu/BarrierNode.js +113 -0
  1642. package/src/nodes/gpgpu/ComputeBuiltinNode.d.ts +22 -0
  1643. package/src/nodes/gpgpu/ComputeBuiltinNode.js +233 -0
  1644. package/src/nodes/gpgpu/ComputeNode.d.ts +50 -0
  1645. package/src/nodes/gpgpu/ComputeNode.js +319 -0
  1646. package/src/nodes/gpgpu/SubgroupFunctionNode.d.ts +99 -0
  1647. package/src/nodes/gpgpu/SubgroupFunctionNode.js +592 -0
  1648. package/src/nodes/gpgpu/WorkgroupInfoNode.d.ts +24 -0
  1649. package/src/nodes/gpgpu/WorkgroupInfoNode.js +278 -0
  1650. package/src/nodes/lighting/AONode.d.ts +8 -0
  1651. package/src/nodes/lighting/AONode.js +45 -0
  1652. package/src/nodes/lighting/AmbientLightNode.d.ts +8 -0
  1653. package/src/nodes/lighting/AmbientLightNode.js +35 -0
  1654. package/src/nodes/lighting/AnalyticLightNode.d.ts +32 -0
  1655. package/src/nodes/lighting/AnalyticLightNode.js +302 -0
  1656. package/src/nodes/lighting/BasicEnvironmentNode.d.ts +10 -0
  1657. package/src/nodes/lighting/BasicEnvironmentNode.js +53 -0
  1658. package/src/nodes/lighting/BasicLightMapNode.d.ts +8 -0
  1659. package/src/nodes/lighting/BasicLightMapNode.js +49 -0
  1660. package/src/nodes/lighting/DirectionalLightNode.d.ts +8 -0
  1661. package/src/nodes/lighting/DirectionalLightNode.js +39 -0
  1662. package/src/nodes/lighting/EnvironmentNode.d.ts +8 -0
  1663. package/src/nodes/lighting/EnvironmentNode.js +264 -0
  1664. package/src/nodes/lighting/HemisphereLightNode.d.ts +14 -0
  1665. package/src/nodes/lighting/HemisphereLightNode.js +87 -0
  1666. package/src/nodes/lighting/IESSpotLightNode.d.ts +5 -0
  1667. package/src/nodes/lighting/IESSpotLightNode.js +102 -0
  1668. package/src/nodes/lighting/IrradianceNode.d.ts +8 -0
  1669. package/src/nodes/lighting/IrradianceNode.js +44 -0
  1670. package/src/nodes/lighting/LightProbeNode.d.ts +11 -0
  1671. package/src/nodes/lighting/LightProbeNode.js +74 -0
  1672. package/src/nodes/lighting/LightUtils.d.ts +8 -0
  1673. package/src/nodes/lighting/LightUtils.js +25 -0
  1674. package/src/nodes/lighting/LightingContextNode.d.ts +41 -0
  1675. package/src/nodes/lighting/LightingContextNode.js +123 -0
  1676. package/src/nodes/lighting/LightingNode.d.ts +7 -0
  1677. package/src/nodes/lighting/LightingNode.js +42 -0
  1678. package/src/nodes/lighting/LightsNode.d.ts +48 -0
  1679. package/src/nodes/lighting/LightsNode.js +495 -0
  1680. package/src/nodes/lighting/PointLightNode.d.ts +23 -0
  1681. package/src/nodes/lighting/PointLightNode.js +102 -0
  1682. package/src/nodes/lighting/PointShadowNode.d.ts +25 -0
  1683. package/src/nodes/lighting/PointShadowNode.js +374 -0
  1684. package/src/nodes/lighting/ProjectorLightNode.d.ts +5 -0
  1685. package/src/nodes/lighting/ProjectorLightNode.js +91 -0
  1686. package/src/nodes/lighting/RectAreaLightNode.d.ts +21 -0
  1687. package/src/nodes/lighting/RectAreaLightNode.js +132 -0
  1688. package/src/nodes/lighting/ShadowBaseNode.d.ts +47 -0
  1689. package/src/nodes/lighting/ShadowBaseNode.js +230 -0
  1690. package/src/nodes/lighting/ShadowFilterNode.d.ts +17 -0
  1691. package/src/nodes/lighting/ShadowFilterNode.js +152 -0
  1692. package/src/nodes/lighting/ShadowNode.d.ts +11 -0
  1693. package/src/nodes/lighting/ShadowNode.js +843 -0
  1694. package/src/nodes/lighting/SpotLightNode.d.ts +22 -0
  1695. package/src/nodes/lighting/SpotLightNode.js +168 -0
  1696. package/src/nodes/materialx/DISCLAIMER.md +199 -0
  1697. package/src/nodes/materialx/MaterialXColor.d.ts +5 -0
  1698. package/src/nodes/materialx/MaterialXColor.js +112 -0
  1699. package/src/nodes/materialx/MaterialXColorTransform.d.ts +3 -0
  1700. package/src/nodes/materialx/MaterialXColorTransform.js +14 -0
  1701. package/src/nodes/materialx/MaterialXCore.d.ts +5 -0
  1702. package/src/nodes/materialx/MaterialXCore.js +37 -0
  1703. package/src/nodes/materialx/MaterialXNodes.d.ts +206 -0
  1704. package/src/nodes/materialx/MaterialXNodes.js +186 -0
  1705. package/src/nodes/materialx/MaterialXNoise.d.ts +415 -0
  1706. package/src/nodes/materialx/MaterialXNoise.js +1461 -0
  1707. package/src/nodes/math/BitcastNode.d.ts +24 -0
  1708. package/src/nodes/math/BitcastNode.js +156 -0
  1709. package/src/nodes/math/BitcountNode.d.ts +23 -0
  1710. package/src/nodes/math/BitcountNode.js +425 -0
  1711. package/src/nodes/math/ConditionalNode.d.ts +51 -0
  1712. package/src/nodes/math/ConditionalNode.js +315 -0
  1713. package/src/nodes/math/Hash.d.ts +3 -0
  1714. package/src/nodes/math/Hash.js +21 -0
  1715. package/src/nodes/math/MathNode.d.ts +895 -0
  1716. package/src/nodes/math/MathNode.js +1252 -0
  1717. package/src/nodes/math/MathUtils.d.ts +10 -0
  1718. package/src/nodes/math/MathUtils.js +65 -0
  1719. package/src/nodes/math/OperatorNode.d.ts +709 -0
  1720. package/src/nodes/math/OperatorNode.js +735 -0
  1721. package/src/nodes/math/PackFloatNode.d.ts +24 -0
  1722. package/src/nodes/math/PackFloatNode.js +126 -0
  1723. package/src/nodes/math/Packed4x8IntegerNode.d.ts +49 -0
  1724. package/src/nodes/math/Packed4x8IntegerNode.js +401 -0
  1725. package/src/nodes/math/TriNoise3D.d.ts +11 -0
  1726. package/src/nodes/math/TriNoise3D.js +51 -0
  1727. package/src/nodes/math/UnpackFloatNode.d.ts +21 -0
  1728. package/src/nodes/math/UnpackFloatNode.js +124 -0
  1729. package/src/nodes/parsers/GLSLNodeFunction.d.ts +9 -0
  1730. package/src/nodes/parsers/GLSLNodeFunction.js +168 -0
  1731. package/src/nodes/parsers/GLSLNodeParser.d.ts +8 -0
  1732. package/src/nodes/parsers/GLSLNodeParser.js +25 -0
  1733. package/src/nodes/pmrem/PMREMNode.d.ts +21 -0
  1734. package/src/nodes/pmrem/PMREMNode.js +391 -0
  1735. package/src/nodes/pmrem/PMREMUtils.d.ts +21 -0
  1736. package/src/nodes/pmrem/PMREMUtils.js +190 -0
  1737. package/src/nodes/procedural/Checker.d.ts +3 -0
  1738. package/src/nodes/procedural/Checker.js +22 -0
  1739. package/src/nodes/shapes/Shapes.d.ts +3 -0
  1740. package/src/nodes/shapes/Shapes.js +33 -0
  1741. package/src/nodes/tsl/TSLBase.d.ts +30 -0
  1742. package/src/nodes/tsl/TSLBase.js +36 -0
  1743. package/src/nodes/tsl/TSLCore.d.ts +2420 -0
  1744. package/src/nodes/tsl/TSLCore.js +1390 -0
  1745. package/src/nodes/utils/ArrayElementNode.d.ts +15 -0
  1746. package/src/nodes/utils/ArrayElementNode.js +108 -0
  1747. package/src/nodes/utils/ConvertNode.d.ts +14 -0
  1748. package/src/nodes/utils/ConvertNode.js +100 -0
  1749. package/src/nodes/utils/CubeMapNode.d.ts +12 -0
  1750. package/src/nodes/utils/CubeMapNode.js +237 -0
  1751. package/src/nodes/utils/DebugNode.d.ts +22 -0
  1752. package/src/nodes/utils/DebugNode.js +83 -0
  1753. package/src/nodes/utils/Discard.d.ts +10 -0
  1754. package/src/nodes/utils/Discard.js +24 -0
  1755. package/src/nodes/utils/EquirectUV.d.ts +33 -0
  1756. package/src/nodes/utils/EquirectUV.js +52 -0
  1757. package/src/nodes/utils/EventNode.d.ts +41 -0
  1758. package/src/nodes/utils/EventNode.js +229 -0
  1759. package/src/nodes/utils/FlipNode.d.ts +11 -0
  1760. package/src/nodes/utils/FlipNode.js +106 -0
  1761. package/src/nodes/utils/FunctionOverloadingNode.d.ts +12 -0
  1762. package/src/nodes/utils/FunctionOverloadingNode.js +176 -0
  1763. package/src/nodes/utils/JoinNode.d.ts +14 -0
  1764. package/src/nodes/utils/JoinNode.js +117 -0
  1765. package/src/nodes/utils/LoopNode.d.ts +43 -0
  1766. package/src/nodes/utils/LoopNode.js +395 -0
  1767. package/src/nodes/utils/MatcapUV.d.ts +3 -0
  1768. package/src/nodes/utils/MatcapUV.js +22 -0
  1769. package/src/nodes/utils/MaxMipLevelNode.d.ts +13 -0
  1770. package/src/nodes/utils/MaxMipLevelNode.js +103 -0
  1771. package/src/nodes/utils/MemberNode.d.ts +11 -0
  1772. package/src/nodes/utils/MemberNode.js +138 -0
  1773. package/src/nodes/utils/Oscillators.d.ts +6 -0
  1774. package/src/nodes/utils/Oscillators.js +41 -0
  1775. package/src/nodes/utils/Packing.d.ts +52 -0
  1776. package/src/nodes/utils/Packing.js +64 -0
  1777. package/src/nodes/utils/PostProcessingUtils.d.ts +56 -0
  1778. package/src/nodes/utils/PostProcessingUtils.js +170 -0
  1779. package/src/nodes/utils/RTTNode.d.ts +46 -0
  1780. package/src/nodes/utils/RTTNode.js +372 -0
  1781. package/src/nodes/utils/ReflectorNode.d.ts +61 -0
  1782. package/src/nodes/utils/ReflectorNode.js +658 -0
  1783. package/src/nodes/utils/Remap.d.ts +223 -0
  1784. package/src/nodes/utils/Remap.js +48 -0
  1785. package/src/nodes/utils/RotateNode.d.ts +26 -0
  1786. package/src/nodes/utils/RotateNode.js +180 -0
  1787. package/src/nodes/utils/SampleNode.d.ts +26 -0
  1788. package/src/nodes/utils/SampleNode.js +97 -0
  1789. package/src/nodes/utils/SetNode.d.ts +11 -0
  1790. package/src/nodes/utils/SetNode.js +108 -0
  1791. package/src/nodes/utils/SplitNode.d.ts +14 -0
  1792. package/src/nodes/utils/SplitNode.js +185 -0
  1793. package/src/nodes/utils/SpriteSheetUV.d.ts +7 -0
  1794. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  1795. package/src/nodes/utils/SpriteUtils.d.ts +5 -0
  1796. package/src/nodes/utils/SpriteUtils.js +98 -0
  1797. package/src/nodes/utils/StorageArrayElementNode.d.ts +28 -0
  1798. package/src/nodes/utils/StorageArrayElementNode.js +143 -0
  1799. package/src/nodes/utils/Timer.d.ts +5 -0
  1800. package/src/nodes/utils/Timer.js +26 -0
  1801. package/src/nodes/utils/TriplanarTextures.d.ts +19 -0
  1802. package/src/nodes/utils/TriplanarTextures.js +65 -0
  1803. package/src/nodes/utils/UVUtils.d.ts +19 -0
  1804. package/src/nodes/utils/UVUtils.js +67 -0
  1805. package/src/nodes/utils/ViewportUtils.d.ts +3 -0
  1806. package/src/nodes/utils/ViewportUtils.js +26 -0
  1807. package/src/objects/BatchedMesh.d.ts +280 -0
  1808. package/src/objects/BatchedMesh.js +1827 -0
  1809. package/src/objects/Bone.d.ts +36 -0
  1810. package/src/objects/Bone.js +41 -0
  1811. package/src/objects/ClippingGroup.d.ts +41 -0
  1812. package/src/objects/ClippingGroup.js +68 -0
  1813. package/src/objects/Group.d.ts +37 -0
  1814. package/src/objects/Group.js +41 -0
  1815. package/src/objects/InstancedMesh.d.ts +175 -0
  1816. package/src/objects/InstancedMesh.js +419 -0
  1817. package/src/objects/LOD.d.ts +112 -0
  1818. package/src/objects/LOD.js +329 -0
  1819. package/src/objects/Line.d.ts +96 -0
  1820. package/src/objects/Line.js +361 -0
  1821. package/src/objects/LineLoop.d.ts +40 -0
  1822. package/src/objects/LineLoop.js +37 -0
  1823. package/src/objects/LineSegments.d.ts +41 -0
  1824. package/src/objects/LineSegments.js +74 -0
  1825. package/src/objects/Mesh.d.ts +111 -0
  1826. package/src/objects/Mesh.js +516 -0
  1827. package/src/objects/Points.d.ts +75 -0
  1828. package/src/objects/Points.js +260 -0
  1829. package/src/objects/Skeleton.d.ts +120 -0
  1830. package/src/objects/Skeleton.js +409 -0
  1831. package/src/objects/SkinnedMesh.d.ts +163 -0
  1832. package/src/objects/SkinnedMesh.js +370 -0
  1833. package/src/objects/Sprite.d.ts +82 -0
  1834. package/src/objects/Sprite.js +267 -0
  1835. package/src/renderers/WebGL3DRenderTarget.d.ts +29 -0
  1836. package/src/renderers/WebGL3DRenderTarget.js +48 -0
  1837. package/src/renderers/WebGLArrayRenderTarget.d.ts +29 -0
  1838. package/src/renderers/WebGLArrayRenderTarget.js +48 -0
  1839. package/src/renderers/WebGLCubeRenderTarget.d.ts +18 -0
  1840. package/src/renderers/WebGLCubeRenderTarget.js +182 -0
  1841. package/src/renderers/WebGLRenderTarget.d.ts +8 -0
  1842. package/src/renderers/WebGLRenderTarget.js +34 -0
  1843. package/src/renderers/WebGLRenderer.d.ts +489 -0
  1844. package/src/renderers/WebGLRenderer.js +3803 -0
  1845. package/src/renderers/common/Animation.js +173 -0
  1846. package/src/renderers/common/Attributes.js +197 -0
  1847. package/src/renderers/common/Backend.d.ts +29 -0
  1848. package/src/renderers/common/Backend.js +916 -0
  1849. package/src/renderers/common/Background.js +225 -0
  1850. package/src/renderers/common/BindGroup.js +56 -0
  1851. package/src/renderers/common/Binding.js +60 -0
  1852. package/src/renderers/common/Bindings.js +641 -0
  1853. package/src/renderers/common/BlendMode.d.ts +22 -0
  1854. package/src/renderers/common/BlendMode.js +143 -0
  1855. package/src/renderers/common/Buffer.js +136 -0
  1856. package/src/renderers/common/BufferUtils.d.ts +28 -0
  1857. package/src/renderers/common/BufferUtils.js +58 -0
  1858. package/src/renderers/common/BundleGroup.d.ts +46 -0
  1859. package/src/renderers/common/BundleGroup.js +87 -0
  1860. package/src/renderers/common/CanvasTarget.d.ts +158 -0
  1861. package/src/renderers/common/CanvasTarget.js +341 -0
  1862. package/src/renderers/common/CapabilityTier.js +18 -0
  1863. package/src/renderers/common/ChainMap.js +122 -0
  1864. package/src/renderers/common/ClippingContext.d.ts +134 -0
  1865. package/src/renderers/common/ClippingContext.js +291 -0
  1866. package/src/renderers/common/Color4.d.ts +53 -0
  1867. package/src/renderers/common/Color4.js +86 -0
  1868. package/src/renderers/common/ComputePipeline.js +57 -0
  1869. package/src/renderers/common/Constants.d.ts +9 -0
  1870. package/src/renderers/common/Constants.js +10 -0
  1871. package/src/renderers/common/CubeRenderTarget.d.ts +47 -0
  1872. package/src/renderers/common/CubeRenderTarget.js +147 -0
  1873. package/src/renderers/common/DataMap.js +90 -0
  1874. package/src/renderers/common/DirectRenderPipeline.d.ts +20 -0
  1875. package/src/renderers/common/DirectRenderPipeline.js +237 -0
  1876. package/src/renderers/common/GPUInstanceCuller.d.ts +43 -0
  1877. package/src/renderers/common/GPUInstanceCuller.js +372 -0
  1878. package/src/renderers/common/GPUTimings.js +66 -0
  1879. package/src/renderers/common/Geometries.js +523 -0
  1880. package/src/renderers/common/IndirectStorageBufferAttribute.d.ts +10 -0
  1881. package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
  1882. package/src/renderers/common/Info.d.ts +194 -0
  1883. package/src/renderers/common/Info.js +542 -0
  1884. package/src/renderers/common/InspectorBase.d.ts +129 -0
  1885. package/src/renderers/common/InspectorBase.js +180 -0
  1886. package/src/renderers/common/Lighting.d.ts +55 -0
  1887. package/src/renderers/common/Lighting.js +171 -0
  1888. package/src/renderers/common/Pipeline.js +35 -0
  1889. package/src/renderers/common/Pipelines.js +514 -0
  1890. package/src/renderers/common/PostProcessing.d.ts +21 -0
  1891. package/src/renderers/common/PostProcessing.js +28 -0
  1892. package/src/renderers/common/ProgrammableStage.js +62 -0
  1893. package/src/renderers/common/QuadMesh.d.ts +19 -0
  1894. package/src/renderers/common/QuadMesh.js +126 -0
  1895. package/src/renderers/common/ReadbackBuffer.d.ts +63 -0
  1896. package/src/renderers/common/ReadbackBuffer.js +78 -0
  1897. package/src/renderers/common/RenderBundle.js +26 -0
  1898. package/src/renderers/common/RenderBundles.js +71 -0
  1899. package/src/renderers/common/RenderContext.js +310 -0
  1900. package/src/renderers/common/RenderContexts.js +109 -0
  1901. package/src/renderers/common/RenderList.js +475 -0
  1902. package/src/renderers/common/RenderLists.js +125 -0
  1903. package/src/renderers/common/RenderObject.js +1065 -0
  1904. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  1905. package/src/renderers/common/RenderObjects.js +263 -0
  1906. package/src/renderers/common/RenderPipeline.d.ts +26 -0
  1907. package/src/renderers/common/RenderPipeline.js +263 -0
  1908. package/src/renderers/common/Renderer.d.ts +1209 -0
  1909. package/src/renderers/common/Renderer.js +4357 -0
  1910. package/src/renderers/common/RendererUtils.d.ts +77 -0
  1911. package/src/renderers/common/RendererUtils.js +215 -0
  1912. package/src/renderers/common/SampledTexture.js +152 -0
  1913. package/src/renderers/common/Sampler.js +133 -0
  1914. package/src/renderers/common/StandardDrawingPipeline.js +343 -0
  1915. package/src/renderers/common/Storage3DTexture.d.ts +42 -0
  1916. package/src/renderers/common/Storage3DTexture.js +127 -0
  1917. package/src/renderers/common/StorageArrayTexture.d.ts +31 -0
  1918. package/src/renderers/common/StorageArrayTexture.js +94 -0
  1919. package/src/renderers/common/StorageBuffer.js +53 -0
  1920. package/src/renderers/common/StorageBufferAttribute.d.ts +7 -0
  1921. package/src/renderers/common/StorageBufferAttribute.js +46 -0
  1922. package/src/renderers/common/StorageInstancedBufferAttribute.d.ts +8 -0
  1923. package/src/renderers/common/StorageInstancedBufferAttribute.js +46 -0
  1924. package/src/renderers/common/StorageTexture.d.ts +7 -0
  1925. package/src/renderers/common/StorageTexture.js +77 -0
  1926. package/src/renderers/common/Textures.js +763 -0
  1927. package/src/renderers/common/TimestampQueryPool.d.ts +120 -0
  1928. package/src/renderers/common/TimestampQueryPool.js +173 -0
  1929. package/src/renderers/common/Uniform.js +375 -0
  1930. package/src/renderers/common/UniformBuffer.js +34 -0
  1931. package/src/renderers/common/UniformsGroup.js +589 -0
  1932. package/src/renderers/common/XRManager.d.ts +293 -0
  1933. package/src/renderers/common/XRManager.js +1928 -0
  1934. package/src/renderers/common/XRRenderTarget.js +91 -0
  1935. package/src/renderers/common/extras/PMREMGenerator.d.ts +52 -0
  1936. package/src/renderers/common/extras/PMREMGenerator.js +673 -0
  1937. package/src/renderers/common/nodes/NodeBuilderState.js +162 -0
  1938. package/src/renderers/common/nodes/NodeLibrary.d.ts +129 -0
  1939. package/src/renderers/common/nodes/NodeLibrary.js +172 -0
  1940. package/src/renderers/common/nodes/NodeManager.js +1219 -0
  1941. package/src/renderers/common/nodes/NodeSampledTexture.js +154 -0
  1942. package/src/renderers/common/nodes/NodeSampler.js +76 -0
  1943. package/src/renderers/common/nodes/NodeStorageBuffer.js +74 -0
  1944. package/src/renderers/common/nodes/NodeUniform.js +418 -0
  1945. package/src/renderers/common/nodes/NodeUniformBuffer.js +107 -0
  1946. package/src/renderers/common/nodes/NodeUniformsGroup.js +51 -0
  1947. package/src/renderers/shaders/DFGLUTData.js +50 -0
  1948. package/src/renderers/shaders/ShaderChunk/alphahash_fragment.glsl.js +7 -0
  1949. package/src/renderers/shaders/ShaderChunk/alphahash_pars_fragment.glsl.js +68 -0
  1950. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +7 -0
  1951. package/src/renderers/shaders/ShaderChunk/alphamap_pars_fragment.glsl.js +7 -0
  1952. package/src/renderers/shaders/ShaderChunk/alphatest_fragment.glsl.js +16 -0
  1953. package/src/renderers/shaders/ShaderChunk/alphatest_pars_fragment.glsl.js +5 -0
  1954. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +26 -0
  1955. package/src/renderers/shaders/ShaderChunk/aomap_pars_fragment.glsl.js +8 -0
  1956. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +49 -0
  1957. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +5 -0
  1958. package/src/renderers/shaders/ShaderChunk/begin_vertex.glsl.js +9 -0
  1959. package/src/renderers/shaders/ShaderChunk/beginnormal_vertex.glsl.js +9 -0
  1960. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +33 -0
  1961. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +43 -0
  1962. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_begin.glsl.js +7 -0
  1963. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +10 -0
  1964. package/src/renderers/shaders/ShaderChunk/clearcoat_pars_fragment.glsl.js +21 -0
  1965. package/src/renderers/shaders/ShaderChunk/clipping_planes_fragment.glsl.js +78 -0
  1966. package/src/renderers/shaders/ShaderChunk/clipping_planes_pars_fragment.glsl.js +9 -0
  1967. package/src/renderers/shaders/ShaderChunk/clipping_planes_pars_vertex.glsl.js +7 -0
  1968. package/src/renderers/shaders/ShaderChunk/clipping_planes_vertex.glsl.js +7 -0
  1969. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +7 -0
  1970. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +7 -0
  1971. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +7 -0
  1972. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +29 -0
  1973. package/src/renderers/shaders/ShaderChunk/colorspace_fragment.glsl.js +3 -0
  1974. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +15 -0
  1975. package/src/renderers/shaders/ShaderChunk/common.glsl.js +134 -0
  1976. package/src/renderers/shaders/ShaderChunk/default_fragment.glsl.js +5 -0
  1977. package/src/renderers/shaders/ShaderChunk/default_vertex.glsl.js +5 -0
  1978. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +59 -0
  1979. package/src/renderers/shaders/ShaderChunk/displacementmap_pars_vertex.glsl.js +9 -0
  1980. package/src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl.js +7 -0
  1981. package/src/renderers/shaders/ShaderChunk/dithering_fragment.glsl.js +7 -0
  1982. package/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +20 -0
  1983. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +17 -0
  1984. package/src/renderers/shaders/ShaderChunk/emissivemap_pars_fragment.glsl.js +7 -0
  1985. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +23 -0
  1986. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +58 -0
  1987. package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +21 -0
  1988. package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +22 -0
  1989. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +117 -0
  1990. package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +37 -0
  1991. package/src/renderers/shaders/ShaderChunk/fog_fragment.glsl.js +17 -0
  1992. package/src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl.js +19 -0
  1993. package/src/renderers/shaders/ShaderChunk/fog_pars_vertex.glsl.js +7 -0
  1994. package/src/renderers/shaders/ShaderChunk/fog_vertex.glsl.js +7 -0
  1995. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +27 -0
  1996. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +120 -0
  1997. package/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -0
  1998. package/src/renderers/shaders/ShaderChunk/lightmap_pars_fragment.glsl.js +8 -0
  1999. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +92 -0
  2000. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +281 -0
  2001. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +19 -0
  2002. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +62 -0
  2003. package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
  2004. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +28 -0
  2005. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +236 -0
  2006. package/src/renderers/shaders/ShaderChunk/lights_phong_fragment.glsl.js +7 -0
  2007. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +32 -0
  2008. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +183 -0
  2009. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +757 -0
  2010. package/src/renderers/shaders/ShaderChunk/lights_toon_fragment.glsl.js +4 -0
  2011. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +26 -0
  2012. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +9 -0
  2013. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +9 -0
  2014. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +8 -0
  2015. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +8 -0
  2016. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +17 -0
  2017. package/src/renderers/shaders/ShaderChunk/map_pars_fragment.glsl.js +7 -0
  2018. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +27 -0
  2019. package/src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl.js +27 -0
  2020. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +12 -0
  2021. package/src/renderers/shaders/ShaderChunk/metalnessmap_pars_fragment.glsl.js +7 -0
  2022. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +33 -0
  2023. package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +14 -0
  2024. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +16 -0
  2025. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +26 -0
  2026. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +16 -0
  2027. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +76 -0
  2028. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +40 -0
  2029. package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +14 -0
  2030. package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +14 -0
  2031. package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +20 -0
  2032. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +43 -0
  2033. package/src/renderers/shaders/ShaderChunk/opaque_fragment.glsl.js +11 -0
  2034. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +116 -0
  2035. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +7 -0
  2036. package/src/renderers/shaders/ShaderChunk/project_vertex.glsl.js +19 -0
  2037. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -0
  2038. package/src/renderers/shaders/ShaderChunk/roughnessmap_pars_fragment.glsl.js +7 -0
  2039. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +474 -0
  2040. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +80 -0
  2041. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +85 -0
  2042. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +81 -0
  2043. package/src/renderers/shaders/ShaderChunk/skinbase_vertex.glsl.js +10 -0
  2044. package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +25 -0
  2045. package/src/renderers/shaders/ShaderChunk/skinning_vertex.glsl.js +15 -0
  2046. package/src/renderers/shaders/ShaderChunk/skinnormal_vertex.glsl.js +20 -0
  2047. package/src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl.js +14 -0
  2048. package/src/renderers/shaders/ShaderChunk/specularmap_pars_fragment.glsl.js +7 -0
  2049. package/src/renderers/shaders/ShaderChunk/tonemapping_fragment.glsl.js +7 -0
  2050. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +200 -0
  2051. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +36 -0
  2052. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +235 -0
  2053. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +124 -0
  2054. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +151 -0
  2055. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +127 -0
  2056. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +21 -0
  2057. package/src/renderers/shaders/ShaderChunk.d.ts +144 -0
  2058. package/src/renderers/shaders/ShaderChunk.js +270 -0
  2059. package/src/renderers/shaders/ShaderLib/background.glsl.js +40 -0
  2060. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +48 -0
  2061. package/src/renderers/shaders/ShaderLib/cube.glsl.js +36 -0
  2062. package/src/renderers/shaders/ShaderLib/depth.glsl.js +117 -0
  2063. package/src/renderers/shaders/ShaderLib/distance.glsl.js +77 -0
  2064. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +35 -0
  2065. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +76 -0
  2066. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +116 -0
  2067. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +125 -0
  2068. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +112 -0
  2069. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +86 -0
  2070. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +127 -0
  2071. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +235 -0
  2072. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +118 -0
  2073. package/src/renderers/shaders/ShaderLib/points.glsl.js +87 -0
  2074. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +58 -0
  2075. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +79 -0
  2076. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +51 -0
  2077. package/src/renderers/shaders/ShaderLib.d.ts +29 -0
  2078. package/src/renderers/shaders/ShaderLib.js +366 -0
  2079. package/src/renderers/shaders/UniformsLib.d.ts +209 -0
  2080. package/src/renderers/shaders/UniformsLib.js +249 -0
  2081. package/src/renderers/shaders/UniformsUtils.d.ts +14 -0
  2082. package/src/renderers/shaders/UniformsUtils.js +154 -0
  2083. package/src/renderers/webgl/WebGLAnimation.js +54 -0
  2084. package/src/renderers/webgl/WebGLAttributes.d.ts +23 -0
  2085. package/src/renderers/webgl/WebGLAttributes.js +237 -0
  2086. package/src/renderers/webgl/WebGLBackground.js +303 -0
  2087. package/src/renderers/webgl/WebGLBindingStates.d.ts +26 -0
  2088. package/src/renderers/webgl/WebGLBindingStates.js +668 -0
  2089. package/src/renderers/webgl/WebGLBufferRenderer.d.ts +15 -0
  2090. package/src/renderers/webgl/WebGLBufferRenderer.js +57 -0
  2091. package/src/renderers/webgl/WebGLCapabilities.d.ts +48 -0
  2092. package/src/renderers/webgl/WebGLCapabilities.js +156 -0
  2093. package/src/renderers/webgl/WebGLClipping.d.ts +26 -0
  2094. package/src/renderers/webgl/WebGLClipping.js +171 -0
  2095. package/src/renderers/webgl/WebGLEnvironments.d.ts +8 -0
  2096. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  2097. package/src/renderers/webgl/WebGLExtensions.d.ts +7 -0
  2098. package/src/renderers/webgl/WebGLExtensions.js +61 -0
  2099. package/src/renderers/webgl/WebGLGeometries.d.ts +13 -0
  2100. package/src/renderers/webgl/WebGLGeometries.js +214 -0
  2101. package/src/renderers/webgl/WebGLIndexedBufferRenderer.d.ts +13 -0
  2102. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +68 -0
  2103. package/src/renderers/webgl/WebGLInfo.d.ts +39 -0
  2104. package/src/renderers/webgl/WebGLInfo.js +73 -0
  2105. package/src/renderers/webgl/WebGLLights.d.ts +57 -0
  2106. package/src/renderers/webgl/WebGLLights.js +654 -0
  2107. package/src/renderers/webgl/WebGLMaterials.js +621 -0
  2108. package/src/renderers/webgl/WebGLMorphtargets.js +168 -0
  2109. package/src/renderers/webgl/WebGLObjects.d.ts +19 -0
  2110. package/src/renderers/webgl/WebGLObjects.js +94 -0
  2111. package/src/renderers/webgl/WebGLOutput.js +319 -0
  2112. package/src/renderers/webgl/WebGLProgram.d.ts +22 -0
  2113. package/src/renderers/webgl/WebGLProgram.js +994 -0
  2114. package/src/renderers/webgl/WebGLPrograms.d.ts +242 -0
  2115. package/src/renderers/webgl/WebGLPrograms.js +708 -0
  2116. package/src/renderers/webgl/WebGLProperties.d.ts +9 -0
  2117. package/src/renderers/webgl/WebGLProperties.js +55 -0
  2118. package/src/renderers/webgl/WebGLRenderLists.d.ts +68 -0
  2119. package/src/renderers/webgl/WebGLRenderLists.js +257 -0
  2120. package/src/renderers/webgl/WebGLRenderStates.js +127 -0
  2121. package/src/renderers/webgl/WebGLShader.d.ts +1 -0
  2122. package/src/renderers/webgl/WebGLShader.js +12 -0
  2123. package/src/renderers/webgl/WebGLShaderCache.js +118 -0
  2124. package/src/renderers/webgl/WebGLShadowMap.d.ts +33 -0
  2125. package/src/renderers/webgl/WebGLShadowMap.js +613 -0
  2126. package/src/renderers/webgl/WebGLState.d.ts +399 -0
  2127. package/src/renderers/webgl/WebGLState.js +1374 -0
  2128. package/src/renderers/webgl/WebGLTextures.d.ts +31 -0
  2129. package/src/renderers/webgl/WebGLTextures.js +2571 -0
  2130. package/src/renderers/webgl/WebGLUniforms.d.ts +5 -0
  2131. package/src/renderers/webgl/WebGLUniforms.js +1241 -0
  2132. package/src/renderers/webgl/WebGLUniformsGroups.d.ts +17 -0
  2133. package/src/renderers/webgl/WebGLUniformsGroups.js +447 -0
  2134. package/src/renderers/webgl/WebGLUtils.d.ts +11 -0
  2135. package/src/renderers/webgl/WebGLUtils.js +217 -0
  2136. package/src/renderers/webgl-fallback/WebGLBackend.d.ts +16 -0
  2137. package/src/renderers/webgl-fallback/WebGLBackend.js +2878 -0
  2138. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +99 -0
  2139. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.d.ts +9 -0
  2140. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +1994 -0
  2141. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +362 -0
  2142. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.d.ts +51 -0
  2143. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +105 -0
  2144. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +13 -0
  2145. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +83 -0
  2146. package/src/renderers/webgl-fallback/utils/WebGLState.js +1532 -0
  2147. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1461 -0
  2148. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +406 -0
  2149. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +319 -0
  2150. package/src/renderers/webgl-fallback/utils/WebGLVertexArrayUtils.js +346 -0
  2151. package/src/renderers/webgpu/WebGPUBackend.d.ts +32 -0
  2152. package/src/renderers/webgpu/WebGPUBackend.js +3379 -0
  2153. package/src/renderers/webgpu/WebGPURenderer.Nodes.d.ts +12 -0
  2154. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +69 -0
  2155. package/src/renderers/webgpu/WebGPURenderer.d.ts +17 -0
  2156. package/src/renderers/webgpu/WebGPURenderer.js +107 -0
  2157. package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
  2158. package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
  2159. package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
  2160. package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
  2161. package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
  2162. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
  2163. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
  2164. package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
  2165. package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
  2166. package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
  2167. package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
  2168. package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
  2169. package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
  2170. package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
  2171. package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
  2172. package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
  2173. package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
  2174. package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
  2175. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
  2176. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
  2177. package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
  2178. package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
  2179. package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
  2180. package/src/renderers/webgpu/nodes/BasicNodeLibrary.d.ts +13 -0
  2181. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +66 -0
  2182. package/src/renderers/webgpu/nodes/StandardNodeLibrary.d.ts +91 -0
  2183. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +99 -0
  2184. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.d.ts +9 -0
  2185. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +2834 -0
  2186. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +188 -0
  2187. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +25 -0
  2188. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +646 -0
  2189. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +683 -0
  2190. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +149 -0
  2191. package/src/renderers/webgpu/utils/WebGPUConstants.d.ts +348 -0
  2192. package/src/renderers/webgpu/utils/WebGPUConstants.js +354 -0
  2193. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +1010 -0
  2194. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +452 -0
  2195. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1920 -0
  2196. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +337 -0
  2197. package/src/renderers/webgpu/utils/WebGPUUniformArena.js +240 -0
  2198. package/src/renderers/webgpu/utils/WebGPUUtils.js +359 -0
  2199. package/src/renderers/webxr/WebXRController.d.ts +67 -0
  2200. package/src/renderers/webxr/WebXRController.js +440 -0
  2201. package/src/renderers/webxr/WebXRDepthSensing.d.ts +21 -0
  2202. package/src/renderers/webxr/WebXRDepthSensing.js +155 -0
  2203. package/src/renderers/webxr/WebXRManager.d.ts +89 -0
  2204. package/src/renderers/webxr/WebXRManager.js +1041 -0
  2205. package/src/scenes/Fog.d.ts +71 -0
  2206. package/src/scenes/Fog.js +98 -0
  2207. package/src/scenes/FogExp2.d.ts +61 -0
  2208. package/src/scenes/FogExp2.js +86 -0
  2209. package/src/scenes/Scene.d.ts +104 -0
  2210. package/src/scenes/Scene.js +165 -0
  2211. package/src/textures/CanvasTexture.d.ts +51 -0
  2212. package/src/textures/CanvasTexture.js +45 -0
  2213. package/src/textures/CompressedArrayTexture.d.ts +65 -0
  2214. package/src/textures/CompressedArrayTexture.js +105 -0
  2215. package/src/textures/CompressedCubeTexture.d.ts +13 -0
  2216. package/src/textures/CompressedCubeTexture.js +48 -0
  2217. package/src/textures/CompressedTexture.d.ts +92 -0
  2218. package/src/textures/CompressedTexture.js +86 -0
  2219. package/src/textures/CubeDepthTexture.d.ts +40 -0
  2220. package/src/textures/CubeDepthTexture.js +76 -0
  2221. package/src/textures/CubeTexture.d.ts +82 -0
  2222. package/src/textures/CubeTexture.js +81 -0
  2223. package/src/textures/Data3DTexture.d.ts +94 -0
  2224. package/src/textures/Data3DTexture.js +128 -0
  2225. package/src/textures/DataArrayTexture.d.ts +123 -0
  2226. package/src/textures/DataArrayTexture.js +150 -0
  2227. package/src/textures/DataTexture.d.ts +112 -0
  2228. package/src/textures/DataTexture.js +87 -0
  2229. package/src/textures/DepthTexture.d.ts +105 -0
  2230. package/src/textures/DepthTexture.js +104 -0
  2231. package/src/textures/ExternalTexture.d.ts +14 -0
  2232. package/src/textures/ExternalTexture.js +53 -0
  2233. package/src/textures/FramebufferTexture.d.ts +67 -0
  2234. package/src/textures/FramebufferTexture.js +96 -0
  2235. package/src/textures/HTMLTexture.d.ts +27 -0
  2236. package/src/textures/HTMLTexture.js +74 -0
  2237. package/src/textures/Texture.d.ts +565 -0
  2238. package/src/textures/Texture.js +840 -0
  2239. package/src/textures/TextureSource.d.ts +99 -0
  2240. package/src/textures/TextureSource.js +261 -0
  2241. package/src/textures/VideoFrameTexture.d.ts +27 -0
  2242. package/src/textures/VideoFrameTexture.js +72 -0
  2243. package/src/textures/VideoTexture.d.ts +90 -0
  2244. package/src/textures/VideoTexture.js +127 -0
  2245. package/src/upe.d.ts +5 -0
  2246. package/src/upe.js +17 -0
  2247. package/src/utils.d.ts +36 -0
  2248. package/src/utils.js +493 -0
@@ -0,0 +1,2834 @@
1
+ import NodeUniformsGroup from '../../common/nodes/NodeUniformsGroup.js';
2
+
3
+ import NodeSampler from '../../common/nodes/NodeSampler.js';
4
+ import { NodeSampledTexture, NodeSampledCubeTexture, NodeSampledTexture3D } from '../../common/nodes/NodeSampledTexture.js';
5
+
6
+ import NodeUniformBuffer from '../../common/nodes/NodeUniformBuffer.js';
7
+ import NodeStorageBuffer from '../../common/nodes/NodeStorageBuffer.js';
8
+
9
+ import { NodeBuilder, CodeNode } from '../../../nodes/Nodes.js';
10
+
11
+ import { getFormat } from '../utils/WebGPUTextureUtils.js';
12
+
13
+ import WGSLNodeParser from './WGSLNodeParser.js';
14
+ import { NodeAccess } from '../../../nodes/core/constants.js';
15
+
16
+ import VarNode from '../../../nodes/core/VarNode.js';
17
+ import ExpressionNode from '../../../nodes/code/ExpressionNode.js';
18
+
19
+ import { FloatType, RepeatWrapping, ClampToEdgeWrapping, MirroredRepeatWrapping, NearestFilter, Compatibility, ShortType, UnsignedShortType } from '../../../constants.js';
20
+ import { warn, error } from '../../../utils.js';
21
+
22
+ import { GPUShaderStage } from '../utils/WebGPUConstants.js';
23
+
24
+ const accessNames = {
25
+ [ NodeAccess.READ_ONLY ]: 'read',
26
+ [ NodeAccess.WRITE_ONLY ]: 'write',
27
+ [ NodeAccess.READ_WRITE ]: 'read_write'
28
+ };
29
+
30
+ const wrapNames = {
31
+ [ RepeatWrapping ]: 'repeat',
32
+ [ ClampToEdgeWrapping ]: 'clamp',
33
+ [ MirroredRepeatWrapping ]: 'mirror'
34
+ };
35
+
36
+ const gpuShaderStageLib = {
37
+ 'vertex': GPUShaderStage.VERTEX,
38
+ 'fragment': GPUShaderStage.FRAGMENT,
39
+ 'compute': GPUShaderStage.COMPUTE
40
+ };
41
+
42
+ const supports = {
43
+ instance: true,
44
+ swizzleAssign: false,
45
+ storageBuffer: true
46
+ };
47
+
48
+ const wgslFnOpLib = {
49
+ '^^': 'tsl_xor'
50
+ };
51
+
52
+ const wgslTypeLib = {
53
+ float: 'f32',
54
+ int: 'i32',
55
+ uint: 'u32',
56
+ bool: 'bool',
57
+ color: 'vec3<f32>',
58
+
59
+ vec2: 'vec2<f32>',
60
+ ivec2: 'vec2<i32>',
61
+ uvec2: 'vec2<u32>',
62
+ bvec2: 'vec2<bool>',
63
+
64
+ vec3: 'vec3<f32>',
65
+ ivec3: 'vec3<i32>',
66
+ uvec3: 'vec3<u32>',
67
+ bvec3: 'vec3<bool>',
68
+
69
+ vec4: 'vec4<f32>',
70
+ ivec4: 'vec4<i32>',
71
+ uvec4: 'vec4<u32>',
72
+ bvec4: 'vec4<bool>',
73
+
74
+ mat2: 'mat2x2<f32>',
75
+ mat3: 'mat3x3<f32>',
76
+ mat4: 'mat4x4<f32>'
77
+ };
78
+
79
+ const wgslCodeCache = {};
80
+
81
+ const wgslPolyfill = {
82
+ tsl_xor: new CodeNode( 'fn tsl_xor( a : bool, b : bool ) -> bool { return ( a || b ) && !( a && b ); }' ),
83
+ mod_float: new CodeNode( 'fn tsl_mod_float( x : f32, y : f32 ) -> f32 { return x - y * floor( x / y ); }' ),
84
+ mod_vec2: new CodeNode( 'fn tsl_mod_vec2( x : vec2f, y : vec2f ) -> vec2f { return x - y * floor( x / y ); }' ),
85
+ mod_vec3: new CodeNode( 'fn tsl_mod_vec3( x : vec3f, y : vec3f ) -> vec3f { return x - y * floor( x / y ); }' ),
86
+ mod_vec4: new CodeNode( 'fn tsl_mod_vec4( x : vec4f, y : vec4f ) -> vec4f { return x - y * floor( x / y ); }' ),
87
+ equals_bool: new CodeNode( 'fn tsl_equals_bool( a : bool, b : bool ) -> bool { return a == b; }' ),
88
+ equals_bvec2: new CodeNode( 'fn tsl_equals_bvec2( a : vec2f, b : vec2f ) -> vec2<bool> { return vec2<bool>( a.x == b.x, a.y == b.y ); }' ),
89
+ equals_bvec3: new CodeNode( 'fn tsl_equals_bvec3( a : vec3f, b : vec3f ) -> vec3<bool> { return vec3<bool>( a.x == b.x, a.y == b.y, a.z == b.z ); }' ),
90
+ equals_bvec4: new CodeNode( 'fn tsl_equals_bvec4( a : vec4f, b : vec4f ) -> vec4<bool> { return vec4<bool>( a.x == b.x, a.y == b.y, a.z == b.z, a.w == b.w ); }' ),
91
+ repeatWrapping_float: new CodeNode( 'fn tsl_repeatWrapping_float( coord: f32 ) -> f32 { return fract( coord ); }' ),
92
+ mirrorWrapping_float: new CodeNode( 'fn tsl_mirrorWrapping_float( coord: f32 ) -> f32 { let mirrored = fract( coord * 0.5 ) * 2.0; return 1.0 - abs( 1.0 - mirrored ); }' ),
93
+ clampWrapping_float: new CodeNode( 'fn tsl_clampWrapping_float( coord: f32 ) -> f32 { return clamp( coord, 0.0, 1.0 ); }' ),
94
+ inverse_mat2: new CodeNode( /* wgsl */`
95
+ fn tsl_inverse_mat2( m : mat2x2<f32> ) -> mat2x2<f32> {
96
+
97
+ let det = m[ 0 ][ 0 ] * m[ 1 ][ 1 ] - m[ 0 ][ 1 ] * m[ 1 ][ 0 ];
98
+
99
+ return mat2x2<f32>(
100
+ m[ 1 ][ 1 ], - m[ 0 ][ 1 ],
101
+ - m[ 1 ][ 0 ], m[ 0 ][ 0 ]
102
+ ) * ( 1.0 / det );
103
+
104
+ }
105
+ ` ),
106
+ inverse_mat3: new CodeNode( /* wgsl */`
107
+ fn tsl_inverse_mat3( m : mat3x3<f32> ) -> mat3x3<f32> {
108
+
109
+ let a00 = m[ 0 ][ 0 ]; let a01 = m[ 0 ][ 1 ]; let a02 = m[ 0 ][ 2 ];
110
+ let a10 = m[ 1 ][ 0 ]; let a11 = m[ 1 ][ 1 ]; let a12 = m[ 1 ][ 2 ];
111
+ let a20 = m[ 2 ][ 0 ]; let a21 = m[ 2 ][ 1 ]; let a22 = m[ 2 ][ 2 ];
112
+
113
+ let b01 = a22 * a11 - a12 * a21;
114
+ let b11 = - a22 * a10 + a12 * a20;
115
+ let b21 = a21 * a10 - a11 * a20;
116
+
117
+ let det = a00 * b01 + a01 * b11 + a02 * b21;
118
+
119
+ return mat3x3<f32>(
120
+ b01, ( - a22 * a01 + a02 * a21 ), ( a12 * a01 - a02 * a11 ),
121
+ b11, ( a22 * a00 - a02 * a20 ), ( - a12 * a00 + a02 * a10 ),
122
+ b21, ( - a21 * a00 + a01 * a20 ), ( a11 * a00 - a01 * a10 )
123
+ ) * ( 1.0 / det );
124
+
125
+ }
126
+ ` ),
127
+ inverse_mat4: new CodeNode( /* wgsl */`
128
+ fn tsl_inverse_mat4( m : mat4x4<f32> ) -> mat4x4<f32> {
129
+
130
+ let a00 = m[ 0 ][ 0 ]; let a01 = m[ 0 ][ 1 ]; let a02 = m[ 0 ][ 2 ]; let a03 = m[ 0 ][ 3 ];
131
+ let a10 = m[ 1 ][ 0 ]; let a11 = m[ 1 ][ 1 ]; let a12 = m[ 1 ][ 2 ]; let a13 = m[ 1 ][ 3 ];
132
+ let a20 = m[ 2 ][ 0 ]; let a21 = m[ 2 ][ 1 ]; let a22 = m[ 2 ][ 2 ]; let a23 = m[ 2 ][ 3 ];
133
+ let a30 = m[ 3 ][ 0 ]; let a31 = m[ 3 ][ 1 ]; let a32 = m[ 3 ][ 2 ]; let a33 = m[ 3 ][ 3 ];
134
+
135
+ let b00 = a00 * a11 - a01 * a10;
136
+ let b01 = a00 * a12 - a02 * a10;
137
+ let b02 = a00 * a13 - a03 * a10;
138
+ let b03 = a01 * a12 - a02 * a11;
139
+ let b04 = a01 * a13 - a03 * a11;
140
+ let b05 = a02 * a13 - a03 * a12;
141
+ let b06 = a20 * a31 - a21 * a30;
142
+ let b07 = a20 * a32 - a22 * a30;
143
+ let b08 = a20 * a33 - a23 * a30;
144
+ let b09 = a21 * a32 - a22 * a31;
145
+ let b10 = a21 * a33 - a23 * a31;
146
+ let b11 = a22 * a33 - a23 * a32;
147
+
148
+ let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;
149
+
150
+ return mat4x4<f32>(
151
+ a11 * b11 - a12 * b10 + a13 * b09,
152
+ a02 * b10 - a01 * b11 - a03 * b09,
153
+ a31 * b05 - a32 * b04 + a33 * b03,
154
+ a22 * b04 - a21 * b05 - a23 * b03,
155
+ a12 * b08 - a10 * b11 - a13 * b07,
156
+ a00 * b11 - a02 * b08 + a03 * b07,
157
+ a32 * b02 - a30 * b05 - a33 * b01,
158
+ a20 * b05 - a22 * b02 + a23 * b01,
159
+ a10 * b10 - a11 * b08 + a13 * b06,
160
+ a01 * b08 - a00 * b10 - a03 * b06,
161
+ a30 * b04 - a31 * b02 + a33 * b00,
162
+ a21 * b02 - a20 * b04 - a23 * b00,
163
+ a11 * b07 - a10 * b09 - a12 * b06,
164
+ a00 * b09 - a01 * b07 + a02 * b06,
165
+ a31 * b01 - a30 * b03 - a32 * b00,
166
+ a20 * b03 - a21 * b01 + a22 * b00
167
+ ) * ( 1.0 / det );
168
+
169
+ }
170
+ ` ),
171
+ biquadraticTexture: new CodeNode( /* wgsl */`
172
+ fn tsl_biquadraticTexture( map : texture_2d<f32>, coord : vec2f, iRes : vec2u, level : u32 ) -> vec4f {
173
+
174
+ let res = vec2f( iRes );
175
+
176
+ let uvScaled = coord * res;
177
+ let uvWrapping = ( ( uvScaled % res ) + res ) % res;
178
+
179
+ // https://www.shadertoy.com/view/WtyXRy
180
+
181
+ let uv = uvWrapping - 0.5;
182
+ let iuv = floor( uv );
183
+ let f = fract( uv );
184
+
185
+ let rg1 = textureLoad( map, vec2u( iuv + vec2( 0.5, 0.5 ) ) % iRes, level );
186
+ let rg2 = textureLoad( map, vec2u( iuv + vec2( 1.5, 0.5 ) ) % iRes, level );
187
+ let rg3 = textureLoad( map, vec2u( iuv + vec2( 0.5, 1.5 ) ) % iRes, level );
188
+ let rg4 = textureLoad( map, vec2u( iuv + vec2( 1.5, 1.5 ) ) % iRes, level );
189
+
190
+ return mix( mix( rg1, rg2, f.x ), mix( rg3, rg4, f.x ), f.y );
191
+
192
+ }
193
+ ` ),
194
+ biquadraticTextureArray: new CodeNode( /* wgsl */`
195
+ fn tsl_biquadraticTexture_array( map : texture_2d_array<f32>, coord : vec2f, iRes : vec2u, layer : u32, level : u32 ) -> vec4f {
196
+
197
+ let res = vec2f( iRes );
198
+
199
+ let uvScaled = coord * res;
200
+ let uvWrapping = ( ( uvScaled % res ) + res ) % res;
201
+
202
+ // https://www.shadertoy.com/view/WtyXRy
203
+
204
+ let uv = uvWrapping - 0.5;
205
+ let iuv = floor( uv );
206
+ let f = fract( uv );
207
+
208
+ let rg1 = textureLoad( map, vec2u( iuv + vec2( 0.5, 0.5 ) ) % iRes, layer, level );
209
+ let rg2 = textureLoad( map, vec2u( iuv + vec2( 1.5, 0.5 ) ) % iRes, layer, level );
210
+ let rg3 = textureLoad( map, vec2u( iuv + vec2( 0.5, 1.5 ) ) % iRes, layer, level );
211
+ let rg4 = textureLoad( map, vec2u( iuv + vec2( 1.5, 1.5 ) ) % iRes, layer, level );
212
+
213
+ return mix( mix( rg1, rg2, f.x ), mix( rg3, rg4, f.x ), f.y );
214
+
215
+ }
216
+ ` )
217
+ };
218
+
219
+ const wgslMethods = {
220
+ dFdx: 'dpdx',
221
+ dFdy: '- dpdy',
222
+ mod_float: 'tsl_mod_float',
223
+ mod_vec2: 'tsl_mod_vec2',
224
+ mod_vec3: 'tsl_mod_vec3',
225
+ mod_vec4: 'tsl_mod_vec4',
226
+ equals_bool: 'tsl_equals_bool',
227
+ equals_bvec2: 'tsl_equals_bvec2',
228
+ equals_bvec3: 'tsl_equals_bvec3',
229
+ equals_bvec4: 'tsl_equals_bvec4',
230
+ inverse_mat2: 'tsl_inverse_mat2',
231
+ inverse_mat3: 'tsl_inverse_mat3',
232
+ inverse_mat4: 'tsl_inverse_mat4',
233
+ inversesqrt: 'inverseSqrt',
234
+ faceforward: 'faceForward',
235
+ bitcast: 'bitcast<f32>',
236
+ floatpack_snorm_2x16: 'pack2x16snorm',
237
+ floatpack_unorm_2x16: 'pack2x16unorm',
238
+ floatpack_float16_2x16: 'pack2x16float',
239
+ floatpack_snorm_4x8: 'pack4x8snorm',
240
+ floatpack_unorm_4x8: 'pack4x8unorm',
241
+ floatunpack_snorm_2x16: 'unpack2x16snorm',
242
+ floatunpack_unorm_2x16: 'unpack2x16unorm',
243
+ floatunpack_float16_2x16: 'unpack2x16float',
244
+ floatunpack_snorm_4x8: 'unpack4x8snorm',
245
+ floatunpack_unorm_4x8: 'unpack4x8unorm'
246
+ };
247
+
248
+ // See: https://www.w3.org/TR/WGSL/#keyword-summary and #reserved-words-section
249
+
250
+ const wgslReservedKeywords = new Set( [
251
+ // keywords
252
+ 'alias', 'break', 'case', 'const', 'const_assert', 'continue', 'continuing', 'default', 'diagnostic',
253
+ 'discard', 'else', 'enable', 'false', 'fn', 'for', 'if', 'let', 'loop', 'override', 'requires',
254
+ 'return', 'struct', 'switch', 'true', 'var', 'while',
255
+ // reserved words
256
+ 'NULL', 'Self', 'abstract', 'active', 'alignas', 'alignof', 'as', 'asm', 'asm_fragment', 'async',
257
+ 'attribute', 'auto', 'await', 'become', 'binding_array', 'cast', 'catch', 'class', 'co_await',
258
+ 'co_return', 'co_yield', 'coherent', 'column_major', 'common', 'compile', 'compile_fragment',
259
+ 'concept', 'const_cast', 'consteval', 'constexpr', 'constinit', 'crate', 'debugger', 'decltype',
260
+ 'delete', 'demote', 'demote_to_helper', 'do', 'dynamic_cast', 'enum', 'explicit', 'export',
261
+ 'extends', 'extern', 'external', 'fallthrough', 'filter', 'final', 'finally', 'friend', 'from',
262
+ 'fxgroup', 'get', 'goto', 'groupshared', 'highp', 'impl', 'implements', 'import', 'inline',
263
+ 'instanceof', 'interface', 'layout', 'lowp', 'macro', 'macro_rules', 'match', 'mediump', 'meta',
264
+ 'mod', 'module', 'move', 'mut', 'mutable', 'namespace', 'new', 'nil', 'noexcept', 'noinline',
265
+ 'nointerpolation', 'non_coherent', 'noncoherent', 'noperspective', 'null', 'nullptr', 'of',
266
+ 'operator', 'package', 'packoffset', 'partition', 'pass', 'patch', 'pixelfragment', 'precise',
267
+ 'precision', 'premerge', 'priv', 'protected', 'pub', 'public', 'readonly', 'ref', 'regardless',
268
+ 'register', 'reinterpret_cast', 'require', 'resource', 'restrict', 'self', 'set', 'shared',
269
+ 'sizeof', 'smooth', 'snorm', 'static', 'static_assert', 'static_cast', 'std', 'subroutine',
270
+ 'super', 'target', 'template', 'this', 'thread_local', 'throw', 'trait', 'try', 'type', 'typedef',
271
+ 'typeid', 'typename', 'typeof', 'union', 'unless', 'unorm', 'unsafe', 'unsized', 'use', 'using',
272
+ 'varying', 'virtual', 'volatile', 'wgsl', 'where', 'with', 'writeonly', 'yield',
273
+ // generated entry points
274
+ 'main'
275
+ ] );
276
+
277
+ //
278
+
279
+ let diagnostics = '';
280
+
281
+ if ( ( typeof navigator !== 'undefined' && /Firefox|Deno/g.test( navigator.userAgent ) ) !== true ) {
282
+
283
+ diagnostics += 'diagnostic( off, derivative_uniformity );\n';
284
+
285
+ }
286
+
287
+ /**
288
+ * A node builder targeting WGSL.
289
+ *
290
+ * This module generates WGSL shader code from node materials and also
291
+ * generates the respective bindings and vertex buffer definitions. These
292
+ * data are later used by the renderer to create render and compute pipelines
293
+ * for render objects.
294
+ *
295
+ * @augments NodeBuilder
296
+ */
297
+ class WGSLNodeBuilder extends NodeBuilder {
298
+
299
+ /**
300
+ * Constructs a new WGSL node builder renderer.
301
+ *
302
+ * @param {Object3D} object - The 3D object.
303
+ * @param {Renderer} renderer - The renderer.
304
+ */
305
+ constructor( object, renderer ) {
306
+
307
+ super( object, renderer, new WGSLNodeParser() );
308
+
309
+ /**
310
+ * A dictionary that holds for each shader stage ('vertex', 'fragment', 'compute')
311
+ * another dictionary which manages UBOs per group ('render','frame','object').
312
+ *
313
+ * @type {Object<string,Object<string,NodeUniformsGroup>>}
314
+ */
315
+ this.uniformGroups = {};
316
+
317
+ /**
318
+ * A dictionary that holds the assigned binding indices for each uniform group.
319
+ * This ensures the same binding index is used across all shader stages.
320
+ *
321
+ * @type {Object<string,{index: number, id: number}>}
322
+ */
323
+ this.uniformGroupsBindings = {};
324
+
325
+ /**
326
+ * A dictionary that holds for each shader stage a Map of builtins.
327
+ *
328
+ * @type {Object<string,Map<string,Object>>}
329
+ */
330
+ this.builtins = {};
331
+
332
+ /**
333
+ * A dictionary that holds for each shader stage a Set of directives.
334
+ *
335
+ * @type {Object<string,Set<string>>}
336
+ */
337
+ this.directives = {};
338
+
339
+ /**
340
+ * A map for managing scope arrays. Only relevant for when using
341
+ * {@link WorkgroupInfoNode} in context of compute shaders.
342
+ *
343
+ * @type {Map<string,Object>}
344
+ */
345
+ this.scopedArrays = new Map();
346
+
347
+ /**
348
+ * A flag that indicates that early returns are allowed.
349
+ *
350
+ * @type {boolean}
351
+ * @default true
352
+ */
353
+ this.allowEarlyReturns = true;
354
+
355
+ /**
356
+ * A flag that indicates that global variables are allowed.
357
+ *
358
+ * @type {boolean}
359
+ * @default true
360
+ */
361
+ this.allowGlobalVariables = true;
362
+
363
+ }
364
+
365
+ /**
366
+ * Generates the WGSL snippet for sampled textures.
367
+ *
368
+ * @private
369
+ * @param {Texture} texture - The texture.
370
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
371
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
372
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
373
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
374
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
375
+ * @return {string} The WGSL snippet.
376
+ */
377
+ _generateTextureSample( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet, shaderStage = this.shaderStage ) {
378
+
379
+ if ( shaderStage === 'fragment' ) {
380
+
381
+ if ( depthSnippet ) {
382
+
383
+ if ( offsetSnippet ) {
384
+
385
+ return `textureSample( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ offsetSnippet } )`;
386
+
387
+ }
388
+
389
+ return `textureSample( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet } )`;
390
+
391
+ } else {
392
+
393
+ if ( offsetSnippet ) {
394
+
395
+ return `textureSample( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ offsetSnippet } )`;
396
+
397
+ }
398
+
399
+ return `textureSample( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet } )`;
400
+
401
+ }
402
+
403
+ } else {
404
+
405
+ return this.generateTextureSampleLevel( texture, textureProperty, uvSnippet, '0', depthSnippet );
406
+
407
+ }
408
+
409
+ }
410
+
411
+ /**
412
+ * Generates the WGSL snippet when sampling textures with explicit mip level.
413
+ *
414
+ * @private
415
+ * @param {Texture} texture - The texture.
416
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
417
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
418
+ * @param {string} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
419
+ * @param {string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
420
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
421
+ * @return {string} The WGSL snippet.
422
+ */
423
+ generateTextureSampleLevel( texture, textureProperty, uvSnippet, levelSnippet, depthSnippet, offsetSnippet ) {
424
+
425
+ if ( this.isUnfilterable( texture ) === false ) {
426
+
427
+ if ( depthSnippet ) {
428
+
429
+ if ( offsetSnippet ) {
430
+
431
+ return `textureSampleLevel( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ levelSnippet }, ${ offsetSnippet } )`;
432
+
433
+ }
434
+
435
+ return `textureSampleLevel( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ levelSnippet } )`;
436
+
437
+ } else {
438
+
439
+ if ( offsetSnippet ) {
440
+
441
+ return `textureSampleLevel( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ levelSnippet }, ${ offsetSnippet } )`;
442
+
443
+ }
444
+
445
+ return `textureSampleLevel( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ levelSnippet } )`;
446
+
447
+ }
448
+
449
+ } else if ( this.isFilteredTexture( texture ) ) {
450
+
451
+ return this.generateFilteredTexture( texture, textureProperty, uvSnippet, offsetSnippet, levelSnippet, depthSnippet );
452
+
453
+ } else {
454
+
455
+ return this.generateTextureLod( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet, levelSnippet );
456
+
457
+ }
458
+
459
+ }
460
+
461
+ /**
462
+ * Generates a wrap function used in context of textures.
463
+ *
464
+ * @param {Texture} texture - The texture to generate the function for.
465
+ * @return {string} The name of the generated function.
466
+ */
467
+ generateWrapFunction( texture ) {
468
+
469
+ const functionName = `tsl_coord_${ wrapNames[ texture.wrapS ] }S_${ wrapNames[ texture.wrapT ] }T_${ texture.is3DTexture || texture.isData3DTexture ? '3d' : '2d' }`;
470
+
471
+ let nodeCode = wgslCodeCache[ functionName ];
472
+
473
+ if ( nodeCode === undefined ) {
474
+
475
+ const includes = [];
476
+
477
+ // For 3D textures, use vec3f; for texture arrays, keep vec2f since array index is separate
478
+ const coordType = texture.is3DTexture || texture.isData3DTexture ? 'vec3f' : 'vec2f';
479
+ let code = `fn ${ functionName }( coord : ${ coordType } ) -> ${ coordType } {\n\n\treturn ${ coordType }(\n`;
480
+
481
+ const addWrapSnippet = ( wrap, axis ) => {
482
+
483
+ if ( wrap === RepeatWrapping ) {
484
+
485
+ includes.push( wgslPolyfill.repeatWrapping_float );
486
+
487
+ code += `\t\ttsl_repeatWrapping_float( coord.${ axis } )`;
488
+
489
+ } else if ( wrap === ClampToEdgeWrapping ) {
490
+
491
+ includes.push( wgslPolyfill.clampWrapping_float );
492
+
493
+ code += `\t\ttsl_clampWrapping_float( coord.${ axis } )`;
494
+
495
+ } else if ( wrap === MirroredRepeatWrapping ) {
496
+
497
+ includes.push( wgslPolyfill.mirrorWrapping_float );
498
+
499
+ code += `\t\ttsl_mirrorWrapping_float( coord.${ axis } )`;
500
+
501
+ } else {
502
+
503
+ code += `\t\tcoord.${ axis }`;
504
+
505
+ warn( `WebGPURenderer: Unsupported texture wrap type "${ wrap }" for vertex shader.` );
506
+
507
+ }
508
+
509
+ };
510
+
511
+ addWrapSnippet( texture.wrapS, 'x' );
512
+
513
+ code += ',\n';
514
+
515
+ addWrapSnippet( texture.wrapT, 'y' );
516
+
517
+ if ( texture.is3DTexture || texture.isData3DTexture ) {
518
+
519
+ code += ',\n';
520
+ addWrapSnippet( texture.wrapR, 'z' );
521
+
522
+ }
523
+
524
+ code += '\n\t);\n\n}\n';
525
+
526
+ wgslCodeCache[ functionName ] = nodeCode = new CodeNode( code, includes );
527
+
528
+ }
529
+
530
+ nodeCode.build( this );
531
+
532
+ return functionName;
533
+
534
+ }
535
+
536
+ /**
537
+ * Generates the array declaration string.
538
+ *
539
+ * @param {string} type - The type.
540
+ * @param {?number} [count] - The count.
541
+ * @return {string} The generated value as a shader string.
542
+ */
543
+ generateArrayDeclaration( type, count ) {
544
+
545
+ return `array< ${ this.getType( type ) }, ${ count } >`;
546
+
547
+ }
548
+
549
+ /**
550
+ * Generates a WGSL variable that holds the texture dimension of the given texture.
551
+ * It also returns information about the number of layers (elements) of an arrayed
552
+ * texture as well as the cube face count of cube textures.
553
+ *
554
+ * @param {Texture} texture - The texture to generate the function for.
555
+ * @param {string} textureProperty - The name of the video texture uniform in the shader.
556
+ * @param {string} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
557
+ * @return {string} The name of the dimension variable.
558
+ */
559
+ generateTextureDimension( texture, textureProperty, levelSnippet ) {
560
+
561
+ const textureData = this.getDataFromNode( texture, this.shaderStage, this.cache );
562
+
563
+ if ( textureData.dimensionsSnippet === undefined ) textureData.dimensionsSnippet = {};
564
+
565
+ let textureDimensionNode = textureData.dimensionsSnippet[ levelSnippet ];
566
+
567
+ if ( textureData.dimensionsSnippet[ levelSnippet ] === undefined ) {
568
+
569
+ let textureDimensionsParams;
570
+ let dimensionType;
571
+
572
+ const { primarySamples } = this.renderer.backend.utils.getTextureSampleData( texture );
573
+ const isMultisampled = primarySamples > 1;
574
+
575
+ if ( texture.is3DTexture || texture.isData3DTexture ) {
576
+
577
+ dimensionType = 'vec3<u32>';
578
+
579
+ } else {
580
+
581
+ // Regular 2D textures, depth textures, etc.
582
+ dimensionType = 'vec2<u32>';
583
+
584
+ }
585
+
586
+ // Build parameters string based on texture type and multisampling
587
+ if ( isMultisampled || texture.isStorageTexture ) {
588
+
589
+ textureDimensionsParams = textureProperty;
590
+
591
+ } else {
592
+
593
+ textureDimensionsParams = `${textureProperty}${levelSnippet ? `, u32( ${ levelSnippet } )` : ''}`;
594
+
595
+ }
596
+
597
+ textureDimensionNode = new VarNode( new ExpressionNode( `textureDimensions( ${ textureDimensionsParams } )`, dimensionType ) );
598
+
599
+ textureData.dimensionsSnippet[ levelSnippet ] = textureDimensionNode;
600
+
601
+ if ( texture.isArrayTexture || texture.isDataArrayTexture || texture.is3DTexture || texture.isData3DTexture ) {
602
+
603
+ textureData.arrayLayerCount = new VarNode(
604
+ new ExpressionNode(
605
+ `textureNumLayers(${textureProperty})`,
606
+ 'u32'
607
+ )
608
+ );
609
+
610
+ }
611
+
612
+ // For cube textures, we know it's always 6 faces
613
+ if ( texture.isTextureCube ) {
614
+
615
+ textureData.cubeFaceCount = new VarNode(
616
+ new ExpressionNode( '6u', 'u32' )
617
+ );
618
+
619
+ }
620
+
621
+ }
622
+
623
+ return textureDimensionNode.build( this );
624
+
625
+ }
626
+
627
+ /**
628
+ * Generates the WGSL snippet that resolves the dimensions of the given texture.
629
+ *
630
+ * @param {Texture} texture - The texture.
631
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
632
+ * @param {string} levelSnippet - A WGSL snippet that represents the mip level.
633
+ * @return {string} The WGSL snippet.
634
+ */
635
+ generateTextureSize( texture, textureProperty, levelSnippet ) {
636
+
637
+ const { primarySamples } = this.renderer.backend.utils.getTextureSampleData( texture );
638
+ const isMultisampled = primarySamples > 1;
639
+
640
+ const params = ( isMultisampled || texture.isStorageTexture ) ? textureProperty : `${ textureProperty }, ${ levelSnippet }`;
641
+
642
+ return `textureDimensions( ${ params } )`;
643
+
644
+ }
645
+
646
+ /**
647
+ * Generates the WGSL snippet for a manual filtered texture.
648
+ *
649
+ * @param {Texture} texture - The texture.
650
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
651
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
652
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
653
+ * @param {string} [levelSnippet='0u'] - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
654
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
655
+ * @return {string} The WGSL snippet.
656
+ */
657
+ generateFilteredTexture( texture, textureProperty, uvSnippet, offsetSnippet, levelSnippet = '0u', depthSnippet ) {
658
+
659
+ const wrapFunction = this.generateWrapFunction( texture );
660
+ const textureDimension = this.generateTextureDimension( texture, textureProperty, levelSnippet );
661
+
662
+ if ( offsetSnippet ) {
663
+
664
+ uvSnippet = `${ uvSnippet } + vec2<f32>(${ offsetSnippet }) / ${ textureDimension }`;
665
+
666
+ }
667
+
668
+ if ( depthSnippet ) {
669
+
670
+ this._include( 'biquadraticTextureArray' );
671
+
672
+ return `tsl_biquadraticTexture_array( ${ textureProperty }, ${ wrapFunction }( ${ uvSnippet } ), ${ textureDimension }, u32( ${ depthSnippet } ), u32( ${ levelSnippet } ) )`;
673
+
674
+ }
675
+
676
+ this._include( 'biquadraticTexture' );
677
+
678
+ return `tsl_biquadraticTexture( ${ textureProperty }, ${ wrapFunction }( ${ uvSnippet } ), ${ textureDimension }, u32( ${ levelSnippet } ) )`;
679
+
680
+ }
681
+
682
+ /**
683
+ * Generates the WGSL snippet for a texture lookup with explicit level-of-detail.
684
+ * Since it's a lookup, no sampling or filtering is applied.
685
+ *
686
+ * @param {Texture} texture - The texture.
687
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
688
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
689
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
690
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
691
+ * @param {string} [levelSnippet='0u'] - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
692
+ * @return {string} The WGSL snippet.
693
+ */
694
+ generateTextureLod( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet, levelSnippet = '0u' ) {
695
+
696
+ // Cube textures cannot use textureLoad in WGSL, must use textureSampleLevel
697
+ if ( texture.isCubeTexture === true ) {
698
+
699
+ if ( offsetSnippet ) {
700
+
701
+ uvSnippet = `${ uvSnippet } + vec3<f32>(${ offsetSnippet })`;
702
+
703
+ }
704
+
705
+ // Depth textures require integer level, regular textures use float
706
+ const levelType = texture.isDepthTexture ? 'u32' : 'f32';
707
+
708
+ return `textureSampleLevel( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ levelType }( ${ levelSnippet } ) )`;
709
+
710
+ }
711
+
712
+ const wrapFunction = this.generateWrapFunction( texture );
713
+ const textureDimension = this.generateTextureDimension( texture, textureProperty, levelSnippet );
714
+
715
+ const vecType = texture.is3DTexture || texture.isData3DTexture ? 'vec3' : 'vec2';
716
+ const textureDimensionMargin = ( vecType === 'vec3' ) ? 'vec3<u32>( 1, 1, 1 )' : 'vec2<u32>( 1, 1 )';
717
+
718
+ if ( offsetSnippet ) {
719
+
720
+ uvSnippet = `${ uvSnippet } + ${ vecType }<f32>(${ offsetSnippet }) / ${ vecType }<f32>( ${ textureDimension } )`;
721
+
722
+ }
723
+
724
+ const clampMin = `${ vecType }<f32>( 0 )`;
725
+ const clampMax = `${ vecType }<f32>( ${ textureDimension } - ${ textureDimensionMargin } )`;
726
+
727
+ uvSnippet = `${ vecType }<u32>( clamp( floor( ${ wrapFunction }( ${ uvSnippet } ) * ${ vecType }<f32>( ${ textureDimension } ) ), ${ clampMin }, ${ clampMax } ) )`;
728
+
729
+ return this.generateTextureLoad( texture, textureProperty, uvSnippet, levelSnippet, depthSnippet, null );
730
+
731
+ }
732
+
733
+ /**
734
+ * Generates the WGSL snippet that reads a single texel from a storage texture.
735
+ *
736
+ * @param {Texture} texture - The texture.
737
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
738
+ * @param {string} uvIndexSnippet - A WGSL snippet that represents texture coordinates used for sampling.
739
+ * @param {?string} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
740
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
741
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
742
+ * @return {string} The WGSL snippet.
743
+ */
744
+ generateStorageTextureLoad( texture, textureProperty, uvIndexSnippet, levelSnippet, depthSnippet, offsetSnippet ) {
745
+
746
+ if ( offsetSnippet ) {
747
+
748
+ uvIndexSnippet = `${ uvIndexSnippet } + ${ offsetSnippet }`;
749
+
750
+ }
751
+
752
+ let snippet;
753
+
754
+ if ( depthSnippet ) {
755
+
756
+ snippet = `textureLoad( ${ textureProperty }, ${ uvIndexSnippet }, ${ depthSnippet } )`;
757
+
758
+ } else {
759
+
760
+ snippet = `textureLoad( ${ textureProperty }, ${ uvIndexSnippet } )`;
761
+
762
+ }
763
+
764
+ return snippet;
765
+
766
+ }
767
+
768
+ /**
769
+ * Generates the WGSL snippet that reads a single texel from a texture without sampling or filtering.
770
+ *
771
+ * @param {Texture} texture - The texture.
772
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
773
+ * @param {string} uvIndexSnippet - A WGSL snippet that represents texture coordinates used for sampling.
774
+ * @param {?string} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
775
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
776
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
777
+ * @return {string} The WGSL snippet.
778
+ */
779
+ generateTextureLoad( texture, textureProperty, uvIndexSnippet, levelSnippet, depthSnippet, offsetSnippet ) {
780
+
781
+ if ( levelSnippet === null ) levelSnippet = '0u';
782
+
783
+ if ( offsetSnippet ) {
784
+
785
+ uvIndexSnippet = `${ uvIndexSnippet } + ${ offsetSnippet }`;
786
+
787
+ }
788
+
789
+ let snippet;
790
+
791
+ if ( depthSnippet ) {
792
+
793
+ snippet = `textureLoad( ${ textureProperty }, ${ uvIndexSnippet }, ${ depthSnippet }, u32( ${ levelSnippet } ) )`;
794
+
795
+ } else {
796
+
797
+ snippet = `textureLoad( ${ textureProperty }, ${ uvIndexSnippet }, u32( ${ levelSnippet } ) )`;
798
+
799
+ if ( this.renderer.backend.compatibilityMode && texture.isDepthTexture ) {
800
+
801
+ snippet += '.x';
802
+
803
+ }
804
+
805
+ }
806
+
807
+ return snippet;
808
+
809
+ }
810
+
811
+ /**
812
+ * Generates the WGSL snippet that writes a single texel to a texture.
813
+ *
814
+ * @param {Texture} texture - The texture.
815
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
816
+ * @param {string} uvIndexSnippet - A WGSL snippet that represents texture coordinates used for sampling.
817
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
818
+ * @param {string} valueSnippet - A WGSL snippet that represent the new texel value.
819
+ * @return {string} The WGSL snippet.
820
+ */
821
+ generateTextureStore( texture, textureProperty, uvIndexSnippet, depthSnippet, valueSnippet ) {
822
+
823
+ let snippet;
824
+
825
+ if ( depthSnippet ) {
826
+
827
+ snippet = `textureStore( ${ textureProperty }, ${ uvIndexSnippet }, ${ depthSnippet }, ${ valueSnippet } )`;
828
+
829
+ } else {
830
+
831
+ snippet = `textureStore( ${ textureProperty }, ${ uvIndexSnippet }, ${ valueSnippet } )`;
832
+
833
+ }
834
+
835
+ return snippet;
836
+
837
+ }
838
+
839
+ /**
840
+ * Returns `true` if the sampled values of the given texture should be compared against a reference value.
841
+ *
842
+ * @param {Texture} texture - The texture.
843
+ * @return {boolean} Whether the sampled values of the given texture should be compared against a reference value or not.
844
+ */
845
+ isSampleCompare( texture ) {
846
+
847
+ return texture.isDepthTexture === true && texture.compareFunction !== null && this.renderer.hasCompatibility( Compatibility.TEXTURE_COMPARE );
848
+
849
+ }
850
+
851
+ /**
852
+ * Returns `true` if the given texture is unfilterable.
853
+ *
854
+ * @param {Texture} texture - The texture.
855
+ * @return {boolean} Whether the given texture is unfilterable or not.
856
+ */
857
+ isUnfilterable( texture ) {
858
+
859
+ return this.getComponentTypeFromTexture( texture ) !== 'float' ||
860
+ ( ! this.isAvailable( 'float32Filterable' ) && texture.type === FloatType ) ||
861
+ ( this.isSampleCompare( texture ) === false && texture.minFilter === NearestFilter && texture.magFilter === NearestFilter ) ||
862
+ this.renderer.backend.utils.getTextureSampleData( texture ).primarySamples > 1 ||
863
+ texture.normalized === true && ( texture.type === ShortType || texture.type === UnsignedShortType );
864
+
865
+ }
866
+
867
+ /**
868
+ * Generates the WGSL snippet for sampling/loading the given texture.
869
+ *
870
+ * @param {Texture} texture - The texture.
871
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
872
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
873
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
874
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
875
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
876
+ * @return {string} The WGSL snippet.
877
+ */
878
+ generateTexture( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet, shaderStage = this.shaderStage ) {
879
+
880
+ let snippet = null;
881
+
882
+ if ( this.isUnfilterable( texture ) ) {
883
+
884
+ snippet = this.generateTextureLod( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet, '0', shaderStage );
885
+
886
+ } else {
887
+
888
+ snippet = this._generateTextureSample( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet, shaderStage );
889
+
890
+ }
891
+
892
+ return snippet;
893
+
894
+ }
895
+
896
+ /**
897
+ * Generates the WGSL snippet for sampling/loading the given texture using explicit gradients.
898
+ *
899
+ * @param {Texture} texture - The texture.
900
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
901
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
902
+ * @param {Array<string>} gradSnippet - An array holding both gradient WGSL snippets.
903
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
904
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
905
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
906
+ * @return {string} The WGSL snippet.
907
+ */
908
+ generateTextureGrad( texture, textureProperty, uvSnippet, gradSnippet, depthSnippet, offsetSnippet, shaderStage = this.shaderStage ) {
909
+
910
+ if ( shaderStage === 'fragment' ) {
911
+
912
+ // Unfilterable textures have no sampler binding. Use the same texel lookup as regular
913
+ // sampling, preserving nearest filtering, wrapping and offsets.
914
+
915
+ if ( this.isUnfilterable( texture ) ) return this.generateTexture( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet, shaderStage );
916
+
917
+ if ( depthSnippet ) {
918
+
919
+ if ( offsetSnippet ) {
920
+
921
+ return `textureSampleGrad( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ gradSnippet[ 0 ] }, ${ gradSnippet[ 1 ] }, ${ offsetSnippet } )`;
922
+
923
+ }
924
+
925
+ return `textureSampleGrad( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ gradSnippet[ 0 ] }, ${ gradSnippet[ 1 ] } )`;
926
+
927
+ } else {
928
+
929
+ if ( offsetSnippet ) {
930
+
931
+ return `textureSampleGrad( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ gradSnippet[ 0 ] }, ${ gradSnippet[ 1 ] }, ${ offsetSnippet } )`;
932
+
933
+ }
934
+
935
+ return `textureSampleGrad( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ gradSnippet[ 0 ] }, ${ gradSnippet[ 1 ] } )`;
936
+
937
+ }
938
+
939
+ } else {
940
+
941
+ error( `WebGPURenderer: THREE.TextureNode.gradient() does not support ${ shaderStage } shader.` );
942
+
943
+ }
944
+
945
+ }
946
+
947
+ /**
948
+ * Generates the WGSL snippet for sampling a depth texture and comparing the sampled depth values
949
+ * against a reference value.
950
+ *
951
+ * @param {Texture} texture - The texture.
952
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
953
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
954
+ * @param {string} compareSnippet - A WGSL snippet that represents the reference value.
955
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
956
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
957
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
958
+ * @return {string} The WGSL snippet.
959
+ */
960
+ generateTextureCompare( texture, textureProperty, uvSnippet, compareSnippet, depthSnippet, offsetSnippet, shaderStage = this.shaderStage ) {
961
+
962
+ if ( shaderStage === 'fragment' ) {
963
+
964
+ if ( texture.isDepthTexture === true && texture.isArrayTexture === true ) {
965
+
966
+ if ( offsetSnippet ) {
967
+
968
+ return `textureSampleCompare( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ compareSnippet }, ${ offsetSnippet } )`;
969
+
970
+ }
971
+
972
+ return `textureSampleCompare( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ compareSnippet } )`;
973
+
974
+ }
975
+
976
+ if ( offsetSnippet ) {
977
+
978
+ return `textureSampleCompare( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ compareSnippet }, ${ offsetSnippet } )`;
979
+
980
+ }
981
+
982
+ return `textureSampleCompare( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ compareSnippet } )`;
983
+
984
+ } else {
985
+
986
+ error( `WebGPURenderer: THREE.DepthTexture.compareFunction() does not support ${ shaderStage } shader.` );
987
+
988
+ }
989
+
990
+ }
991
+
992
+ /**
993
+ * Generates the WGSL snippet for gathering four texels from the given texture.
994
+ *
995
+ * @param {Texture} texture - The texture.
996
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
997
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
998
+ * @param {string} gatherSnippet - A WGSL snippet that represents the index of the channel to read.
999
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
1000
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
1001
+ * @return {string} The WGSL snippet.
1002
+ */
1003
+ generateTextureGather( texture, textureProperty, uvSnippet, gatherSnippet, depthSnippet, offsetSnippet ) {
1004
+
1005
+ const { primarySamples } = this.renderer.backend.utils.getTextureSampleData( texture );
1006
+
1007
+ if ( primarySamples > 1 ) {
1008
+
1009
+ // textureGather() has no overload for multisampled textures (e.g. the depth
1010
+ // of a MSAA render target), so the four texels are fetched with textureLoad()
1011
+
1012
+ const textureDimension = this.generateTextureDimension( texture, textureProperty, '0u' );
1013
+
1014
+ let coordSnippet = `vec2<i32>( floor( ${ uvSnippet } * vec2<f32>( ${ textureDimension } ) - 0.5 ) )`;
1015
+
1016
+ if ( offsetSnippet ) {
1017
+
1018
+ coordSnippet = `${ coordSnippet } + ${ offsetSnippet }`;
1019
+
1020
+ }
1021
+
1022
+ const coord = new VarNode( new ExpressionNode( coordSnippet, 'ivec2' ) ).build( this );
1023
+ const coordMax = `vec2<i32>( ${ textureDimension } ) - 1`;
1024
+
1025
+ const load = ( x, y ) => {
1026
+
1027
+ const snippet = this.generateTextureLoad( texture, textureProperty, `clamp( ${ coord } + vec2<i32>( ${ x }, ${ y } ), vec2<i32>( 0 ), ${ coordMax } )`, null, null, null );
1028
+
1029
+ return texture.isDepthTexture === true ? snippet : `${ snippet }[ ${ gatherSnippet } ]`;
1030
+
1031
+ };
1032
+
1033
+ // same texel order as textureGather()
1034
+
1035
+ const componentPrefix = this.getComponentTypeFromTexture( texture ).charAt( 0 );
1036
+
1037
+ return `vec4<${ componentPrefix }32>( ${ load( 0, 1 ) }, ${ load( 1, 1 ) }, ${ load( 1, 0 ) }, ${ load( 0, 0 ) } )`;
1038
+
1039
+ }
1040
+
1041
+ const componentSnippet = texture.isDepthTexture === true ? '' : `${gatherSnippet}, `;
1042
+
1043
+ if ( depthSnippet ) {
1044
+
1045
+ if ( offsetSnippet ) {
1046
+
1047
+ return `textureGather( ${componentSnippet}${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ offsetSnippet } )`;
1048
+
1049
+ }
1050
+
1051
+ return `textureGather( ${componentSnippet}${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet } )`;
1052
+
1053
+ }
1054
+
1055
+ if ( offsetSnippet ) {
1056
+
1057
+ return `textureGather( ${componentSnippet}${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ offsetSnippet } )`;
1058
+
1059
+ }
1060
+
1061
+ return `textureGather( ${componentSnippet}${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet })`;
1062
+
1063
+ }
1064
+
1065
+ /**
1066
+ * Generates the WGSL snippet for performing a depth comparison on four texels in the given depth texture.
1067
+ *
1068
+ * @param {Texture} texture - The texture.
1069
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
1070
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
1071
+ * @param {string} compareSnippet - A WGSL snippet that represents the reference value.
1072
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
1073
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
1074
+ * @return {string} The WGSL snippet.
1075
+ */
1076
+ generateTextureGatherCompare( texture, textureProperty, uvSnippet, compareSnippet, depthSnippet, offsetSnippet ) {
1077
+
1078
+ if ( depthSnippet ) {
1079
+
1080
+ if ( offsetSnippet ) {
1081
+
1082
+ return `textureGatherCompare( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ compareSnippet }, ${ offsetSnippet } )`;
1083
+
1084
+ }
1085
+
1086
+ return `textureGatherCompare( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ compareSnippet })`;
1087
+
1088
+ }
1089
+
1090
+ if ( offsetSnippet ) {
1091
+
1092
+ return `textureGatherCompare( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ compareSnippet }, ${ offsetSnippet } )`;
1093
+
1094
+ }
1095
+
1096
+ return `textureGatherCompare( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ compareSnippet })`;
1097
+
1098
+ }
1099
+
1100
+ /**
1101
+ * Generates the WGSL snippet when sampling textures with explicit mip level.
1102
+ *
1103
+ * @param {Texture} texture - The texture.
1104
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
1105
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
1106
+ * @param {string} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
1107
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
1108
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
1109
+ * @return {string} The WGSL snippet.
1110
+ */
1111
+ generateTextureLevel( texture, textureProperty, uvSnippet, levelSnippet, depthSnippet, offsetSnippet ) {
1112
+
1113
+ if ( this.isUnfilterable( texture ) === false ) {
1114
+
1115
+ if ( depthSnippet ) {
1116
+
1117
+ if ( offsetSnippet ) {
1118
+
1119
+ return `textureSampleLevel( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ levelSnippet }, ${ offsetSnippet } )`;
1120
+
1121
+ }
1122
+
1123
+ return `textureSampleLevel( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ levelSnippet } )`;
1124
+
1125
+ } else {
1126
+
1127
+ if ( offsetSnippet ) {
1128
+
1129
+ return `textureSampleLevel( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ levelSnippet }, ${ offsetSnippet } )`;
1130
+
1131
+ }
1132
+
1133
+ return `textureSampleLevel( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ levelSnippet } )`;
1134
+
1135
+ }
1136
+
1137
+ } else if ( this.isFilteredTexture( texture ) ) {
1138
+
1139
+ return this.generateFilteredTexture( texture, textureProperty, uvSnippet, offsetSnippet, levelSnippet, depthSnippet );
1140
+
1141
+ } else {
1142
+
1143
+ return this.generateTextureLod( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet, levelSnippet );
1144
+
1145
+ }
1146
+
1147
+ }
1148
+
1149
+ /**
1150
+ * Generates the WGSL snippet when sampling textures with a bias to the mip level.
1151
+ *
1152
+ * @param {Texture} texture - The texture.
1153
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
1154
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
1155
+ * @param {string} biasSnippet - A WGSL snippet that represents the bias to apply to the mip level before sampling.
1156
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
1157
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
1158
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
1159
+ * @return {string} The WGSL snippet.
1160
+ */
1161
+ generateTextureBias( texture, textureProperty, uvSnippet, biasSnippet, depthSnippet, offsetSnippet, shaderStage = this.shaderStage ) {
1162
+
1163
+ if ( shaderStage === 'fragment' ) {
1164
+
1165
+ if ( depthSnippet ) {
1166
+
1167
+ if ( offsetSnippet ) {
1168
+
1169
+ return `textureSampleBias( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ biasSnippet }, ${ offsetSnippet } )`;
1170
+
1171
+ }
1172
+
1173
+ return `textureSampleBias( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ biasSnippet } )`;
1174
+
1175
+ } else {
1176
+
1177
+ if ( offsetSnippet ) {
1178
+
1179
+ return `textureSampleBias( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ biasSnippet }, ${ offsetSnippet } )`;
1180
+
1181
+ }
1182
+
1183
+ return `textureSampleBias( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ biasSnippet } )`;
1184
+
1185
+ }
1186
+
1187
+ } else {
1188
+
1189
+ error( `WebGPURenderer: THREE.TextureNode.biasNode does not support ${ shaderStage } shader.` );
1190
+
1191
+ }
1192
+
1193
+ }
1194
+
1195
+ /**
1196
+ * Returns a WGSL snippet that represents the property name of the given node.
1197
+ *
1198
+ * @param {Node} node - The node.
1199
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
1200
+ * @return {string} The property name.
1201
+ */
1202
+ getPropertyName( node, shaderStage = this.shaderStage ) {
1203
+
1204
+ if ( node.isNodeVarying === true && node.needsInterpolation === true ) {
1205
+
1206
+ if ( shaderStage === 'vertex' ) {
1207
+
1208
+ return `varyings.${ node.name }`;
1209
+
1210
+ }
1211
+
1212
+ } else if ( node.isNodeUniform === true ) {
1213
+
1214
+ const name = node.name;
1215
+ const type = node.type;
1216
+
1217
+ if ( type === 'texture' || type === 'cubeTexture' || type === 'cubeDepthTexture' || type === 'storageTexture' || type === 'texture3D' ) {
1218
+
1219
+ return name;
1220
+
1221
+ } else if ( type === 'buffer' || type === 'storageBuffer' || type === 'indirectStorageBuffer' ) {
1222
+
1223
+ return name + '.value';
1224
+
1225
+ } else {
1226
+
1227
+ return node.groupNode.name + '.' + name;
1228
+
1229
+ }
1230
+
1231
+ }
1232
+
1233
+ return super.getPropertyName( node );
1234
+
1235
+ }
1236
+
1237
+ /**
1238
+ * Returns the identifier the given node declares in the shader. Buffers are
1239
+ * accessed via `name.value` but declare `name` in the module scope.
1240
+ *
1241
+ * @param {Object} node - The node.
1242
+ * @return {string} The declaration name.
1243
+ */
1244
+ getDeclarationName( node ) {
1245
+
1246
+ if ( node.isNodeUniform === true ) {
1247
+
1248
+ const type = node.type;
1249
+
1250
+ if ( type === 'buffer' || type === 'storageBuffer' || type === 'indirectStorageBuffer' ) {
1251
+
1252
+ return node.name;
1253
+
1254
+ }
1255
+
1256
+ }
1257
+
1258
+ return super.getDeclarationName( node );
1259
+
1260
+ }
1261
+
1262
+ /**
1263
+ * Returns whether the given name is a reserved keyword of WGSL.
1264
+ *
1265
+ * @param {string} name - The name to test.
1266
+ * @return {boolean} Whether the name is a reserved keyword or not.
1267
+ */
1268
+ isReservedKeyword( name ) {
1269
+
1270
+ return wgslReservedKeywords.has( name );
1271
+
1272
+ }
1273
+
1274
+ /**
1275
+ * Returns the output struct name.
1276
+ *
1277
+ * @return {string} The name of the output struct.
1278
+ */
1279
+ getOutputStructName() {
1280
+
1281
+ return 'output';
1282
+
1283
+ }
1284
+
1285
+ /**
1286
+ * Returns the native shader operator name for a given generic name.
1287
+ *
1288
+ * @param {string} op - The operator name to resolve.
1289
+ * @return {?string} The resolved operator name.
1290
+ */
1291
+ getFunctionOperator( op ) {
1292
+
1293
+ const fnOp = wgslFnOpLib[ op ];
1294
+
1295
+ if ( fnOp !== undefined ) {
1296
+
1297
+ this._include( fnOp );
1298
+
1299
+ return fnOp;
1300
+
1301
+ }
1302
+
1303
+ return null;
1304
+
1305
+ }
1306
+
1307
+ /**
1308
+ * Returns the node access for the given node and shader stage.
1309
+ *
1310
+ * @param {StorageTextureNode|StorageBufferNode} node - The storage node.
1311
+ * @param {string} shaderStage - The shader stage.
1312
+ * @return {string} The node access.
1313
+ */
1314
+ getNodeAccess( node, shaderStage ) {
1315
+
1316
+ if ( shaderStage !== 'compute' ) {
1317
+
1318
+ if ( node.isAtomic === true ) {
1319
+
1320
+ // Per the WGSL spec, atomic built-in functions are only allowed in
1321
+ // the fragment and compute stages, not in the vertex stage.
1322
+
1323
+ if ( shaderStage === 'vertex' ) {
1324
+
1325
+ warn( 'WebGPURenderer: Atomic operations are not supported in the vertex stage. They are only available in the fragment and compute stages.' );
1326
+
1327
+ return NodeAccess.READ_ONLY;
1328
+
1329
+ }
1330
+
1331
+ return NodeAccess.READ_WRITE;
1332
+
1333
+ }
1334
+
1335
+ // Honor read-write for storage texture in the fragment stage.
1336
+
1337
+ if ( shaderStage === 'fragment' && node.isStorageTextureNode === true && node.access === NodeAccess.READ_WRITE ) {
1338
+
1339
+ return NodeAccess.READ_WRITE;
1340
+
1341
+ }
1342
+
1343
+ return NodeAccess.READ_ONLY;
1344
+
1345
+ }
1346
+
1347
+ return node.access;
1348
+
1349
+ }
1350
+
1351
+ /**
1352
+ * Returns A WGSL snippet representing the storage access.
1353
+ *
1354
+ * @param {StorageTextureNode|StorageBufferNode} node - The storage node.
1355
+ * @param {string} shaderStage - The shader stage.
1356
+ * @return {string} The WGSL snippet representing the storage access.
1357
+ */
1358
+ getStorageAccess( node, shaderStage ) {
1359
+
1360
+ return accessNames[ this.getNodeAccess( node, shaderStage ) ];
1361
+
1362
+ }
1363
+
1364
+ /**
1365
+ * This method is one of the more important ones since it's responsible
1366
+ * for generating a matching binding instance for the given uniform node.
1367
+ *
1368
+ * These bindings are later used in the renderer to create bind groups
1369
+ * and layouts.
1370
+ *
1371
+ * @param {UniformNode} node - The uniform node.
1372
+ * @param {string} type - The node data type.
1373
+ * @param {string} shaderStage - The shader stage.
1374
+ * @param {?string} [name=null] - An optional uniform name.
1375
+ * @return {NodeUniform} The node uniform object.
1376
+ */
1377
+ getUniformFromNode( node, type, shaderStage, name = null ) {
1378
+
1379
+ const uniformNode = super.getUniformFromNode( node, type, shaderStage, name );
1380
+ const nodeData = this.getDataFromNode( node, shaderStage, this.globalCache );
1381
+
1382
+ if ( nodeData.uniformGPU === undefined ) {
1383
+
1384
+ let uniformGPU;
1385
+
1386
+ const group = node.groupNode;
1387
+ const groupName = group.name;
1388
+
1389
+ const bindings = this.getBindGroupArray( groupName, shaderStage );
1390
+
1391
+ if ( type === 'texture' || type === 'cubeTexture' || type === 'cubeDepthTexture' || type === 'storageTexture' || type === 'texture3D' ) {
1392
+
1393
+ let texture = null;
1394
+
1395
+ const access = this.getNodeAccess( node, shaderStage );
1396
+
1397
+ if ( type === 'texture' || type === 'storageTexture' ) {
1398
+
1399
+ if ( node.value.is3DTexture === true ) {
1400
+
1401
+ texture = new NodeSampledTexture3D( uniformNode.name, uniformNode.node, group, access );
1402
+
1403
+ } else {
1404
+
1405
+ texture = new NodeSampledTexture( uniformNode.name, uniformNode.node, group, access );
1406
+
1407
+ }
1408
+
1409
+ } else if ( type === 'cubeTexture' || type === 'cubeDepthTexture' ) {
1410
+
1411
+ texture = new NodeSampledCubeTexture( uniformNode.name, uniformNode.node, group, access );
1412
+
1413
+ } else if ( type === 'texture3D' ) {
1414
+
1415
+ texture = new NodeSampledTexture3D( uniformNode.name, uniformNode.node, group, access );
1416
+
1417
+ }
1418
+
1419
+ texture.store = node.isStorageTextureNode === true;
1420
+ texture.mipLevel = texture.store ? node.mipLevel : 0;
1421
+ texture.setVisibility( gpuShaderStageLib[ shaderStage ] );
1422
+
1423
+ // Cube textures always need samplers (they use textureSampleLevel, not textureLoad)
1424
+ // Also textureGather always need sampler.
1425
+ const needsSampler = node.value.isCubeTexture === true || ( this.isUnfilterable( node.value ) === false && texture.store === false ) || node.gatherNode !== null;
1426
+
1427
+ if ( needsSampler ) {
1428
+
1429
+ const sampler = new NodeSampler( `${ uniformNode.name }_sampler`, uniformNode.node, group );
1430
+ sampler.setVisibility( gpuShaderStageLib[ shaderStage ] );
1431
+
1432
+ bindings.push( sampler, texture );
1433
+
1434
+ uniformGPU = [ sampler, texture ];
1435
+
1436
+ } else {
1437
+
1438
+ bindings.push( texture );
1439
+
1440
+ uniformGPU = [ texture ];
1441
+
1442
+ }
1443
+
1444
+ } else if ( type === 'buffer' || type === 'storageBuffer' || type === 'indirectStorageBuffer' ) {
1445
+
1446
+ const bufferClass = type === 'buffer' ? NodeUniformBuffer : NodeStorageBuffer;
1447
+
1448
+ const buffer = new bufferClass( node, group );
1449
+ buffer.setVisibility( gpuShaderStageLib[ shaderStage ] );
1450
+
1451
+ bindings.push( buffer );
1452
+
1453
+ uniformGPU = buffer;
1454
+
1455
+ } else {
1456
+
1457
+ let uniformsGroup = this.uniformGroups[ groupName ];
1458
+
1459
+ if ( uniformsGroup === undefined ) {
1460
+
1461
+ uniformsGroup = new NodeUniformsGroup( groupName, group );
1462
+ uniformsGroup.setVisibility( GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT | GPUShaderStage.COMPUTE );
1463
+
1464
+ this.uniformGroups[ groupName ] = uniformsGroup;
1465
+
1466
+ }
1467
+
1468
+ // Add to bindings for this stage if not already present
1469
+ if ( bindings.indexOf( uniformsGroup ) === - 1 ) {
1470
+
1471
+ bindings.push( uniformsGroup );
1472
+
1473
+ }
1474
+
1475
+ uniformGPU = this.getNodeUniform( uniformNode, type );
1476
+
1477
+ // Only add uniform if not already present in the group (check by name to avoid duplicates across stages)
1478
+ const uniformName = uniformGPU.name;
1479
+ const alreadyExists = uniformsGroup.uniforms.some( u => u.name === uniformName );
1480
+
1481
+ if ( ! alreadyExists ) {
1482
+
1483
+ uniformsGroup.addUniform( uniformGPU );
1484
+
1485
+ }
1486
+
1487
+ }
1488
+
1489
+ nodeData.uniformGPU = uniformGPU;
1490
+
1491
+ }
1492
+
1493
+ return uniformNode;
1494
+
1495
+ }
1496
+
1497
+ /**
1498
+ * This method should be used whenever builtins are required in nodes.
1499
+ * The internal builtins data structure will make sure builtins are
1500
+ * defined in the WGSL source.
1501
+ *
1502
+ * @param {string} name - The builtin name.
1503
+ * @param {string} property - The property name.
1504
+ * @param {string} type - The node data type.
1505
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
1506
+ * @return {string} The property name.
1507
+ */
1508
+ getBuiltin( name, property, type, shaderStage = this.shaderStage ) {
1509
+
1510
+ const map = this.builtins[ shaderStage ] || ( this.builtins[ shaderStage ] = new Map() );
1511
+
1512
+ if ( map.has( name ) === false ) {
1513
+
1514
+ map.set( name, {
1515
+ name,
1516
+ property,
1517
+ type
1518
+ } );
1519
+
1520
+ }
1521
+
1522
+ return property;
1523
+
1524
+ }
1525
+
1526
+ /**
1527
+ * Returns `true` if the given builtin is defined in the given shader stage.
1528
+ *
1529
+ * @param {string} name - The builtin name.
1530
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
1531
+ * @return {boolean} Whether the given builtin is defined in the given shader stage or not.
1532
+ */
1533
+ hasBuiltin( name, shaderStage = this.shaderStage ) {
1534
+
1535
+ return ( this.builtins[ shaderStage ] !== undefined && this.builtins[ shaderStage ].has( name ) );
1536
+
1537
+ }
1538
+
1539
+ /**
1540
+ * Returns the vertex index builtin.
1541
+ *
1542
+ * @return {string} The vertex index.
1543
+ */
1544
+ getVertexIndex() {
1545
+
1546
+ if ( this.shaderStage === 'vertex' ) {
1547
+
1548
+ return this.getBuiltin( 'vertex_index', 'vertexIndex', 'u32', 'attribute' );
1549
+
1550
+ }
1551
+
1552
+ return 'vertexIndex';
1553
+
1554
+ }
1555
+
1556
+ /**
1557
+ * Builds the given shader node.
1558
+ *
1559
+ * @param {ShaderNodeInternal} shaderNode - The shader node.
1560
+ * @return {string} The WGSL function code.
1561
+ */
1562
+ buildFunctionCode( shaderNode ) {
1563
+
1564
+ const layout = shaderNode.layout;
1565
+ const flowData = this.flowShaderNode( shaderNode );
1566
+
1567
+ const parameters = [];
1568
+
1569
+ for ( const input of layout.inputs ) {
1570
+
1571
+ parameters.push( input.name + ' : ' + this.getType( input.type ) );
1572
+
1573
+ }
1574
+
1575
+ //
1576
+
1577
+ let code = `fn ${ layout.name }( ${ parameters.join( ', ' ) } ) -> ${ this.getType( layout.type ) } {
1578
+ ${ flowData.vars }
1579
+ ${ flowData.code }
1580
+ `;
1581
+
1582
+ if ( flowData.result ) {
1583
+
1584
+ code += `\treturn ${ flowData.result };\n`;
1585
+
1586
+ }
1587
+
1588
+ code += '\n}\n';
1589
+
1590
+ //
1591
+
1592
+ return code;
1593
+
1594
+ }
1595
+
1596
+ /**
1597
+ * Contextually returns either the vertex stage instance index builtin
1598
+ * or the linearized index of an compute invocation within a grid of workgroups.
1599
+ *
1600
+ * @return {string} The instance index.
1601
+ */
1602
+ getInstanceIndex() {
1603
+
1604
+ if ( this.shaderStage === 'vertex' ) {
1605
+
1606
+ return this.getBuiltin( 'instance_index', 'instanceIndex', 'u32', 'attribute' );
1607
+
1608
+ }
1609
+
1610
+ return 'instanceIndex';
1611
+
1612
+ }
1613
+
1614
+
1615
+ /**
1616
+ * Returns a builtin representing the index of a compute invocation within the scope of a workgroup load.
1617
+ *
1618
+ * @return {string} The invocation local index.
1619
+ */
1620
+ getInvocationLocalIndex() {
1621
+
1622
+ return this.getBuiltin( 'local_invocation_index', 'invocationLocalIndex', 'u32', 'attribute' );
1623
+
1624
+ }
1625
+
1626
+ /**
1627
+ * Returns a builtin representing the size of a subgroup within the current shader.
1628
+ *
1629
+ * @return {string} The subgroup size.
1630
+ */
1631
+ getSubgroupSize() {
1632
+
1633
+ this.enableSubGroups();
1634
+
1635
+ return this.getBuiltin( 'subgroup_size', 'subgroupSize', 'u32', 'attribute' );
1636
+
1637
+ }
1638
+
1639
+ /**
1640
+ * Returns a builtin representing the index of a compute invocation within the scope of a subgroup.
1641
+ *
1642
+ * @return {string} The invocation subgroup index.
1643
+ */
1644
+ getInvocationSubgroupIndex() {
1645
+
1646
+ this.enableSubGroups();
1647
+
1648
+ return this.getBuiltin( 'subgroup_invocation_id', 'invocationSubgroupIndex', 'u32', 'attribute' );
1649
+
1650
+ }
1651
+
1652
+ /**
1653
+ * Returns a builtin representing the index of a compute invocation's subgroup within its workgroup.
1654
+ *
1655
+ * @return {string} The subgroup index.
1656
+ */
1657
+ getSubgroupIndex() {
1658
+
1659
+ this.enableSubGroups();
1660
+
1661
+ return this.getBuiltin( 'subgroup_id', 'subgroupIndex', 'u32', 'attribute' );
1662
+
1663
+ }
1664
+
1665
+ /**
1666
+ * Overwritten as a NOP since this method is intended for the WebGL 2 backend.
1667
+ *
1668
+ * @return {null} Null.
1669
+ */
1670
+ getDrawIndex() {
1671
+
1672
+ return null;
1673
+
1674
+ }
1675
+
1676
+ /**
1677
+ * Returns the front facing builtin.
1678
+ *
1679
+ * @return {string} The front facing builtin.
1680
+ */
1681
+ getFrontFacing() {
1682
+
1683
+ return this.getBuiltin( 'front_facing', 'isFront', 'bool' );
1684
+
1685
+ }
1686
+
1687
+ /**
1688
+ * Returns the frag coord builtin.
1689
+ *
1690
+ * @return {string} The frag coord builtin.
1691
+ */
1692
+ getFragCoord() {
1693
+
1694
+ return this.getBuiltin( 'position', 'fragCoord', 'vec4<f32>' ) + '.xy';
1695
+
1696
+ }
1697
+
1698
+ /**
1699
+ * Returns the frag depth builtin.
1700
+ *
1701
+ * @return {string} The frag depth builtin.
1702
+ */
1703
+ getFragDepth() {
1704
+
1705
+ return 'output.' + this.getBuiltin( 'frag_depth', 'depth', 'f32', 'output' );
1706
+
1707
+ }
1708
+
1709
+ /**
1710
+ * Returns the clip distances builtin.
1711
+ *
1712
+ * @return {string} The clip distances builtin.
1713
+ */
1714
+ getClipDistance() {
1715
+
1716
+ return 'varyings.hw_clip_distances';
1717
+
1718
+ }
1719
+
1720
+ /**
1721
+ * Whether to flip texture data along its vertical axis or not.
1722
+ *
1723
+ * @return {boolean} Returns always `false` in context of WGSL.
1724
+ */
1725
+ isFlipY() {
1726
+
1727
+ return false;
1728
+
1729
+ }
1730
+
1731
+ /**
1732
+ * Enables the given directive for the given shader stage.
1733
+ *
1734
+ * @param {string} name - The directive name.
1735
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage to enable the directive for.
1736
+ */
1737
+ enableDirective( name, shaderStage = this.shaderStage ) {
1738
+
1739
+ const stage = this.directives[ shaderStage ] || ( this.directives[ shaderStage ] = new Set() );
1740
+ stage.add( name );
1741
+
1742
+ }
1743
+
1744
+ /**
1745
+ * Returns the directives of the given shader stage as a WGSL string.
1746
+ *
1747
+ * @param {string} shaderStage - The shader stage.
1748
+ * @return {string} A WGSL snippet that enables the directives of the given stage.
1749
+ */
1750
+ getDirectives( shaderStage ) {
1751
+
1752
+ const snippets = [];
1753
+ const directives = this.directives[ shaderStage ];
1754
+
1755
+ if ( directives !== undefined ) {
1756
+
1757
+ for ( const directive of directives ) {
1758
+
1759
+ snippets.push( `enable ${directive};` );
1760
+
1761
+ }
1762
+
1763
+ }
1764
+
1765
+ return snippets.join( '\n' );
1766
+
1767
+ }
1768
+
1769
+ /**
1770
+ * Enables subgroups.
1771
+ */
1772
+ enableSubGroups() {
1773
+
1774
+ if ( this.renderer.hasFeature( 'subgroups' ) === false ) {
1775
+
1776
+ error( 'WGSLNodeBuilder: The \'subgroups\' feature is not supported by the current device.' );
1777
+
1778
+ }
1779
+
1780
+ this.enableDirective( 'subgroups' );
1781
+
1782
+ }
1783
+
1784
+ /**
1785
+ * Enables the 'clip_distances' directive.
1786
+ */
1787
+ enableClipDistances() {
1788
+
1789
+ this.enableDirective( 'clip_distances' );
1790
+
1791
+ }
1792
+
1793
+ /**
1794
+ * Enables 16 bit floats.
1795
+ */
1796
+ enableShaderF16() {
1797
+
1798
+ this.enableDirective( 'f16' );
1799
+
1800
+ }
1801
+
1802
+ /**
1803
+ * Enables dual source blending.
1804
+ */
1805
+ enableDualSourceBlending() {
1806
+
1807
+ this.enableDirective( 'dual_source_blending' );
1808
+
1809
+ }
1810
+
1811
+ /**
1812
+ * Enables hardware clipping.
1813
+ *
1814
+ * @param {string} planeCount - The clipping plane count.
1815
+ */
1816
+ enableHardwareClipping( planeCount ) {
1817
+
1818
+ this.enableClipDistances();
1819
+ this.getBuiltin( 'clip_distances', 'hw_clip_distances', `array<f32, ${ planeCount } >`, 'vertex' );
1820
+
1821
+ }
1822
+
1823
+ /**
1824
+ * Returns the builtins of the given shader stage as a WGSL string.
1825
+ *
1826
+ * @param {string} shaderStage - The shader stage.
1827
+ * @return {string} A WGSL snippet that represents the builtins of the given stage.
1828
+ */
1829
+ getBuiltins( shaderStage ) {
1830
+
1831
+ const snippets = [];
1832
+ const builtins = this.builtins[ shaderStage ];
1833
+
1834
+ if ( builtins !== undefined ) {
1835
+
1836
+ for ( const { name, property, type } of builtins.values() ) {
1837
+
1838
+ const invariant = this.context.invariant === true && shaderStage === 'vertex' && name === 'position' ? '@invariant ' : '';
1839
+
1840
+ snippets.push( `${ invariant }@builtin( ${name} ) ${property} : ${type}` );
1841
+
1842
+ }
1843
+
1844
+ }
1845
+
1846
+ return snippets.join( ',\n\t' );
1847
+
1848
+ }
1849
+
1850
+ /**
1851
+ * This method should be used when a new scoped buffer is used in context of
1852
+ * compute shaders. It adds the array to the internal data structure which is
1853
+ * later used to generate the respective WGSL.
1854
+ *
1855
+ * @param {string} name - The array name.
1856
+ * @param {string} scope - The scope.
1857
+ * @param {string} bufferType - The buffer type.
1858
+ * @param {string} bufferCount - The buffer count.
1859
+ * @param {boolean} isAtomic - Whether the array elements are atomic or not.
1860
+ * @return {string} The array name.
1861
+ */
1862
+ getScopedArray( name, scope, bufferType, bufferCount, isAtomic ) {
1863
+
1864
+ if ( this.scopedArrays.has( name ) === false ) {
1865
+
1866
+ this.scopedArrays.set( name, {
1867
+ name,
1868
+ scope,
1869
+ bufferType,
1870
+ bufferCount,
1871
+ isAtomic
1872
+ } );
1873
+
1874
+ }
1875
+
1876
+ return name;
1877
+
1878
+ }
1879
+
1880
+ /**
1881
+ * Returns the scoped arrays of the given shader stage as a WGSL string.
1882
+ *
1883
+ * @param {string} shaderStage - The shader stage.
1884
+ * @return {string|undefined} The WGSL snippet that defines the scoped arrays.
1885
+ * Returns `undefined` when used in the vertex or fragment stage.
1886
+ */
1887
+ getScopedArrays( shaderStage ) {
1888
+
1889
+ if ( shaderStage !== 'compute' ) {
1890
+
1891
+ return;
1892
+
1893
+ }
1894
+
1895
+ const snippets = [];
1896
+
1897
+ for ( const { name, scope, bufferType, bufferCount, isAtomic } of this.scopedArrays.values() ) {
1898
+
1899
+ let type = this.getType( bufferType );
1900
+
1901
+ if ( isAtomic === true ) type = `atomic<${type}>`;
1902
+
1903
+ snippets.push( `var<${scope}> ${name}: array< ${type}, ${bufferCount} >;` );
1904
+
1905
+ }
1906
+
1907
+ return snippets.join( '\n' );
1908
+
1909
+ }
1910
+
1911
+ /**
1912
+ * Returns the shader attributes of the given shader stage as a WGSL string.
1913
+ *
1914
+ * @param {string} shaderStage - The shader stage.
1915
+ * @return {string} The WGSL snippet that defines the shader attributes.
1916
+ */
1917
+ getAttributes( shaderStage ) {
1918
+
1919
+ const snippets = [];
1920
+
1921
+ if ( shaderStage === 'compute' ) {
1922
+
1923
+ this.getBuiltin( 'global_invocation_id', 'globalId', 'vec3<u32>', 'attribute' );
1924
+ this.getBuiltin( 'workgroup_id', 'workgroupId', 'vec3<u32>', 'attribute' );
1925
+ this.getBuiltin( 'local_invocation_id', 'localId', 'vec3<u32>', 'attribute' );
1926
+ this.getBuiltin( 'num_workgroups', 'numWorkgroups', 'vec3<u32>', 'attribute' );
1927
+
1928
+ if ( this.renderer.hasFeature( 'subgroups' ) ) {
1929
+
1930
+ this.enableDirective( 'subgroups', shaderStage );
1931
+ this.getBuiltin( 'subgroup_size', 'subgroupSize', 'u32', 'attribute' );
1932
+
1933
+ }
1934
+
1935
+ }
1936
+
1937
+ if ( shaderStage === 'vertex' || shaderStage === 'compute' ) {
1938
+
1939
+ const builtins = this.getBuiltins( 'attribute' );
1940
+
1941
+ if ( builtins ) snippets.push( builtins );
1942
+
1943
+ const attributes = this.getAttributesArray();
1944
+
1945
+ for ( let index = 0, length = attributes.length; index < length; index ++ ) {
1946
+
1947
+ const attribute = attributes[ index ];
1948
+ const name = attribute.name;
1949
+ const type = this.getType( attribute.type );
1950
+
1951
+ snippets.push( `@location( ${index} ) ${ name } : ${ type }` );
1952
+
1953
+ }
1954
+
1955
+ }
1956
+
1957
+ return snippets.join( ',\n\t' );
1958
+
1959
+ }
1960
+
1961
+ /**
1962
+ * Returns the members of the given struct type node as a WGSL string.
1963
+ *
1964
+ * @param {StructTypeNode} struct - The struct type node.
1965
+ * @return {string} The WGSL snippet that defines the struct members.
1966
+ */
1967
+ getStructMembers( struct ) {
1968
+
1969
+ const snippets = [];
1970
+
1971
+ for ( const member of struct.members ) {
1972
+
1973
+ const prefix = struct.output ? '@location( ' + member.index + ' ) ' : '';
1974
+
1975
+ let type = this.getType( member.type );
1976
+
1977
+ if ( member.atomic ) {
1978
+
1979
+ type = 'atomic< ' + type + ' >';
1980
+
1981
+ }
1982
+
1983
+ snippets.push( `\t${ prefix + member.name } : ${ type }` );
1984
+
1985
+ }
1986
+
1987
+ if ( struct.output ) {
1988
+
1989
+ snippets.push( `\t${ this.getBuiltins( 'output' ) }` );
1990
+
1991
+ }
1992
+
1993
+ return snippets.join( ',\n' );
1994
+
1995
+ }
1996
+
1997
+ /**
1998
+ * Returns the structs of the given shader stage as a WGSL string.
1999
+ *
2000
+ * @param {string} shaderStage - The shader stage.
2001
+ * @return {string} The WGSL snippet that defines the structs.
2002
+ */
2003
+ getStructs( shaderStage ) {
2004
+
2005
+ let result = '';
2006
+
2007
+ const structs = this.structs[ shaderStage ];
2008
+
2009
+ if ( structs.length > 0 ) {
2010
+
2011
+ const snippets = [];
2012
+
2013
+ for ( const struct of structs ) {
2014
+
2015
+ let snippet = `struct ${ struct.name } {\n`;
2016
+ snippet += this.getStructMembers( struct );
2017
+ snippet += '\n};';
2018
+
2019
+ snippets.push( snippet );
2020
+
2021
+ }
2022
+
2023
+ result = '\n' + snippets.join( '\n\n' ) + '\n';
2024
+
2025
+ }
2026
+
2027
+ return result;
2028
+
2029
+ }
2030
+
2031
+ /**
2032
+ * Returns a WGSL string representing a variable.
2033
+ *
2034
+ * @param {string} type - The variable's type.
2035
+ * @param {string} name - The variable's name.
2036
+ * @param {?number} [count=null] - The array length.
2037
+ * @param {string} [qualifier=''] - The variable's qualifier.
2038
+ * @return {string} The WGSL snippet that defines a variable.
2039
+ */
2040
+ getVar( type, name, count = null, qualifier = '' ) {
2041
+
2042
+ let snippet = `var${ qualifier } ${ name } : `;
2043
+
2044
+ if ( count !== null ) {
2045
+
2046
+ snippet += this.generateArrayDeclaration( type, count );
2047
+
2048
+ } else {
2049
+
2050
+ snippet += this.getType( type );
2051
+
2052
+ }
2053
+
2054
+ return snippet;
2055
+
2056
+ }
2057
+
2058
+ /**
2059
+ * Returns a single const variable statement as a WGSL string for the given variable type and name.
2060
+ *
2061
+ * @param {string} type - The variable's type.
2062
+ * @param {string} name - The variable's name.
2063
+ * @param {?number} [count=null] - The array length.
2064
+ * @return {string} The WGSL snippet that defines a const variable.
2065
+ */
2066
+ generateConstStatement( type, name/*, count = null*/ ) {
2067
+
2068
+ return `const ${ name }`;
2069
+
2070
+ }
2071
+
2072
+ /**
2073
+ * Returns a single variable statement as a WGSL string for the given variable type and name.
2074
+ *
2075
+ * @param {string} type - The variable's type.
2076
+ * @param {string} name - The variable's name.
2077
+ * @param {?number} [count=null] - The array length.
2078
+ * @return {string} The WGSL snippet that defines a variable.
2079
+ */
2080
+ generateVarStatement( type, name, count = null ) {
2081
+
2082
+ return this.getVar( type, name, count );
2083
+
2084
+ }
2085
+
2086
+ /**
2087
+ * Returns a runtime read-only variable statement as a WGSL string.
2088
+ *
2089
+ * @param {string} type - The variable's type.
2090
+ * @param {string} name - The variable's name.
2091
+ * @param {?number} [count=null] - The array length.
2092
+ * @return {string} The WGSL snippet that defines a let variable.
2093
+ */
2094
+ generateLetStatement( type, name/*, count = null*/ ) {
2095
+
2096
+ return `let ${ name }`;
2097
+
2098
+ }
2099
+
2100
+ /**
2101
+ * Returns the variables of the given shader stage as a WGSL string.
2102
+ *
2103
+ * @param {string} shaderStage - The shader stage.
2104
+ * @return {string} The WGSL snippet that defines the variables.
2105
+ */
2106
+ getVars( shaderStage, global = false ) {
2107
+
2108
+ let qualifier = '';
2109
+
2110
+ if ( global ) {
2111
+
2112
+ qualifier = '<private>';
2113
+
2114
+ }
2115
+
2116
+ const snippets = [];
2117
+ const vars = this.vars[ shaderStage ];
2118
+
2119
+ if ( vars !== undefined ) {
2120
+
2121
+ for ( const variable of vars ) {
2122
+
2123
+ snippets.push( `${ this.getVar( variable.type, variable.name, variable.count, qualifier ) };` );
2124
+
2125
+ }
2126
+
2127
+ }
2128
+
2129
+ return global ? snippets.join( '\n' ) : `\n\t${ snippets.join( '\n\t' ) }\n`;
2130
+
2131
+ }
2132
+
2133
+ /**
2134
+ * Returns the varyings of the given shader stage as a WGSL string.
2135
+ *
2136
+ * @param {string} shaderStage - The shader stage.
2137
+ * @return {string} The WGSL snippet that defines the varyings.
2138
+ */
2139
+ getVaryings( shaderStage ) {
2140
+
2141
+ const snippets = [];
2142
+
2143
+ if ( shaderStage === 'vertex' ) {
2144
+
2145
+ this.getBuiltin( 'position', 'builtinClipSpace', 'vec4<f32>', 'vertex' );
2146
+
2147
+ }
2148
+
2149
+ if ( shaderStage === 'vertex' || shaderStage === 'fragment' ) {
2150
+
2151
+ const varyings = this.varyings;
2152
+ const vars = this.vars[ shaderStage ];
2153
+
2154
+ let varyingIndex = 0;
2155
+
2156
+ for ( let index = 0; index < varyings.length; index ++ ) {
2157
+
2158
+ const varying = varyings[ index ];
2159
+
2160
+ if ( varying.needsInterpolation ) {
2161
+
2162
+ let attributesSnippet = `@location( ${ varyingIndex ++ } )`;
2163
+
2164
+ if ( varying.interpolationType ) {
2165
+
2166
+ const samplingSnippet = varying.interpolationSampling !== null ? `, ${ varying.interpolationSampling } )` : ' )';
2167
+
2168
+ attributesSnippet += ` @interpolate( ${ varying.interpolationType }${ samplingSnippet }`;
2169
+
2170
+ // Otherwise, optimize interpolation when sensible
2171
+
2172
+ } else if ( /^(int|uint|ivec|uvec)/.test( varying.type ) ) {
2173
+
2174
+ attributesSnippet += ' @interpolate(flat, either)';
2175
+
2176
+ }
2177
+
2178
+ snippets.push( `${ attributesSnippet } ${ varying.name } : ${ this.getType( varying.type ) }` );
2179
+
2180
+ } else if ( shaderStage === 'vertex' && vars.includes( varying ) === false ) {
2181
+
2182
+ vars.push( varying );
2183
+
2184
+ }
2185
+
2186
+ }
2187
+
2188
+ }
2189
+
2190
+ const builtins = this.getBuiltins( shaderStage );
2191
+
2192
+ if ( builtins ) snippets.push( builtins );
2193
+
2194
+ const code = snippets.join( ',\n\t' );
2195
+
2196
+ return shaderStage === 'vertex' ? this._getWGSLStruct( 'VaryingsStruct', '\t' + code ) : code;
2197
+
2198
+ }
2199
+
2200
+ /**
2201
+ * Returns the uniforms of the given shader stage as a WGSL string.
2202
+ *
2203
+ * @param {string} shaderStage - The shader stage.
2204
+ * @return {string} The WGSL snippet that defines the uniforms.
2205
+ */
2206
+ getUniforms( shaderStage ) {
2207
+
2208
+ const backend = this.renderer.backend;
2209
+ const uniforms = this.uniforms[ shaderStage ];
2210
+
2211
+ const bindingSnippets = [];
2212
+ const bufferSnippets = [];
2213
+ const structSnippets = [];
2214
+ const uniformGroups = {};
2215
+
2216
+ for ( const uniform of uniforms ) {
2217
+
2218
+ const groupName = uniform.groupNode.name;
2219
+ const uniformIndexes = this.bindingsIndexes[ groupName ];
2220
+
2221
+ if ( uniform.type === 'texture' || uniform.type === 'cubeTexture' || uniform.type === 'cubeDepthTexture' || uniform.type === 'storageTexture' || uniform.type === 'texture3D' ) {
2222
+
2223
+ const textureNode = uniform.node;
2224
+ const texture = textureNode.value;
2225
+
2226
+ // Cube textures always need samplers (they use textureSampleLevel, not textureLoad)
2227
+ // Also textureGather always need sampler.
2228
+ const needsSampler = texture.isCubeTexture === true || ( this.isUnfilterable( texture ) === false && textureNode.isStorageTextureNode !== true ) || textureNode.gatherNode !== null;
2229
+
2230
+ if ( needsSampler ) {
2231
+
2232
+ if ( this.isSampleCompare( texture ) && textureNode.isSampleCompare() ) {
2233
+
2234
+ bindingSnippets.push( `@binding( ${ uniformIndexes.binding ++ } ) @group( ${ uniformIndexes.group } ) var ${ uniform.name }_sampler : sampler_comparison;` );
2235
+
2236
+ } else {
2237
+
2238
+ bindingSnippets.push( `@binding( ${ uniformIndexes.binding ++ } ) @group( ${ uniformIndexes.group } ) var ${ uniform.name }_sampler : sampler;` );
2239
+
2240
+ }
2241
+
2242
+ }
2243
+
2244
+ let textureType;
2245
+
2246
+ let multisampled = '';
2247
+
2248
+ const { primarySamples } = backend.utils.getTextureSampleData( texture );
2249
+
2250
+ if ( primarySamples > 1 ) {
2251
+
2252
+ multisampled = '_multisampled';
2253
+
2254
+ }
2255
+
2256
+ if ( texture.isCubeTexture === true && texture.isDepthTexture === true ) {
2257
+
2258
+ textureType = 'texture_depth_cube';
2259
+
2260
+ } else if ( texture.isCubeTexture === true ) {
2261
+
2262
+ textureType = 'texture_cube<f32>';
2263
+
2264
+ } else if ( texture.isDepthTexture === true ) {
2265
+
2266
+ if ( backend.compatibilityMode && texture.compareFunction === null ) {
2267
+
2268
+ textureType = `texture${ multisampled }_2d<f32>`;
2269
+
2270
+ } else {
2271
+
2272
+ textureType = `texture_depth${ multisampled }_2d${ texture.isArrayTexture === true ? '_array' : '' }`;
2273
+
2274
+ }
2275
+
2276
+ } else if ( uniform.node.isStorageTextureNode === true ) {
2277
+
2278
+ const format = getFormat( texture, backend.device );
2279
+ const access = this.getStorageAccess( uniform.node, shaderStage );
2280
+
2281
+ const is3D = uniform.node.value.is3DTexture;
2282
+ const isArrayTexture = uniform.node.value.isArrayTexture;
2283
+
2284
+ const dimension = is3D ? '3d' : `2d${ isArrayTexture ? '_array' : '' }`;
2285
+
2286
+ textureType = `texture_storage_${ dimension }<${ format }, ${ access }>`;
2287
+
2288
+ } else if ( texture.isArrayTexture === true || texture.isDataArrayTexture === true || texture.isCompressedArrayTexture === true ) {
2289
+
2290
+ const componentPrefix = this.getComponentTypeFromTexture( texture ).charAt( 0 );
2291
+ textureType = `texture_2d_array<${ componentPrefix }32>`;
2292
+
2293
+ } else if ( texture.is3DTexture === true || texture.isData3DTexture === true ) {
2294
+
2295
+ const componentPrefix = this.getComponentTypeFromTexture( texture ).charAt( 0 );
2296
+ textureType = `texture_3d<${ componentPrefix }32>`;
2297
+
2298
+ } else {
2299
+
2300
+ const componentPrefix = this.getComponentTypeFromTexture( texture ).charAt( 0 );
2301
+
2302
+ textureType = `texture${ multisampled }_2d<${ componentPrefix }32>`;
2303
+
2304
+ }
2305
+
2306
+ bindingSnippets.push( `@binding( ${ uniformIndexes.binding ++ } ) @group( ${ uniformIndexes.group } ) var ${ uniform.name } : ${ textureType };` );
2307
+
2308
+ } else if ( uniform.type === 'buffer' || uniform.type === 'storageBuffer' || uniform.type === 'indirectStorageBuffer' ) {
2309
+
2310
+ const bufferNode = uniform.node;
2311
+ const bufferType = this.getType( bufferNode.getNodeType( this ) );
2312
+ const bufferCount = bufferNode.bufferCount;
2313
+ const bufferCountSnippet = bufferCount > 0 && uniform.type === 'buffer' ? ', ' + bufferCount : '';
2314
+ const bufferAccessMode = bufferNode.isStorageBufferNode ? `storage, ${ this.getStorageAccess( bufferNode, shaderStage ) }` : 'uniform';
2315
+ const bufferTypeSnippet = bufferNode.isAtomic ? `atomic<${ bufferType }>` : `${ bufferType }`;
2316
+ const bufferSnippet = `\tvalue : array< ${ bufferTypeSnippet }${ bufferCountSnippet } >`;
2317
+
2318
+ bufferSnippets.push( this._getWGSLStructBinding( uniform.name, bufferSnippet, bufferAccessMode, uniformIndexes.binding ++, uniformIndexes.group ) );
2319
+
2320
+ } else {
2321
+
2322
+ const groupName = uniform.groupNode.name;
2323
+
2324
+ // Check if this group has already been processed in this shader stage
2325
+ if ( uniformGroups[ groupName ] === undefined ) {
2326
+
2327
+ // Get the shared uniform group that contains uniforms from all stages
2328
+ const sharedUniformGroup = this.uniformGroups[ groupName ];
2329
+
2330
+ if ( sharedUniformGroup !== undefined ) {
2331
+
2332
+ // Generate snippets for ALL uniforms in this shared group
2333
+ const snippets = [];
2334
+
2335
+ for ( const sharedUniform of sharedUniformGroup.uniforms ) {
2336
+
2337
+ const type = sharedUniform.getType();
2338
+ const vectorType = this.getType( this.getVectorType( type ) );
2339
+ snippets.push( `\t${ sharedUniform.name } : ${ vectorType }` );
2340
+
2341
+ }
2342
+
2343
+ // Check if this group already has an assigned binding index (from another shader stage)
2344
+ let groupBinding = this.uniformGroupsBindings[ groupName ];
2345
+
2346
+ if ( groupBinding === undefined ) {
2347
+
2348
+ // First time processing this group - assign a new binding index
2349
+ groupBinding = {
2350
+ index: uniformIndexes.binding ++,
2351
+ id: uniformIndexes.group
2352
+ };
2353
+
2354
+ this.uniformGroupsBindings[ groupName ] = groupBinding;
2355
+
2356
+ }
2357
+
2358
+ uniformGroups[ groupName ] = {
2359
+ index: groupBinding.index,
2360
+ id: groupBinding.id,
2361
+ snippets: snippets
2362
+ };
2363
+
2364
+ }
2365
+
2366
+ }
2367
+
2368
+ }
2369
+
2370
+ }
2371
+
2372
+ for ( const name in uniformGroups ) {
2373
+
2374
+ const group = uniformGroups[ name ];
2375
+
2376
+ structSnippets.push( this._getWGSLStructBinding( name, group.snippets.join( ',\n' ), 'uniform', group.index, group.id ) );
2377
+
2378
+ }
2379
+
2380
+ const code = [ ...bindingSnippets, ...bufferSnippets, ...structSnippets ].join( '\n' );
2381
+
2382
+ return code;
2383
+
2384
+ }
2385
+
2386
+ /**
2387
+ * Controls the code build of the shader stages.
2388
+ */
2389
+ buildCode() {
2390
+
2391
+ const shadersData = this.material !== null ? { fragment: {}, vertex: {} } : { compute: {} };
2392
+
2393
+ this.sortBindingGroups();
2394
+
2395
+ for ( const shaderStage in shadersData ) {
2396
+
2397
+ this.shaderStage = shaderStage;
2398
+
2399
+ const allowGlobal = this.allowGlobalVariables;
2400
+
2401
+ const stageData = shadersData[ shaderStage ];
2402
+ stageData.uniforms = this.getUniforms( shaderStage );
2403
+ stageData.attributes = this.getAttributes( shaderStage );
2404
+ stageData.varyings = this.getVaryings( shaderStage );
2405
+ stageData.structs = this.getStructs( shaderStage );
2406
+ stageData.vars = this.getVars( shaderStage, allowGlobal );
2407
+ stageData.codes = this.getCodes( shaderStage );
2408
+ stageData.directives = this.getDirectives( shaderStage );
2409
+ stageData.scopedArrays = this.getScopedArrays( shaderStage );
2410
+
2411
+ //
2412
+
2413
+ let flow = '// code\n\n';
2414
+ flow += this.flowCode[ shaderStage ];
2415
+
2416
+ const flowNodes = this.flowNodes[ shaderStage ];
2417
+ const mainNode = flowNodes[ flowNodes.length - 1 ];
2418
+
2419
+ const outputNode = mainNode.outputNode;
2420
+ const isOutputStruct = ( outputNode !== undefined && outputNode.isOutputStructNode === true );
2421
+
2422
+ for ( const node of flowNodes ) {
2423
+
2424
+ const flowSlotData = this.getFlowData( node/*, shaderStage*/ );
2425
+ const slotName = node.name;
2426
+
2427
+ if ( slotName ) {
2428
+
2429
+ if ( flow.length > 0 ) flow += '\n';
2430
+
2431
+ flow += `\t// flow -> ${ slotName }\n`;
2432
+
2433
+ }
2434
+
2435
+ flow += `${ flowSlotData.code }\n\t`;
2436
+
2437
+ if ( node === mainNode && shaderStage !== 'compute' ) {
2438
+
2439
+ flow += '// result\n\n\t';
2440
+
2441
+ if ( shaderStage === 'vertex' ) {
2442
+
2443
+ flow += `varyings.builtinClipSpace = ${ flowSlotData.result };`;
2444
+
2445
+ } else if ( shaderStage === 'fragment' ) {
2446
+
2447
+ if ( isOutputStruct ) {
2448
+
2449
+ stageData.returnType = outputNode.getNodeType( this );
2450
+ stageData.structs += 'var<private> output : ' + stageData.returnType + ';';
2451
+
2452
+ flow += `return ${ flowSlotData.result };`;
2453
+
2454
+ } else {
2455
+
2456
+ let structSnippet = `\t@location( 0 ) color: ${ this.getType( this.getOutputType() ) }`;
2457
+
2458
+ const builtins = this.getBuiltins( 'output' );
2459
+
2460
+ if ( builtins ) structSnippet += ',\n\t' + builtins;
2461
+
2462
+ stageData.returnType = 'OutputStruct';
2463
+ stageData.structs += this._getWGSLStruct( 'OutputStruct', structSnippet );
2464
+ stageData.structs += '\nvar<private> output : OutputStruct;';
2465
+
2466
+ flow += `output.color = ${ this.format( flowSlotData.result, mainNode.getNodeType( this ), this.getOutputType() ) };\n\n\treturn output;`;
2467
+
2468
+ }
2469
+
2470
+ }
2471
+
2472
+ }
2473
+
2474
+ }
2475
+
2476
+ stageData.flow = flow;
2477
+
2478
+ }
2479
+
2480
+ this.shaderStage = null;
2481
+
2482
+ if ( this.material !== null ) {
2483
+
2484
+ this.vertexShader = this._getWGSLVertexCode( shadersData.vertex );
2485
+ this.fragmentShader = this._getWGSLFragmentCode( shadersData.fragment );
2486
+
2487
+ } else {
2488
+
2489
+ // Early strictly validated in computeNode
2490
+ const workgroupSize = this.compute.workgroupSize;
2491
+
2492
+ this.computeShader = this._getWGSLComputeCode( shadersData.compute, workgroupSize );
2493
+
2494
+ }
2495
+
2496
+ }
2497
+
2498
+ /**
2499
+ * Returns the native shader method name for a given generic name.
2500
+ *
2501
+ * @param {string} method - The method name to resolve.
2502
+ * @param {?string} [output=null] - An optional output.
2503
+ * @return {string} The resolved WGSL method name.
2504
+ */
2505
+ getMethod( method, output = null ) {
2506
+
2507
+ let wgslMethod;
2508
+
2509
+ if ( output !== null ) {
2510
+
2511
+ wgslMethod = this._getWGSLMethod( method + '_' + output );
2512
+
2513
+ }
2514
+
2515
+ if ( wgslMethod === undefined ) {
2516
+
2517
+ wgslMethod = this._getWGSLMethod( method );
2518
+
2519
+ }
2520
+
2521
+ return wgslMethod || method;
2522
+
2523
+ }
2524
+
2525
+ /**
2526
+ * Returns the bitcast method name for a given input and outputType.
2527
+ *
2528
+ * @param {string} type - The output type to bitcast to.
2529
+ * @return {string} The resolved WGSL bitcast invocation.
2530
+ */
2531
+ getBitcastMethod( type ) {
2532
+
2533
+ const dataType = this.getType( type );
2534
+
2535
+ return `bitcast<${ dataType }>`;
2536
+
2537
+ }
2538
+
2539
+ /**
2540
+ * Returns the float packing method name for a given numeric encoding.
2541
+ *
2542
+ * @param {string} encoding - The numeric encoding that describes how the float values are mapped to the integer range.
2543
+ * @param {string} [layout='2x16'] - The component layout of the packed integer.
2544
+ * @returns {string} The resolve WGSL float packing method name.
2545
+ */
2546
+ getFloatPackingMethod( encoding, layout = '2x16' ) {
2547
+
2548
+ return this.getMethod( `floatpack_${ encoding }_${ layout }` );
2549
+
2550
+ }
2551
+
2552
+ /**
2553
+ * Returns the float unpacking method name for a given numeric encoding.
2554
+ *
2555
+ * @param {string} encoding - The numeric encoding that describes how the integer values are mapped to the float range.
2556
+ * @param {string} [layout='2x16'] - The component layout of the packed integer.
2557
+ * @returns {string} The resolve WGSL float unpacking method name.
2558
+ */
2559
+ getFloatUnpackingMethod( encoding, layout = '2x16' ) {
2560
+
2561
+ return this.getMethod( `floatunpack_${ encoding }_${ layout }` );
2562
+
2563
+ }
2564
+
2565
+ /**
2566
+ * Returns the native snippet for a ternary operation.
2567
+ *
2568
+ * @param {string} condSnippet - The condition determining which expression gets resolved.
2569
+ * @param {string} ifSnippet - The expression to resolve to if the condition is true.
2570
+ * @param {string} elseSnippet - The expression to resolve to if the condition is false.
2571
+ * @return {string} The resolved method name.
2572
+ */
2573
+ getTernary( condSnippet, ifSnippet, elseSnippet ) {
2574
+
2575
+ return `select( ${elseSnippet}, ${ifSnippet}, ${condSnippet} )`;
2576
+
2577
+ }
2578
+
2579
+ /**
2580
+ * Returns the WGSL type of the given node data type.
2581
+ *
2582
+ * @param {string} type - The node data type.
2583
+ * @return {string} The WGSL type.
2584
+ */
2585
+ getType( type ) {
2586
+
2587
+ return wgslTypeLib[ type ] || type;
2588
+
2589
+ }
2590
+
2591
+ /**
2592
+ * Whether the requested feature is available or not.
2593
+ *
2594
+ * @param {string} name - The requested feature.
2595
+ * @return {boolean} Whether the requested feature is supported or not.
2596
+ */
2597
+ isAvailable( name ) {
2598
+
2599
+ let result = supports[ name ];
2600
+
2601
+ if ( result === undefined ) {
2602
+
2603
+ if ( name === 'float32Filterable' ) {
2604
+
2605
+ result = this.renderer.hasFeature( 'float32-filterable' );
2606
+
2607
+ } else if ( name === 'clipDistance' ) {
2608
+
2609
+ result = this.renderer.hasFeature( 'clip-distances' );
2610
+
2611
+ }
2612
+
2613
+ supports[ name ] = result;
2614
+
2615
+ }
2616
+
2617
+ return result;
2618
+
2619
+ }
2620
+
2621
+ /**
2622
+ * Returns the native shader method name for a given generic name.
2623
+ *
2624
+ * @private
2625
+ * @param {string} method - The method name to resolve.
2626
+ * @return {string} The resolved WGSL method name.
2627
+ */
2628
+ _getWGSLMethod( method ) {
2629
+
2630
+ if ( wgslPolyfill[ method ] !== undefined ) {
2631
+
2632
+ this._include( method );
2633
+
2634
+ }
2635
+
2636
+ return wgslMethods[ method ];
2637
+
2638
+ }
2639
+
2640
+ /**
2641
+ * Includes the given method name into the current
2642
+ * function node.
2643
+ *
2644
+ * @private
2645
+ * @param {string} name - The method name to include.
2646
+ * @return {CodeNode} The respective code node.
2647
+ */
2648
+ _include( name ) {
2649
+
2650
+ const codeNode = wgslPolyfill[ name ];
2651
+ codeNode.build( this );
2652
+
2653
+ this.addInclude( codeNode );
2654
+
2655
+ return codeNode;
2656
+
2657
+ }
2658
+
2659
+ /**
2660
+ * Returns a WGSL vertex shader based on the given shader data.
2661
+ *
2662
+ * @private
2663
+ * @param {Object} shaderData - The shader data.
2664
+ * @return {string} The vertex shader.
2665
+ */
2666
+ _getWGSLVertexCode( shaderData ) {
2667
+
2668
+ return `${ this.getSignature() }
2669
+ // directives
2670
+ ${shaderData.directives}
2671
+
2672
+ // structs
2673
+ ${shaderData.structs}
2674
+
2675
+ // uniforms
2676
+ ${shaderData.uniforms}
2677
+
2678
+ // varyings
2679
+ ${shaderData.varyings}
2680
+ var<private> varyings : VaryingsStruct;
2681
+
2682
+ // vars
2683
+ ${shaderData.vars}
2684
+
2685
+ // codes
2686
+ ${shaderData.codes}
2687
+
2688
+ @vertex
2689
+ fn main( ${shaderData.attributes} ) -> VaryingsStruct {
2690
+
2691
+ // flow
2692
+ ${shaderData.flow}
2693
+
2694
+ return varyings;
2695
+
2696
+ }
2697
+ `;
2698
+
2699
+ }
2700
+
2701
+ /**
2702
+ * Returns a WGSL fragment shader based on the given shader data.
2703
+ *
2704
+ * @private
2705
+ * @param {Object} shaderData - The shader data.
2706
+ * @return {string} The vertex shader.
2707
+ */
2708
+ _getWGSLFragmentCode( shaderData ) {
2709
+
2710
+ return `${ this.getSignature() }
2711
+ // global
2712
+ ${ diagnostics }
2713
+
2714
+ // directives
2715
+ ${shaderData.directives}
2716
+
2717
+ // structs
2718
+ ${shaderData.structs}
2719
+
2720
+ // uniforms
2721
+ ${shaderData.uniforms}
2722
+
2723
+ // vars
2724
+ ${shaderData.vars}
2725
+
2726
+ // codes
2727
+ ${shaderData.codes}
2728
+
2729
+ @fragment
2730
+ fn main( ${shaderData.varyings} ) -> ${shaderData.returnType} {
2731
+
2732
+ // flow
2733
+ ${shaderData.flow}
2734
+
2735
+ }
2736
+ `;
2737
+
2738
+ }
2739
+
2740
+ /**
2741
+ * Returns a WGSL compute shader based on the given shader data.
2742
+ *
2743
+ * @private
2744
+ * @param {Object} shaderData - The shader data.
2745
+ * @param {string} workgroupSize - The workgroup size.
2746
+ * @return {string} The vertex shader.
2747
+ */
2748
+ _getWGSLComputeCode( shaderData, workgroupSize ) {
2749
+
2750
+ const [ workgroupSizeX, workgroupSizeY, workgroupSizeZ ] = workgroupSize;
2751
+
2752
+ return `${ this.getSignature() }
2753
+ // directives
2754
+ ${ shaderData.directives }
2755
+
2756
+ // system
2757
+ var<private> instanceIndex : u32;
2758
+
2759
+ // locals
2760
+ ${ shaderData.scopedArrays }
2761
+
2762
+ // structs
2763
+ ${ shaderData.structs }
2764
+
2765
+ // uniforms
2766
+ ${ shaderData.uniforms }
2767
+
2768
+ // vars
2769
+ ${ this.allowGlobalVariables ? shaderData.vars : '' }
2770
+
2771
+ // codes
2772
+ ${ shaderData.codes }
2773
+
2774
+ @compute @workgroup_size( ${ workgroupSizeX }, ${ workgroupSizeY }, ${ workgroupSizeZ } )
2775
+ fn main( ${ shaderData.attributes } ) {
2776
+
2777
+ // local vars
2778
+ ${ this.allowGlobalVariables ? '' : shaderData.vars }
2779
+
2780
+ // system
2781
+ instanceIndex = globalId.x
2782
+ + globalId.y * ( ${ workgroupSizeX } * numWorkgroups.x )
2783
+ + globalId.z * ( ${ workgroupSizeX } * numWorkgroups.x ) * ( ${ workgroupSizeY } * numWorkgroups.y );
2784
+
2785
+ // flow
2786
+ ${ shaderData.flow }
2787
+
2788
+ }
2789
+ `;
2790
+
2791
+ }
2792
+
2793
+ /**
2794
+ * Returns a WGSL struct based on the given name and variables.
2795
+ *
2796
+ * @private
2797
+ * @param {string} name - The struct name.
2798
+ * @param {string} vars - The struct variables.
2799
+ * @return {string} The WGSL snippet representing a struct.
2800
+ */
2801
+ _getWGSLStruct( name, vars ) {
2802
+
2803
+ return `
2804
+ struct ${name} {
2805
+ ${vars}
2806
+ };`;
2807
+
2808
+ }
2809
+
2810
+ /**
2811
+ * Returns a WGSL struct binding.
2812
+ *
2813
+ * @private
2814
+ * @param {string} name - The struct name.
2815
+ * @param {string} vars - The struct variables.
2816
+ * @param {string} access - The access.
2817
+ * @param {number} [binding=0] - The binding index.
2818
+ * @param {number} [group=0] - The group index.
2819
+ * @return {string} The WGSL snippet representing a struct binding.
2820
+ */
2821
+ _getWGSLStructBinding( name, vars, access, binding = 0, group = 0 ) {
2822
+
2823
+ const structName = name + 'Struct';
2824
+ const structSnippet = this._getWGSLStruct( structName, vars );
2825
+
2826
+ return `${structSnippet}
2827
+ @binding( ${ binding } ) @group( ${ group } )
2828
+ var<${access}> ${ name } : ${ structName };`;
2829
+
2830
+ }
2831
+
2832
+ }
2833
+
2834
+ export default WGSLNodeBuilder;