@playdrop/playdrop-cli 0.3.4-build.1 → 0.3.8-build.1

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 (1382) hide show
  1. package/README.md +60 -23
  2. package/config/client-meta.json +5 -5
  3. package/dist/apps/upload.js +6 -3
  4. package/dist/assets/model-artifacts.js +1 -1
  5. package/dist/catalogue.d.ts +13 -0
  6. package/dist/catalogue.js +95 -34
  7. package/dist/commandContext.d.ts +1 -0
  8. package/dist/commandContext.js +45 -15
  9. package/dist/commands/browse.d.ts +16 -0
  10. package/dist/commands/browse.js +370 -0
  11. package/dist/commands/build.js +4 -9
  12. package/dist/commands/capture.js +24 -24
  13. package/dist/commands/captureRemote.d.ts +11 -0
  14. package/dist/commands/captureRemote.js +90 -0
  15. package/dist/commands/comments.d.ts +14 -0
  16. package/dist/commands/comments.js +189 -0
  17. package/dist/commands/create.js +231 -132
  18. package/dist/commands/createRemixContent.d.ts +3 -0
  19. package/dist/commands/createRemixContent.js +310 -0
  20. package/dist/commands/creations.d.ts +49 -0
  21. package/dist/commands/creations.js +657 -0
  22. package/dist/commands/credits.d.ts +10 -0
  23. package/dist/commands/credits.js +91 -0
  24. package/dist/commands/detail.d.ts +2 -2
  25. package/dist/commands/detail.js +148 -290
  26. package/dist/commands/dev.js +24 -24
  27. package/dist/commands/devShared.js +2 -2
  28. package/dist/commands/documentation.d.ts +4 -1
  29. package/dist/commands/documentation.js +79 -104
  30. package/dist/commands/feedback.d.ts +12 -9
  31. package/dist/commands/feedback.js +125 -257
  32. package/dist/commands/format.js +6 -13
  33. package/dist/commands/generation.d.ts +11 -1
  34. package/dist/commands/generation.js +204 -60
  35. package/dist/commands/gettingStarted.d.ts +1 -0
  36. package/dist/commands/gettingStarted.js +26 -0
  37. package/dist/commands/init.js +29 -27
  38. package/dist/commands/login.js +9 -8
  39. package/dist/commands/logout.js +2 -1
  40. package/dist/commands/notifications.d.ts +14 -0
  41. package/dist/commands/notifications.js +179 -0
  42. package/dist/commands/search.d.ts +13 -0
  43. package/dist/commands/search.js +198 -0
  44. package/dist/commands/upload.js +31 -17
  45. package/dist/commands/validate.js +15 -1
  46. package/dist/commands/versionsBrowse.d.ts +7 -0
  47. package/dist/commands/versionsBrowse.js +209 -0
  48. package/dist/commands/whoami.js +9 -8
  49. package/dist/errors.d.ts +9 -0
  50. package/dist/errors.js +52 -0
  51. package/dist/externalAssetPackValidation.d.ts +2 -0
  52. package/dist/externalAssetPackValidation.js +115 -0
  53. package/dist/http.js +1 -1
  54. package/dist/index.js +583 -630
  55. package/dist/messages.js +11 -11
  56. package/dist/output.d.ts +5 -0
  57. package/dist/output.js +45 -0
  58. package/dist/playwright.js +1 -1
  59. package/dist/refs.d.ts +18 -0
  60. package/dist/refs.js +105 -0
  61. package/node_modules/@playdrop/ai-client/dist/index.d.ts +43 -16
  62. package/node_modules/@playdrop/ai-client/dist/index.d.ts.map +1 -1
  63. package/node_modules/@playdrop/ai-client/dist/index.js +1 -1
  64. package/node_modules/@playdrop/ai-client/package.json +1 -0
  65. package/node_modules/@playdrop/api-client/dist/client.d.ts +46 -28
  66. package/node_modules/@playdrop/api-client/dist/client.d.ts.map +1 -1
  67. package/node_modules/@playdrop/api-client/dist/client.js +282 -1669
  68. package/node_modules/@playdrop/api-client/dist/core/errors.d.ts +9 -0
  69. package/node_modules/@playdrop/api-client/dist/core/errors.d.ts.map +1 -0
  70. package/node_modules/@playdrop/api-client/dist/core/errors.js +46 -0
  71. package/node_modules/@playdrop/api-client/dist/core/request.d.ts +27 -0
  72. package/node_modules/@playdrop/api-client/dist/core/request.d.ts.map +1 -0
  73. package/node_modules/@playdrop/api-client/dist/core/request.js +122 -0
  74. package/node_modules/@playdrop/api-client/dist/domains/admin.d.ts +75 -0
  75. package/node_modules/@playdrop/api-client/dist/domains/admin.d.ts.map +1 -0
  76. package/node_modules/@playdrop/api-client/dist/domains/admin.js +282 -0
  77. package/node_modules/@playdrop/api-client/dist/domains/ai.d.ts +22 -0
  78. package/node_modules/@playdrop/api-client/dist/domains/ai.d.ts.map +1 -0
  79. package/node_modules/@playdrop/api-client/dist/domains/ai.js +15 -0
  80. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts +61 -0
  81. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts.map +1 -0
  82. package/node_modules/@playdrop/api-client/dist/domains/apps.js +323 -0
  83. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts +61 -0
  84. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts.map +1 -0
  85. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.js +315 -0
  86. package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts +64 -0
  87. package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts.map +1 -0
  88. package/node_modules/@playdrop/api-client/dist/domains/assets.js +315 -0
  89. package/node_modules/@playdrop/api-client/dist/domains/auth.d.ts +28 -0
  90. package/node_modules/@playdrop/api-client/dist/domains/auth.d.ts.map +1 -0
  91. package/node_modules/@playdrop/api-client/dist/domains/auth.js +78 -0
  92. package/node_modules/@playdrop/api-client/dist/domains/comments.d.ts +29 -0
  93. package/node_modules/@playdrop/api-client/dist/domains/comments.d.ts.map +1 -0
  94. package/node_modules/@playdrop/api-client/dist/domains/comments.js +65 -0
  95. package/node_modules/@playdrop/api-client/dist/domains/me.d.ts +24 -0
  96. package/node_modules/@playdrop/api-client/dist/domains/me.d.ts.map +1 -0
  97. package/node_modules/@playdrop/api-client/dist/domains/me.js +35 -0
  98. package/node_modules/@playdrop/api-client/dist/domains/payments.d.ts +37 -0
  99. package/node_modules/@playdrop/api-client/dist/domains/payments.d.ts.map +1 -0
  100. package/node_modules/@playdrop/api-client/dist/domains/payments.js +148 -0
  101. package/node_modules/@playdrop/api-client/dist/domains/search.d.ts +27 -0
  102. package/node_modules/@playdrop/api-client/dist/domains/search.d.ts.map +1 -0
  103. package/node_modules/@playdrop/api-client/dist/domains/search.js +65 -0
  104. package/node_modules/@playdrop/api-client/dist/index.d.ts +36 -56
  105. package/node_modules/@playdrop/api-client/dist/index.d.ts.map +1 -1
  106. package/node_modules/@playdrop/api-client/dist/index.js +112 -44
  107. package/node_modules/@playdrop/api-client/package.json +3 -2
  108. package/node_modules/@playdrop/boxel-core/package.json +1 -1
  109. package/node_modules/@playdrop/boxel-three/dist/test/glb-skinned.test.js +1 -1
  110. package/node_modules/@playdrop/boxel-three/dist/test/instantiate.test.js +1 -1
  111. package/node_modules/@playdrop/boxel-three/dist/test/skinned-mesh.test.js +1 -1
  112. package/node_modules/@playdrop/boxel-three/package.json +2 -1
  113. package/node_modules/@playdrop/config/client-meta.json +5 -5
  114. package/node_modules/@playdrop/config/dist/src/constants.d.ts +5 -0
  115. package/node_modules/@playdrop/config/dist/src/constants.d.ts.map +1 -1
  116. package/node_modules/@playdrop/config/dist/src/constants.js +5 -1
  117. package/node_modules/@playdrop/config/dist/tsconfig.tsbuildinfo +1 -1
  118. package/node_modules/@playdrop/config/package.json +1 -1
  119. package/node_modules/@playdrop/types/dist/api.d.ts +200 -18
  120. package/node_modules/@playdrop/types/dist/api.d.ts.map +1 -1
  121. package/node_modules/@playdrop/types/dist/api.js +30 -1
  122. package/node_modules/@playdrop/types/dist/app.d.ts +0 -14
  123. package/node_modules/@playdrop/types/dist/app.d.ts.map +1 -1
  124. package/node_modules/@playdrop/types/dist/app.js +0 -10
  125. package/node_modules/@playdrop/types/dist/asset-pack.d.ts +12 -1
  126. package/node_modules/@playdrop/types/dist/asset-pack.d.ts.map +1 -1
  127. package/node_modules/@playdrop/types/dist/asset.d.ts +92 -0
  128. package/node_modules/@playdrop/types/dist/asset.d.ts.map +1 -1
  129. package/node_modules/@playdrop/types/dist/graph.d.ts +21 -0
  130. package/node_modules/@playdrop/types/dist/graph.d.ts.map +1 -1
  131. package/node_modules/@playdrop/types/dist/graph.js +66 -0
  132. package/node_modules/@playdrop/types/dist/realtime.d.ts +26 -26
  133. package/node_modules/@playdrop/types/dist/realtime.d.ts.map +1 -1
  134. package/node_modules/@playdrop/types/dist/version.d.ts +6 -0
  135. package/node_modules/@playdrop/types/dist/version.d.ts.map +1 -1
  136. package/node_modules/three/LICENSE +1 -1
  137. package/node_modules/three/README.md +7 -7
  138. package/node_modules/three/build/three.cjs +49655 -25499
  139. package/node_modules/three/build/three.core.js +58952 -0
  140. package/node_modules/three/build/three.core.min.js +6 -0
  141. package/node_modules/three/build/three.module.js +11162 -45962
  142. package/node_modules/three/build/three.module.min.js +2 -2
  143. package/node_modules/three/build/three.tsl.js +640 -0
  144. package/node_modules/three/build/three.tsl.min.js +6 -0
  145. package/node_modules/three/build/three.webgpu.js +79685 -0
  146. package/node_modules/three/build/three.webgpu.min.js +6 -0
  147. package/node_modules/three/build/three.webgpu.nodes.js +79456 -0
  148. package/node_modules/three/build/three.webgpu.nodes.min.js +6 -0
  149. package/node_modules/three/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  150. package/node_modules/three/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  151. package/node_modules/three/examples/jsm/Addons.js +8 -18
  152. package/node_modules/three/examples/jsm/animation/AnimationClipCreator.js +59 -7
  153. package/node_modules/three/examples/jsm/animation/CCDIKSolver.js +154 -45
  154. package/node_modules/three/examples/jsm/capabilities/WebGL.js +28 -23
  155. package/node_modules/three/examples/jsm/capabilities/WebGPU.js +19 -17
  156. package/node_modules/three/examples/jsm/controls/ArcballControls.js +636 -324
  157. package/node_modules/three/examples/jsm/controls/DragControls.js +332 -101
  158. package/node_modules/three/examples/jsm/controls/FirstPersonControls.js +291 -169
  159. package/node_modules/three/examples/jsm/controls/FlyControls.js +245 -191
  160. package/node_modules/three/examples/jsm/controls/MapControls.js +43 -9
  161. package/node_modules/three/examples/jsm/controls/OrbitControls.js +1156 -802
  162. package/node_modules/three/examples/jsm/controls/PointerLockControls.js +137 -35
  163. package/node_modules/three/examples/jsm/controls/TrackballControls.js +629 -456
  164. package/node_modules/three/examples/jsm/controls/TransformControls.js +442 -97
  165. package/node_modules/three/examples/jsm/csm/CSM.js +230 -17
  166. package/node_modules/three/examples/jsm/csm/CSMFrustum.js +61 -4
  167. package/node_modules/three/examples/jsm/csm/CSMHelper.js +50 -0
  168. package/node_modules/three/examples/jsm/csm/CSMShader.js +17 -5
  169. package/node_modules/three/examples/jsm/csm/CSMShadowNode.js +599 -0
  170. package/node_modules/three/examples/jsm/curves/CurveExtras.js +303 -31
  171. package/node_modules/three/examples/jsm/curves/NURBSCurve.js +91 -16
  172. package/node_modules/three/examples/jsm/curves/NURBSSurface.js +52 -6
  173. package/node_modules/three/examples/jsm/curves/NURBSUtils.js +102 -112
  174. package/node_modules/three/examples/jsm/curves/NURBSVolume.js +24 -4
  175. package/node_modules/three/examples/jsm/effects/AnaglyphEffect.js +39 -14
  176. package/node_modules/three/examples/jsm/effects/AsciiEffect.js +69 -22
  177. package/node_modules/three/examples/jsm/effects/OutlineEffect.js +61 -111
  178. package/node_modules/three/examples/jsm/effects/ParallaxBarrierEffect.js +48 -12
  179. package/node_modules/three/examples/jsm/effects/StereoEffect.js +37 -1
  180. package/node_modules/three/examples/jsm/environments/DebugEnvironment.js +50 -0
  181. package/node_modules/three/examples/jsm/environments/RoomEnvironment.js +82 -48
  182. package/node_modules/three/examples/jsm/exporters/DRACOExporter.js +59 -15
  183. package/node_modules/three/examples/jsm/exporters/EXRExporter.js +58 -19
  184. package/node_modules/three/examples/jsm/exporters/GLTFExporter.js +460 -174
  185. package/node_modules/three/examples/jsm/exporters/KTX2Exporter.js +80 -25
  186. package/node_modules/three/examples/jsm/exporters/OBJExporter.js +25 -1
  187. package/node_modules/three/examples/jsm/exporters/PLYExporter.js +51 -17
  188. package/node_modules/three/examples/jsm/exporters/STLExporter.js +27 -5
  189. package/node_modules/three/examples/jsm/exporters/USDZExporter.js +783 -268
  190. package/node_modules/three/examples/jsm/geometries/BoxLineGeometry.js +23 -0
  191. package/node_modules/three/examples/jsm/geometries/ConvexGeometry.js +19 -0
  192. package/node_modules/three/examples/jsm/geometries/DecalGeometry.js +94 -30
  193. package/node_modules/three/examples/jsm/geometries/ParametricFunctions.js +100 -0
  194. package/node_modules/three/examples/jsm/geometries/ParametricGeometry.js +38 -5
  195. package/node_modules/three/examples/jsm/geometries/RoundedBoxGeometry.js +68 -7
  196. package/node_modules/three/examples/jsm/geometries/TeapotGeometry.js +23 -38
  197. package/node_modules/three/examples/jsm/geometries/TextGeometry.js +48 -21
  198. package/node_modules/three/examples/jsm/gpgpu/BitonicSort.js +715 -0
  199. package/node_modules/three/examples/jsm/helpers/LightProbeHelper.js +79 -44
  200. package/node_modules/three/examples/jsm/helpers/LightProbeHelperGPU.js +102 -0
  201. package/node_modules/three/examples/jsm/helpers/OctreeHelper.js +36 -0
  202. package/node_modules/three/examples/jsm/helpers/PositionalAudioHelper.js +60 -0
  203. package/node_modules/three/examples/jsm/helpers/RapierHelper.js +59 -0
  204. package/node_modules/three/examples/jsm/helpers/RectAreaLightHelper.js +36 -3
  205. package/node_modules/three/examples/jsm/helpers/TextureHelper.js +28 -0
  206. package/node_modules/three/examples/jsm/helpers/TextureHelperGPU.js +214 -0
  207. package/node_modules/three/examples/jsm/helpers/VertexNormalsHelper.js +61 -2
  208. package/node_modules/three/examples/jsm/helpers/VertexTangentsHelper.js +47 -2
  209. package/node_modules/three/examples/jsm/helpers/ViewHelper.js +192 -65
  210. package/node_modules/three/examples/jsm/inspector/Inspector.js +427 -0
  211. package/node_modules/three/examples/jsm/inspector/RendererInspector.js +415 -0
  212. package/node_modules/three/examples/jsm/inspector/tabs/Console.js +204 -0
  213. package/node_modules/three/examples/jsm/inspector/tabs/Parameters.js +332 -0
  214. package/node_modules/three/examples/jsm/inspector/tabs/Performance.js +268 -0
  215. package/node_modules/three/examples/jsm/inspector/tabs/Viewer.js +166 -0
  216. package/node_modules/three/examples/jsm/inspector/ui/Graph.js +95 -0
  217. package/node_modules/three/examples/jsm/inspector/ui/Item.js +170 -0
  218. package/node_modules/three/examples/jsm/inspector/ui/List.js +75 -0
  219. package/node_modules/three/examples/jsm/inspector/ui/Profiler.js +170 -0
  220. package/node_modules/three/examples/jsm/inspector/ui/Style.js +654 -0
  221. package/node_modules/three/examples/jsm/inspector/ui/Tab.js +46 -0
  222. package/node_modules/three/examples/jsm/inspector/ui/Values.js +423 -0
  223. package/node_modules/three/examples/jsm/inspector/ui/utils.js +56 -0
  224. package/node_modules/three/examples/jsm/interactive/HTMLMesh.js +50 -21
  225. package/node_modules/three/examples/jsm/interactive/InteractiveGroup.js +170 -62
  226. package/node_modules/three/examples/jsm/interactive/SelectionBox.js +106 -9
  227. package/node_modules/three/examples/jsm/interactive/SelectionHelper.js +76 -30
  228. package/node_modules/three/examples/jsm/libs/basis/basis_transcoder.js +8 -10
  229. package/node_modules/three/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  230. package/node_modules/three/examples/jsm/libs/demuxer_mp4.js +109 -0
  231. package/node_modules/three/examples/jsm/libs/draco/README.md +2 -2
  232. package/node_modules/three/examples/jsm/libs/fflate.module.js +694 -496
  233. package/node_modules/three/examples/jsm/libs/ktx-parse.module.js +1 -1
  234. package/node_modules/three/examples/jsm/libs/meshopt_decoder.module.js +75 -58
  235. package/node_modules/three/examples/jsm/libs/motion-controllers.module.js +1 -1
  236. package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.js +1 -8723
  237. package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.module.js +1 -8734
  238. package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  239. package/node_modules/three/examples/jsm/libs/tween.module.js +32 -14
  240. package/node_modules/three/examples/jsm/lighting/TiledLighting.js +42 -0
  241. package/node_modules/three/examples/jsm/lights/LightProbeGenerator.js +65 -14
  242. package/node_modules/three/examples/jsm/lights/RectAreaLightTexturesLib.js +127 -0
  243. package/node_modules/three/examples/jsm/lights/RectAreaLightUniformsLib.js +20 -59
  244. package/node_modules/three/examples/jsm/lines/Line2.js +41 -4
  245. package/node_modules/three/examples/jsm/lines/LineGeometry.js +80 -2
  246. package/node_modules/three/examples/jsm/lines/LineMaterial.js +100 -22
  247. package/node_modules/three/examples/jsm/lines/LineSegments2.js +69 -4
  248. package/node_modules/three/examples/jsm/lines/LineSegmentsGeometry.js +65 -8
  249. package/node_modules/three/examples/jsm/lines/Wireframe.js +58 -6
  250. package/node_modules/three/examples/jsm/lines/WireframeGeometry2.js +27 -2
  251. package/node_modules/three/examples/jsm/lines/webgpu/Line2.js +46 -0
  252. package/node_modules/three/examples/jsm/lines/webgpu/LineSegments2.js +411 -0
  253. package/node_modules/three/examples/jsm/lines/webgpu/Wireframe.js +86 -0
  254. package/node_modules/three/examples/jsm/loaders/3DMLoader.js +86 -23
  255. package/node_modules/three/examples/jsm/loaders/3MFLoader.js +148 -5
  256. package/node_modules/three/examples/jsm/loaders/AMFLoader.js +32 -12
  257. package/node_modules/three/examples/jsm/loaders/BVHLoader.js +59 -12
  258. package/node_modules/three/examples/jsm/loaders/ColladaLoader.js +51 -12
  259. package/node_modules/three/examples/jsm/loaders/DDSLoader.js +68 -1
  260. package/node_modules/three/examples/jsm/loaders/DRACOLoader.js +149 -23
  261. package/node_modules/three/examples/jsm/loaders/EXRLoader.js +584 -109
  262. package/node_modules/three/examples/jsm/loaders/FBXLoader.js +165 -97
  263. package/node_modules/three/examples/jsm/loaders/FontLoader.js +83 -6
  264. package/node_modules/three/examples/jsm/loaders/GCodeLoader.js +37 -6
  265. package/node_modules/three/examples/jsm/loaders/GLTFLoader.js +337 -108
  266. package/node_modules/three/examples/jsm/loaders/HDRCubeTextureLoader.js +52 -3
  267. package/node_modules/three/examples/jsm/loaders/HDRLoader.js +486 -0
  268. package/node_modules/three/examples/jsm/loaders/IESLoader.js +42 -0
  269. package/node_modules/three/examples/jsm/loaders/KMZLoader.js +33 -0
  270. package/node_modules/three/examples/jsm/loaders/KTX2Loader.js +441 -138
  271. package/node_modules/three/examples/jsm/loaders/KTXLoader.js +31 -10
  272. package/node_modules/three/examples/jsm/loaders/LDrawLoader.js +194 -145
  273. package/node_modules/three/examples/jsm/loaders/LUT3dlLoader.js +47 -25
  274. package/node_modules/three/examples/jsm/loaders/LUTCubeLoader.js +46 -23
  275. package/node_modules/three/examples/jsm/loaders/LUTImageLoader.js +79 -52
  276. package/node_modules/three/examples/jsm/loaders/LWOLoader.js +47 -20
  277. package/node_modules/three/examples/jsm/loaders/LottieLoader.js +54 -1
  278. package/node_modules/three/examples/jsm/loaders/MD2Loader.js +37 -1
  279. package/node_modules/three/examples/jsm/loaders/MDDLoader.js +57 -12
  280. package/node_modules/three/examples/jsm/loaders/MTLLoader.js +61 -35
  281. package/node_modules/three/examples/jsm/loaders/MaterialXLoader.js +291 -39
  282. package/node_modules/three/examples/jsm/loaders/NRRDLoader.js +38 -6
  283. package/node_modules/three/examples/jsm/loaders/OBJLoader.js +54 -4
  284. package/node_modules/three/examples/jsm/loaders/PCDLoader.js +183 -32
  285. package/node_modules/three/examples/jsm/loaders/PDBLoader.js +44 -4
  286. package/node_modules/three/examples/jsm/loaders/PLYLoader.js +78 -44
  287. package/node_modules/three/examples/jsm/loaders/PVRLoader.js +25 -6
  288. package/node_modules/three/examples/jsm/loaders/RGBELoader.js +6 -438
  289. package/node_modules/three/examples/jsm/loaders/STLLoader.js +51 -40
  290. package/node_modules/three/examples/jsm/loaders/SVGLoader.js +118 -24
  291. package/node_modules/three/examples/jsm/loaders/TDSLoader.js +92 -72
  292. package/node_modules/three/examples/jsm/loaders/TGALoader.js +23 -0
  293. package/node_modules/three/examples/jsm/loaders/TIFFLoader.js +23 -0
  294. package/node_modules/three/examples/jsm/loaders/TTFLoader.js +50 -3
  295. package/node_modules/three/examples/jsm/loaders/USDLoader.js +219 -0
  296. package/node_modules/three/examples/jsm/loaders/USDZLoader.js +4 -810
  297. package/node_modules/three/examples/jsm/loaders/UltraHDRLoader.js +630 -0
  298. package/node_modules/three/examples/jsm/loaders/VOXLoader.js +67 -2
  299. package/node_modules/three/examples/jsm/loaders/VRMLLoader.js +57 -21
  300. package/node_modules/three/examples/jsm/loaders/VTKLoader.js +119 -6
  301. package/node_modules/three/examples/jsm/loaders/XYZLoader.js +39 -2
  302. package/node_modules/three/examples/jsm/loaders/lwo/IFFParser.js +81 -78
  303. package/node_modules/three/examples/jsm/loaders/usd/USDAParser.js +741 -0
  304. package/node_modules/three/examples/jsm/loaders/usd/USDCParser.js +17 -0
  305. package/node_modules/three/examples/jsm/materials/LDrawConditionalLineMaterial.js +183 -0
  306. package/node_modules/three/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +154 -0
  307. package/node_modules/three/examples/jsm/materials/MeshGouraudMaterial.js +9 -1
  308. package/node_modules/three/examples/jsm/materials/MeshPostProcessingMaterial.js +25 -2
  309. package/node_modules/three/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  310. package/node_modules/three/examples/jsm/math/Capsule.js +91 -14
  311. package/node_modules/three/examples/jsm/math/ColorConverter.js +22 -0
  312. package/node_modules/three/examples/jsm/math/ColorSpaces.js +147 -0
  313. package/node_modules/three/examples/jsm/math/ConvexHull.js +517 -93
  314. package/node_modules/three/examples/jsm/math/ImprovedNoise.js +32 -15
  315. package/node_modules/three/examples/jsm/math/Lut.js +113 -0
  316. package/node_modules/three/examples/jsm/math/MeshSurfaceSampler.js +78 -13
  317. package/node_modules/three/examples/jsm/math/OBB.js +141 -29
  318. package/node_modules/three/examples/jsm/math/Octree.js +177 -25
  319. package/node_modules/three/examples/jsm/math/SimplexNoise.js +68 -42
  320. package/node_modules/three/examples/jsm/misc/ConvexObjectBreaker.js +45 -25
  321. package/node_modules/three/examples/jsm/misc/GPUComputationRenderer.js +105 -45
  322. package/node_modules/three/examples/jsm/misc/Gyroscope.js +12 -0
  323. package/node_modules/three/examples/jsm/misc/MD2Character.js +117 -2
  324. package/node_modules/three/examples/jsm/misc/MD2CharacterComplex.js +175 -11
  325. package/node_modules/three/examples/jsm/misc/MorphAnimMesh.js +44 -0
  326. package/node_modules/three/examples/jsm/misc/MorphBlendMesh.js +103 -0
  327. package/node_modules/three/examples/jsm/misc/ProgressiveLightMap.js +101 -54
  328. package/node_modules/three/examples/jsm/misc/ProgressiveLightMapGPU.js +322 -0
  329. package/node_modules/three/examples/jsm/misc/RollerCoaster.js +57 -0
  330. package/node_modules/three/examples/jsm/misc/TubePainter.js +437 -40
  331. package/node_modules/three/examples/jsm/misc/Volume.js +123 -75
  332. package/node_modules/three/examples/jsm/misc/VolumeSlice.js +95 -48
  333. package/node_modules/three/examples/jsm/modifiers/CurveModifier.js +77 -47
  334. package/node_modules/three/examples/jsm/modifiers/CurveModifierGPU.js +256 -0
  335. package/node_modules/three/examples/jsm/modifiers/EdgeSplitModifier.js +20 -0
  336. package/node_modules/three/examples/jsm/modifiers/SimplifyModifier.js +26 -11
  337. package/node_modules/three/examples/jsm/modifiers/TessellateModifier.js +35 -2
  338. package/node_modules/three/examples/jsm/objects/GroundedSkybox.js +25 -6
  339. package/node_modules/three/examples/jsm/objects/Lensflare.js +96 -4
  340. package/node_modules/three/examples/jsm/objects/LensflareMesh.js +376 -0
  341. package/node_modules/three/examples/jsm/objects/MarchingCubes.js +90 -5
  342. package/node_modules/three/examples/jsm/objects/Reflector.js +76 -2
  343. package/node_modules/three/examples/jsm/objects/ReflectorForSSRPass.js +41 -0
  344. package/node_modules/three/examples/jsm/objects/Refractor.js +62 -0
  345. package/node_modules/three/examples/jsm/objects/ShadowMesh.js +54 -4
  346. package/node_modules/three/examples/jsm/objects/Sky.js +30 -12
  347. package/node_modules/three/examples/jsm/objects/SkyMesh.js +243 -0
  348. package/node_modules/three/examples/jsm/objects/Water.js +45 -5
  349. package/node_modules/three/examples/jsm/objects/Water2.js +44 -4
  350. package/node_modules/three/examples/jsm/objects/Water2Mesh.js +199 -0
  351. package/node_modules/three/examples/jsm/objects/WaterMesh.js +196 -0
  352. package/node_modules/three/examples/jsm/physics/AmmoPhysics.js +48 -0
  353. package/node_modules/three/examples/jsm/physics/JoltPhysics.js +330 -0
  354. package/node_modules/three/examples/jsm/physics/RapierPhysics.js +231 -19
  355. package/node_modules/three/examples/jsm/postprocessing/AfterimagePass.js +110 -29
  356. package/node_modules/three/examples/jsm/postprocessing/BloomPass.js +128 -26
  357. package/node_modules/three/examples/jsm/postprocessing/BokehPass.js +99 -22
  358. package/node_modules/three/examples/jsm/postprocessing/ClearPass.js +54 -3
  359. package/node_modules/three/examples/jsm/postprocessing/CubeTexturePass.js +82 -21
  360. package/node_modules/three/examples/jsm/postprocessing/DotScreenPass.js +59 -10
  361. package/node_modules/three/examples/jsm/postprocessing/EffectComposer.js +135 -3
  362. package/node_modules/three/examples/jsm/postprocessing/FXAAPass.js +40 -0
  363. package/node_modules/three/examples/jsm/postprocessing/FilmPass.js +54 -5
  364. package/node_modules/three/examples/jsm/postprocessing/GTAOPass.js +202 -57
  365. package/node_modules/three/examples/jsm/postprocessing/GlitchPass.js +86 -37
  366. package/node_modules/three/examples/jsm/postprocessing/HalftonePass.js +65 -10
  367. package/node_modules/three/examples/jsm/postprocessing/LUTPass.js +43 -79
  368. package/node_modules/three/examples/jsm/postprocessing/MaskPass.js +91 -0
  369. package/node_modules/three/examples/jsm/postprocessing/OutlinePass.js +277 -155
  370. package/node_modules/three/examples/jsm/postprocessing/OutputPass.js +58 -14
  371. package/node_modules/three/examples/jsm/postprocessing/Pass.js +100 -4
  372. package/node_modules/three/examples/jsm/postprocessing/RenderPass.js +85 -1
  373. package/node_modules/three/examples/jsm/postprocessing/RenderPixelatedPass.js +124 -45
  374. package/node_modules/three/examples/jsm/postprocessing/RenderTransitionPass.js +267 -0
  375. package/node_modules/three/examples/jsm/postprocessing/SAOPass.js +128 -56
  376. package/node_modules/three/examples/jsm/postprocessing/SMAAPass.js +106 -75
  377. package/node_modules/three/examples/jsm/postprocessing/SSAARenderPass.js +120 -35
  378. package/node_modules/three/examples/jsm/postprocessing/SSAOPass.js +174 -67
  379. package/node_modules/three/examples/jsm/postprocessing/SSRPass.js +268 -53
  380. package/node_modules/three/examples/jsm/postprocessing/SavePass.js +69 -16
  381. package/node_modules/three/examples/jsm/postprocessing/ShaderPass.js +65 -7
  382. package/node_modules/three/examples/jsm/postprocessing/TAARenderPass.js +79 -24
  383. package/node_modules/three/examples/jsm/postprocessing/TexturePass.js +72 -8
  384. package/node_modules/three/examples/jsm/postprocessing/UnrealBloomPass.js +125 -46
  385. package/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +122 -9
  386. package/node_modules/three/examples/jsm/renderers/CSS3DRenderer.js +133 -8
  387. package/node_modules/three/examples/jsm/renderers/Projector.js +20 -2
  388. package/node_modules/three/examples/jsm/renderers/SVGRenderer.js +134 -5
  389. package/node_modules/three/examples/jsm/shaders/ACESFilmicToneMappingShader.js +12 -5
  390. package/node_modules/three/examples/jsm/shaders/AfterimageShader.js +8 -3
  391. package/node_modules/three/examples/jsm/shaders/BasicShader.js +8 -1
  392. package/node_modules/three/examples/jsm/shaders/BleachBypassShader.js +11 -5
  393. package/node_modules/three/examples/jsm/shaders/BlendShader.js +8 -1
  394. package/node_modules/three/examples/jsm/shaders/BokehShader.js +9 -3
  395. package/node_modules/three/examples/jsm/shaders/BokehShader2.js +11 -4
  396. package/node_modules/three/examples/jsm/shaders/BrightnessContrastShader.js +10 -4
  397. package/node_modules/three/examples/jsm/shaders/ColorCorrectionShader.js +8 -1
  398. package/node_modules/three/examples/jsm/shaders/ColorifyShader.js +9 -3
  399. package/node_modules/three/examples/jsm/shaders/ConvolutionShader.js +9 -38
  400. package/node_modules/three/examples/jsm/shaders/CopyShader.js +8 -1
  401. package/node_modules/three/examples/jsm/shaders/DOFMipMapShader.js +10 -3
  402. package/node_modules/three/examples/jsm/shaders/DepthLimitedBlurShader.js +10 -1
  403. package/node_modules/three/examples/jsm/shaders/DigitalGlitch.js +10 -7
  404. package/node_modules/three/examples/jsm/shaders/DotScreenShader.js +8 -3
  405. package/node_modules/three/examples/jsm/shaders/ExposureShader.js +8 -1
  406. package/node_modules/three/examples/jsm/shaders/FXAAShader.js +243 -233
  407. package/node_modules/three/examples/jsm/shaders/FilmShader.js +13 -0
  408. package/node_modules/three/examples/jsm/shaders/FocusShader.js +8 -3
  409. package/node_modules/three/examples/jsm/shaders/FreiChenShader.js +10 -3
  410. package/node_modules/three/examples/jsm/shaders/GTAOShader.js +37 -40
  411. package/node_modules/three/examples/jsm/shaders/GammaCorrectionShader.js +11 -2
  412. package/node_modules/three/examples/jsm/shaders/GodRaysShader.js +20 -8
  413. package/node_modules/three/examples/jsm/shaders/HalftoneShader.js +13 -4
  414. package/node_modules/three/examples/jsm/shaders/HorizontalBlurShader.js +12 -3
  415. package/node_modules/three/examples/jsm/shaders/HorizontalTiltShiftShader.js +9 -2
  416. package/node_modules/three/examples/jsm/shaders/HueSaturationShader.js +10 -3
  417. package/node_modules/three/examples/jsm/shaders/KaleidoShader.js +11 -4
  418. package/node_modules/three/examples/jsm/shaders/LuminosityHighPassShader.js +9 -7
  419. package/node_modules/three/examples/jsm/shaders/LuminosityShader.js +8 -2
  420. package/node_modules/three/examples/jsm/shaders/MirrorShader.js +10 -4
  421. package/node_modules/three/examples/jsm/shaders/NormalMapShader.js +7 -2
  422. package/node_modules/three/examples/jsm/shaders/OutputShader.js +24 -2
  423. package/node_modules/three/examples/jsm/shaders/PoissonDenoiseShader.js +24 -15
  424. package/node_modules/three/examples/jsm/shaders/RGBShiftShader.js +8 -1
  425. package/node_modules/three/examples/jsm/shaders/SAOShader.js +10 -1
  426. package/node_modules/three/examples/jsm/shaders/SMAAShader.js +24 -1
  427. package/node_modules/three/examples/jsm/shaders/SSAOShader.js +26 -5
  428. package/node_modules/three/examples/jsm/shaders/SSRShader.js +26 -1
  429. package/node_modules/three/examples/jsm/shaders/SepiaShader.js +8 -3
  430. package/node_modules/three/examples/jsm/shaders/SobelOperatorShader.js +9 -3
  431. package/node_modules/three/examples/jsm/shaders/SubsurfaceScatteringShader.js +13 -8
  432. package/node_modules/three/examples/jsm/shaders/TechnicolorShader.js +10 -4
  433. package/node_modules/three/examples/jsm/shaders/ToonShader.js +29 -6
  434. package/node_modules/three/examples/jsm/shaders/TriangleBlurShader.js +9 -4
  435. package/node_modules/three/examples/jsm/shaders/UnpackDepthRGBAShader.js +19 -4
  436. package/node_modules/three/examples/jsm/shaders/VelocityShader.js +8 -1
  437. package/node_modules/three/examples/jsm/shaders/VerticalBlurShader.js +9 -2
  438. package/node_modules/three/examples/jsm/shaders/VerticalTiltShiftShader.js +8 -1
  439. package/node_modules/three/examples/jsm/shaders/VignetteShader.js +8 -3
  440. package/node_modules/three/examples/jsm/shaders/VolumeShader.js +11 -2
  441. package/node_modules/three/examples/jsm/shaders/WaterRefractionShader.js +11 -0
  442. package/node_modules/three/examples/jsm/textures/FlakesTexture.js +14 -0
  443. package/node_modules/three/examples/jsm/transpiler/AST.js +392 -31
  444. package/node_modules/three/examples/jsm/transpiler/GLSLDecoder.js +366 -136
  445. package/node_modules/three/examples/jsm/transpiler/Linker.js +327 -0
  446. package/node_modules/three/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
  447. package/node_modules/three/examples/jsm/transpiler/TSLEncoder.js +336 -111
  448. package/node_modules/three/examples/jsm/transpiler/Transpiler.js +50 -1
  449. package/node_modules/three/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  450. package/node_modules/three/examples/jsm/transpiler/WGSLEncoder.js +812 -0
  451. package/node_modules/three/examples/jsm/tsl/display/AfterImageNode.js +244 -0
  452. package/node_modules/three/examples/jsm/tsl/display/AnaglyphPassNode.js +107 -0
  453. package/node_modules/three/examples/jsm/tsl/display/AnamorphicNode.js +282 -0
  454. package/node_modules/three/examples/jsm/tsl/display/BleachBypass.js +33 -0
  455. package/node_modules/three/examples/jsm/tsl/display/BloomNode.js +524 -0
  456. package/node_modules/three/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
  457. package/node_modules/three/examples/jsm/tsl/display/DenoiseNode.js +334 -0
  458. package/node_modules/three/examples/jsm/tsl/display/DepthOfFieldNode.js +554 -0
  459. package/node_modules/three/examples/jsm/tsl/display/DotScreenNode.js +104 -0
  460. package/node_modules/three/examples/jsm/tsl/display/FXAANode.js +365 -0
  461. package/node_modules/three/examples/jsm/tsl/display/FilmNode.js +101 -0
  462. package/node_modules/three/examples/jsm/tsl/display/GTAONode.js +570 -0
  463. package/node_modules/three/examples/jsm/tsl/display/GaussianBlurNode.js +380 -0
  464. package/node_modules/three/examples/jsm/tsl/display/LensflareNode.js +279 -0
  465. package/node_modules/three/examples/jsm/tsl/display/Lut3DNode.js +109 -0
  466. package/node_modules/three/examples/jsm/tsl/display/MotionBlur.js +33 -0
  467. package/node_modules/three/examples/jsm/tsl/display/OutlineNode.js +762 -0
  468. package/node_modules/three/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +89 -0
  469. package/node_modules/three/examples/jsm/tsl/display/PixelationPassNode.js +334 -0
  470. package/node_modules/three/examples/jsm/tsl/display/RGBShiftNode.js +96 -0
  471. package/node_modules/three/examples/jsm/tsl/display/SMAANode.js +768 -0
  472. package/node_modules/three/examples/jsm/tsl/display/SSAAPassNode.js +358 -0
  473. package/node_modules/three/examples/jsm/tsl/display/SSGINode.js +654 -0
  474. package/node_modules/three/examples/jsm/tsl/display/SSRNode.js +656 -0
  475. package/node_modules/three/examples/jsm/tsl/display/SSSNode.js +488 -0
  476. package/node_modules/three/examples/jsm/tsl/display/Sepia.js +24 -0
  477. package/node_modules/three/examples/jsm/tsl/display/SobelOperatorNode.js +168 -0
  478. package/node_modules/three/examples/jsm/tsl/display/StereoCompositePassNode.js +185 -0
  479. package/node_modules/three/examples/jsm/tsl/display/StereoPassNode.js +120 -0
  480. package/node_modules/three/examples/jsm/tsl/display/TRAANode.js +578 -0
  481. package/node_modules/three/examples/jsm/tsl/display/TransitionNode.js +141 -0
  482. package/node_modules/three/examples/jsm/tsl/display/boxBlur.js +65 -0
  483. package/node_modules/three/examples/jsm/tsl/display/hashBlur.js +54 -0
  484. package/node_modules/three/examples/jsm/tsl/lighting/TiledLightsNode.js +442 -0
  485. package/node_modules/three/examples/jsm/tsl/math/Bayer.js +34 -0
  486. package/node_modules/three/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
  487. package/node_modules/three/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  488. package/node_modules/three/examples/jsm/tsl/utils/Raymarching.js +70 -0
  489. package/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +109 -45
  490. package/node_modules/three/examples/jsm/utils/CameraUtils.js +15 -6
  491. package/node_modules/three/examples/jsm/utils/GeometryCompressionUtils.js +54 -146
  492. package/node_modules/three/examples/jsm/utils/GeometryUtils.js +32 -27
  493. package/node_modules/three/examples/jsm/utils/LDrawUtils.js +13 -4
  494. package/node_modules/three/examples/jsm/utils/SceneOptimizer.js +458 -0
  495. package/node_modules/three/examples/jsm/utils/SceneUtils.js +112 -3
  496. package/node_modules/three/examples/jsm/utils/ShadowMapViewer.js +51 -31
  497. package/node_modules/three/examples/jsm/utils/ShadowMapViewerGPU.js +233 -0
  498. package/node_modules/three/examples/jsm/utils/SkeletonUtils.js +145 -68
  499. package/node_modules/three/examples/jsm/utils/SortUtils.js +23 -8
  500. package/node_modules/three/examples/jsm/utils/UVsDebug.js +12 -4
  501. package/node_modules/three/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +19 -2
  502. package/node_modules/three/examples/jsm/utils/WebGPUTextureUtils.js +81 -0
  503. package/node_modules/three/examples/jsm/utils/WorkerPool.js +67 -2
  504. package/node_modules/three/examples/jsm/webxr/ARButton.js +19 -0
  505. package/node_modules/three/examples/jsm/webxr/OculusHandModel.js +87 -2
  506. package/node_modules/three/examples/jsm/webxr/OculusHandPointerModel.js +148 -22
  507. package/node_modules/three/examples/jsm/webxr/Text2D.js +20 -6
  508. package/node_modules/three/examples/jsm/webxr/VRButton.js +44 -5
  509. package/node_modules/three/examples/jsm/webxr/XRButton.js +23 -1
  510. package/node_modules/three/examples/jsm/webxr/XRControllerModelFactory.js +103 -4
  511. package/node_modules/three/examples/jsm/webxr/XREstimatedLight.js +35 -4
  512. package/node_modules/three/examples/jsm/webxr/XRHandMeshModel.js +37 -0
  513. package/node_modules/three/examples/jsm/webxr/XRHandModelFactory.js +101 -9
  514. package/node_modules/three/examples/jsm/webxr/XRHandPrimitiveModel.js +44 -0
  515. package/node_modules/three/examples/jsm/webxr/XRPlanes.js +18 -0
  516. package/node_modules/three/package.json +25 -20
  517. package/node_modules/three/src/Three.Core.js +185 -0
  518. package/node_modules/three/src/Three.Legacy.js +0 -1
  519. package/node_modules/three/src/Three.TSL.js +633 -0
  520. package/node_modules/three/src/Three.WebGPU.Nodes.js +26 -0
  521. package/node_modules/three/src/Three.WebGPU.js +28 -0
  522. package/node_modules/three/src/Three.js +1 -176
  523. package/node_modules/three/src/animation/AnimationAction.js +262 -30
  524. package/node_modules/three/src/animation/AnimationClip.js +164 -9
  525. package/node_modules/three/src/animation/AnimationMixer.js +99 -15
  526. package/node_modules/three/src/animation/AnimationObjectGroup.js +45 -21
  527. package/node_modules/three/src/animation/AnimationUtils.js +169 -19
  528. package/node_modules/three/src/animation/KeyframeTrack.js +151 -16
  529. package/node_modules/three/src/animation/PropertyBinding.js +91 -16
  530. package/node_modules/three/src/animation/PropertyMixer.js +72 -5
  531. package/node_modules/three/src/animation/tracks/BooleanKeyframeTrack.js +42 -6
  532. package/node_modules/three/src/animation/tracks/ColorKeyframeTrack.js +26 -5
  533. package/node_modules/three/src/animation/tracks/NumberKeyframeTrack.js +26 -2
  534. package/node_modules/three/src/animation/tracks/QuaternionKeyframeTrack.js +31 -3
  535. package/node_modules/three/src/animation/tracks/StringKeyframeTrack.js +42 -2
  536. package/node_modules/three/src/animation/tracks/VectorKeyframeTrack.js +26 -2
  537. package/node_modules/three/src/audio/Audio.js +388 -10
  538. package/node_modules/three/src/audio/AudioAnalyser.js +58 -1
  539. package/node_modules/three/src/audio/AudioContext.js +15 -0
  540. package/node_modules/three/src/audio/AudioListener.js +89 -10
  541. package/node_modules/three/src/audio/PositionalAudio.js +107 -0
  542. package/node_modules/three/src/cameras/ArrayCamera.js +37 -0
  543. package/node_modules/three/src/cameras/Camera.js +61 -0
  544. package/node_modules/three/src/cameras/CubeCamera.js +66 -0
  545. package/node_modules/three/src/cameras/OrthographicCamera.js +110 -1
  546. package/node_modules/three/src/cameras/PerspectiveCamera.js +174 -35
  547. package/node_modules/three/src/cameras/StereoCamera.js +48 -2
  548. package/node_modules/three/src/constants.js +1477 -18
  549. package/node_modules/three/src/core/BufferAttribute.js +417 -23
  550. package/node_modules/three/src/core/BufferGeometry.js +416 -49
  551. package/node_modules/three/src/core/Clock.js +62 -8
  552. package/node_modules/three/src/core/EventDispatcher.js +52 -8
  553. package/node_modules/three/src/core/GLBufferAttribute.js +113 -2
  554. package/node_modules/three/src/core/InstancedBufferAttribute.js +29 -0
  555. package/node_modules/three/src/core/InstancedBufferGeometry.js +20 -0
  556. package/node_modules/three/src/core/InstancedInterleavedBuffer.js +26 -0
  557. package/node_modules/three/src/core/InterleavedBuffer.js +141 -16
  558. package/node_modules/three/src/core/InterleavedBufferAttribute.js +200 -2
  559. package/node_modules/three/src/core/Layers.js +71 -10
  560. package/node_modules/three/src/core/Object3D.js +665 -54
  561. package/node_modules/three/src/core/Raycaster.js +160 -8
  562. package/node_modules/three/src/core/RenderTarget.js +297 -36
  563. package/node_modules/three/src/core/RenderTarget3D.js +48 -0
  564. package/node_modules/three/src/core/Timer.js +184 -0
  565. package/node_modules/three/src/core/Uniform.js +29 -0
  566. package/node_modules/three/src/core/UniformsGroup.js +84 -2
  567. package/node_modules/three/src/extras/Controls.js +120 -0
  568. package/node_modules/three/src/extras/DataUtils.js +50 -9
  569. package/node_modules/three/src/extras/Earcut.js +18 -779
  570. package/node_modules/three/src/extras/ImageUtils.js +22 -14
  571. package/node_modules/three/src/extras/PMREMGenerator.js +329 -64
  572. package/node_modules/three/src/extras/ShapeUtils.js +24 -2
  573. package/node_modules/three/src/extras/TextureUtils.js +293 -0
  574. package/node_modules/three/src/extras/core/Curve.js +156 -55
  575. package/node_modules/three/src/extras/core/CurvePath.js +63 -22
  576. package/node_modules/three/src/extras/core/Interpolations.js +34 -2
  577. package/node_modules/three/src/extras/core/Path.js +134 -1
  578. package/node_modules/three/src/extras/core/Shape.js +66 -3
  579. package/node_modules/three/src/extras/core/ShapePath.js +80 -4
  580. package/node_modules/three/src/extras/curves/ArcCurve.js +22 -0
  581. package/node_modules/three/src/extras/curves/CatmullRomCurve3.js +89 -18
  582. package/node_modules/three/src/extras/curves/CubicBezierCurve.js +67 -0
  583. package/node_modules/three/src/extras/curves/CubicBezierCurve3.js +50 -0
  584. package/node_modules/three/src/extras/curves/EllipseCurve.js +104 -2
  585. package/node_modules/three/src/extras/curves/LineCurve.js +36 -0
  586. package/node_modules/three/src/extras/curves/LineCurve3.js +36 -0
  587. package/node_modules/three/src/extras/curves/QuadraticBezierCurve.js +59 -0
  588. package/node_modules/three/src/extras/curves/QuadraticBezierCurve3.js +43 -0
  589. package/node_modules/three/src/extras/curves/SplineCurve.js +48 -0
  590. package/node_modules/three/src/extras/lib/earcut.js +685 -0
  591. package/node_modules/three/src/geometries/BoxGeometry.js +39 -0
  592. package/node_modules/three/src/geometries/CapsuleGeometry.js +196 -11
  593. package/node_modules/three/src/geometries/CircleGeometry.js +41 -0
  594. package/node_modules/three/src/geometries/ConeGeometry.js +39 -0
  595. package/node_modules/three/src/geometries/CylinderGeometry.js +51 -4
  596. package/node_modules/three/src/geometries/DodecahedronGeometry.js +33 -0
  597. package/node_modules/three/src/geometries/EdgesGeometry.js +30 -2
  598. package/node_modules/three/src/geometries/ExtrudeGeometry.js +146 -50
  599. package/node_modules/three/src/geometries/IcosahedronGeometry.js +33 -0
  600. package/node_modules/three/src/geometries/LatheGeometry.js +44 -3
  601. package/node_modules/three/src/geometries/OctahedronGeometry.js +33 -0
  602. package/node_modules/three/src/geometries/PlaneGeometry.js +35 -0
  603. package/node_modules/three/src/geometries/PolyhedronGeometry.js +29 -0
  604. package/node_modules/three/src/geometries/RingGeometry.js +37 -0
  605. package/node_modules/three/src/geometries/ShapeGeometry.js +38 -0
  606. package/node_modules/three/src/geometries/SphereGeometry.js +38 -0
  607. package/node_modules/three/src/geometries/TetrahedronGeometry.js +33 -0
  608. package/node_modules/three/src/geometries/TorusGeometry.js +36 -0
  609. package/node_modules/three/src/geometries/TorusKnotGeometry.js +39 -0
  610. package/node_modules/three/src/geometries/TubeGeometry.js +50 -0
  611. package/node_modules/three/src/geometries/WireframeGeometry.js +32 -0
  612. package/node_modules/three/src/helpers/ArrowHelper.js +62 -5
  613. package/node_modules/three/src/helpers/AxesHelper.js +28 -0
  614. package/node_modules/three/src/helpers/Box3Helper.js +28 -0
  615. package/node_modules/three/src/helpers/BoxHelper.js +43 -7
  616. package/node_modules/three/src/helpers/CameraHelper.js +100 -27
  617. package/node_modules/three/src/helpers/DirectionalLightHelper.js +52 -0
  618. package/node_modules/three/src/helpers/GridHelper.js +26 -0
  619. package/node_modules/three/src/helpers/HemisphereLightHelper.js +39 -0
  620. package/node_modules/three/src/helpers/PlaneHelper.js +33 -0
  621. package/node_modules/three/src/helpers/PointLightHelper.js +43 -0
  622. package/node_modules/three/src/helpers/PolarGridHelper.js +30 -0
  623. package/node_modules/three/src/helpers/SkeletonHelper.js +73 -7
  624. package/node_modules/three/src/helpers/SpotLightHelper.js +58 -1
  625. package/node_modules/three/src/lights/AmbientLight.js +25 -0
  626. package/node_modules/three/src/lights/DirectionalLight.js +57 -0
  627. package/node_modules/three/src/lights/DirectionalLightShadow.js +15 -0
  628. package/node_modules/three/src/lights/HemisphereLight.js +32 -0
  629. package/node_modules/three/src/lights/Light.js +37 -0
  630. package/node_modules/three/src/lights/LightProbe.js +43 -0
  631. package/node_modules/three/src/lights/LightShadow.js +198 -7
  632. package/node_modules/three/src/lights/PointLight.js +59 -0
  633. package/node_modules/three/src/lights/PointLightShadow.js +22 -1
  634. package/node_modules/three/src/lights/RectAreaLight.js +59 -0
  635. package/node_modules/three/src/lights/SpotLight.js +102 -0
  636. package/node_modules/three/src/lights/SpotLightShadow.js +33 -3
  637. package/node_modules/three/src/lights/webgpu/IESSpotLight.js +46 -0
  638. package/node_modules/three/src/lights/webgpu/ProjectorLight.js +46 -0
  639. package/node_modules/three/src/loaders/AnimationLoader.js +34 -2
  640. package/node_modules/three/src/loaders/AudioLoader.js +34 -2
  641. package/node_modules/three/src/loaders/BufferGeometryLoader.js +38 -13
  642. package/node_modules/three/src/loaders/Cache.js +47 -2
  643. package/node_modules/three/src/loaders/CompressedTextureLoader.js +36 -3
  644. package/node_modules/three/src/loaders/CubeTextureLoader.js +45 -0
  645. package/node_modules/three/src/loaders/DataTextureLoader.js +45 -8
  646. package/node_modules/three/src/loaders/FileLoader.js +90 -6
  647. package/node_modules/three/src/loaders/ImageBitmapLoader.js +108 -11
  648. package/node_modules/three/src/loaders/ImageLoader.js +85 -8
  649. package/node_modules/three/src/loaders/Loader.js +144 -0
  650. package/node_modules/three/src/loaders/LoaderUtils.js +18 -34
  651. package/node_modules/three/src/loaders/LoadingManager.js +187 -0
  652. package/node_modules/three/src/loaders/MaterialLoader.js +70 -4
  653. package/node_modules/three/src/loaders/ObjectLoader.js +146 -30
  654. package/node_modules/three/src/loaders/TextureLoader.js +33 -0
  655. package/node_modules/three/src/loaders/nodes/NodeLoader.js +194 -0
  656. package/node_modules/three/src/loaders/nodes/NodeMaterialLoader.js +108 -0
  657. package/node_modules/three/src/loaders/nodes/NodeObjectLoader.js +151 -0
  658. package/node_modules/three/src/materials/LineBasicMaterial.js +74 -1
  659. package/node_modules/three/src/materials/LineDashedMaterial.js +52 -1
  660. package/node_modules/three/src/materials/Material.js +504 -11
  661. package/node_modules/three/src/materials/MeshBasicMaterial.js +172 -3
  662. package/node_modules/three/src/materials/MeshDepthMaterial.js +94 -0
  663. package/node_modules/three/src/materials/MeshDistanceMaterial.js +76 -0
  664. package/node_modules/three/src/materials/MeshLambertMaterial.js +278 -1
  665. package/node_modules/three/src/materials/MeshMatcapMaterial.js +164 -0
  666. package/node_modules/three/src/materials/MeshNormalMaterial.js +114 -0
  667. package/node_modules/three/src/materials/MeshPhongMaterial.js +293 -1
  668. package/node_modules/three/src/materials/MeshPhysicalMaterial.js +316 -4
  669. package/node_modules/three/src/materials/MeshStandardMaterial.js +304 -3
  670. package/node_modules/three/src/materials/MeshToonMaterial.js +219 -0
  671. package/node_modules/three/src/materials/PointsMaterial.js +89 -0
  672. package/node_modules/three/src/materials/RawShaderMaterial.js +25 -0
  673. package/node_modules/three/src/materials/ShaderMaterial.js +215 -10
  674. package/node_modules/three/src/materials/ShadowMaterial.js +54 -0
  675. package/node_modules/three/src/materials/SpriteMaterial.js +82 -0
  676. package/node_modules/three/{examples/jsm/nodes/materials → src/materials/nodes}/Line2NodeMaterial.js +206 -100
  677. package/node_modules/three/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
  678. package/node_modules/three/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
  679. package/node_modules/three/src/materials/nodes/MeshBasicNodeMaterial.js +134 -0
  680. package/node_modules/three/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
  681. package/node_modules/three/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
  682. package/node_modules/three/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
  683. package/node_modules/three/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
  684. package/node_modules/three/src/materials/nodes/MeshPhysicalNodeMaterial.js +518 -0
  685. package/node_modules/three/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
  686. package/node_modules/three/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
  687. package/node_modules/three/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
  688. package/node_modules/three/src/materials/nodes/NodeMaterial.js +1310 -0
  689. package/node_modules/three/{examples/jsm/nodes/materials/Materials.js → src/materials/nodes/NodeMaterials.js} +7 -2
  690. package/node_modules/three/src/materials/nodes/PointsNodeMaterial.js +211 -0
  691. package/node_modules/three/src/materials/nodes/ShadowNodeMaterial.js +76 -0
  692. package/node_modules/three/src/materials/nodes/SpriteNodeMaterial.js +186 -0
  693. package/node_modules/three/src/materials/nodes/VolumeNodeMaterial.js +81 -0
  694. package/node_modules/three/src/materials/nodes/manager/NodeMaterialObserver.js +613 -0
  695. package/node_modules/three/src/math/Box2.js +181 -4
  696. package/node_modules/three/src/math/Box3.js +277 -6
  697. package/node_modules/three/src/math/Color.js +355 -11
  698. package/node_modules/three/src/math/ColorManagement.js +161 -85
  699. package/node_modules/three/src/math/Cylindrical.js +65 -6
  700. package/node_modules/three/src/math/Euler.js +139 -5
  701. package/node_modules/three/src/math/Frustum.js +108 -9
  702. package/node_modules/three/src/math/FrustumArray.js +258 -0
  703. package/node_modules/three/src/math/Interpolant.js +87 -8
  704. package/node_modules/three/src/math/Line3.js +223 -2
  705. package/node_modules/three/src/math/MathUtils.js +408 -20
  706. package/node_modules/three/src/math/Matrix2.js +124 -0
  707. package/node_modules/three/src/math/Matrix3.js +229 -4
  708. package/node_modules/three/src/math/Matrix4.js +416 -30
  709. package/node_modules/three/src/math/Plane.js +164 -2
  710. package/node_modules/three/src/math/Quaternion.js +345 -86
  711. package/node_modules/three/src/math/Ray.js +162 -0
  712. package/node_modules/three/src/math/Sphere.js +175 -0
  713. package/node_modules/three/src/math/Spherical.js +74 -13
  714. package/node_modules/three/src/math/SphericalHarmonics3.js +112 -14
  715. package/node_modules/three/src/math/Triangle.js +230 -2
  716. package/node_modules/three/src/math/Vector2.js +396 -10
  717. package/node_modules/three/src/math/Vector3.js +557 -20
  718. package/node_modules/three/src/math/Vector4.js +428 -9
  719. package/node_modules/three/src/math/interpolants/CubicInterpolant.js +10 -1
  720. package/node_modules/three/src/math/interpolants/DiscreteInterpolant.js +10 -2
  721. package/node_modules/three/src/math/interpolants/LinearInterpolant.js +13 -0
  722. package/node_modules/three/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
  723. package/node_modules/three/src/nodes/Nodes.js +148 -0
  724. package/node_modules/three/src/nodes/TSL.js +173 -0
  725. package/node_modules/three/src/nodes/accessors/AccessorsUtils.js +53 -0
  726. package/node_modules/three/src/nodes/accessors/Arrays.js +68 -0
  727. package/node_modules/three/src/nodes/accessors/BatchNode.js +163 -0
  728. package/node_modules/three/src/nodes/accessors/Bitangent.js +82 -0
  729. package/node_modules/three/src/nodes/accessors/BufferAttributeNode.js +340 -0
  730. package/node_modules/three/src/nodes/accessors/BufferNode.js +101 -0
  731. package/node_modules/three/src/nodes/accessors/BuiltinNode.js +63 -0
  732. package/node_modules/three/src/nodes/accessors/Camera.js +282 -0
  733. package/node_modules/three/src/nodes/accessors/ClippingNode.js +255 -0
  734. package/node_modules/three/src/nodes/accessors/CubeTextureNode.js +190 -0
  735. package/node_modules/three/src/nodes/accessors/InstanceNode.js +244 -0
  736. package/node_modules/three/src/nodes/accessors/InstancedMeshNode.js +50 -0
  737. package/node_modules/three/src/nodes/accessors/Lights.js +139 -0
  738. package/node_modules/three/src/nodes/accessors/MaterialNode.js +775 -0
  739. package/node_modules/three/src/nodes/accessors/MaterialProperties.js +59 -0
  740. package/node_modules/three/src/nodes/accessors/MaterialReferenceNode.js +85 -0
  741. package/node_modules/three/src/nodes/accessors/ModelNode.js +184 -0
  742. package/node_modules/three/src/nodes/accessors/ModelViewProjectionNode.js +13 -0
  743. package/node_modules/three/{examples/jsm → src}/nodes/accessors/MorphNode.js +122 -57
  744. package/node_modules/three/src/nodes/accessors/Normal.js +243 -0
  745. package/node_modules/three/src/nodes/accessors/Object3DNode.js +268 -0
  746. package/node_modules/three/src/nodes/accessors/PointUVNode.js +55 -0
  747. package/node_modules/three/src/nodes/accessors/Position.js +90 -0
  748. package/node_modules/three/src/nodes/accessors/ReferenceBaseNode.js +357 -0
  749. package/node_modules/three/src/nodes/accessors/ReferenceNode.js +424 -0
  750. package/node_modules/three/src/nodes/accessors/ReflectVector.js +36 -0
  751. package/node_modules/three/src/nodes/accessors/RendererReferenceNode.js +79 -0
  752. package/node_modules/three/src/nodes/accessors/SceneNode.js +145 -0
  753. package/node_modules/three/src/nodes/accessors/SkinningNode.js +327 -0
  754. package/node_modules/three/src/nodes/accessors/StorageBufferNode.js +416 -0
  755. package/node_modules/three/src/nodes/accessors/StorageTextureNode.js +264 -0
  756. package/node_modules/three/src/nodes/accessors/Tangent.js +70 -0
  757. package/node_modules/three/src/nodes/accessors/TangentUtils.js +46 -0
  758. package/node_modules/three/src/nodes/accessors/Texture3DNode.js +199 -0
  759. package/node_modules/three/{examples/jsm/nodes/accessors/TextureBicubicNode.js → src/nodes/accessors/TextureBicubic.js} +28 -30
  760. package/node_modules/three/src/nodes/accessors/TextureNode.js +927 -0
  761. package/node_modules/three/src/nodes/accessors/TextureSizeNode.js +77 -0
  762. package/node_modules/three/src/nodes/accessors/UV.js +11 -0
  763. package/node_modules/three/src/nodes/accessors/UniformArrayNode.js +348 -0
  764. package/node_modules/three/src/nodes/accessors/UserDataNode.js +77 -0
  765. package/node_modules/three/src/nodes/accessors/VelocityNode.js +224 -0
  766. package/node_modules/three/src/nodes/accessors/VertexColorNode.js +110 -0
  767. package/node_modules/three/src/nodes/code/CodeNode.js +181 -0
  768. package/node_modules/three/src/nodes/code/ExpressionNode.js +68 -0
  769. package/node_modules/three/src/nodes/code/FunctionCallNode.js +187 -0
  770. package/node_modules/three/src/nodes/code/FunctionNode.js +183 -0
  771. package/node_modules/three/{examples/jsm → src}/nodes/code/ScriptableNode.js +253 -15
  772. package/node_modules/three/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +95 -9
  773. package/node_modules/three/src/nodes/core/ArrayNode.js +155 -0
  774. package/node_modules/three/src/nodes/core/AssignNode.js +202 -0
  775. package/node_modules/three/src/nodes/core/AttributeNode.js +168 -0
  776. package/node_modules/three/src/nodes/core/BypassNode.js +93 -0
  777. package/node_modules/three/src/nodes/core/ConstNode.js +67 -0
  778. package/node_modules/three/src/nodes/core/ContextNode.js +184 -0
  779. package/node_modules/three/src/nodes/core/IndexNode.js +164 -0
  780. package/node_modules/three/src/nodes/core/InputNode.js +136 -0
  781. package/node_modules/three/src/nodes/core/InspectorNode.js +128 -0
  782. package/node_modules/three/src/nodes/core/IsolateNode.js +133 -0
  783. package/node_modules/three/src/nodes/core/LightingModel.js +77 -0
  784. package/node_modules/three/src/nodes/core/MRTNode.js +150 -0
  785. package/node_modules/three/src/nodes/core/Node.js +1083 -0
  786. package/node_modules/three/src/nodes/core/NodeAttribute.js +53 -0
  787. package/node_modules/three/src/nodes/core/NodeBuilder.js +3081 -0
  788. package/node_modules/three/src/nodes/core/NodeCache.js +75 -0
  789. package/node_modules/three/src/nodes/core/NodeCode.js +46 -0
  790. package/node_modules/three/src/nodes/core/NodeFrame.js +306 -0
  791. package/node_modules/three/src/nodes/core/NodeFunction.js +69 -0
  792. package/node_modules/three/src/nodes/core/NodeFunctionInput.js +61 -0
  793. package/node_modules/three/src/nodes/core/NodeParser.js +23 -0
  794. package/node_modules/three/src/nodes/core/NodeUniform.js +91 -0
  795. package/node_modules/three/src/nodes/core/NodeUtils.js +406 -0
  796. package/node_modules/three/src/nodes/core/NodeVar.js +60 -0
  797. package/node_modules/three/src/nodes/core/NodeVarying.js +63 -0
  798. package/node_modules/three/src/nodes/core/OutputStructNode.js +103 -0
  799. package/node_modules/three/src/nodes/core/ParameterNode.js +94 -0
  800. package/node_modules/three/src/nodes/core/PropertyNode.js +351 -0
  801. package/node_modules/three/src/nodes/core/StackNode.js +377 -0
  802. package/node_modules/three/src/nodes/core/StructNode.js +120 -0
  803. package/node_modules/three/src/nodes/core/StructType.js +13 -0
  804. package/node_modules/three/src/nodes/core/StructTypeNode.js +154 -0
  805. package/node_modules/three/src/nodes/core/SubBuildNode.js +89 -0
  806. package/node_modules/three/src/nodes/core/TempNode.js +88 -0
  807. package/node_modules/three/src/nodes/core/UniformGroupNode.js +137 -0
  808. package/node_modules/three/src/nodes/core/UniformNode.js +243 -0
  809. package/node_modules/three/src/nodes/core/VarNode.js +342 -0
  810. package/node_modules/three/src/nodes/core/VaryingNode.js +227 -0
  811. package/node_modules/three/src/nodes/core/constants.js +68 -0
  812. package/node_modules/three/src/nodes/display/BlendModes.js +235 -0
  813. package/node_modules/three/src/nodes/display/BumpMapNode.js +117 -0
  814. package/node_modules/three/src/nodes/display/ColorAdjustment.js +141 -0
  815. package/node_modules/three/src/nodes/display/ColorSpaceFunctions.js +54 -0
  816. package/node_modules/three/src/nodes/display/ColorSpaceNode.js +164 -0
  817. package/node_modules/three/src/nodes/display/FrontFacingNode.js +102 -0
  818. package/node_modules/three/src/nodes/display/NormalMapNode.js +118 -0
  819. package/node_modules/three/src/nodes/display/PassNode.js +946 -0
  820. package/node_modules/three/src/nodes/display/PosterizeNode.js +65 -0
  821. package/node_modules/three/src/nodes/display/RenderOutputNode.js +150 -0
  822. package/node_modules/three/src/nodes/display/ScreenNode.js +290 -0
  823. package/node_modules/three/src/nodes/display/ToneMappingFunctions.js +242 -0
  824. package/node_modules/three/src/nodes/display/ToneMappingNode.js +147 -0
  825. package/node_modules/three/src/nodes/display/ToonOutlinePassNode.js +191 -0
  826. package/node_modules/three/src/nodes/display/ViewportDepthNode.js +294 -0
  827. package/node_modules/three/src/nodes/display/ViewportDepthTextureNode.js +67 -0
  828. package/node_modules/three/src/nodes/display/ViewportSharedTextureNode.js +73 -0
  829. package/node_modules/three/src/nodes/display/ViewportTextureNode.js +228 -0
  830. package/node_modules/three/src/nodes/fog/Fog.js +114 -0
  831. package/node_modules/three/src/nodes/functions/BSDF/BRDF_GGX.js +55 -0
  832. package/node_modules/three/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  833. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  834. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +9 -9
  835. package/node_modules/three/src/nodes/functions/BSDF/DFGApprox.js +71 -0
  836. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +2 -2
  837. package/node_modules/three/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +28 -0
  838. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  839. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +2 -2
  840. package/node_modules/three/src/nodes/functions/BSDF/LTC.js +175 -0
  841. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  842. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -4
  843. package/node_modules/three/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +29 -0
  844. package/node_modules/three/src/nodes/functions/BasicLightingModel.js +100 -0
  845. package/node_modules/three/src/nodes/functions/PhongLightingModel.js +99 -0
  846. package/node_modules/three/src/nodes/functions/PhysicalLightingModel.js +797 -0
  847. package/node_modules/three/src/nodes/functions/ShadowMaskModel.js +58 -0
  848. package/node_modules/three/src/nodes/functions/ToonLightingModel.js +70 -0
  849. package/node_modules/three/src/nodes/functions/VolumetricLightingModel.js +183 -0
  850. package/node_modules/three/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
  851. package/node_modules/three/src/nodes/functions/material/getGeometryRoughness.js +19 -0
  852. package/node_modules/three/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
  853. package/node_modules/three/{examples/jsm → src}/nodes/functions/material/getRoughness.js +2 -2
  854. package/node_modules/three/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  855. package/node_modules/three/src/nodes/geometry/RangeNode.js +208 -0
  856. package/node_modules/three/src/nodes/gpgpu/AtomicFunctionNode.js +274 -0
  857. package/node_modules/three/src/nodes/gpgpu/BarrierNode.js +89 -0
  858. package/node_modules/three/src/nodes/gpgpu/ComputeBuiltinNode.js +228 -0
  859. package/node_modules/three/src/nodes/gpgpu/ComputeNode.js +284 -0
  860. package/node_modules/three/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  861. package/node_modules/three/src/nodes/gpgpu/WorkgroupInfoNode.js +234 -0
  862. package/node_modules/three/src/nodes/lighting/AONode.js +45 -0
  863. package/node_modules/three/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +16 -8
  864. package/node_modules/three/src/nodes/lighting/AnalyticLightNode.js +256 -0
  865. package/node_modules/three/src/nodes/lighting/BasicEnvironmentNode.js +49 -0
  866. package/node_modules/three/src/nodes/lighting/BasicLightMapNode.js +49 -0
  867. package/node_modules/three/src/nodes/lighting/DirectionalLightNode.js +39 -0
  868. package/node_modules/three/src/nodes/lighting/EnvironmentNode.js +153 -0
  869. package/node_modules/three/src/nodes/lighting/HemisphereLightNode.js +87 -0
  870. package/node_modules/three/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +20 -10
  871. package/node_modules/three/src/nodes/lighting/IrradianceNode.js +44 -0
  872. package/node_modules/three/src/nodes/lighting/LightProbeNode.js +73 -0
  873. package/node_modules/three/src/nodes/lighting/LightUtils.js +25 -0
  874. package/node_modules/three/src/nodes/lighting/LightingContextNode.js +115 -0
  875. package/node_modules/three/src/nodes/lighting/LightingNode.js +36 -0
  876. package/node_modules/three/src/nodes/lighting/LightsNode.js +453 -0
  877. package/node_modules/three/src/nodes/lighting/PointLightNode.js +102 -0
  878. package/node_modules/three/src/nodes/lighting/PointShadowNode.js +312 -0
  879. package/node_modules/three/src/nodes/lighting/ProjectorLightNode.js +91 -0
  880. package/node_modules/three/src/nodes/lighting/RectAreaLightNode.js +133 -0
  881. package/node_modules/three/src/nodes/lighting/ShadowBaseNode.js +81 -0
  882. package/node_modules/three/src/nodes/lighting/ShadowFilterNode.js +276 -0
  883. package/node_modules/three/src/nodes/lighting/ShadowNode.js +811 -0
  884. package/node_modules/three/src/nodes/lighting/SpotLightNode.js +168 -0
  885. package/node_modules/three/src/nodes/materialx/MaterialXNodes.js +197 -0
  886. package/node_modules/three/{examples/jsm → src}/nodes/materialx/lib/mx_hsv.js +43 -46
  887. package/node_modules/three/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +625 -564
  888. package/node_modules/three/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +3 -9
  889. package/node_modules/three/src/nodes/math/BitcastNode.js +156 -0
  890. package/node_modules/three/src/nodes/math/ConditionalNode.js +245 -0
  891. package/node_modules/three/src/nodes/math/Hash.js +21 -0
  892. package/node_modules/three/src/nodes/math/MathNode.js +1167 -0
  893. package/node_modules/three/src/nodes/math/MathUtils.js +54 -0
  894. package/node_modules/three/src/nodes/math/OperatorNode.js +751 -0
  895. package/node_modules/three/{examples/jsm → src}/nodes/math/TriNoise3D.js +34 -34
  896. package/node_modules/three/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +23 -7
  897. package/node_modules/three/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +11 -0
  898. package/node_modules/three/src/nodes/pmrem/PMREMNode.js +397 -0
  899. package/node_modules/three/src/nodes/pmrem/PMREMUtils.js +403 -0
  900. package/node_modules/three/src/nodes/procedural/Checker.js +22 -0
  901. package/node_modules/three/src/nodes/shapes/Shapes.js +33 -0
  902. package/node_modules/three/src/nodes/tsl/TSLBase.js +36 -0
  903. package/node_modules/three/src/nodes/tsl/TSLCore.js +1229 -0
  904. package/node_modules/three/src/nodes/utils/ArrayElementNode.js +77 -0
  905. package/node_modules/three/src/nodes/utils/ConvertNode.js +100 -0
  906. package/node_modules/three/src/nodes/utils/CubeMapNode.js +237 -0
  907. package/node_modules/three/src/nodes/utils/DebugNode.js +83 -0
  908. package/node_modules/three/src/nodes/utils/Discard.js +24 -0
  909. package/node_modules/three/src/nodes/utils/EquirectUV.js +27 -0
  910. package/node_modules/three/src/nodes/utils/EventNode.js +119 -0
  911. package/node_modules/three/src/nodes/utils/FlipNode.js +106 -0
  912. package/node_modules/three/src/nodes/utils/FunctionOverloadingNode.js +170 -0
  913. package/node_modules/three/src/nodes/utils/JoinNode.js +117 -0
  914. package/node_modules/three/src/nodes/utils/LoopNode.js +349 -0
  915. package/node_modules/three/src/nodes/utils/MatcapUV.js +22 -0
  916. package/node_modules/three/src/nodes/utils/MaxMipLevelNode.js +103 -0
  917. package/node_modules/three/src/nodes/utils/MemberNode.js +120 -0
  918. package/node_modules/three/src/nodes/utils/Oscillators.js +41 -0
  919. package/node_modules/three/src/nodes/utils/Packing.js +21 -0
  920. package/node_modules/three/src/nodes/utils/PostProcessingUtils.js +122 -0
  921. package/node_modules/three/src/nodes/utils/RTTNode.js +289 -0
  922. package/node_modules/three/src/nodes/utils/ReflectorNode.js +630 -0
  923. package/node_modules/three/src/nodes/utils/RemapNode.js +125 -0
  924. package/node_modules/three/{examples/jsm → src}/nodes/utils/RotateNode.js +48 -13
  925. package/node_modules/three/src/nodes/utils/SampleNode.js +91 -0
  926. package/node_modules/three/{examples/jsm → src}/nodes/utils/SetNode.js +50 -4
  927. package/node_modules/three/{examples/jsm → src}/nodes/utils/SplitNode.js +73 -6
  928. package/node_modules/three/src/nodes/utils/SpriteSheetUVNode.js +90 -0
  929. package/node_modules/three/src/nodes/utils/SpriteUtils.js +63 -0
  930. package/node_modules/three/src/nodes/utils/StorageArrayElementNode.js +143 -0
  931. package/node_modules/three/src/nodes/utils/Timer.js +26 -0
  932. package/node_modules/three/src/nodes/utils/TriplanarTextures.js +65 -0
  933. package/node_modules/three/src/nodes/utils/UVUtils.js +39 -0
  934. package/node_modules/three/src/nodes/utils/ViewportUtils.js +26 -0
  935. package/node_modules/three/src/objects/BatchedMesh.js +940 -305
  936. package/node_modules/three/src/objects/Bone.js +24 -0
  937. package/node_modules/three/src/objects/ClippingGroup.js +68 -0
  938. package/node_modules/three/src/objects/Group.js +24 -0
  939. package/node_modules/three/src/objects/InstancedMesh.js +182 -1
  940. package/node_modules/three/src/objects/LOD.js +120 -5
  941. package/node_modules/three/src/objects/Line.js +151 -44
  942. package/node_modules/three/src/objects/LineLoop.js +20 -0
  943. package/node_modules/three/src/objects/LineSegments.js +20 -1
  944. package/node_modules/three/src/objects/Mesh.js +91 -24
  945. package/node_modules/three/src/objects/Points.js +62 -0
  946. package/node_modules/three/src/objects/Skeleton.js +111 -5
  947. package/node_modules/three/src/objects/SkinnedMesh.js +102 -6
  948. package/node_modules/three/src/objects/Sprite.js +65 -1
  949. package/node_modules/three/src/renderers/WebGL3DRenderTarget.js +26 -0
  950. package/node_modules/three/src/renderers/WebGLArrayRenderTarget.js +26 -0
  951. package/node_modules/three/src/renderers/WebGLCubeRenderTarget.js +42 -15
  952. package/node_modules/three/src/renderers/WebGLRenderTarget.js +19 -0
  953. package/node_modules/three/src/renderers/WebGLRenderer.js +1222 -318
  954. package/node_modules/three/src/renderers/common/Animation.js +159 -0
  955. package/node_modules/three/{examples/jsm → src}/renderers/common/Attributes.js +45 -2
  956. package/node_modules/three/src/renderers/common/Backend.js +748 -0
  957. package/node_modules/three/src/renderers/common/Background.js +212 -0
  958. package/node_modules/three/src/renderers/common/BindGroup.js +61 -0
  959. package/node_modules/three/src/renderers/common/Binding.js +60 -0
  960. package/node_modules/three/src/renderers/common/Bindings.js +379 -0
  961. package/node_modules/three/src/renderers/common/Buffer.js +87 -0
  962. package/node_modules/three/src/renderers/common/BufferUtils.js +58 -0
  963. package/node_modules/three/src/renderers/common/BundleGroup.js +83 -0
  964. package/node_modules/three/src/renderers/common/CanvasTarget.js +341 -0
  965. package/node_modules/three/src/renderers/common/ChainMap.js +98 -0
  966. package/node_modules/three/src/renderers/common/ClippingContext.js +262 -0
  967. package/node_modules/three/src/renderers/common/Color4.js +77 -0
  968. package/node_modules/three/src/renderers/common/ComputePipeline.js +41 -0
  969. package/node_modules/three/{examples/jsm → src}/renderers/common/Constants.js +2 -1
  970. package/node_modules/three/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +43 -5
  971. package/node_modules/three/src/renderers/common/DataMap.js +90 -0
  972. package/node_modules/three/src/renderers/common/Geometries.js +370 -0
  973. package/node_modules/three/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
  974. package/node_modules/three/src/renderers/common/Info.js +172 -0
  975. package/node_modules/three/src/renderers/common/InspectorBase.js +146 -0
  976. package/node_modules/three/src/renderers/common/Lighting.js +73 -0
  977. package/node_modules/three/src/renderers/common/Pipeline.js +35 -0
  978. package/node_modules/three/{examples/jsm → src}/renderers/common/Pipelines.js +150 -7
  979. package/node_modules/three/src/renderers/common/PostProcessing.js +226 -0
  980. package/node_modules/three/src/renderers/common/ProgrammableStage.js +78 -0
  981. package/node_modules/three/src/renderers/common/QuadMesh.js +112 -0
  982. package/node_modules/three/src/renderers/common/RenderBundle.js +24 -0
  983. package/node_modules/three/src/renderers/common/RenderBundles.js +67 -0
  984. package/node_modules/three/src/renderers/common/RenderContext.js +265 -0
  985. package/node_modules/three/src/renderers/common/RenderContexts.js +116 -0
  986. package/node_modules/three/src/renderers/common/RenderList.js +404 -0
  987. package/node_modules/three/src/renderers/common/RenderLists.js +77 -0
  988. package/node_modules/three/src/renderers/common/RenderObject.js +903 -0
  989. package/node_modules/three/src/renderers/common/RenderObjects.js +202 -0
  990. package/node_modules/three/src/renderers/common/RenderPipeline.js +40 -0
  991. package/node_modules/three/src/renderers/common/Renderer.js +3290 -0
  992. package/node_modules/three/src/renderers/common/RendererUtils.js +200 -0
  993. package/node_modules/three/src/renderers/common/SampledTexture.js +152 -0
  994. package/node_modules/three/src/renderers/common/Sampler.js +165 -0
  995. package/node_modules/three/src/renderers/common/Storage3DTexture.js +100 -0
  996. package/node_modules/three/src/renderers/common/StorageArrayTexture.js +84 -0
  997. package/node_modules/three/src/renderers/common/StorageBuffer.js +41 -0
  998. package/node_modules/three/src/renderers/common/StorageBufferAttribute.js +46 -0
  999. package/node_modules/three/src/renderers/common/StorageInstancedBufferAttribute.js +46 -0
  1000. package/node_modules/three/src/renderers/common/StorageTexture.js +86 -0
  1001. package/node_modules/three/src/renderers/common/Textures.js +544 -0
  1002. package/node_modules/three/src/renderers/common/TimestampQueryPool.js +161 -0
  1003. package/node_modules/three/src/renderers/common/Uniform.js +367 -0
  1004. package/node_modules/three/src/renderers/common/UniformBuffer.js +34 -0
  1005. package/node_modules/three/src/renderers/common/UniformsGroup.js +487 -0
  1006. package/node_modules/three/src/renderers/common/XRManager.js +1676 -0
  1007. package/node_modules/three/src/renderers/common/XRRenderTarget.js +91 -0
  1008. package/node_modules/three/src/renderers/common/extras/PMREMGenerator.js +1034 -0
  1009. package/node_modules/three/src/renderers/common/nodes/NodeBuilderState.js +152 -0
  1010. package/node_modules/three/src/renderers/common/nodes/NodeLibrary.js +196 -0
  1011. package/node_modules/three/src/renderers/common/nodes/NodeSampledTexture.js +140 -0
  1012. package/node_modules/three/src/renderers/common/nodes/NodeSampler.js +62 -0
  1013. package/node_modules/three/src/renderers/common/nodes/NodeStorageBuffer.js +61 -0
  1014. package/node_modules/three/src/renderers/common/nodes/NodeUniform.js +418 -0
  1015. package/node_modules/three/src/renderers/common/nodes/NodeUniformBuffer.js +53 -0
  1016. package/node_modules/three/src/renderers/common/nodes/NodeUniformsGroup.js +51 -0
  1017. package/node_modules/three/src/renderers/common/nodes/Nodes.js +840 -0
  1018. package/node_modules/three/src/renderers/shaders/DFGLUTData.js +64 -0
  1019. package/node_modules/three/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +31 -1
  1020. package/node_modules/three/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
  1021. package/node_modules/three/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -1
  1022. package/node_modules/three/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +9 -1
  1023. package/node_modules/three/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -33
  1024. package/node_modules/three/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -22
  1025. package/node_modules/three/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
  1026. package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +2 -1
  1027. package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
  1028. package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +3 -3
  1029. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  1030. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +8 -22
  1031. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +6 -0
  1032. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +55 -20
  1033. package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
  1034. package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  1035. package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +3 -11
  1036. package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +3 -17
  1037. package/node_modules/three/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +3 -3
  1038. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +1 -1
  1039. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +14 -0
  1040. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +3 -14
  1041. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +12 -24
  1042. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +3 -23
  1043. package/node_modules/three/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
  1044. package/node_modules/three/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
  1045. package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +59 -36
  1046. package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
  1047. package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
  1048. package/node_modules/three/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +33 -2
  1049. package/node_modules/three/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  1050. package/node_modules/three/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +47 -13
  1051. package/node_modules/three/src/renderers/shaders/ShaderChunk.js +2 -2
  1052. package/node_modules/three/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
  1053. package/node_modules/three/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +3 -2
  1054. package/node_modules/three/src/renderers/shaders/ShaderLib/depth.glsl.js +21 -2
  1055. package/node_modules/three/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
  1056. package/node_modules/three/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
  1057. package/node_modules/three/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -0
  1058. package/node_modules/three/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
  1059. package/node_modules/three/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -0
  1060. package/node_modules/three/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -0
  1061. package/node_modules/three/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
  1062. package/node_modules/three/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +5 -0
  1063. package/node_modules/three/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
  1064. package/node_modules/three/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
  1065. package/node_modules/three/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -0
  1066. package/node_modules/three/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
  1067. package/node_modules/three/src/renderers/shaders/ShaderLib.js +4 -2
  1068. package/node_modules/three/src/renderers/shaders/UniformsLib.js +6 -4
  1069. package/node_modules/three/src/renderers/shaders/UniformsUtils.js +31 -3
  1070. package/node_modules/three/src/renderers/webgl/WebGLAttributes.js +46 -38
  1071. package/node_modules/three/src/renderers/webgl/WebGLBackground.js +69 -5
  1072. package/node_modules/three/src/renderers/webgl/WebGLBindingStates.js +14 -51
  1073. package/node_modules/three/src/renderers/webgl/WebGLBufferRenderer.js +19 -22
  1074. package/node_modules/three/src/renderers/webgl/WebGLCapabilities.js +39 -14
  1075. package/node_modules/three/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
  1076. package/node_modules/three/src/renderers/webgl/WebGLExtensions.js +8 -44
  1077. package/node_modules/three/src/renderers/webgl/WebGLGeometries.js +0 -28
  1078. package/node_modules/three/src/renderers/webgl/WebGLIndexedBufferRenderer.js +19 -21
  1079. package/node_modules/three/src/renderers/webgl/WebGLInfo.js +3 -1
  1080. package/node_modules/three/src/renderers/webgl/WebGLLights.js +21 -44
  1081. package/node_modules/three/src/renderers/webgl/WebGLMaterials.js +33 -9
  1082. package/node_modules/three/src/renderers/webgl/WebGLMorphtargets.js +78 -210
  1083. package/node_modules/three/src/renderers/webgl/WebGLProgram.js +103 -121
  1084. package/node_modules/three/src/renderers/webgl/WebGLPrograms.js +32 -26
  1085. package/node_modules/three/src/renderers/webgl/WebGLProperties.js +7 -0
  1086. package/node_modules/three/src/renderers/webgl/WebGLRenderStates.js +15 -9
  1087. package/node_modules/three/src/renderers/webgl/WebGLShadowMap.js +41 -29
  1088. package/node_modules/three/src/renderers/webgl/WebGLState.js +104 -100
  1089. package/node_modules/three/src/renderers/webgl/WebGLTextures.js +567 -408
  1090. package/node_modules/three/src/renderers/webgl/WebGLUniforms.js +12 -2
  1091. package/node_modules/three/src/renderers/webgl/WebGLUniformsGroups.js +13 -11
  1092. package/node_modules/three/src/renderers/webgl/WebGLUtils.js +11 -81
  1093. package/node_modules/three/src/renderers/webgl-fallback/WebGLBackend.js +2612 -0
  1094. package/node_modules/three/src/renderers/webgl-fallback/WebGLBufferRenderer.js +140 -0
  1095. package/node_modules/three/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +1577 -0
  1096. package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +76 -3
  1097. package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +64 -0
  1098. package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +5 -3
  1099. package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLExtensions.js +83 -0
  1100. package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +427 -21
  1101. package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1309 -0
  1102. package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +396 -0
  1103. package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +72 -43
  1104. package/node_modules/three/src/renderers/webgpu/WebGPUBackend.js +2482 -0
  1105. package/node_modules/three/src/renderers/webgpu/WebGPURenderer.Nodes.js +69 -0
  1106. package/node_modules/three/src/renderers/webgpu/WebGPURenderer.js +106 -0
  1107. package/node_modules/three/src/renderers/webgpu/nodes/BasicNodeLibrary.js +66 -0
  1108. package/node_modules/three/src/renderers/webgpu/nodes/StandardNodeLibrary.js +100 -0
  1109. package/node_modules/three/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +2247 -0
  1110. package/node_modules/three/src/renderers/webgpu/nodes/WGSLNodeFunction.js +187 -0
  1111. package/node_modules/three/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  1112. package/node_modules/three/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +449 -0
  1113. package/node_modules/three/src/renderers/webgpu/utils/WebGPUBindingUtils.js +485 -0
  1114. package/node_modules/three/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +24 -4
  1115. package/node_modules/three/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +289 -72
  1116. package/node_modules/three/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +160 -8
  1117. package/node_modules/three/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1576 -0
  1118. package/node_modules/three/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +310 -0
  1119. package/node_modules/three/src/renderers/webgpu/utils/WebGPUUtils.js +247 -0
  1120. package/node_modules/three/src/renderers/webxr/WebXRController.js +87 -2
  1121. package/node_modules/three/src/renderers/webxr/WebXRDepthSensing.js +63 -13
  1122. package/node_modules/three/src/renderers/webxr/WebXRManager.js +323 -44
  1123. package/node_modules/three/src/scenes/Fog.js +60 -0
  1124. package/node_modules/three/src/scenes/FogExp2.js +51 -0
  1125. package/node_modules/three/src/scenes/Scene.js +103 -1
  1126. package/node_modules/three/src/textures/CanvasTexture.js +28 -0
  1127. package/node_modules/three/src/textures/CompressedArrayTexture.js +71 -0
  1128. package/node_modules/three/src/textures/CompressedCubeTexture.js +29 -0
  1129. package/node_modules/three/src/textures/CompressedTexture.js +64 -6
  1130. package/node_modules/three/src/textures/CubeTexture.js +52 -4
  1131. package/node_modules/three/src/textures/Data3DTexture.js +79 -2
  1132. package/node_modules/three/src/textures/DataArrayTexture.js +107 -0
  1133. package/node_modules/three/src/textures/DataTexture.js +65 -0
  1134. package/node_modules/three/src/textures/DepthTexture.js +59 -13
  1135. package/node_modules/three/src/textures/ExternalTexture.js +56 -0
  1136. package/node_modules/three/src/textures/FramebufferTexture.js +62 -0
  1137. package/node_modules/three/src/textures/Source.js +106 -4
  1138. package/node_modules/three/src/textures/Texture.js +490 -27
  1139. package/node_modules/three/src/textures/VideoFrameTexture.js +72 -0
  1140. package/node_modules/three/src/textures/VideoTexture.js +78 -6
  1141. package/node_modules/three/src/utils.js +128 -3
  1142. package/package.json +3 -4
  1143. package/bin/playdrop-cli +0 -2
  1144. package/dist/commands/asset-packs.d.ts +0 -27
  1145. package/dist/commands/asset-packs.js +0 -508
  1146. package/dist/commands/assets.d.ts +0 -35
  1147. package/dist/commands/assets.js +0 -668
  1148. package/dist/commands/list.d.ts +0 -7
  1149. package/dist/commands/list.js +0 -347
  1150. package/dist/commands/migrateCatalogueV2.d.ts +0 -1
  1151. package/dist/commands/migrateCatalogueV2.js +0 -142
  1152. package/dist/commands/versions.d.ts +0 -17
  1153. package/dist/commands/versions.js +0 -384
  1154. package/node_modules/three/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
  1155. package/node_modules/three/examples/jsm/animation/MMDPhysics.js +0 -1406
  1156. package/node_modules/three/examples/jsm/cameras/CinematicCamera.js +0 -208
  1157. package/node_modules/three/examples/jsm/effects/PeppersGhostEffect.js +0 -153
  1158. package/node_modules/three/examples/jsm/exporters/MMDExporter.js +0 -217
  1159. package/node_modules/three/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
  1160. package/node_modules/three/examples/jsm/geometries/ParametricGeometries.js +0 -254
  1161. package/node_modules/three/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
  1162. package/node_modules/three/examples/jsm/libs/mmdparser.module.js +0 -11530
  1163. package/node_modules/three/examples/jsm/lights/IESSpotLight.js +0 -25
  1164. package/node_modules/three/examples/jsm/loaders/LogLuvLoader.js +0 -606
  1165. package/node_modules/three/examples/jsm/loaders/MMDLoader.js +0 -2276
  1166. package/node_modules/three/examples/jsm/loaders/RGBMLoader.js +0 -1065
  1167. package/node_modules/three/examples/jsm/loaders/TiltLoader.js +0 -520
  1168. package/node_modules/three/examples/jsm/misc/Timer.js +0 -128
  1169. package/node_modules/three/examples/jsm/nodes/Nodes.js +0 -193
  1170. package/node_modules/three/examples/jsm/nodes/accessors/BitangentNode.js +0 -89
  1171. package/node_modules/three/examples/jsm/nodes/accessors/BufferAttributeNode.js +0 -127
  1172. package/node_modules/three/examples/jsm/nodes/accessors/BufferNode.js +0 -30
  1173. package/node_modules/three/examples/jsm/nodes/accessors/CameraNode.js +0 -119
  1174. package/node_modules/three/examples/jsm/nodes/accessors/CubeTextureNode.js +0 -61
  1175. package/node_modules/three/examples/jsm/nodes/accessors/InstanceNode.js +0 -71
  1176. package/node_modules/three/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  1177. package/node_modules/three/examples/jsm/nodes/accessors/MaterialNode.js +0 -314
  1178. package/node_modules/three/examples/jsm/nodes/accessors/MaterialReferenceNode.js +0 -51
  1179. package/node_modules/three/examples/jsm/nodes/accessors/ModelNode.js +0 -33
  1180. package/node_modules/three/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +0 -39
  1181. package/node_modules/three/examples/jsm/nodes/accessors/NormalNode.js +0 -96
  1182. package/node_modules/three/examples/jsm/nodes/accessors/Object3DNode.js +0 -150
  1183. package/node_modules/three/examples/jsm/nodes/accessors/PointUVNode.js +0 -26
  1184. package/node_modules/three/examples/jsm/nodes/accessors/PositionNode.js +0 -104
  1185. package/node_modules/three/examples/jsm/nodes/accessors/ReferenceNode.js +0 -102
  1186. package/node_modules/three/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -35
  1187. package/node_modules/three/examples/jsm/nodes/accessors/SceneNode.js +0 -52
  1188. package/node_modules/three/examples/jsm/nodes/accessors/SkinningNode.js +0 -103
  1189. package/node_modules/three/examples/jsm/nodes/accessors/StorageBufferNode.js +0 -54
  1190. package/node_modules/three/examples/jsm/nodes/accessors/TangentNode.js +0 -103
  1191. package/node_modules/three/examples/jsm/nodes/accessors/TextureNode.js +0 -367
  1192. package/node_modules/three/examples/jsm/nodes/accessors/TextureSizeNode.js +0 -35
  1193. package/node_modules/three/examples/jsm/nodes/accessors/TextureStoreNode.js +0 -82
  1194. package/node_modules/three/examples/jsm/nodes/accessors/UVNode.js +0 -47
  1195. package/node_modules/three/examples/jsm/nodes/accessors/UserDataNode.js +0 -29
  1196. package/node_modules/three/examples/jsm/nodes/accessors/VertexColorNode.js +0 -70
  1197. package/node_modules/three/examples/jsm/nodes/code/CodeNode.js +0 -78
  1198. package/node_modules/three/examples/jsm/nodes/code/ExpressionNode.js +0 -37
  1199. package/node_modules/three/examples/jsm/nodes/code/FunctionCallNode.js +0 -96
  1200. package/node_modules/three/examples/jsm/nodes/code/FunctionNode.js +0 -138
  1201. package/node_modules/three/examples/jsm/nodes/core/ArrayUniformNode.js +0 -26
  1202. package/node_modules/three/examples/jsm/nodes/core/AssignNode.js +0 -72
  1203. package/node_modules/three/examples/jsm/nodes/core/AttributeNode.js +0 -108
  1204. package/node_modules/three/examples/jsm/nodes/core/BypassNode.js +0 -45
  1205. package/node_modules/three/examples/jsm/nodes/core/CacheNode.js +0 -49
  1206. package/node_modules/three/examples/jsm/nodes/core/ConstNode.js +0 -32
  1207. package/node_modules/three/examples/jsm/nodes/core/ContextNode.js +0 -61
  1208. package/node_modules/three/examples/jsm/nodes/core/IndexNode.js +0 -66
  1209. package/node_modules/three/examples/jsm/nodes/core/InputNode.js +0 -83
  1210. package/node_modules/three/examples/jsm/nodes/core/LightingModel.js +0 -17
  1211. package/node_modules/three/examples/jsm/nodes/core/Node.js +0 -483
  1212. package/node_modules/three/examples/jsm/nodes/core/NodeAttribute.js +0 -15
  1213. package/node_modules/three/examples/jsm/nodes/core/NodeBuilder.js +0 -1256
  1214. package/node_modules/three/examples/jsm/nodes/core/NodeCache.js +0 -26
  1215. package/node_modules/three/examples/jsm/nodes/core/NodeCode.js +0 -15
  1216. package/node_modules/three/examples/jsm/nodes/core/NodeFrame.js +0 -143
  1217. package/node_modules/three/examples/jsm/nodes/core/NodeFunction.js +0 -22
  1218. package/node_modules/three/examples/jsm/nodes/core/NodeFunctionInput.js +0 -17
  1219. package/node_modules/three/examples/jsm/nodes/core/NodeKeywords.js +0 -80
  1220. package/node_modules/three/examples/jsm/nodes/core/NodeParser.js +0 -11
  1221. package/node_modules/three/examples/jsm/nodes/core/NodeUniform.js +0 -40
  1222. package/node_modules/three/examples/jsm/nodes/core/NodeUtils.js +0 -210
  1223. package/node_modules/three/examples/jsm/nodes/core/NodeVar.js +0 -14
  1224. package/node_modules/three/examples/jsm/nodes/core/NodeVarying.js +0 -17
  1225. package/node_modules/three/examples/jsm/nodes/core/OutputStructNode.js +0 -62
  1226. package/node_modules/three/examples/jsm/nodes/core/ParameterNode.js +0 -33
  1227. package/node_modules/three/examples/jsm/nodes/core/PropertyNode.js +0 -72
  1228. package/node_modules/three/examples/jsm/nodes/core/StackNode.js +0 -89
  1229. package/node_modules/three/examples/jsm/nodes/core/StructTypeNode.js +0 -24
  1230. package/node_modules/three/examples/jsm/nodes/core/TempNode.js +0 -58
  1231. package/node_modules/three/examples/jsm/nodes/core/UniformGroup.js +0 -13
  1232. package/node_modules/three/examples/jsm/nodes/core/UniformGroupNode.js +0 -36
  1233. package/node_modules/three/examples/jsm/nodes/core/UniformNode.js +0 -80
  1234. package/node_modules/three/examples/jsm/nodes/core/VarNode.js +0 -60
  1235. package/node_modules/three/examples/jsm/nodes/core/VaryingNode.js +0 -65
  1236. package/node_modules/three/examples/jsm/nodes/core/constants.js +0 -28
  1237. package/node_modules/three/examples/jsm/nodes/display/AfterImageNode.js +0 -148
  1238. package/node_modules/three/examples/jsm/nodes/display/AnamorphicNode.js +0 -148
  1239. package/node_modules/three/examples/jsm/nodes/display/BlendModeNode.js +0 -99
  1240. package/node_modules/three/examples/jsm/nodes/display/BumpMapNode.js +0 -99
  1241. package/node_modules/three/examples/jsm/nodes/display/ColorAdjustmentNode.js +0 -99
  1242. package/node_modules/three/examples/jsm/nodes/display/ColorSpaceNode.js +0 -108
  1243. package/node_modules/three/examples/jsm/nodes/display/FrontFacingNode.js +0 -27
  1244. package/node_modules/three/examples/jsm/nodes/display/GaussianBlurNode.js +0 -190
  1245. package/node_modules/three/examples/jsm/nodes/display/NormalMapNode.js +0 -108
  1246. package/node_modules/three/examples/jsm/nodes/display/PassNode.js +0 -183
  1247. package/node_modules/three/examples/jsm/nodes/display/PosterizeNode.js +0 -32
  1248. package/node_modules/three/examples/jsm/nodes/display/ToneMappingNode.js +0 -184
  1249. package/node_modules/three/examples/jsm/nodes/display/ViewportDepthNode.js +0 -97
  1250. package/node_modules/three/examples/jsm/nodes/display/ViewportDepthTextureNode.js +0 -31
  1251. package/node_modules/three/examples/jsm/nodes/display/ViewportNode.js +0 -134
  1252. package/node_modules/three/examples/jsm/nodes/display/ViewportSharedTextureNode.js +0 -31
  1253. package/node_modules/three/examples/jsm/nodes/display/ViewportTextureNode.js +0 -75
  1254. package/node_modules/three/examples/jsm/nodes/fog/FogExp2Node.js +0 -35
  1255. package/node_modules/three/examples/jsm/nodes/fog/FogNode.js +0 -38
  1256. package/node_modules/three/examples/jsm/nodes/fog/FogRangeNode.js +0 -34
  1257. package/node_modules/three/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +0 -40
  1258. package/node_modules/three/examples/jsm/nodes/functions/BSDF/DFGApprox.js +0 -30
  1259. package/node_modules/three/examples/jsm/nodes/functions/PhongLightingModel.js +0 -67
  1260. package/node_modules/three/examples/jsm/nodes/functions/PhysicalLightingModel.js +0 -393
  1261. package/node_modules/three/examples/jsm/nodes/functions/material/getGeometryRoughness.js +0 -13
  1262. package/node_modules/three/examples/jsm/nodes/geometry/RangeNode.js +0 -104
  1263. package/node_modules/three/examples/jsm/nodes/gpgpu/ComputeNode.js +0 -85
  1264. package/node_modules/three/examples/jsm/nodes/lighting/AONode.js +0 -27
  1265. package/node_modules/three/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -241
  1266. package/node_modules/three/examples/jsm/nodes/lighting/DirectionalLightNode.js +0 -40
  1267. package/node_modules/three/examples/jsm/nodes/lighting/EnvironmentNode.js +0 -181
  1268. package/node_modules/three/examples/jsm/nodes/lighting/HemisphereLightNode.js +0 -55
  1269. package/node_modules/three/examples/jsm/nodes/lighting/LightNode.js +0 -57
  1270. package/node_modules/three/examples/jsm/nodes/lighting/LightUtils.js +0 -17
  1271. package/node_modules/three/examples/jsm/nodes/lighting/LightingContextNode.js +0 -66
  1272. package/node_modules/three/examples/jsm/nodes/lighting/LightingNode.js +0 -21
  1273. package/node_modules/three/examples/jsm/nodes/lighting/LightsNode.js +0 -188
  1274. package/node_modules/three/examples/jsm/nodes/lighting/PointLightNode.js +0 -68
  1275. package/node_modules/three/examples/jsm/nodes/lighting/SpotLightNode.js +0 -89
  1276. package/node_modules/three/examples/jsm/nodes/loaders/NodeLoader.js +0 -108
  1277. package/node_modules/three/examples/jsm/nodes/loaders/NodeMaterialLoader.js +0 -59
  1278. package/node_modules/three/examples/jsm/nodes/loaders/NodeObjectLoader.js +0 -70
  1279. package/node_modules/three/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
  1280. package/node_modules/three/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -28
  1281. package/node_modules/three/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +0 -54
  1282. package/node_modules/three/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
  1283. package/node_modules/three/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +0 -34
  1284. package/node_modules/three/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -40
  1285. package/node_modules/three/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -65
  1286. package/node_modules/three/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +0 -155
  1287. package/node_modules/three/examples/jsm/nodes/materials/MeshSSSNodeMaterial.js +0 -84
  1288. package/node_modules/three/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +0 -80
  1289. package/node_modules/three/examples/jsm/nodes/materials/NodeMaterial.js +0 -570
  1290. package/node_modules/three/examples/jsm/nodes/materials/PointsNodeMaterial.js +0 -39
  1291. package/node_modules/three/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -90
  1292. package/node_modules/three/examples/jsm/nodes/materialx/MaterialXNodes.js +0 -68
  1293. package/node_modules/three/examples/jsm/nodes/math/CondNode.js +0 -86
  1294. package/node_modules/three/examples/jsm/nodes/math/HashNode.js +0 -34
  1295. package/node_modules/three/examples/jsm/nodes/math/MathNode.js +0 -371
  1296. package/node_modules/three/examples/jsm/nodes/math/MathUtils.js +0 -15
  1297. package/node_modules/three/examples/jsm/nodes/math/OperatorNode.js +0 -274
  1298. package/node_modules/three/examples/jsm/nodes/procedural/CheckerNode.js +0 -42
  1299. package/node_modules/three/examples/jsm/nodes/shadernode/ShaderNode.js +0 -634
  1300. package/node_modules/three/examples/jsm/nodes/utils/ArrayElementNode.js +0 -41
  1301. package/node_modules/three/examples/jsm/nodes/utils/ConvertNode.js +0 -65
  1302. package/node_modules/three/examples/jsm/nodes/utils/DiscardNode.js +0 -27
  1303. package/node_modules/three/examples/jsm/nodes/utils/EquirectUVNode.js +0 -33
  1304. package/node_modules/three/examples/jsm/nodes/utils/FunctionOverloadingNode.js +0 -95
  1305. package/node_modules/three/examples/jsm/nodes/utils/JoinNode.js +0 -61
  1306. package/node_modules/three/examples/jsm/nodes/utils/LoopNode.js +0 -198
  1307. package/node_modules/three/examples/jsm/nodes/utils/MatcapUVNode.js +0 -30
  1308. package/node_modules/three/examples/jsm/nodes/utils/MaxMipLevelNode.js +0 -46
  1309. package/node_modules/three/examples/jsm/nodes/utils/OscNode.js +0 -81
  1310. package/node_modules/three/examples/jsm/nodes/utils/PackingNode.js +0 -55
  1311. package/node_modules/three/examples/jsm/nodes/utils/ReflectorNode.js +0 -227
  1312. package/node_modules/three/examples/jsm/nodes/utils/RemapNode.js +0 -42
  1313. package/node_modules/three/examples/jsm/nodes/utils/RotateUVNode.js +0 -35
  1314. package/node_modules/three/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
  1315. package/node_modules/three/examples/jsm/nodes/utils/SpriteSheetUVNode.js +0 -41
  1316. package/node_modules/three/examples/jsm/nodes/utils/TimerNode.js +0 -94
  1317. package/node_modules/three/examples/jsm/nodes/utils/TriplanarTexturesNode.js +0 -62
  1318. package/node_modules/three/examples/jsm/objects/InstancedPoints.js +0 -21
  1319. package/node_modules/three/examples/jsm/objects/QuadMesh.js +0 -66
  1320. package/node_modules/three/examples/jsm/renderers/common/Animation.js +0 -47
  1321. package/node_modules/three/examples/jsm/renderers/common/Backend.js +0 -195
  1322. package/node_modules/three/examples/jsm/renderers/common/Background.js +0 -134
  1323. package/node_modules/three/examples/jsm/renderers/common/Binding.js +0 -25
  1324. package/node_modules/three/examples/jsm/renderers/common/Bindings.js +0 -173
  1325. package/node_modules/three/examples/jsm/renderers/common/Buffer.js +0 -38
  1326. package/node_modules/three/examples/jsm/renderers/common/BufferUtils.js +0 -33
  1327. package/node_modules/three/examples/jsm/renderers/common/ChainMap.js +0 -89
  1328. package/node_modules/three/examples/jsm/renderers/common/Color4.js +0 -37
  1329. package/node_modules/three/examples/jsm/renderers/common/ComputePipeline.js +0 -17
  1330. package/node_modules/three/examples/jsm/renderers/common/DataMap.js +0 -54
  1331. package/node_modules/three/examples/jsm/renderers/common/Geometries.js +0 -215
  1332. package/node_modules/three/examples/jsm/renderers/common/Info.js +0 -107
  1333. package/node_modules/three/examples/jsm/renderers/common/Pipeline.js +0 -13
  1334. package/node_modules/three/examples/jsm/renderers/common/PostProcessing.js +0 -25
  1335. package/node_modules/three/examples/jsm/renderers/common/ProgrammableStage.js +0 -20
  1336. package/node_modules/three/examples/jsm/renderers/common/RenderContext.js +0 -41
  1337. package/node_modules/three/examples/jsm/renderers/common/RenderContexts.js +0 -74
  1338. package/node_modules/three/examples/jsm/renderers/common/RenderList.js +0 -186
  1339. package/node_modules/three/examples/jsm/renderers/common/RenderLists.js +0 -38
  1340. package/node_modules/three/examples/jsm/renderers/common/RenderObject.js +0 -178
  1341. package/node_modules/three/examples/jsm/renderers/common/RenderObjects.js +0 -91
  1342. package/node_modules/three/examples/jsm/renderers/common/RenderPipeline.js +0 -16
  1343. package/node_modules/three/examples/jsm/renderers/common/Renderer.js +0 -1247
  1344. package/node_modules/three/examples/jsm/renderers/common/SampledTexture.js +0 -83
  1345. package/node_modules/three/examples/jsm/renderers/common/Sampler.js +0 -18
  1346. package/node_modules/three/examples/jsm/renderers/common/StorageBuffer.js +0 -17
  1347. package/node_modules/three/examples/jsm/renderers/common/StorageBufferAttribute.js +0 -17
  1348. package/node_modules/three/examples/jsm/renderers/common/StorageTexture.js +0 -20
  1349. package/node_modules/three/examples/jsm/renderers/common/Textures.js +0 -354
  1350. package/node_modules/three/examples/jsm/renderers/common/Uniform.js +0 -140
  1351. package/node_modules/three/examples/jsm/renderers/common/UniformBuffer.js +0 -15
  1352. package/node_modules/three/examples/jsm/renderers/common/UniformsGroup.js +0 -299
  1353. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
  1354. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +0 -49
  1355. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeSampler.js +0 -15
  1356. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeUniform.js +0 -135
  1357. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeUniformsGroup.js +0 -44
  1358. package/node_modules/three/examples/jsm/renderers/common/nodes/Nodes.js +0 -495
  1359. package/node_modules/three/examples/jsm/renderers/webgl/WebGLBackend.js +0 -1362
  1360. package/node_modules/three/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +0 -679
  1361. package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLCapabilities.js +0 -36
  1362. package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +0 -36
  1363. package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +0 -647
  1364. package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +0 -320
  1365. package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +0 -26
  1366. package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +0 -794
  1367. package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +0 -51
  1368. package/node_modules/three/examples/jsm/renderers/webgpu/WebGPUBackend.js +0 -1321
  1369. package/node_modules/three/examples/jsm/renderers/webgpu/WebGPURenderer.js +0 -53
  1370. package/node_modules/three/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +0 -1103
  1371. package/node_modules/three/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
  1372. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +0 -287
  1373. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +0 -244
  1374. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +0 -1040
  1375. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +0 -93
  1376. package/node_modules/three/examples/jsm/shaders/MMDToonShader.js +0 -134
  1377. package/node_modules/three/examples/jsm/utils/GPUStatsPanel.js +0 -128
  1378. package/node_modules/three/examples/jsm/utils/PackedPhongMaterial.js +0 -178
  1379. package/node_modules/three/src/renderers/WebGL1Renderer.js +0 -7
  1380. package/node_modules/three/src/renderers/WebGLMultipleRenderTargets.js +0 -82
  1381. package/node_modules/three/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -10
  1382. /package/node_modules/three/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
@@ -0,0 +1,2247 @@
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 } from '../../../constants.js';
20
+ import { warn, error } from '../../../utils.js';
21
+
22
+ // GPUShaderStage is not defined in browsers not supporting WebGPU
23
+ const GPUShaderStage = ( typeof self !== 'undefined' ) ? self.GPUShaderStage : { VERTEX: 1, FRAGMENT: 2, COMPUTE: 4 };
24
+
25
+ const accessNames = {
26
+ [ NodeAccess.READ_ONLY ]: 'read',
27
+ [ NodeAccess.WRITE_ONLY ]: 'write',
28
+ [ NodeAccess.READ_WRITE ]: 'read_write'
29
+ };
30
+
31
+ const wrapNames = {
32
+ [ RepeatWrapping ]: 'repeat',
33
+ [ ClampToEdgeWrapping ]: 'clamp',
34
+ [ MirroredRepeatWrapping ]: 'mirror'
35
+ };
36
+
37
+ const gpuShaderStageLib = {
38
+ 'vertex': GPUShaderStage ? GPUShaderStage.VERTEX : 1,
39
+ 'fragment': GPUShaderStage ? GPUShaderStage.FRAGMENT : 2,
40
+ 'compute': GPUShaderStage ? GPUShaderStage.COMPUTE : 4
41
+ };
42
+
43
+ const supports = {
44
+ instance: true,
45
+ swizzleAssign: false,
46
+ storageBuffer: true
47
+ };
48
+
49
+ const wgslFnOpLib = {
50
+ '^^': 'tsl_xor'
51
+ };
52
+
53
+ const wgslTypeLib = {
54
+ float: 'f32',
55
+ int: 'i32',
56
+ uint: 'u32',
57
+ bool: 'bool',
58
+ color: 'vec3<f32>',
59
+
60
+ vec2: 'vec2<f32>',
61
+ ivec2: 'vec2<i32>',
62
+ uvec2: 'vec2<u32>',
63
+ bvec2: 'vec2<bool>',
64
+
65
+ vec3: 'vec3<f32>',
66
+ ivec3: 'vec3<i32>',
67
+ uvec3: 'vec3<u32>',
68
+ bvec3: 'vec3<bool>',
69
+
70
+ vec4: 'vec4<f32>',
71
+ ivec4: 'vec4<i32>',
72
+ uvec4: 'vec4<u32>',
73
+ bvec4: 'vec4<bool>',
74
+
75
+ mat2: 'mat2x2<f32>',
76
+ mat3: 'mat3x3<f32>',
77
+ mat4: 'mat4x4<f32>'
78
+ };
79
+
80
+ const wgslCodeCache = {};
81
+
82
+ const wgslPolyfill = {
83
+ tsl_xor: new CodeNode( 'fn tsl_xor( a : bool, b : bool ) -> bool { return ( a || b ) && !( a && b ); }' ),
84
+ mod_float: new CodeNode( 'fn tsl_mod_float( x : f32, y : f32 ) -> f32 { return x - y * floor( x / y ); }' ),
85
+ mod_vec2: new CodeNode( 'fn tsl_mod_vec2( x : vec2f, y : vec2f ) -> vec2f { return x - y * floor( x / y ); }' ),
86
+ mod_vec3: new CodeNode( 'fn tsl_mod_vec3( x : vec3f, y : vec3f ) -> vec3f { return x - y * floor( x / y ); }' ),
87
+ mod_vec4: new CodeNode( 'fn tsl_mod_vec4( x : vec4f, y : vec4f ) -> vec4f { return x - y * floor( x / y ); }' ),
88
+ equals_bool: new CodeNode( 'fn tsl_equals_bool( a : bool, b : bool ) -> bool { return a == b; }' ),
89
+ 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 ); }' ),
90
+ 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 ); }' ),
91
+ 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 ); }' ),
92
+ repeatWrapping_float: new CodeNode( 'fn tsl_repeatWrapping_float( coord: f32 ) -> f32 { return fract( coord ); }' ),
93
+ 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 ); }' ),
94
+ clampWrapping_float: new CodeNode( 'fn tsl_clampWrapping_float( coord: f32 ) -> f32 { return clamp( coord, 0.0, 1.0 ); }' ),
95
+ biquadraticTexture: new CodeNode( /* wgsl */`
96
+ fn tsl_biquadraticTexture( map : texture_2d<f32>, coord : vec2f, iRes : vec2u, level : u32 ) -> vec4f {
97
+
98
+ let res = vec2f( iRes );
99
+
100
+ let uvScaled = coord * res;
101
+ let uvWrapping = ( ( uvScaled % res ) + res ) % res;
102
+
103
+ // https://www.shadertoy.com/view/WtyXRy
104
+
105
+ let uv = uvWrapping - 0.5;
106
+ let iuv = floor( uv );
107
+ let f = fract( uv );
108
+
109
+ let rg1 = textureLoad( map, vec2u( iuv + vec2( 0.5, 0.5 ) ) % iRes, level );
110
+ let rg2 = textureLoad( map, vec2u( iuv + vec2( 1.5, 0.5 ) ) % iRes, level );
111
+ let rg3 = textureLoad( map, vec2u( iuv + vec2( 0.5, 1.5 ) ) % iRes, level );
112
+ let rg4 = textureLoad( map, vec2u( iuv + vec2( 1.5, 1.5 ) ) % iRes, level );
113
+
114
+ return mix( mix( rg1, rg2, f.x ), mix( rg3, rg4, f.x ), f.y );
115
+
116
+ }
117
+ ` )
118
+ };
119
+
120
+ const wgslMethods = {
121
+ dFdx: 'dpdx',
122
+ dFdy: '- dpdy',
123
+ mod_float: 'tsl_mod_float',
124
+ mod_vec2: 'tsl_mod_vec2',
125
+ mod_vec3: 'tsl_mod_vec3',
126
+ mod_vec4: 'tsl_mod_vec4',
127
+ equals_bool: 'tsl_equals_bool',
128
+ equals_bvec2: 'tsl_equals_bvec2',
129
+ equals_bvec3: 'tsl_equals_bvec3',
130
+ equals_bvec4: 'tsl_equals_bvec4',
131
+ inversesqrt: 'inverseSqrt',
132
+ bitcast: 'bitcast<f32>'
133
+ };
134
+
135
+ //
136
+
137
+ let diagnostics = '';
138
+
139
+ if ( ( typeof navigator !== 'undefined' && /Firefox|Deno/g.test( navigator.userAgent ) ) !== true ) {
140
+
141
+ diagnostics += 'diagnostic( off, derivative_uniformity );\n';
142
+
143
+ }
144
+
145
+ /**
146
+ * A node builder targeting WGSL.
147
+ *
148
+ * This module generates WGSL shader code from node materials and also
149
+ * generates the respective bindings and vertex buffer definitions. These
150
+ * data are later used by the renderer to create render and compute pipelines
151
+ * for render objects.
152
+ *
153
+ * @augments NodeBuilder
154
+ */
155
+ class WGSLNodeBuilder extends NodeBuilder {
156
+
157
+ /**
158
+ * Constructs a new WGSL node builder renderer.
159
+ *
160
+ * @param {Object3D} object - The 3D object.
161
+ * @param {Renderer} renderer - The renderer.
162
+ */
163
+ constructor( object, renderer ) {
164
+
165
+ super( object, renderer, new WGSLNodeParser() );
166
+
167
+ /**
168
+ * A dictionary that holds for each shader stage ('vertex', 'fragment', 'compute')
169
+ * another dictionary which manages UBOs per group ('render','frame','object').
170
+ *
171
+ * @type {Object<string,Object<string,NodeUniformsGroup>>}
172
+ */
173
+ this.uniformGroups = {};
174
+
175
+ /**
176
+ * A dictionary that holds for each shader stage a Map of builtins.
177
+ *
178
+ * @type {Object<string,Map<string,Object>>}
179
+ */
180
+ this.builtins = {};
181
+
182
+ /**
183
+ * A dictionary that holds for each shader stage a Set of directives.
184
+ *
185
+ * @type {Object<string,Set<string>>}
186
+ */
187
+ this.directives = {};
188
+
189
+ /**
190
+ * A map for managing scope arrays. Only relevant for when using
191
+ * {@link WorkgroupInfoNode} in context of compute shaders.
192
+ *
193
+ * @type {Map<string,Object>}
194
+ */
195
+ this.scopedArrays = new Map();
196
+
197
+ }
198
+
199
+ /**
200
+ * Generates the WGSL snippet for sampled textures.
201
+ *
202
+ * @private
203
+ * @param {Texture} texture - The texture.
204
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
205
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
206
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
207
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
208
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
209
+ * @return {string} The WGSL snippet.
210
+ */
211
+ _generateTextureSample( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet, shaderStage = this.shaderStage ) {
212
+
213
+ if ( shaderStage === 'fragment' ) {
214
+
215
+ if ( depthSnippet ) {
216
+
217
+ if ( offsetSnippet ) {
218
+
219
+ return `textureSample( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ offsetSnippet } )`;
220
+
221
+ }
222
+
223
+ return `textureSample( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet } )`;
224
+
225
+ } else {
226
+
227
+ if ( offsetSnippet ) {
228
+
229
+ return `textureSample( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ offsetSnippet } )`;
230
+
231
+ }
232
+
233
+ return `textureSample( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet } )`;
234
+
235
+ }
236
+
237
+ } else {
238
+
239
+ return this.generateTextureSampleLevel( texture, textureProperty, uvSnippet, '0', depthSnippet );
240
+
241
+ }
242
+
243
+ }
244
+
245
+ /**
246
+ * Generates the WGSL snippet when sampling textures with explicit mip level.
247
+ *
248
+ * @private
249
+ * @param {Texture} texture - The texture.
250
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
251
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
252
+ * @param {string} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
253
+ * @param {string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
254
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
255
+ * @return {string} The WGSL snippet.
256
+ */
257
+ generateTextureSampleLevel( texture, textureProperty, uvSnippet, levelSnippet, depthSnippet, offsetSnippet ) {
258
+
259
+ if ( this.isUnfilterable( texture ) === false ) {
260
+
261
+ if ( offsetSnippet ) {
262
+
263
+ return `textureSampleLevel( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ levelSnippet }, ${ offsetSnippet } )`;
264
+
265
+ }
266
+
267
+ return `textureSampleLevel( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ levelSnippet } )`;
268
+
269
+ } else if ( this.isFilteredTexture( texture ) ) {
270
+
271
+ return this.generateFilteredTexture( texture, textureProperty, uvSnippet, offsetSnippet, levelSnippet );
272
+
273
+ } else {
274
+
275
+ return this.generateTextureLod( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet, levelSnippet );
276
+
277
+ }
278
+
279
+ }
280
+
281
+ /**
282
+ * Generates a wrap function used in context of textures.
283
+ *
284
+ * @param {Texture} texture - The texture to generate the function for.
285
+ * @return {string} The name of the generated function.
286
+ */
287
+ generateWrapFunction( texture ) {
288
+
289
+ const functionName = `tsl_coord_${ wrapNames[ texture.wrapS ] }S_${ wrapNames[ texture.wrapT ] }_${ texture.isData3DTexture ? '3d' : '2d' }T`;
290
+
291
+ let nodeCode = wgslCodeCache[ functionName ];
292
+
293
+ if ( nodeCode === undefined ) {
294
+
295
+ const includes = [];
296
+
297
+ // For 3D textures, use vec3f; for texture arrays, keep vec2f since array index is separate
298
+ const coordType = texture.isData3DTexture ? 'vec3f' : 'vec2f';
299
+ let code = `fn ${ functionName }( coord : ${ coordType } ) -> ${ coordType } {\n\n\treturn ${ coordType }(\n`;
300
+
301
+ const addWrapSnippet = ( wrap, axis ) => {
302
+
303
+ if ( wrap === RepeatWrapping ) {
304
+
305
+ includes.push( wgslPolyfill.repeatWrapping_float );
306
+
307
+ code += `\t\ttsl_repeatWrapping_float( coord.${ axis } )`;
308
+
309
+ } else if ( wrap === ClampToEdgeWrapping ) {
310
+
311
+ includes.push( wgslPolyfill.clampWrapping_float );
312
+
313
+ code += `\t\ttsl_clampWrapping_float( coord.${ axis } )`;
314
+
315
+ } else if ( wrap === MirroredRepeatWrapping ) {
316
+
317
+ includes.push( wgslPolyfill.mirrorWrapping_float );
318
+
319
+ code += `\t\ttsl_mirrorWrapping_float( coord.${ axis } )`;
320
+
321
+ } else {
322
+
323
+ code += `\t\tcoord.${ axis }`;
324
+
325
+ warn( `WebGPURenderer: Unsupported texture wrap type "${ wrap }" for vertex shader.` );
326
+
327
+ }
328
+
329
+ };
330
+
331
+ addWrapSnippet( texture.wrapS, 'x' );
332
+
333
+ code += ',\n';
334
+
335
+ addWrapSnippet( texture.wrapT, 'y' );
336
+
337
+ if ( texture.isData3DTexture ) {
338
+
339
+ code += ',\n';
340
+ addWrapSnippet( texture.wrapR, 'z' );
341
+
342
+ }
343
+
344
+ code += '\n\t);\n\n}\n';
345
+
346
+ wgslCodeCache[ functionName ] = nodeCode = new CodeNode( code, includes );
347
+
348
+ }
349
+
350
+ nodeCode.build( this );
351
+
352
+ return functionName;
353
+
354
+ }
355
+
356
+ /**
357
+ * Generates the array declaration string.
358
+ *
359
+ * @param {string} type - The type.
360
+ * @param {?number} [count] - The count.
361
+ * @return {string} The generated value as a shader string.
362
+ */
363
+ generateArrayDeclaration( type, count ) {
364
+
365
+ return `array< ${ this.getType( type ) }, ${ count } >`;
366
+
367
+ }
368
+
369
+ /**
370
+ * Generates a WGSL variable that holds the texture dimension of the given texture.
371
+ * It also returns information about the number of layers (elements) of an arrayed
372
+ * texture as well as the cube face count of cube textures.
373
+ *
374
+ * @param {Texture} texture - The texture to generate the function for.
375
+ * @param {string} textureProperty - The name of the video texture uniform in the shader.
376
+ * @param {string} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
377
+ * @return {string} The name of the dimension variable.
378
+ */
379
+ generateTextureDimension( texture, textureProperty, levelSnippet ) {
380
+
381
+ const textureData = this.getDataFromNode( texture, this.shaderStage, this.globalCache );
382
+
383
+ if ( textureData.dimensionsSnippet === undefined ) textureData.dimensionsSnippet = {};
384
+
385
+ let textureDimensionNode = textureData.dimensionsSnippet[ levelSnippet ];
386
+
387
+ if ( textureData.dimensionsSnippet[ levelSnippet ] === undefined ) {
388
+
389
+ let textureDimensionsParams;
390
+ let dimensionType;
391
+
392
+ const { primarySamples } = this.renderer.backend.utils.getTextureSampleData( texture );
393
+ const isMultisampled = primarySamples > 1;
394
+
395
+ if ( texture.isData3DTexture ) {
396
+
397
+ dimensionType = 'vec3<u32>';
398
+
399
+ } else {
400
+
401
+ // Regular 2D textures, depth textures, etc.
402
+ dimensionType = 'vec2<u32>';
403
+
404
+ }
405
+
406
+ // Build parameters string based on texture type and multisampling
407
+ if ( isMultisampled || texture.isStorageTexture ) {
408
+
409
+ textureDimensionsParams = textureProperty;
410
+
411
+ } else {
412
+
413
+ textureDimensionsParams = `${textureProperty}${levelSnippet ? `, u32( ${ levelSnippet } )` : ''}`;
414
+
415
+ }
416
+
417
+ textureDimensionNode = new VarNode( new ExpressionNode( `textureDimensions( ${ textureDimensionsParams } )`, dimensionType ) );
418
+
419
+ textureData.dimensionsSnippet[ levelSnippet ] = textureDimensionNode;
420
+
421
+ if ( texture.isArrayTexture || texture.isDataArrayTexture || texture.isData3DTexture ) {
422
+
423
+ textureData.arrayLayerCount = new VarNode(
424
+ new ExpressionNode(
425
+ `textureNumLayers(${textureProperty})`,
426
+ 'u32'
427
+ )
428
+ );
429
+
430
+ }
431
+
432
+ // For cube textures, we know it's always 6 faces
433
+ if ( texture.isTextureCube ) {
434
+
435
+ textureData.cubeFaceCount = new VarNode(
436
+ new ExpressionNode( '6u', 'u32' )
437
+ );
438
+
439
+ }
440
+
441
+ }
442
+
443
+ return textureDimensionNode.build( this );
444
+
445
+ }
446
+
447
+ /**
448
+ * Generates the WGSL snippet for a manual filtered texture.
449
+ *
450
+ * @param {Texture} texture - The texture.
451
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
452
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
453
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
454
+ * @param {string} [levelSnippet='0u'] - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
455
+ * @return {string} The WGSL snippet.
456
+ */
457
+ generateFilteredTexture( texture, textureProperty, uvSnippet, offsetSnippet, levelSnippet = '0u' ) {
458
+
459
+ this._include( 'biquadraticTexture' );
460
+
461
+ const wrapFunction = this.generateWrapFunction( texture );
462
+ const textureDimension = this.generateTextureDimension( texture, textureProperty, levelSnippet );
463
+
464
+ if ( offsetSnippet ) {
465
+
466
+ uvSnippet = `${ uvSnippet } + vec2<f32>(${ offsetSnippet }) / ${ textureDimension }`;
467
+
468
+ }
469
+
470
+ return `tsl_biquadraticTexture( ${ textureProperty }, ${ wrapFunction }( ${ uvSnippet } ), ${ textureDimension }, u32( ${ levelSnippet } ) )`;
471
+
472
+ }
473
+
474
+ /**
475
+ * Generates the WGSL snippet for a texture lookup with explicit level-of-detail.
476
+ * Since it's a lookup, no sampling or filtering is applied.
477
+ *
478
+ * @param {Texture} texture - The texture.
479
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
480
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
481
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
482
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
483
+ * @param {string} [levelSnippet='0u'] - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
484
+ * @return {string} The WGSL snippet.
485
+ */
486
+ generateTextureLod( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet, levelSnippet = '0u' ) {
487
+
488
+ const wrapFunction = this.generateWrapFunction( texture );
489
+ const textureDimension = this.generateTextureDimension( texture, textureProperty, levelSnippet );
490
+
491
+ const vecType = texture.isData3DTexture ? 'vec3' : 'vec2';
492
+
493
+ if ( offsetSnippet ) {
494
+
495
+ uvSnippet = `${ uvSnippet } + ${ vecType }<f32>(${ offsetSnippet }) / ${ vecType }<f32>( ${ textureDimension } )`;
496
+
497
+ }
498
+
499
+ const coordSnippet = `${ vecType }<u32>( ${ wrapFunction }( ${ uvSnippet } ) * ${ vecType }<f32>( ${ textureDimension } ) )`;
500
+
501
+ return this.generateTextureLoad( texture, textureProperty, coordSnippet, levelSnippet, depthSnippet, null );
502
+
503
+ }
504
+
505
+ /**
506
+ * Generates the WGSL snippet that reads a single texel from a texture without sampling or filtering.
507
+ *
508
+ * @param {Texture} texture - The texture.
509
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
510
+ * @param {string} uvIndexSnippet - A WGSL snippet that represents texture coordinates used for sampling.
511
+ * @param {?string} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
512
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
513
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
514
+ * @return {string} The WGSL snippet.
515
+ */
516
+ generateTextureLoad( texture, textureProperty, uvIndexSnippet, levelSnippet, depthSnippet, offsetSnippet ) {
517
+
518
+ if ( levelSnippet === null ) levelSnippet = '0u';
519
+
520
+ if ( offsetSnippet ) {
521
+
522
+ uvIndexSnippet = `${ uvIndexSnippet } + ${ offsetSnippet }`;
523
+
524
+ }
525
+
526
+ let snippet;
527
+
528
+ if ( depthSnippet ) {
529
+
530
+ snippet = `textureLoad( ${ textureProperty }, ${ uvIndexSnippet }, ${ depthSnippet }, u32( ${ levelSnippet } ) )`;
531
+
532
+ } else {
533
+
534
+ snippet = `textureLoad( ${ textureProperty }, ${ uvIndexSnippet }, u32( ${ levelSnippet } ) )`;
535
+
536
+ if ( this.renderer.backend.compatibilityMode && texture.isDepthTexture ) {
537
+
538
+ snippet += '.x';
539
+
540
+ }
541
+
542
+ }
543
+
544
+ return snippet;
545
+
546
+ }
547
+
548
+ /**
549
+ * Generates the WGSL snippet that writes a single texel to a texture.
550
+ *
551
+ * @param {Texture} texture - The texture.
552
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
553
+ * @param {string} uvIndexSnippet - A WGSL snippet that represents texture coordinates used for sampling.
554
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
555
+ * @param {string} valueSnippet - A WGSL snippet that represent the new texel value.
556
+ * @return {string} The WGSL snippet.
557
+ */
558
+ generateTextureStore( texture, textureProperty, uvIndexSnippet, depthSnippet, valueSnippet ) {
559
+
560
+ let snippet;
561
+
562
+ if ( depthSnippet ) {
563
+
564
+ snippet = `textureStore( ${ textureProperty }, ${ uvIndexSnippet }, ${ depthSnippet }, ${ valueSnippet } )`;
565
+
566
+ } else {
567
+
568
+ snippet = `textureStore( ${ textureProperty }, ${ uvIndexSnippet }, ${ valueSnippet } )`;
569
+
570
+ }
571
+
572
+ return snippet;
573
+
574
+ }
575
+
576
+ /**
577
+ * Returns `true` if the sampled values of the given texture should be compared against a reference value.
578
+ *
579
+ * @param {Texture} texture - The texture.
580
+ * @return {boolean} Whether the sampled values of the given texture should be compared against a reference value or not.
581
+ */
582
+ isSampleCompare( texture ) {
583
+
584
+ return texture.isDepthTexture === true && texture.compareFunction !== null;
585
+
586
+ }
587
+
588
+ /**
589
+ * Returns `true` if the given texture is unfilterable.
590
+ *
591
+ * @param {Texture} texture - The texture.
592
+ * @return {boolean} Whether the given texture is unfilterable or not.
593
+ */
594
+ isUnfilterable( texture ) {
595
+
596
+ return this.getComponentTypeFromTexture( texture ) !== 'float' ||
597
+ ( ! this.isAvailable( 'float32Filterable' ) && texture.isDataTexture === true && texture.type === FloatType ) ||
598
+ ( this.isSampleCompare( texture ) === false && texture.minFilter === NearestFilter && texture.magFilter === NearestFilter ) ||
599
+ this.renderer.backend.utils.getTextureSampleData( texture ).primarySamples > 1;
600
+
601
+ }
602
+
603
+ /**
604
+ * Generates the WGSL snippet for sampling/loading the given texture.
605
+ *
606
+ * @param {Texture} texture - The texture.
607
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
608
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
609
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
610
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
611
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
612
+ * @return {string} The WGSL snippet.
613
+ */
614
+ generateTexture( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet, shaderStage = this.shaderStage ) {
615
+
616
+ let snippet = null;
617
+
618
+ if ( this.isUnfilterable( texture ) ) {
619
+
620
+ snippet = this.generateTextureLod( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet, '0', shaderStage );
621
+
622
+ } else {
623
+
624
+ snippet = this._generateTextureSample( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet, shaderStage );
625
+
626
+ }
627
+
628
+ return snippet;
629
+
630
+ }
631
+
632
+ /**
633
+ * Generates the WGSL snippet for sampling/loading the given texture using explicit gradients.
634
+ *
635
+ * @param {Texture} texture - The texture.
636
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
637
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
638
+ * @param {Array<string>} gradSnippet - An array holding both gradient WGSL snippets.
639
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
640
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
641
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
642
+ * @return {string} The WGSL snippet.
643
+ */
644
+ generateTextureGrad( texture, textureProperty, uvSnippet, gradSnippet, depthSnippet, offsetSnippet, shaderStage = this.shaderStage ) {
645
+
646
+ if ( shaderStage === 'fragment' ) {
647
+
648
+ // TODO handle i32 or u32 --> uvSnippet, array_index: A, ddx, ddy
649
+ if ( offsetSnippet ) {
650
+
651
+ return `textureSampleGrad( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ gradSnippet[ 0 ] }, ${ gradSnippet[ 1 ] }, ${ offsetSnippet } )`;
652
+
653
+ }
654
+
655
+ return `textureSampleGrad( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ gradSnippet[ 0 ] }, ${ gradSnippet[ 1 ] } )`;
656
+
657
+ } else {
658
+
659
+ error( `WebGPURenderer: THREE.TextureNode.gradient() does not support ${ shaderStage } shader.` );
660
+
661
+ }
662
+
663
+ }
664
+
665
+ /**
666
+ * Generates the WGSL snippet for sampling a depth texture and comparing the sampled depth values
667
+ * against a reference value.
668
+ *
669
+ * @param {Texture} texture - The texture.
670
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
671
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
672
+ * @param {string} compareSnippet - A WGSL snippet that represents the reference value.
673
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
674
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
675
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
676
+ * @return {string} The WGSL snippet.
677
+ */
678
+ generateTextureCompare( texture, textureProperty, uvSnippet, compareSnippet, depthSnippet, offsetSnippet, shaderStage = this.shaderStage ) {
679
+
680
+ if ( shaderStage === 'fragment' ) {
681
+
682
+ if ( texture.isDepthTexture === true && texture.isArrayTexture === true ) {
683
+
684
+ if ( offsetSnippet ) {
685
+
686
+ return `textureSampleCompare( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ compareSnippet }, ${ offsetSnippet } )`;
687
+
688
+ }
689
+
690
+ return `textureSampleCompare( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ depthSnippet }, ${ compareSnippet } )`;
691
+
692
+ }
693
+
694
+ if ( offsetSnippet ) {
695
+
696
+ return `textureSampleCompare( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ compareSnippet }, ${ offsetSnippet } )`;
697
+
698
+ }
699
+
700
+ return `textureSampleCompare( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ compareSnippet } )`;
701
+
702
+ } else {
703
+
704
+ error( `WebGPURenderer: THREE.DepthTexture.compareFunction() does not support ${ shaderStage } shader.` );
705
+
706
+ }
707
+
708
+ }
709
+
710
+ /**
711
+ * Generates the WGSL snippet when sampling textures with explicit mip level.
712
+ *
713
+ * @param {Texture} texture - The texture.
714
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
715
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
716
+ * @param {string} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
717
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
718
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
719
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
720
+ * @return {string} The WGSL snippet.
721
+ */
722
+ generateTextureLevel( texture, textureProperty, uvSnippet, levelSnippet, depthSnippet, offsetSnippet ) {
723
+
724
+ if ( this.isUnfilterable( texture ) === false ) {
725
+
726
+ if ( offsetSnippet ) {
727
+
728
+ return `textureSampleLevel( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ levelSnippet }, ${ offsetSnippet } )`;
729
+
730
+ }
731
+
732
+ return `textureSampleLevel( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ levelSnippet } )`;
733
+
734
+ } else if ( this.isFilteredTexture( texture ) ) {
735
+
736
+ return this.generateFilteredTexture( texture, textureProperty, uvSnippet, offsetSnippet, levelSnippet );
737
+
738
+ } else {
739
+
740
+ return this.generateTextureLod( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet, levelSnippet );
741
+
742
+ }
743
+
744
+ }
745
+
746
+ /**
747
+ * Generates the WGSL snippet when sampling textures with a bias to the mip level.
748
+ *
749
+ * @param {Texture} texture - The texture.
750
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
751
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
752
+ * @param {string} biasSnippet - A WGSL snippet that represents the bias to apply to the mip level before sampling.
753
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
754
+ * @param {?string} offsetSnippet - A WGSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
755
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
756
+ * @return {string} The WGSL snippet.
757
+ */
758
+ generateTextureBias( texture, textureProperty, uvSnippet, biasSnippet, depthSnippet, offsetSnippet, shaderStage = this.shaderStage ) {
759
+
760
+ if ( shaderStage === 'fragment' ) {
761
+
762
+ if ( offsetSnippet ) {
763
+
764
+ return `textureSampleBias( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ biasSnippet }, ${ offsetSnippet } )`;
765
+
766
+ }
767
+
768
+ return `textureSampleBias( ${ textureProperty }, ${ textureProperty }_sampler, ${ uvSnippet }, ${ biasSnippet } )`;
769
+
770
+ } else {
771
+
772
+ error( `WebGPURenderer: THREE.TextureNode.biasNode does not support ${ shaderStage } shader.` );
773
+
774
+ }
775
+
776
+ }
777
+
778
+ /**
779
+ * Returns a WGSL snippet that represents the property name of the given node.
780
+ *
781
+ * @param {Node} node - The node.
782
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
783
+ * @return {string} The property name.
784
+ */
785
+ getPropertyName( node, shaderStage = this.shaderStage ) {
786
+
787
+ if ( node.isNodeVarying === true && node.needsInterpolation === true ) {
788
+
789
+ if ( shaderStage === 'vertex' ) {
790
+
791
+ return `varyings.${ node.name }`;
792
+
793
+ }
794
+
795
+ } else if ( node.isNodeUniform === true ) {
796
+
797
+ const name = node.name;
798
+ const type = node.type;
799
+
800
+ if ( type === 'texture' || type === 'cubeTexture' || type === 'storageTexture' || type === 'texture3D' ) {
801
+
802
+ return name;
803
+
804
+ } else if ( type === 'buffer' || type === 'storageBuffer' || type === 'indirectStorageBuffer' ) {
805
+
806
+ if ( this.isCustomStruct( node ) ) {
807
+
808
+ return name;
809
+
810
+ }
811
+
812
+ return name + '.value';
813
+
814
+ } else {
815
+
816
+ return node.groupNode.name + '.' + name;
817
+
818
+ }
819
+
820
+ }
821
+
822
+ return super.getPropertyName( node );
823
+
824
+ }
825
+
826
+ /**
827
+ * Returns the output struct name.
828
+ *
829
+ * @return {string} The name of the output struct.
830
+ */
831
+ getOutputStructName() {
832
+
833
+ return 'output';
834
+
835
+ }
836
+
837
+ /**
838
+ * Returns the native shader operator name for a given generic name.
839
+ *
840
+ * @param {string} op - The operator name to resolve.
841
+ * @return {?string} The resolved operator name.
842
+ */
843
+ getFunctionOperator( op ) {
844
+
845
+ const fnOp = wgslFnOpLib[ op ];
846
+
847
+ if ( fnOp !== undefined ) {
848
+
849
+ this._include( fnOp );
850
+
851
+ return fnOp;
852
+
853
+ }
854
+
855
+ return null;
856
+
857
+ }
858
+
859
+ /**
860
+ * Returns the node access for the given node and shader stage.
861
+ *
862
+ * @param {StorageTextureNode|StorageBufferNode} node - The storage node.
863
+ * @param {string} shaderStage - The shader stage.
864
+ * @return {string} The node access.
865
+ */
866
+ getNodeAccess( node, shaderStage ) {
867
+
868
+ if ( shaderStage !== 'compute' ) {
869
+
870
+ if ( node.isAtomic === true ) {
871
+
872
+ warn( 'WebGPURenderer: Atomic operations are only supported in compute shaders.' );
873
+
874
+ return NodeAccess.READ_WRITE;
875
+
876
+ }
877
+
878
+ return NodeAccess.READ_ONLY;
879
+
880
+ }
881
+
882
+ return node.access;
883
+
884
+ }
885
+
886
+ /**
887
+ * Returns A WGSL snippet representing the storage access.
888
+ *
889
+ * @param {StorageTextureNode|StorageBufferNode} node - The storage node.
890
+ * @param {string} shaderStage - The shader stage.
891
+ * @return {string} The WGSL snippet representing the storage access.
892
+ */
893
+ getStorageAccess( node, shaderStage ) {
894
+
895
+ return accessNames[ this.getNodeAccess( node, shaderStage ) ];
896
+
897
+ }
898
+
899
+ /**
900
+ * This method is one of the more important ones since it's responsible
901
+ * for generating a matching binding instance for the given uniform node.
902
+ *
903
+ * These bindings are later used in the renderer to create bind groups
904
+ * and layouts.
905
+ *
906
+ * @param {UniformNode} node - The uniform node.
907
+ * @param {string} type - The node data type.
908
+ * @param {string} shaderStage - The shader stage.
909
+ * @param {?string} [name=null] - An optional uniform name.
910
+ * @return {NodeUniform} The node uniform object.
911
+ */
912
+ getUniformFromNode( node, type, shaderStage, name = null ) {
913
+
914
+ const uniformNode = super.getUniformFromNode( node, type, shaderStage, name );
915
+ const nodeData = this.getDataFromNode( node, shaderStage, this.globalCache );
916
+
917
+ if ( nodeData.uniformGPU === undefined ) {
918
+
919
+ let uniformGPU;
920
+
921
+ const group = node.groupNode;
922
+ const groupName = group.name;
923
+
924
+ const bindings = this.getBindGroupArray( groupName, shaderStage );
925
+
926
+ if ( type === 'texture' || type === 'cubeTexture' || type === 'storageTexture' || type === 'texture3D' ) {
927
+
928
+ let texture = null;
929
+
930
+ const access = this.getNodeAccess( node, shaderStage );
931
+
932
+ if ( type === 'texture' || type === 'storageTexture' ) {
933
+
934
+ if ( node.value.is3DTexture === true ) {
935
+
936
+ texture = new NodeSampledTexture3D( uniformNode.name, uniformNode.node, group, access );
937
+
938
+ } else {
939
+
940
+ texture = new NodeSampledTexture( uniformNode.name, uniformNode.node, group, access );
941
+
942
+ }
943
+
944
+ } else if ( type === 'cubeTexture' ) {
945
+
946
+ texture = new NodeSampledCubeTexture( uniformNode.name, uniformNode.node, group, access );
947
+
948
+ } else if ( type === 'texture3D' ) {
949
+
950
+ texture = new NodeSampledTexture3D( uniformNode.name, uniformNode.node, group, access );
951
+
952
+ }
953
+
954
+ texture.store = node.isStorageTextureNode === true;
955
+ texture.mipLevel = texture.store ? node.mipLevel : 0;
956
+ texture.setVisibility( gpuShaderStageLib[ shaderStage ] );
957
+
958
+ if ( this.isUnfilterable( node.value ) === false && texture.store === false ) {
959
+
960
+ const sampler = new NodeSampler( `${ uniformNode.name }_sampler`, uniformNode.node, group );
961
+ sampler.setVisibility( gpuShaderStageLib[ shaderStage ] );
962
+
963
+ bindings.push( sampler, texture );
964
+
965
+ uniformGPU = [ sampler, texture ];
966
+
967
+ } else {
968
+
969
+ bindings.push( texture );
970
+
971
+ uniformGPU = [ texture ];
972
+
973
+ }
974
+
975
+ } else if ( type === 'buffer' || type === 'storageBuffer' || type === 'indirectStorageBuffer' ) {
976
+
977
+ const bufferClass = type === 'buffer' ? NodeUniformBuffer : NodeStorageBuffer;
978
+
979
+ const buffer = new bufferClass( node, group );
980
+ buffer.setVisibility( gpuShaderStageLib[ shaderStage ] );
981
+
982
+ bindings.push( buffer );
983
+
984
+ uniformGPU = buffer;
985
+
986
+ uniformNode.name = name ? name : 'NodeBuffer_' + uniformNode.id;
987
+
988
+ } else {
989
+
990
+ const uniformsStage = this.uniformGroups[ shaderStage ] || ( this.uniformGroups[ shaderStage ] = {} );
991
+
992
+ let uniformsGroup = uniformsStage[ groupName ];
993
+
994
+ if ( uniformsGroup === undefined ) {
995
+
996
+ uniformsGroup = new NodeUniformsGroup( groupName, group );
997
+ uniformsGroup.setVisibility( gpuShaderStageLib[ shaderStage ] );
998
+
999
+ uniformsStage[ groupName ] = uniformsGroup;
1000
+
1001
+ bindings.push( uniformsGroup );
1002
+
1003
+ }
1004
+
1005
+ uniformGPU = this.getNodeUniform( uniformNode, type );
1006
+
1007
+ uniformsGroup.addUniform( uniformGPU );
1008
+
1009
+ }
1010
+
1011
+ nodeData.uniformGPU = uniformGPU;
1012
+
1013
+ }
1014
+
1015
+ return uniformNode;
1016
+
1017
+ }
1018
+
1019
+ /**
1020
+ * This method should be used whenever builtins are required in nodes.
1021
+ * The internal builtins data structure will make sure builtins are
1022
+ * defined in the WGSL source.
1023
+ *
1024
+ * @param {string} name - The builtin name.
1025
+ * @param {string} property - The property name.
1026
+ * @param {string} type - The node data type.
1027
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
1028
+ * @return {string} The property name.
1029
+ */
1030
+ getBuiltin( name, property, type, shaderStage = this.shaderStage ) {
1031
+
1032
+ const map = this.builtins[ shaderStage ] || ( this.builtins[ shaderStage ] = new Map() );
1033
+
1034
+ if ( map.has( name ) === false ) {
1035
+
1036
+ map.set( name, {
1037
+ name,
1038
+ property,
1039
+ type
1040
+ } );
1041
+
1042
+ }
1043
+
1044
+ return property;
1045
+
1046
+ }
1047
+
1048
+ /**
1049
+ * Returns `true` if the given builtin is defined in the given shader stage.
1050
+ *
1051
+ * @param {string} name - The builtin name.
1052
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
1053
+ * @return {boolean} Whether the given builtin is defined in the given shader stage or not.
1054
+ */
1055
+ hasBuiltin( name, shaderStage = this.shaderStage ) {
1056
+
1057
+ return ( this.builtins[ shaderStage ] !== undefined && this.builtins[ shaderStage ].has( name ) );
1058
+
1059
+ }
1060
+
1061
+ /**
1062
+ * Returns the vertex index builtin.
1063
+ *
1064
+ * @return {string} The vertex index.
1065
+ */
1066
+ getVertexIndex() {
1067
+
1068
+ if ( this.shaderStage === 'vertex' ) {
1069
+
1070
+ return this.getBuiltin( 'vertex_index', 'vertexIndex', 'u32', 'attribute' );
1071
+
1072
+ }
1073
+
1074
+ return 'vertexIndex';
1075
+
1076
+ }
1077
+
1078
+ /**
1079
+ * Builds the given shader node.
1080
+ *
1081
+ * @param {ShaderNodeInternal} shaderNode - The shader node.
1082
+ * @return {string} The WGSL function code.
1083
+ */
1084
+ buildFunctionCode( shaderNode ) {
1085
+
1086
+ const layout = shaderNode.layout;
1087
+ const flowData = this.flowShaderNode( shaderNode );
1088
+
1089
+ const parameters = [];
1090
+
1091
+ for ( const input of layout.inputs ) {
1092
+
1093
+ parameters.push( input.name + ' : ' + this.getType( input.type ) );
1094
+
1095
+ }
1096
+
1097
+ //
1098
+
1099
+ let code = `fn ${ layout.name }( ${ parameters.join( ', ' ) } ) -> ${ this.getType( layout.type ) } {
1100
+ ${ flowData.vars }
1101
+ ${ flowData.code }
1102
+ `;
1103
+
1104
+ if ( flowData.result ) {
1105
+
1106
+ code += `\treturn ${ flowData.result };\n`;
1107
+
1108
+ }
1109
+
1110
+ code += '\n}\n';
1111
+
1112
+ //
1113
+
1114
+ return code;
1115
+
1116
+ }
1117
+
1118
+ /**
1119
+ * Contextually returns either the vertex stage instance index builtin
1120
+ * or the linearized index of an compute invocation within a grid of workgroups.
1121
+ *
1122
+ * @return {string} The instance index.
1123
+ */
1124
+ getInstanceIndex() {
1125
+
1126
+ if ( this.shaderStage === 'vertex' ) {
1127
+
1128
+ return this.getBuiltin( 'instance_index', 'instanceIndex', 'u32', 'attribute' );
1129
+
1130
+ }
1131
+
1132
+ return 'instanceIndex';
1133
+
1134
+ }
1135
+
1136
+
1137
+ /**
1138
+ * Returns a builtin representing the index of a compute invocation within the scope of a workgroup load.
1139
+ *
1140
+ * @return {string} The invocation local index.
1141
+ */
1142
+ getInvocationLocalIndex() {
1143
+
1144
+ return this.getBuiltin( 'local_invocation_index', 'invocationLocalIndex', 'u32', 'attribute' );
1145
+
1146
+ }
1147
+
1148
+ /**
1149
+ * Returns a builtin representing the size of a subgroup within the current shader.
1150
+ *
1151
+ * @return {string} The subgroup size.
1152
+ */
1153
+ getSubgroupSize() {
1154
+
1155
+ this.enableSubGroups();
1156
+
1157
+ return this.getBuiltin( 'subgroup_size', 'subgroupSize', 'u32', 'attribute' );
1158
+
1159
+ }
1160
+
1161
+ /**
1162
+ * Returns a builtin representing the index of a compute invocation within the scope of a subgroup.
1163
+ *
1164
+ * @return {string} The invocation subgroup index.
1165
+ */
1166
+ getInvocationSubgroupIndex() {
1167
+
1168
+ this.enableSubGroups();
1169
+
1170
+ return this.getBuiltin( 'subgroup_invocation_id', 'invocationSubgroupIndex', 'u32', 'attribute' );
1171
+
1172
+ }
1173
+
1174
+ /**
1175
+ * Returns a builtin representing the index of a compute invocation's subgroup within its workgroup.
1176
+ *
1177
+ * @return {string} The subgroup index.
1178
+ */
1179
+ getSubgroupIndex() {
1180
+
1181
+ this.enableSubGroups();
1182
+
1183
+ return this.getBuiltin( 'subgroup_id', 'subgroupIndex', 'u32', 'attribute' );
1184
+
1185
+ }
1186
+
1187
+ /**
1188
+ * Overwritten as a NOP since this method is intended for the WebGL 2 backend.
1189
+ *
1190
+ * @return {null} Null.
1191
+ */
1192
+ getDrawIndex() {
1193
+
1194
+ return null;
1195
+
1196
+ }
1197
+
1198
+ /**
1199
+ * Returns the front facing builtin.
1200
+ *
1201
+ * @return {string} The front facing builtin.
1202
+ */
1203
+ getFrontFacing() {
1204
+
1205
+ return this.getBuiltin( 'front_facing', 'isFront', 'bool' );
1206
+
1207
+ }
1208
+
1209
+ /**
1210
+ * Returns the frag coord builtin.
1211
+ *
1212
+ * @return {string} The frag coord builtin.
1213
+ */
1214
+ getFragCoord() {
1215
+
1216
+ return this.getBuiltin( 'position', 'fragCoord', 'vec4<f32>' ) + '.xy';
1217
+
1218
+ }
1219
+
1220
+ /**
1221
+ * Returns the frag depth builtin.
1222
+ *
1223
+ * @return {string} The frag depth builtin.
1224
+ */
1225
+ getFragDepth() {
1226
+
1227
+ return 'output.' + this.getBuiltin( 'frag_depth', 'depth', 'f32', 'output' );
1228
+
1229
+ }
1230
+
1231
+ /**
1232
+ * Returns the clip distances builtin.
1233
+ *
1234
+ * @return {string} The clip distances builtin.
1235
+ */
1236
+ getClipDistance() {
1237
+
1238
+ return 'varyings.hw_clip_distances';
1239
+
1240
+ }
1241
+
1242
+ /**
1243
+ * Whether to flip texture data along its vertical axis or not.
1244
+ *
1245
+ * @return {boolean} Returns always `false` in context of WGSL.
1246
+ */
1247
+ isFlipY() {
1248
+
1249
+ return false;
1250
+
1251
+ }
1252
+
1253
+ /**
1254
+ * Enables the given directive for the given shader stage.
1255
+ *
1256
+ * @param {string} name - The directive name.
1257
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage to enable the directive for.
1258
+ */
1259
+ enableDirective( name, shaderStage = this.shaderStage ) {
1260
+
1261
+ const stage = this.directives[ shaderStage ] || ( this.directives[ shaderStage ] = new Set() );
1262
+ stage.add( name );
1263
+
1264
+ }
1265
+
1266
+ /**
1267
+ * Returns the directives of the given shader stage as a WGSL string.
1268
+ *
1269
+ * @param {string} shaderStage - The shader stage.
1270
+ * @return {string} A WGSL snippet that enables the directives of the given stage.
1271
+ */
1272
+ getDirectives( shaderStage ) {
1273
+
1274
+ const snippets = [];
1275
+ const directives = this.directives[ shaderStage ];
1276
+
1277
+ if ( directives !== undefined ) {
1278
+
1279
+ for ( const directive of directives ) {
1280
+
1281
+ snippets.push( `enable ${directive};` );
1282
+
1283
+ }
1284
+
1285
+ }
1286
+
1287
+ return snippets.join( '\n' );
1288
+
1289
+ }
1290
+
1291
+ /**
1292
+ * Enables the 'subgroups' directive.
1293
+ */
1294
+ enableSubGroups() {
1295
+
1296
+ this.enableDirective( 'subgroups' );
1297
+
1298
+ }
1299
+
1300
+ /**
1301
+ * Enables the 'subgroups-f16' directive.
1302
+ */
1303
+ enableSubgroupsF16() {
1304
+
1305
+ this.enableDirective( 'subgroups-f16' );
1306
+
1307
+ }
1308
+
1309
+ /**
1310
+ * Enables the 'clip_distances' directive.
1311
+ */
1312
+ enableClipDistances() {
1313
+
1314
+ this.enableDirective( 'clip_distances' );
1315
+
1316
+ }
1317
+
1318
+ /**
1319
+ * Enables the 'f16' directive.
1320
+ */
1321
+ enableShaderF16() {
1322
+
1323
+ this.enableDirective( 'f16' );
1324
+
1325
+ }
1326
+
1327
+ /**
1328
+ * Enables the 'dual_source_blending' directive.
1329
+ */
1330
+ enableDualSourceBlending() {
1331
+
1332
+ this.enableDirective( 'dual_source_blending' );
1333
+
1334
+ }
1335
+
1336
+ /**
1337
+ * Enables hardware clipping.
1338
+ *
1339
+ * @param {string} planeCount - The clipping plane count.
1340
+ */
1341
+ enableHardwareClipping( planeCount ) {
1342
+
1343
+ this.enableClipDistances();
1344
+ this.getBuiltin( 'clip_distances', 'hw_clip_distances', `array<f32, ${ planeCount } >`, 'vertex' );
1345
+
1346
+ }
1347
+
1348
+ /**
1349
+ * Returns the builtins of the given shader stage as a WGSL string.
1350
+ *
1351
+ * @param {string} shaderStage - The shader stage.
1352
+ * @return {string} A WGSL snippet that represents the builtins of the given stage.
1353
+ */
1354
+ getBuiltins( shaderStage ) {
1355
+
1356
+ const snippets = [];
1357
+ const builtins = this.builtins[ shaderStage ];
1358
+
1359
+ if ( builtins !== undefined ) {
1360
+
1361
+ for ( const { name, property, type } of builtins.values() ) {
1362
+
1363
+ snippets.push( `@builtin( ${name} ) ${property} : ${type}` );
1364
+
1365
+ }
1366
+
1367
+ }
1368
+
1369
+ return snippets.join( ',\n\t' );
1370
+
1371
+ }
1372
+
1373
+ /**
1374
+ * This method should be used when a new scoped buffer is used in context of
1375
+ * compute shaders. It adds the array to the internal data structure which is
1376
+ * later used to generate the respective WGSL.
1377
+ *
1378
+ * @param {string} name - The array name.
1379
+ * @param {string} scope - The scope.
1380
+ * @param {string} bufferType - The buffer type.
1381
+ * @param {string} bufferCount - The buffer count.
1382
+ * @return {string} The array name.
1383
+ */
1384
+ getScopedArray( name, scope, bufferType, bufferCount ) {
1385
+
1386
+ if ( this.scopedArrays.has( name ) === false ) {
1387
+
1388
+ this.scopedArrays.set( name, {
1389
+ name,
1390
+ scope,
1391
+ bufferType,
1392
+ bufferCount
1393
+ } );
1394
+
1395
+ }
1396
+
1397
+ return name;
1398
+
1399
+ }
1400
+
1401
+ /**
1402
+ * Returns the scoped arrays of the given shader stage as a WGSL string.
1403
+ *
1404
+ * @param {string} shaderStage - The shader stage.
1405
+ * @return {string|undefined} The WGSL snippet that defines the scoped arrays.
1406
+ * Returns `undefined` when used in the vertex or fragment stage.
1407
+ */
1408
+ getScopedArrays( shaderStage ) {
1409
+
1410
+ if ( shaderStage !== 'compute' ) {
1411
+
1412
+ return;
1413
+
1414
+ }
1415
+
1416
+ const snippets = [];
1417
+
1418
+ for ( const { name, scope, bufferType, bufferCount } of this.scopedArrays.values() ) {
1419
+
1420
+ const type = this.getType( bufferType );
1421
+
1422
+ snippets.push( `var<${scope}> ${name}: array< ${type}, ${bufferCount} >;` );
1423
+
1424
+ }
1425
+
1426
+ return snippets.join( '\n' );
1427
+
1428
+ }
1429
+
1430
+ /**
1431
+ * Returns the shader attributes of the given shader stage as a WGSL string.
1432
+ *
1433
+ * @param {string} shaderStage - The shader stage.
1434
+ * @return {string} The WGSL snippet that defines the shader attributes.
1435
+ */
1436
+ getAttributes( shaderStage ) {
1437
+
1438
+ const snippets = [];
1439
+
1440
+ if ( shaderStage === 'compute' ) {
1441
+
1442
+ this.getBuiltin( 'global_invocation_id', 'globalId', 'vec3<u32>', 'attribute' );
1443
+ this.getBuiltin( 'workgroup_id', 'workgroupId', 'vec3<u32>', 'attribute' );
1444
+ this.getBuiltin( 'local_invocation_id', 'localId', 'vec3<u32>', 'attribute' );
1445
+ this.getBuiltin( 'num_workgroups', 'numWorkgroups', 'vec3<u32>', 'attribute' );
1446
+
1447
+ if ( this.renderer.hasFeature( 'subgroups' ) ) {
1448
+
1449
+ this.enableDirective( 'subgroups', shaderStage );
1450
+ this.getBuiltin( 'subgroup_size', 'subgroupSize', 'u32', 'attribute' );
1451
+
1452
+ }
1453
+
1454
+ }
1455
+
1456
+ if ( shaderStage === 'vertex' || shaderStage === 'compute' ) {
1457
+
1458
+ const builtins = this.getBuiltins( 'attribute' );
1459
+
1460
+ if ( builtins ) snippets.push( builtins );
1461
+
1462
+ const attributes = this.getAttributesArray();
1463
+
1464
+ for ( let index = 0, length = attributes.length; index < length; index ++ ) {
1465
+
1466
+ const attribute = attributes[ index ];
1467
+ const name = attribute.name;
1468
+ const type = this.getType( attribute.type );
1469
+
1470
+ snippets.push( `@location( ${index} ) ${ name } : ${ type }` );
1471
+
1472
+ }
1473
+
1474
+ }
1475
+
1476
+ return snippets.join( ',\n\t' );
1477
+
1478
+ }
1479
+
1480
+ /**
1481
+ * Returns the members of the given struct type node as a WGSL string.
1482
+ *
1483
+ * @param {StructTypeNode} struct - The struct type node.
1484
+ * @return {string} The WGSL snippet that defines the struct members.
1485
+ */
1486
+ getStructMembers( struct ) {
1487
+
1488
+ const snippets = [];
1489
+
1490
+ for ( const member of struct.members ) {
1491
+
1492
+ const prefix = struct.output ? '@location( ' + member.index + ' ) ' : '';
1493
+
1494
+ let type = this.getType( member.type );
1495
+
1496
+ if ( member.atomic ) {
1497
+
1498
+ type = 'atomic< ' + type + ' >';
1499
+
1500
+ }
1501
+
1502
+ snippets.push( `\t${ prefix + member.name } : ${ type }` );
1503
+
1504
+ }
1505
+
1506
+ if ( struct.output ) {
1507
+
1508
+ snippets.push( `\t${ this.getBuiltins( 'output' ) }` );
1509
+
1510
+ }
1511
+
1512
+ return snippets.join( ',\n' );
1513
+
1514
+ }
1515
+
1516
+ /**
1517
+ * Returns the structs of the given shader stage as a WGSL string.
1518
+ *
1519
+ * @param {string} shaderStage - The shader stage.
1520
+ * @return {string} The WGSL snippet that defines the structs.
1521
+ */
1522
+ getStructs( shaderStage ) {
1523
+
1524
+ let result = '';
1525
+
1526
+ const structs = this.structs[ shaderStage ];
1527
+
1528
+ if ( structs.length > 0 ) {
1529
+
1530
+ const snippets = [];
1531
+
1532
+ for ( const struct of structs ) {
1533
+
1534
+ let snippet = `struct ${ struct.name } {\n`;
1535
+ snippet += this.getStructMembers( struct );
1536
+ snippet += '\n};';
1537
+
1538
+ snippets.push( snippet );
1539
+
1540
+ }
1541
+
1542
+ result = '\n' + snippets.join( '\n\n' ) + '\n';
1543
+
1544
+ }
1545
+
1546
+ return result;
1547
+
1548
+ }
1549
+
1550
+ /**
1551
+ * Returns a WGSL string representing a variable.
1552
+ *
1553
+ * @param {string} type - The variable's type.
1554
+ * @param {string} name - The variable's name.
1555
+ * @param {?number} [count=null] - The array length.
1556
+ * @return {string} The WGSL snippet that defines a variable.
1557
+ */
1558
+ getVar( type, name, count = null ) {
1559
+
1560
+ let snippet = `var ${ name } : `;
1561
+
1562
+ if ( count !== null ) {
1563
+
1564
+ snippet += this.generateArrayDeclaration( type, count );
1565
+
1566
+ } else {
1567
+
1568
+ snippet += this.getType( type );
1569
+
1570
+ }
1571
+
1572
+ return snippet;
1573
+
1574
+ }
1575
+
1576
+ /**
1577
+ * Returns the variables of the given shader stage as a WGSL string.
1578
+ *
1579
+ * @param {string} shaderStage - The shader stage.
1580
+ * @return {string} The WGSL snippet that defines the variables.
1581
+ */
1582
+ getVars( shaderStage ) {
1583
+
1584
+ const snippets = [];
1585
+ const vars = this.vars[ shaderStage ];
1586
+
1587
+ if ( vars !== undefined ) {
1588
+
1589
+ for ( const variable of vars ) {
1590
+
1591
+ snippets.push( `\t${ this.getVar( variable.type, variable.name, variable.count ) };` );
1592
+
1593
+ }
1594
+
1595
+ }
1596
+
1597
+ return `\n${ snippets.join( '\n' ) }\n`;
1598
+
1599
+ }
1600
+
1601
+ /**
1602
+ * Returns the varyings of the given shader stage as a WGSL string.
1603
+ *
1604
+ * @param {string} shaderStage - The shader stage.
1605
+ * @return {string} The WGSL snippet that defines the varyings.
1606
+ */
1607
+ getVaryings( shaderStage ) {
1608
+
1609
+ const snippets = [];
1610
+
1611
+ if ( shaderStage === 'vertex' ) {
1612
+
1613
+ this.getBuiltin( 'position', 'Vertex', 'vec4<f32>', 'vertex' );
1614
+
1615
+ }
1616
+
1617
+ if ( shaderStage === 'vertex' || shaderStage === 'fragment' ) {
1618
+
1619
+ const varyings = this.varyings;
1620
+ const vars = this.vars[ shaderStage ];
1621
+
1622
+ for ( let index = 0; index < varyings.length; index ++ ) {
1623
+
1624
+ const varying = varyings[ index ];
1625
+
1626
+ if ( varying.needsInterpolation ) {
1627
+
1628
+ let attributesSnippet = `@location( ${index} )`;
1629
+
1630
+ if ( varying.interpolationType ) {
1631
+
1632
+ const samplingSnippet = varying.interpolationSampling !== null ? `, ${ varying.interpolationSampling } )` : ' )';
1633
+
1634
+ attributesSnippet += ` @interpolate( ${ varying.interpolationType }${ samplingSnippet }`;
1635
+
1636
+ // Otherwise, optimize interpolation when sensible
1637
+
1638
+ } else if ( /^(int|uint|ivec|uvec)/.test( varying.type ) ) {
1639
+
1640
+ attributesSnippet += ` @interpolate( ${ this.renderer.backend.compatibilityMode ? 'flat, either' : 'flat' } )`;
1641
+
1642
+ }
1643
+
1644
+ snippets.push( `${ attributesSnippet } ${ varying.name } : ${ this.getType( varying.type ) }` );
1645
+
1646
+ } else if ( shaderStage === 'vertex' && vars.includes( varying ) === false ) {
1647
+
1648
+ vars.push( varying );
1649
+
1650
+ }
1651
+
1652
+ }
1653
+
1654
+ }
1655
+
1656
+ const builtins = this.getBuiltins( shaderStage );
1657
+
1658
+ if ( builtins ) snippets.push( builtins );
1659
+
1660
+ const code = snippets.join( ',\n\t' );
1661
+
1662
+ return shaderStage === 'vertex' ? this._getWGSLStruct( 'VaryingsStruct', '\t' + code ) : code;
1663
+
1664
+ }
1665
+
1666
+ isCustomStruct( nodeUniform ) {
1667
+
1668
+ const attribute = nodeUniform.value;
1669
+ const bufferNode = nodeUniform.node;
1670
+
1671
+ const isAttributeStructType = ( attribute.isBufferAttribute || attribute.isInstancedBufferAttribute ) && bufferNode.structTypeNode !== null;
1672
+
1673
+ const isStructArray =
1674
+ ( bufferNode.value && bufferNode.value.array ) &&
1675
+ ( typeof bufferNode.value.itemSize === 'number' && bufferNode.value.array.length > bufferNode.value.itemSize );
1676
+
1677
+ return isAttributeStructType && ! isStructArray;
1678
+
1679
+ }
1680
+
1681
+ /**
1682
+ * Returns the uniforms of the given shader stage as a WGSL string.
1683
+ *
1684
+ * @param {string} shaderStage - The shader stage.
1685
+ * @return {string} The WGSL snippet that defines the uniforms.
1686
+ */
1687
+ getUniforms( shaderStage ) {
1688
+
1689
+ const uniforms = this.uniforms[ shaderStage ];
1690
+
1691
+ const bindingSnippets = [];
1692
+ const bufferSnippets = [];
1693
+ const structSnippets = [];
1694
+ const uniformGroups = {};
1695
+
1696
+ for ( const uniform of uniforms ) {
1697
+
1698
+ const groupName = uniform.groupNode.name;
1699
+ const uniformIndexes = this.bindingsIndexes[ groupName ];
1700
+
1701
+ if ( uniform.type === 'texture' || uniform.type === 'cubeTexture' || uniform.type === 'storageTexture' || uniform.type === 'texture3D' ) {
1702
+
1703
+ const texture = uniform.node.value;
1704
+
1705
+ if ( this.isUnfilterable( texture ) === false && uniform.node.isStorageTextureNode !== true ) {
1706
+
1707
+ if ( this.isSampleCompare( texture ) ) {
1708
+
1709
+ bindingSnippets.push( `@binding( ${ uniformIndexes.binding ++ } ) @group( ${ uniformIndexes.group } ) var ${ uniform.name }_sampler : sampler_comparison;` );
1710
+
1711
+ } else {
1712
+
1713
+ bindingSnippets.push( `@binding( ${ uniformIndexes.binding ++ } ) @group( ${ uniformIndexes.group } ) var ${ uniform.name }_sampler : sampler;` );
1714
+
1715
+ }
1716
+
1717
+ }
1718
+
1719
+ let textureType;
1720
+
1721
+ let multisampled = '';
1722
+
1723
+ const { primarySamples } = this.renderer.backend.utils.getTextureSampleData( texture );
1724
+
1725
+ if ( primarySamples > 1 ) {
1726
+
1727
+ multisampled = '_multisampled';
1728
+
1729
+ }
1730
+
1731
+ if ( texture.isCubeTexture === true ) {
1732
+
1733
+ textureType = 'texture_cube<f32>';
1734
+
1735
+ } else if ( texture.isDepthTexture === true ) {
1736
+
1737
+ if ( this.renderer.backend.compatibilityMode && texture.compareFunction === null ) {
1738
+
1739
+ textureType = `texture${ multisampled }_2d<f32>`;
1740
+
1741
+ } else {
1742
+
1743
+ textureType = `texture_depth${ multisampled }_2d${ texture.isArrayTexture === true ? '_array' : '' }`;
1744
+
1745
+ }
1746
+
1747
+ } else if ( uniform.node.isStorageTextureNode === true ) {
1748
+
1749
+ const format = getFormat( texture );
1750
+ const access = this.getStorageAccess( uniform.node, shaderStage );
1751
+
1752
+ const is3D = uniform.node.value.is3DTexture;
1753
+ const isArrayTexture = uniform.node.value.isArrayTexture;
1754
+
1755
+ const dimension = is3D ? '3d' : `2d${ isArrayTexture ? '_array' : '' }`;
1756
+
1757
+ textureType = `texture_storage_${ dimension }<${ format }, ${ access }>`;
1758
+
1759
+ } else if ( texture.isArrayTexture === true || texture.isDataArrayTexture === true || texture.isCompressedArrayTexture === true ) {
1760
+
1761
+ textureType = 'texture_2d_array<f32>';
1762
+
1763
+ } else if ( texture.is3DTexture === true || texture.isData3DTexture === true ) {
1764
+
1765
+ textureType = 'texture_3d<f32>';
1766
+
1767
+ } else {
1768
+
1769
+ const componentPrefix = this.getComponentTypeFromTexture( texture ).charAt( 0 );
1770
+
1771
+ textureType = `texture${ multisampled }_2d<${ componentPrefix }32>`;
1772
+
1773
+ }
1774
+
1775
+ bindingSnippets.push( `@binding( ${ uniformIndexes.binding ++ } ) @group( ${ uniformIndexes.group } ) var ${ uniform.name } : ${ textureType };` );
1776
+
1777
+ } else if ( uniform.type === 'buffer' || uniform.type === 'storageBuffer' || uniform.type === 'indirectStorageBuffer' ) {
1778
+
1779
+ const bufferNode = uniform.node;
1780
+ const bufferType = this.getType( bufferNode.getNodeType( this ) );
1781
+ const bufferCount = bufferNode.bufferCount;
1782
+ const bufferCountSnippet = bufferCount > 0 && uniform.type === 'buffer' ? ', ' + bufferCount : '';
1783
+ const bufferAccessMode = bufferNode.isStorageBufferNode ? `storage, ${ this.getStorageAccess( bufferNode, shaderStage ) }` : 'uniform';
1784
+
1785
+ if ( this.isCustomStruct( uniform ) ) {
1786
+
1787
+ bufferSnippets.push( `@binding( ${ uniformIndexes.binding ++ } ) @group( ${ uniformIndexes.group } ) var<${ bufferAccessMode }> ${ uniform.name } : ${ bufferType };` );
1788
+
1789
+ } else {
1790
+
1791
+ const bufferTypeSnippet = bufferNode.isAtomic ? `atomic<${ bufferType }>` : `${ bufferType }`;
1792
+ const bufferSnippet = `\tvalue : array< ${ bufferTypeSnippet }${ bufferCountSnippet } >`;
1793
+
1794
+ bufferSnippets.push( this._getWGSLStructBinding( uniform.name, bufferSnippet, bufferAccessMode, uniformIndexes.binding ++, uniformIndexes.group ) );
1795
+
1796
+ }
1797
+
1798
+ } else {
1799
+
1800
+ const vectorType = this.getType( this.getVectorType( uniform.type ) );
1801
+ const groupName = uniform.groupNode.name;
1802
+
1803
+ const group = uniformGroups[ groupName ] || ( uniformGroups[ groupName ] = {
1804
+ index: uniformIndexes.binding ++,
1805
+ id: uniformIndexes.group,
1806
+ snippets: []
1807
+ } );
1808
+
1809
+ group.snippets.push( `\t${ uniform.name } : ${ vectorType }` );
1810
+
1811
+ }
1812
+
1813
+ }
1814
+
1815
+ for ( const name in uniformGroups ) {
1816
+
1817
+ const group = uniformGroups[ name ];
1818
+
1819
+ structSnippets.push( this._getWGSLStructBinding( name, group.snippets.join( ',\n' ), 'uniform', group.index, group.id ) );
1820
+
1821
+ }
1822
+
1823
+ let code = bindingSnippets.join( '\n' );
1824
+ code += bufferSnippets.join( '\n' );
1825
+ code += structSnippets.join( '\n' );
1826
+
1827
+ return code;
1828
+
1829
+ }
1830
+
1831
+ /**
1832
+ * Controls the code build of the shader stages.
1833
+ */
1834
+ buildCode() {
1835
+
1836
+ const shadersData = this.material !== null ? { fragment: {}, vertex: {} } : { compute: {} };
1837
+
1838
+ this.sortBindingGroups();
1839
+
1840
+ for ( const shaderStage in shadersData ) {
1841
+
1842
+ this.shaderStage = shaderStage;
1843
+
1844
+ const stageData = shadersData[ shaderStage ];
1845
+ stageData.uniforms = this.getUniforms( shaderStage );
1846
+ stageData.attributes = this.getAttributes( shaderStage );
1847
+ stageData.varyings = this.getVaryings( shaderStage );
1848
+ stageData.structs = this.getStructs( shaderStage );
1849
+ stageData.vars = this.getVars( shaderStage );
1850
+ stageData.codes = this.getCodes( shaderStage );
1851
+ stageData.directives = this.getDirectives( shaderStage );
1852
+ stageData.scopedArrays = this.getScopedArrays( shaderStage );
1853
+
1854
+ //
1855
+
1856
+ let flow = '// code\n\n';
1857
+ flow += this.flowCode[ shaderStage ];
1858
+
1859
+ const flowNodes = this.flowNodes[ shaderStage ];
1860
+ const mainNode = flowNodes[ flowNodes.length - 1 ];
1861
+
1862
+ const outputNode = mainNode.outputNode;
1863
+ const isOutputStruct = ( outputNode !== undefined && outputNode.isOutputStructNode === true );
1864
+
1865
+ for ( const node of flowNodes ) {
1866
+
1867
+ const flowSlotData = this.getFlowData( node/*, shaderStage*/ );
1868
+ const slotName = node.name;
1869
+
1870
+ if ( slotName ) {
1871
+
1872
+ if ( flow.length > 0 ) flow += '\n';
1873
+
1874
+ flow += `\t// flow -> ${ slotName }\n`;
1875
+
1876
+ }
1877
+
1878
+ flow += `${ flowSlotData.code }\n\t`;
1879
+
1880
+ if ( node === mainNode && shaderStage !== 'compute' ) {
1881
+
1882
+ flow += '// result\n\n\t';
1883
+
1884
+ if ( shaderStage === 'vertex' ) {
1885
+
1886
+ flow += `varyings.Vertex = ${ flowSlotData.result };`;
1887
+
1888
+ } else if ( shaderStage === 'fragment' ) {
1889
+
1890
+ if ( isOutputStruct ) {
1891
+
1892
+ stageData.returnType = outputNode.getNodeType( this );
1893
+ stageData.structs += 'var<private> output : ' + stageData.returnType + ';';
1894
+
1895
+ flow += `return ${ flowSlotData.result };`;
1896
+
1897
+ } else {
1898
+
1899
+ let structSnippet = '\t@location(0) color: vec4<f32>';
1900
+
1901
+ const builtins = this.getBuiltins( 'output' );
1902
+
1903
+ if ( builtins ) structSnippet += ',\n\t' + builtins;
1904
+
1905
+ stageData.returnType = 'OutputStruct';
1906
+ stageData.structs += this._getWGSLStruct( 'OutputStruct', structSnippet );
1907
+ stageData.structs += '\nvar<private> output : OutputStruct;';
1908
+
1909
+ flow += `output.color = ${ flowSlotData.result };\n\n\treturn output;`;
1910
+
1911
+ }
1912
+
1913
+ }
1914
+
1915
+ }
1916
+
1917
+ }
1918
+
1919
+ stageData.flow = flow;
1920
+
1921
+ }
1922
+
1923
+ this.shaderStage = null;
1924
+
1925
+ if ( this.material !== null ) {
1926
+
1927
+ this.vertexShader = this._getWGSLVertexCode( shadersData.vertex );
1928
+ this.fragmentShader = this._getWGSLFragmentCode( shadersData.fragment );
1929
+
1930
+ } else {
1931
+
1932
+ // Early strictly validated in computeNode
1933
+
1934
+ const workgroupSize = this.object.workgroupSize;
1935
+
1936
+ this.computeShader = this._getWGSLComputeCode( shadersData.compute, workgroupSize );
1937
+
1938
+ }
1939
+
1940
+ }
1941
+
1942
+ /**
1943
+ * Returns the native shader method name for a given generic name.
1944
+ *
1945
+ * @param {string} method - The method name to resolve.
1946
+ * @param {?string} [output=null] - An optional output.
1947
+ * @return {string} The resolved WGSL method name.
1948
+ */
1949
+ getMethod( method, output = null ) {
1950
+
1951
+ let wgslMethod;
1952
+
1953
+ if ( output !== null ) {
1954
+
1955
+ wgslMethod = this._getWGSLMethod( method + '_' + output );
1956
+
1957
+ }
1958
+
1959
+ if ( wgslMethod === undefined ) {
1960
+
1961
+ wgslMethod = this._getWGSLMethod( method );
1962
+
1963
+ }
1964
+
1965
+ return wgslMethod || method;
1966
+
1967
+ }
1968
+
1969
+ /**
1970
+ * Returns the bitcast method name for a given input and outputType.
1971
+ *
1972
+ * @param {string} type - The output type to bitcast to.
1973
+ * @return {string} The resolved WGSL bitcast invocation.
1974
+ */
1975
+ getBitcastMethod( type ) {
1976
+
1977
+ const dataType = this.getType( type );
1978
+
1979
+ return `bitcast<${ dataType }>`;
1980
+
1981
+ }
1982
+
1983
+ /**
1984
+ * Returns the native snippet for a ternary operation.
1985
+ *
1986
+ * @param {string} condSnippet - The condition determining which expression gets resolved.
1987
+ * @param {string} ifSnippet - The expression to resolve to if the condition is true.
1988
+ * @param {string} elseSnippet - The expression to resolve to if the condition is false.
1989
+ * @return {string} The resolved method name.
1990
+ */
1991
+ getTernary( condSnippet, ifSnippet, elseSnippet ) {
1992
+
1993
+ return `select( ${elseSnippet}, ${ifSnippet}, ${condSnippet} )`;
1994
+
1995
+ }
1996
+
1997
+
1998
+ /**
1999
+ * Returns the WGSL type of the given node data type.
2000
+ *
2001
+ * @param {string} type - The node data type.
2002
+ * @return {string} The WGSL type.
2003
+ */
2004
+ getType( type ) {
2005
+
2006
+ return wgslTypeLib[ type ] || type;
2007
+
2008
+ }
2009
+
2010
+ /**
2011
+ * Whether the requested feature is available or not.
2012
+ *
2013
+ * @param {string} name - The requested feature.
2014
+ * @return {boolean} Whether the requested feature is supported or not.
2015
+ */
2016
+ isAvailable( name ) {
2017
+
2018
+ let result = supports[ name ];
2019
+
2020
+ if ( result === undefined ) {
2021
+
2022
+ if ( name === 'float32Filterable' ) {
2023
+
2024
+ result = this.renderer.hasFeature( 'float32-filterable' );
2025
+
2026
+ } else if ( name === 'clipDistance' ) {
2027
+
2028
+ result = this.renderer.hasFeature( 'clip-distances' );
2029
+
2030
+ }
2031
+
2032
+ supports[ name ] = result;
2033
+
2034
+ }
2035
+
2036
+ return result;
2037
+
2038
+ }
2039
+
2040
+ /**
2041
+ * Returns the native shader method name for a given generic name.
2042
+ *
2043
+ * @private
2044
+ * @param {string} method - The method name to resolve.
2045
+ * @return {string} The resolved WGSL method name.
2046
+ */
2047
+ _getWGSLMethod( method ) {
2048
+
2049
+ if ( wgslPolyfill[ method ] !== undefined ) {
2050
+
2051
+ this._include( method );
2052
+
2053
+ }
2054
+
2055
+ return wgslMethods[ method ];
2056
+
2057
+ }
2058
+
2059
+ /**
2060
+ * Includes the given method name into the current
2061
+ * function node.
2062
+ *
2063
+ * @private
2064
+ * @param {string} name - The method name to include.
2065
+ * @return {CodeNode} The respective code node.
2066
+ */
2067
+ _include( name ) {
2068
+
2069
+ const codeNode = wgslPolyfill[ name ];
2070
+ codeNode.build( this );
2071
+
2072
+ this.addInclude( codeNode );
2073
+
2074
+ return codeNode;
2075
+
2076
+ }
2077
+
2078
+ /**
2079
+ * Returns a WGSL vertex shader based on the given shader data.
2080
+ *
2081
+ * @private
2082
+ * @param {Object} shaderData - The shader data.
2083
+ * @return {string} The vertex shader.
2084
+ */
2085
+ _getWGSLVertexCode( shaderData ) {
2086
+
2087
+ return `${ this.getSignature() }
2088
+ // directives
2089
+ ${shaderData.directives}
2090
+
2091
+ // structs
2092
+ ${shaderData.structs}
2093
+
2094
+ // uniforms
2095
+ ${shaderData.uniforms}
2096
+
2097
+ // varyings
2098
+ ${shaderData.varyings}
2099
+ var<private> varyings : VaryingsStruct;
2100
+
2101
+ // codes
2102
+ ${shaderData.codes}
2103
+
2104
+ @vertex
2105
+ fn main( ${shaderData.attributes} ) -> VaryingsStruct {
2106
+
2107
+ // vars
2108
+ ${shaderData.vars}
2109
+
2110
+ // flow
2111
+ ${shaderData.flow}
2112
+
2113
+ return varyings;
2114
+
2115
+ }
2116
+ `;
2117
+
2118
+ }
2119
+
2120
+ /**
2121
+ * Returns a WGSL fragment shader based on the given shader data.
2122
+ *
2123
+ * @private
2124
+ * @param {Object} shaderData - The shader data.
2125
+ * @return {string} The vertex shader.
2126
+ */
2127
+ _getWGSLFragmentCode( shaderData ) {
2128
+
2129
+ return `${ this.getSignature() }
2130
+ // global
2131
+ ${ diagnostics }
2132
+
2133
+ // structs
2134
+ ${shaderData.structs}
2135
+
2136
+ // uniforms
2137
+ ${shaderData.uniforms}
2138
+
2139
+ // codes
2140
+ ${shaderData.codes}
2141
+
2142
+ @fragment
2143
+ fn main( ${shaderData.varyings} ) -> ${shaderData.returnType} {
2144
+
2145
+ // vars
2146
+ ${shaderData.vars}
2147
+
2148
+ // flow
2149
+ ${shaderData.flow}
2150
+
2151
+ }
2152
+ `;
2153
+
2154
+ }
2155
+
2156
+ /**
2157
+ * Returns a WGSL compute shader based on the given shader data.
2158
+ *
2159
+ * @private
2160
+ * @param {Object} shaderData - The shader data.
2161
+ * @param {string} workgroupSize - The workgroup size.
2162
+ * @return {string} The vertex shader.
2163
+ */
2164
+ _getWGSLComputeCode( shaderData, workgroupSize ) {
2165
+
2166
+ const [ workgroupSizeX, workgroupSizeY, workgroupSizeZ ] = workgroupSize;
2167
+
2168
+ return `${ this.getSignature() }
2169
+ // directives
2170
+ ${ shaderData.directives }
2171
+
2172
+ // system
2173
+ var<private> instanceIndex : u32;
2174
+
2175
+ // locals
2176
+ ${ shaderData.scopedArrays }
2177
+
2178
+ // structs
2179
+ ${ shaderData.structs }
2180
+
2181
+ // uniforms
2182
+ ${ shaderData.uniforms }
2183
+
2184
+ // codes
2185
+ ${ shaderData.codes }
2186
+
2187
+ @compute @workgroup_size( ${ workgroupSizeX }, ${ workgroupSizeY }, ${ workgroupSizeZ } )
2188
+ fn main( ${ shaderData.attributes } ) {
2189
+
2190
+ // system
2191
+ instanceIndex = globalId.x
2192
+ + globalId.y * ( ${ workgroupSizeX } * numWorkgroups.x )
2193
+ + globalId.z * ( ${ workgroupSizeX } * numWorkgroups.x ) * ( ${ workgroupSizeY } * numWorkgroups.y );
2194
+
2195
+ // vars
2196
+ ${ shaderData.vars }
2197
+
2198
+ // flow
2199
+ ${ shaderData.flow }
2200
+
2201
+ }
2202
+ `;
2203
+
2204
+ }
2205
+
2206
+ /**
2207
+ * Returns a WGSL struct based on the given name and variables.
2208
+ *
2209
+ * @private
2210
+ * @param {string} name - The struct name.
2211
+ * @param {string} vars - The struct variables.
2212
+ * @return {string} The WGSL snippet representing a struct.
2213
+ */
2214
+ _getWGSLStruct( name, vars ) {
2215
+
2216
+ return `
2217
+ struct ${name} {
2218
+ ${vars}
2219
+ };`;
2220
+
2221
+ }
2222
+
2223
+ /**
2224
+ * Returns a WGSL struct binding.
2225
+ *
2226
+ * @private
2227
+ * @param {string} name - The struct name.
2228
+ * @param {string} vars - The struct variables.
2229
+ * @param {string} access - The access.
2230
+ * @param {number} [binding=0] - The binding index.
2231
+ * @param {number} [group=0] - The group index.
2232
+ * @return {string} The WGSL snippet representing a struct binding.
2233
+ */
2234
+ _getWGSLStructBinding( name, vars, access, binding = 0, group = 0 ) {
2235
+
2236
+ const structName = name + 'Struct';
2237
+ const structSnippet = this._getWGSLStruct( structName, vars );
2238
+
2239
+ return `${structSnippet}
2240
+ @binding( ${ binding } ) @group( ${ group } )
2241
+ var<${access}> ${ name } : ${ structName };`;
2242
+
2243
+ }
2244
+
2245
+ }
2246
+
2247
+ export default WGSLNodeBuilder;