@unikia/upe-renderer 0.0.0-stage → 0.186.110

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 (2234) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSE.types +21 -0
  3. package/README.md +37 -2
  4. package/README.three.md +85 -0
  5. package/UPSTREAM.md +11 -0
  6. package/build/three.cjs +17 -0
  7. package/build/three.core.d.ts +1 -0
  8. package/build/three.core.js +60602 -0
  9. package/build/three.d.cts +1 -0
  10. package/build/three.module.d.ts +1 -0
  11. package/build/three.module.js +19719 -0
  12. package/build/three.tsl.d.ts +1 -0
  13. package/build/three.tsl.js +691 -0
  14. package/build/three.webgpu.d.ts +1 -0
  15. package/build/three.webgpu.js +93270 -0
  16. package/build/three.webgpu.nodes.d.ts +1 -0
  17. package/build/three.webgpu.nodes.js +92988 -0
  18. package/examples/jsm/Addons.d.ts +300 -0
  19. package/examples/jsm/Addons.js +301 -0
  20. package/examples/jsm/animation/AnimationClipCreator.d.ts +12 -0
  21. package/examples/jsm/animation/AnimationClipCreator.js +168 -0
  22. package/examples/jsm/animation/CCDIKSolver.d.ts +44 -0
  23. package/examples/jsm/animation/CCDIKSolver.js +595 -0
  24. package/examples/jsm/capabilities/WebGL.d.ts +6 -0
  25. package/examples/jsm/capabilities/WebGL.js +113 -0
  26. package/examples/jsm/capabilities/WebGPU.d.ts +7 -0
  27. package/examples/jsm/capabilities/WebGPU.js +59 -0
  28. package/examples/jsm/controls/ArcballControls.d.ts +208 -0
  29. package/examples/jsm/controls/ArcballControls.js +3543 -0
  30. package/examples/jsm/controls/DragControls.d.ts +81 -0
  31. package/examples/jsm/controls/DragControls.js +452 -0
  32. package/examples/jsm/controls/FirstPersonControls.d.ts +105 -0
  33. package/examples/jsm/controls/FirstPersonControls.js +512 -0
  34. package/examples/jsm/controls/FlyControls.d.ts +44 -0
  35. package/examples/jsm/controls/FlyControls.js +384 -0
  36. package/examples/jsm/controls/MapControls.d.ts +21 -0
  37. package/examples/jsm/controls/MapControls.js +116 -0
  38. package/examples/jsm/controls/OrbitControls.d.ts +295 -0
  39. package/examples/jsm/controls/OrbitControls.js +1972 -0
  40. package/examples/jsm/controls/PointerLockControls.d.ts +84 -0
  41. package/examples/jsm/controls/PointerLockControls.js +264 -0
  42. package/examples/jsm/controls/TrackballControls.d.ts +152 -0
  43. package/examples/jsm/controls/TrackballControls.js +1106 -0
  44. package/examples/jsm/controls/TransformControls.d.ts +363 -0
  45. package/examples/jsm/controls/TransformControls.js +2003 -0
  46. package/examples/jsm/csm/CSM.d.ts +55 -0
  47. package/examples/jsm/csm/CSM.js +598 -0
  48. package/examples/jsm/csm/CSMFrustum.d.ts +85 -0
  49. package/examples/jsm/csm/CSMFrustum.js +234 -0
  50. package/examples/jsm/csm/CSMHelper.d.ts +28 -0
  51. package/examples/jsm/csm/CSMHelper.js +243 -0
  52. package/examples/jsm/csm/CSMShader.d.ts +4 -0
  53. package/examples/jsm/csm/CSMShader.js +307 -0
  54. package/examples/jsm/csm/CSMShadowNode.d.ts +44 -0
  55. package/examples/jsm/csm/CSMShadowNode.js +619 -0
  56. package/examples/jsm/curves/CurveExtras.d.ts +68 -0
  57. package/examples/jsm/curves/CurveExtras.js +694 -0
  58. package/examples/jsm/curves/NURBSCurve.d.ts +28 -0
  59. package/examples/jsm/curves/NURBSCurve.js +155 -0
  60. package/examples/jsm/curves/NURBSSurface.d.ts +13 -0
  61. package/examples/jsm/curves/NURBSSurface.js +98 -0
  62. package/examples/jsm/curves/NURBSUtils.d.ts +146 -0
  63. package/examples/jsm/curves/NURBSUtils.js +532 -0
  64. package/examples/jsm/curves/NURBSVolume.d.ts +23 -0
  65. package/examples/jsm/curves/NURBSVolume.js +82 -0
  66. package/examples/jsm/effects/AnaglyphEffect.d.ts +21 -0
  67. package/examples/jsm/effects/AnaglyphEffect.js +274 -0
  68. package/examples/jsm/effects/AsciiEffect.d.ts +18 -0
  69. package/examples/jsm/effects/AsciiEffect.js +323 -0
  70. package/examples/jsm/effects/OutlineEffect.d.ts +28 -0
  71. package/examples/jsm/effects/OutlineEffect.js +489 -0
  72. package/examples/jsm/effects/ParallaxBarrierEffect.d.ts +11 -0
  73. package/examples/jsm/effects/ParallaxBarrierEffect.js +155 -0
  74. package/examples/jsm/effects/StereoEffect.d.ts +9 -0
  75. package/examples/jsm/effects/StereoEffect.js +91 -0
  76. package/examples/jsm/environments/ColorEnvironment.d.ts +9 -0
  77. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  78. package/examples/jsm/environments/DebugEnvironment.d.ts +5 -0
  79. package/examples/jsm/environments/DebugEnvironment.js +102 -0
  80. package/examples/jsm/environments/RoomEnvironment.d.ts +6 -0
  81. package/examples/jsm/environments/RoomEnvironment.js +185 -0
  82. package/examples/jsm/exporters/DRACOExporter.d.ts +17 -0
  83. package/examples/jsm/exporters/DRACOExporter.js +332 -0
  84. package/examples/jsm/exporters/EXRExporter.d.ts +27 -0
  85. package/examples/jsm/exporters/EXRExporter.js +618 -0
  86. package/examples/jsm/exporters/GLTFExporter.d.ts +161 -0
  87. package/examples/jsm/exporters/GLTFExporter.js +3856 -0
  88. package/examples/jsm/exporters/KTX2Exporter.d.ts +7 -0
  89. package/examples/jsm/exporters/KTX2Exporter.js +347 -0
  90. package/examples/jsm/exporters/OBJExporter.d.ts +7 -0
  91. package/examples/jsm/exporters/OBJExporter.js +308 -0
  92. package/examples/jsm/exporters/PLYExporter.d.ts +31 -0
  93. package/examples/jsm/exporters/PLYExporter.js +775 -0
  94. package/examples/jsm/exporters/STLExporter.d.ts +21 -0
  95. package/examples/jsm/exporters/STLExporter.js +221 -0
  96. package/examples/jsm/exporters/USDZExporter.d.ts +30 -0
  97. package/examples/jsm/exporters/USDZExporter.js +1489 -0
  98. package/examples/jsm/generators/CityGenerator.d.ts +131 -0
  99. package/examples/jsm/generators/CityGenerator.js +678 -0
  100. package/examples/jsm/generators/ForestGenerator.d.ts +73 -0
  101. package/examples/jsm/generators/ForestGenerator.js +347 -0
  102. package/examples/jsm/generators/TerrainGenerator.d.ts +57 -0
  103. package/examples/jsm/generators/TerrainGenerator.js +516 -0
  104. package/examples/jsm/generators/TreeGenerator.d.ts +102 -0
  105. package/examples/jsm/generators/TreeGenerator.js +371 -0
  106. package/examples/jsm/generators/city/BenchGenerator.d.ts +29 -0
  107. package/examples/jsm/generators/city/BenchGenerator.js +127 -0
  108. package/examples/jsm/generators/city/CarGenerator.d.ts +43 -0
  109. package/examples/jsm/generators/city/CarGenerator.js +479 -0
  110. package/examples/jsm/generators/city/CityGeneratorUtils.js +31 -0
  111. package/examples/jsm/generators/city/HydrantGenerator.d.ts +27 -0
  112. package/examples/jsm/generators/city/HydrantGenerator.js +106 -0
  113. package/examples/jsm/generators/city/InstancedMeshGenerator.d.ts +29 -0
  114. package/examples/jsm/generators/city/InstancedMeshGenerator.js +86 -0
  115. package/examples/jsm/generators/city/PersonGenerator.d.ts +44 -0
  116. package/examples/jsm/generators/city/PersonGenerator.js +447 -0
  117. package/examples/jsm/generators/city/SidewalkGenerator.d.ts +40 -0
  118. package/examples/jsm/generators/city/SidewalkGenerator.js +248 -0
  119. package/examples/jsm/generators/city/SkyscraperGenerator.d.ts +83 -0
  120. package/examples/jsm/generators/city/SkyscraperGenerator.js +1757 -0
  121. package/examples/jsm/generators/city/StreetTreeGenerator.d.ts +30 -0
  122. package/examples/jsm/generators/city/StreetTreeGenerator.js +231 -0
  123. package/examples/jsm/generators/city/StreetlightGenerator.d.ts +28 -0
  124. package/examples/jsm/generators/city/StreetlightGenerator.js +100 -0
  125. package/examples/jsm/generators/city/TrafficlightGenerator.d.ts +29 -0
  126. package/examples/jsm/generators/city/TrafficlightGenerator.js +106 -0
  127. package/examples/jsm/generators/city/TrashcanGenerator.d.ts +24 -0
  128. package/examples/jsm/generators/city/TrashcanGenerator.js +100 -0
  129. package/examples/jsm/geometries/BoxLineGeometry.d.ts +12 -0
  130. package/examples/jsm/geometries/BoxLineGeometry.js +92 -0
  131. package/examples/jsm/geometries/ConvexGeometry.d.ts +5 -0
  132. package/examples/jsm/geometries/ConvexGeometry.js +72 -0
  133. package/examples/jsm/geometries/DecalGeometry.d.ts +16 -0
  134. package/examples/jsm/geometries/DecalGeometry.js +420 -0
  135. package/examples/jsm/geometries/LoftGeometry.d.ts +83 -0
  136. package/examples/jsm/geometries/LoftGeometry.js +355 -0
  137. package/examples/jsm/geometries/ParametricFunctions.d.ts +8 -0
  138. package/examples/jsm/geometries/ParametricFunctions.js +100 -0
  139. package/examples/jsm/geometries/ParametricGeometry.d.ts +18 -0
  140. package/examples/jsm/geometries/ParametricGeometry.js +172 -0
  141. package/examples/jsm/geometries/RoundedBoxGeometry.d.ts +5 -0
  142. package/examples/jsm/geometries/RoundedBoxGeometry.js +216 -0
  143. package/examples/jsm/geometries/TeapotGeometry.d.ts +37 -0
  144. package/examples/jsm/geometries/TeapotGeometry.js +689 -0
  145. package/examples/jsm/geometries/TextGeometry.d.ts +89 -0
  146. package/examples/jsm/geometries/TextGeometry.js +102 -0
  147. package/examples/jsm/gpgpu/BitonicSort.d.ts +21 -0
  148. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  149. package/examples/jsm/gpgpu/CountingSort.d.ts +31 -0
  150. package/examples/jsm/gpgpu/CountingSort.js +271 -0
  151. package/examples/jsm/helpers/AnimationPathHelper.d.ts +38 -0
  152. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  153. package/examples/jsm/helpers/LightProbeGridHelper.d.ts +12 -0
  154. package/examples/jsm/helpers/LightProbeGridHelper.js +166 -0
  155. package/examples/jsm/helpers/LightProbeGridHelperWebGL.d.ts +12 -0
  156. package/examples/jsm/helpers/LightProbeGridHelperWebGL.js +221 -0
  157. package/examples/jsm/helpers/LightProbeHelper.d.ts +12 -0
  158. package/examples/jsm/helpers/LightProbeHelper.js +166 -0
  159. package/examples/jsm/helpers/LightProbeHelperGPU.d.ts +12 -0
  160. package/examples/jsm/helpers/LightProbeHelperGPU.js +102 -0
  161. package/examples/jsm/helpers/OctreeHelper.d.ts +17 -0
  162. package/examples/jsm/helpers/OctreeHelper.js +109 -0
  163. package/examples/jsm/helpers/PositionalAudioHelper.d.ts +13 -0
  164. package/examples/jsm/helpers/PositionalAudioHelper.js +169 -0
  165. package/examples/jsm/helpers/RapierHelper.d.ts +13 -0
  166. package/examples/jsm/helpers/RapierHelper.js +59 -0
  167. package/examples/jsm/helpers/RectAreaLightHelper.d.ts +10 -0
  168. package/examples/jsm/helpers/RectAreaLightHelper.js +118 -0
  169. package/examples/jsm/helpers/TextureHelper.d.ts +10 -0
  170. package/examples/jsm/helpers/TextureHelper.js +265 -0
  171. package/examples/jsm/helpers/TextureHelperGPU.d.ts +10 -0
  172. package/examples/jsm/helpers/TextureHelperGPU.js +214 -0
  173. package/examples/jsm/helpers/VertexNormalsHelper.d.ts +14 -0
  174. package/examples/jsm/helpers/VertexNormalsHelper.js +155 -0
  175. package/examples/jsm/helpers/VertexTangentsHelper.d.ts +12 -0
  176. package/examples/jsm/helpers/VertexTangentsHelper.js +133 -0
  177. package/examples/jsm/helpers/ViewHelper.d.ts +20 -0
  178. package/examples/jsm/helpers/ViewHelper.js +529 -0
  179. package/examples/jsm/inspector/Extension.d.ts +22 -0
  180. package/examples/jsm/inspector/Extension.js +107 -0
  181. package/examples/jsm/inspector/Inspector.d.ts +54 -0
  182. package/examples/jsm/inspector/Inspector.js +684 -0
  183. package/examples/jsm/inspector/RendererInspector.d.ts +9 -0
  184. package/examples/jsm/inspector/RendererInspector.js +589 -0
  185. package/examples/jsm/inspector/extensions/color-grading/ColorGrading.d.ts +34 -0
  186. package/examples/jsm/inspector/extensions/color-grading/ColorGrading.js +2609 -0
  187. package/examples/jsm/inspector/extensions/color-grading/ColorWheel.js +352 -0
  188. package/examples/jsm/inspector/extensions/color-grading/CurveEditor.js +599 -0
  189. package/examples/jsm/inspector/extensions/color-grading/LUT3DStyle.js +1201 -0
  190. package/examples/jsm/inspector/extensions/color-grading/LUTMath.js +788 -0
  191. package/examples/jsm/inspector/extensions/color-grading/modules/BrightnessModule.js +72 -0
  192. package/examples/jsm/inspector/extensions/color-grading/modules/ColorWheelModule.js +112 -0
  193. package/examples/jsm/inspector/extensions/color-grading/modules/ContrastModule.js +82 -0
  194. package/examples/jsm/inspector/extensions/color-grading/modules/CurvesModule.js +109 -0
  195. package/examples/jsm/inspector/extensions/color-grading/modules/ExposureHueModule.js +110 -0
  196. package/examples/jsm/inspector/extensions/color-grading/modules/ExposureModule.js +73 -0
  197. package/examples/jsm/inspector/extensions/color-grading/modules/HueModule.js +78 -0
  198. package/examples/jsm/inspector/extensions/color-grading/modules/ImportedCubeModule.js +89 -0
  199. package/examples/jsm/inspector/extensions/color-grading/modules/Module.js +285 -0
  200. package/examples/jsm/inspector/extensions/color-grading/modules/OutputModule.js +101 -0
  201. package/examples/jsm/inspector/extensions/color-grading/modules/RendererModule.js +225 -0
  202. package/examples/jsm/inspector/extensions/color-grading/modules/SatVibranceModule.js +102 -0
  203. package/examples/jsm/inspector/extensions/color-grading/modules/SaturationModule.js +76 -0
  204. package/examples/jsm/inspector/extensions/color-grading/modules/VibranceModule.js +76 -0
  205. package/examples/jsm/inspector/extensions/color-grading/modules/WhiteBalanceModule.js +86 -0
  206. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.d.ts +20 -0
  207. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +911 -0
  208. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.d.ts +11 -0
  209. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +282 -0
  210. package/examples/jsm/inspector/tabs/Console.js +420 -0
  211. package/examples/jsm/inspector/tabs/Memory.js +134 -0
  212. package/examples/jsm/inspector/tabs/Parameters.d.ts +122 -0
  213. package/examples/jsm/inspector/tabs/Parameters.js +440 -0
  214. package/examples/jsm/inspector/tabs/Performance.js +283 -0
  215. package/examples/jsm/inspector/tabs/Settings.js +310 -0
  216. package/examples/jsm/inspector/tabs/Timeline.js +1748 -0
  217. package/examples/jsm/inspector/tabs/Viewer.js +1374 -0
  218. package/examples/jsm/inspector/ui/Graph.js +232 -0
  219. package/examples/jsm/inspector/ui/Item.d.ts +5 -0
  220. package/examples/jsm/inspector/ui/Item.js +249 -0
  221. package/examples/jsm/inspector/ui/List.js +81 -0
  222. package/examples/jsm/inspector/ui/Profiler.js +2273 -0
  223. package/examples/jsm/inspector/ui/Style.js +2300 -0
  224. package/examples/jsm/inspector/ui/Tab.d.ts +9 -0
  225. package/examples/jsm/inspector/ui/Tab.js +269 -0
  226. package/examples/jsm/inspector/ui/Values.d.ts +103 -0
  227. package/examples/jsm/inspector/ui/Values.js +553 -0
  228. package/examples/jsm/inspector/ui/utils.js +189 -0
  229. package/examples/jsm/interaction/InteractionManager.d.ts +18 -0
  230. package/examples/jsm/interaction/InteractionManager.js +226 -0
  231. package/examples/jsm/interactive/HTMLMesh.d.ts +13 -0
  232. package/examples/jsm/interactive/HTMLMesh.js +617 -0
  233. package/examples/jsm/interactive/InteractiveGroup.d.ts +28 -0
  234. package/examples/jsm/interactive/InteractiveGroup.js +224 -0
  235. package/examples/jsm/interactive/SelectionBox.d.ts +16 -0
  236. package/examples/jsm/interactive/SelectionBox.js +324 -0
  237. package/examples/jsm/interactive/SelectionHelper.d.ts +17 -0
  238. package/examples/jsm/interactive/SelectionHelper.js +150 -0
  239. package/examples/jsm/libs/basis/README.md +45 -0
  240. package/examples/jsm/libs/basis/basis_transcoder.js +19 -0
  241. package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  242. package/examples/jsm/libs/chevrotain.module.min.js +141 -0
  243. package/examples/jsm/libs/demuxer_mp4.js +109 -0
  244. package/examples/jsm/libs/draco/README.md +31 -0
  245. package/examples/jsm/libs/draco/draco_decoder.js +34 -0
  246. package/examples/jsm/libs/draco/draco_decoder.wasm +0 -0
  247. package/examples/jsm/libs/draco/draco_wasm_wrapper.js +117 -0
  248. package/examples/jsm/libs/draco/gltf/draco_decoder.js +33 -0
  249. package/examples/jsm/libs/draco/gltf/draco_decoder.wasm +0 -0
  250. package/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -0
  251. package/examples/jsm/libs/fflate.module.d.ts +1 -0
  252. package/examples/jsm/libs/fflate.module.js +2672 -0
  253. package/examples/jsm/libs/ktx-parse.module.js +1 -0
  254. package/examples/jsm/libs/lil-gui.module.min.d.ts +608 -0
  255. package/examples/jsm/libs/lil-gui.module.min.js +8 -0
  256. package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
  257. package/examples/jsm/libs/meshopt_decoder.module.d.ts +1 -0
  258. package/examples/jsm/libs/meshopt_decoder.module.js +196 -0
  259. package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
  260. package/examples/jsm/libs/mikktspace.module.d.ts +19 -0
  261. package/examples/jsm/libs/mikktspace.module.js +153 -0
  262. package/examples/jsm/libs/motion-controllers.module.js +397 -0
  263. package/examples/jsm/libs/potpack.module.js +125 -0
  264. package/examples/jsm/libs/stats.module.d.ts +3 -0
  265. package/examples/jsm/libs/stats.module.js +167 -0
  266. package/examples/jsm/libs/surfaceNet.js +201 -0
  267. package/examples/jsm/libs/tween.module.d.ts +2 -0
  268. package/examples/jsm/libs/tween.module.js +876 -0
  269. package/examples/jsm/libs/utif.module.js +1665 -0
  270. package/examples/jsm/libs/zstddec.module.d.ts +5 -0
  271. package/examples/jsm/libs/zstddec.module.js +1 -0
  272. package/examples/jsm/lighting/ClusteredLighting.d.ts +45 -0
  273. package/examples/jsm/lighting/ClusteredLighting.js +55 -0
  274. package/examples/jsm/lighting/DynamicLighting.d.ts +16 -0
  275. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  276. package/examples/jsm/lighting/LightProbeGrid.d.ts +177 -0
  277. package/examples/jsm/lighting/LightProbeGrid.js +820 -0
  278. package/examples/jsm/lighting/LightProbeGridUtils.js +107 -0
  279. package/examples/jsm/lighting/LightProbeGridWebGL.d.ts +178 -0
  280. package/examples/jsm/lighting/LightProbeGridWebGL.js +830 -0
  281. package/examples/jsm/lighting/vxgi/VXGIConeTracer.js +194 -0
  282. package/examples/jsm/lighting/vxgi/VXGINode.d.ts +100 -0
  283. package/examples/jsm/lighting/vxgi/VXGINode.js +660 -0
  284. package/examples/jsm/lighting/vxgi/VXGISceneCollector.js +478 -0
  285. package/examples/jsm/lighting/vxgi/VXGIVolume.d.ts +245 -0
  286. package/examples/jsm/lighting/vxgi/VXGIVolume.js +1430 -0
  287. package/examples/jsm/lights/LightProbeGenerator.d.ts +16 -0
  288. package/examples/jsm/lights/LightProbeGenerator.js +337 -0
  289. package/examples/jsm/lights/RectAreaLightTexturesLib.d.ts +7 -0
  290. package/examples/jsm/lights/RectAreaLightTexturesLib.js +127 -0
  291. package/examples/jsm/lights/RectAreaLightUniformsLib.d.ts +5 -0
  292. package/examples/jsm/lights/RectAreaLightUniformsLib.js +40 -0
  293. package/examples/jsm/lights/SunLight.d.ts +53 -0
  294. package/examples/jsm/lights/SunLight.js +95 -0
  295. package/examples/jsm/lights/SunLightNode.d.ts +25 -0
  296. package/examples/jsm/lights/SunLightNode.js +56 -0
  297. package/examples/jsm/lights/SunLightShadow.d.ts +57 -0
  298. package/examples/jsm/lights/SunLightShadow.js +319 -0
  299. package/examples/jsm/lights/SunShadowNode.d.ts +53 -0
  300. package/examples/jsm/lights/SunShadowNode.js +312 -0
  301. package/examples/jsm/lines/Line2.d.ts +25 -0
  302. package/examples/jsm/lines/Line2.js +56 -0
  303. package/examples/jsm/lines/LineGeometry.d.ts +27 -0
  304. package/examples/jsm/lines/LineGeometry.js +157 -0
  305. package/examples/jsm/lines/LineMaterial.d.ts +82 -0
  306. package/examples/jsm/lines/LineMaterial.js +726 -0
  307. package/examples/jsm/lines/LineSegments2.d.ts +39 -0
  308. package/examples/jsm/lines/LineSegments2.js +434 -0
  309. package/examples/jsm/lines/LineSegmentsGeometry.d.ts +53 -0
  310. package/examples/jsm/lines/LineSegmentsGeometry.js +298 -0
  311. package/examples/jsm/lines/Wireframe.d.ts +14 -0
  312. package/examples/jsm/lines/Wireframe.js +108 -0
  313. package/examples/jsm/lines/WireframeGeometry2.d.ts +8 -0
  314. package/examples/jsm/lines/WireframeGeometry2.js +49 -0
  315. package/examples/jsm/lines/webgpu/Line2.d.ts +14 -0
  316. package/examples/jsm/lines/webgpu/Line2.js +46 -0
  317. package/examples/jsm/lines/webgpu/LineSegments2.d.ts +15 -0
  318. package/examples/jsm/lines/webgpu/LineSegments2.js +419 -0
  319. package/examples/jsm/lines/webgpu/Wireframe.d.ts +13 -0
  320. package/examples/jsm/lines/webgpu/Wireframe.js +86 -0
  321. package/examples/jsm/loaders/3DMLoader.d.ts +12 -0
  322. package/examples/jsm/loaders/3DMLoader.js +1937 -0
  323. package/examples/jsm/loaders/3MFLoader.d.ts +9 -0
  324. package/examples/jsm/loaders/3MFLoader.js +1822 -0
  325. package/examples/jsm/loaders/AMFLoader.d.ts +7 -0
  326. package/examples/jsm/loaders/AMFLoader.js +541 -0
  327. package/examples/jsm/loaders/BVHLoader.d.ts +14 -0
  328. package/examples/jsm/loaders/BVHLoader.js +484 -0
  329. package/examples/jsm/loaders/ColladaLoader.d.ts +35 -0
  330. package/examples/jsm/loaders/ColladaLoader.js +153 -0
  331. package/examples/jsm/loaders/DDSLoader.d.ts +22 -0
  332. package/examples/jsm/loaders/DDSLoader.js +385 -0
  333. package/examples/jsm/loaders/DRACOLoader.d.ts +39 -0
  334. package/examples/jsm/loaders/DRACOLoader.js +772 -0
  335. package/examples/jsm/loaders/EXRLoader.d.ts +24 -0
  336. package/examples/jsm/loaders/EXRLoader.js +3395 -0
  337. package/examples/jsm/loaders/FBXLoader.d.ts +8 -0
  338. package/examples/jsm/loaders/FBXLoader.js +4656 -0
  339. package/examples/jsm/loaders/FontLoader.d.ts +41 -0
  340. package/examples/jsm/loaders/FontLoader.js +260 -0
  341. package/examples/jsm/loaders/GCodeLoader.d.ts +8 -0
  342. package/examples/jsm/loaders/GCodeLoader.js +318 -0
  343. package/examples/jsm/loaders/GLTFGaussianSplatLoaderExtension.d.ts +14 -0
  344. package/examples/jsm/loaders/GLTFGaussianSplatLoaderExtension.js +330 -0
  345. package/examples/jsm/loaders/GLTFLoader.d.ts +153 -0
  346. package/examples/jsm/loaders/GLTFLoader.js +4925 -0
  347. package/examples/jsm/loaders/GaussianSplatPLYLoader.d.ts +9 -0
  348. package/examples/jsm/loaders/GaussianSplatPLYLoader.js +386 -0
  349. package/examples/jsm/loaders/HDRCubeTextureLoader.d.ts +18 -0
  350. package/examples/jsm/loaders/HDRCubeTextureLoader.js +164 -0
  351. package/examples/jsm/loaders/HDRLoader.d.ts +12 -0
  352. package/examples/jsm/loaders/HDRLoader.js +463 -0
  353. package/examples/jsm/loaders/IESLoader.d.ts +5 -0
  354. package/examples/jsm/loaders/IESLoader.js +379 -0
  355. package/examples/jsm/loaders/KMZLoader.d.ts +9 -0
  356. package/examples/jsm/loaders/KMZLoader.js +163 -0
  357. package/examples/jsm/loaders/KSPLATLoader.d.ts +9 -0
  358. package/examples/jsm/loaders/KSPLATLoader.js +463 -0
  359. package/examples/jsm/loaders/KTX2Loader.d.ts +58 -0
  360. package/examples/jsm/loaders/KTX2Loader.js +1276 -0
  361. package/examples/jsm/loaders/KTXLoader.d.ts +22 -0
  362. package/examples/jsm/loaders/KTXLoader.js +197 -0
  363. package/examples/jsm/loaders/LDrawLoader.d.ts +38 -0
  364. package/examples/jsm/loaders/LDrawLoader.js +2510 -0
  365. package/examples/jsm/loaders/LUT3dlLoader.d.ts +39 -0
  366. package/examples/jsm/loaders/LUT3dlLoader.js +205 -0
  367. package/examples/jsm/loaders/LUTCubeLoader.d.ts +42 -0
  368. package/examples/jsm/loaders/LUTCubeLoader.js +190 -0
  369. package/examples/jsm/loaders/LUTImageLoader.d.ts +18 -0
  370. package/examples/jsm/loaders/LUTImageLoader.js +190 -0
  371. package/examples/jsm/loaders/LWOLoader.d.ts +25 -0
  372. package/examples/jsm/loaders/LWOLoader.js +1051 -0
  373. package/examples/jsm/loaders/MD2Loader.d.ts +7 -0
  374. package/examples/jsm/loaders/MD2Loader.js +435 -0
  375. package/examples/jsm/loaders/MDDLoader.d.ts +12 -0
  376. package/examples/jsm/loaders/MDDLoader.js +147 -0
  377. package/examples/jsm/loaders/MTLLoader.d.ts +95 -0
  378. package/examples/jsm/loaders/MTLLoader.js +593 -0
  379. package/examples/jsm/loaders/MaterialXLoader.d.ts +70 -0
  380. package/examples/jsm/loaders/MaterialXLoader.js +227 -0
  381. package/examples/jsm/loaders/NRRDLoader.d.ts +15 -0
  382. package/examples/jsm/loaders/NRRDLoader.js +718 -0
  383. package/examples/jsm/loaders/OBJLoader.d.ts +10 -0
  384. package/examples/jsm/loaders/OBJLoader.js +955 -0
  385. package/examples/jsm/loaders/PCDLoader.d.ts +8 -0
  386. package/examples/jsm/loaders/PCDLoader.js +620 -0
  387. package/examples/jsm/loaders/PDBLoader.d.ts +15 -0
  388. package/examples/jsm/loaders/PDBLoader.js +272 -0
  389. package/examples/jsm/loaders/PLYLoader.d.ts +11 -0
  390. package/examples/jsm/loaders/PLYLoader.js +968 -0
  391. package/examples/jsm/loaders/PVRLoader.d.ts +16 -0
  392. package/examples/jsm/loaders/PVRLoader.js +270 -0
  393. package/examples/jsm/loaders/RGBELoader.d.ts +7 -0
  394. package/examples/jsm/loaders/RGBELoader.js +18 -0
  395. package/examples/jsm/loaders/SPLATLoader.d.ts +9 -0
  396. package/examples/jsm/loaders/SPLATLoader.js +139 -0
  397. package/examples/jsm/loaders/SPZLoader.d.ts +18 -0
  398. package/examples/jsm/loaders/SPZLoader.js +561 -0
  399. package/examples/jsm/loaders/STLLoader.d.ts +7 -0
  400. package/examples/jsm/loaders/STLLoader.js +421 -0
  401. package/examples/jsm/loaders/SVGLoader.d.ts +67 -0
  402. package/examples/jsm/loaders/SVGLoader.js +3319 -0
  403. package/examples/jsm/loaders/TDSLoader.d.ts +35 -0
  404. package/examples/jsm/loaders/TDSLoader.js +1142 -0
  405. package/examples/jsm/loaders/TGALoader.d.ts +7 -0
  406. package/examples/jsm/loaders/TGALoader.js +538 -0
  407. package/examples/jsm/loaders/TIFFLoader.d.ts +7 -0
  408. package/examples/jsm/loaders/TIFFLoader.js +59 -0
  409. package/examples/jsm/loaders/TTFLoader.d.ts +10 -0
  410. package/examples/jsm/loaders/TTFLoader.js +261 -0
  411. package/examples/jsm/loaders/USDLoader.d.ts +14 -0
  412. package/examples/jsm/loaders/USDLoader.js +303 -0
  413. package/examples/jsm/loaders/USDZLoader.d.ts +14 -0
  414. package/examples/jsm/loaders/USDZLoader.js +16 -0
  415. package/examples/jsm/loaders/UltraHDRLoader.d.ts +28 -0
  416. package/examples/jsm/loaders/UltraHDRLoader.js +755 -0
  417. package/examples/jsm/loaders/VOXLoader.d.ts +38 -0
  418. package/examples/jsm/loaders/VOXLoader.js +919 -0
  419. package/examples/jsm/loaders/VRMLLoader.d.ts +7 -0
  420. package/examples/jsm/loaders/VRMLLoader.js +3646 -0
  421. package/examples/jsm/loaders/VTKLoader.d.ts +13 -0
  422. package/examples/jsm/loaders/VTKLoader.js +1293 -0
  423. package/examples/jsm/loaders/XYZLoader.d.ts +7 -0
  424. package/examples/jsm/loaders/XYZLoader.js +143 -0
  425. package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
  426. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  427. package/examples/jsm/loaders/lwo/IFFParser.js +1217 -0
  428. package/examples/jsm/loaders/lwo/LWO2Parser.js +414 -0
  429. package/examples/jsm/loaders/lwo/LWO3Parser.js +373 -0
  430. package/examples/jsm/loaders/materialx/MaterialXArchive.js +108 -0
  431. package/examples/jsm/loaders/materialx/MaterialXDocument.js +878 -0
  432. package/examples/jsm/loaders/materialx/MaterialXHextile.d.ts +24 -0
  433. package/examples/jsm/loaders/materialx/MaterialXHextile.js +183 -0
  434. package/examples/jsm/loaders/materialx/MaterialXInterfaceValidation.d.ts +8 -0
  435. package/examples/jsm/loaders/materialx/MaterialXInterfaceValidation.js +376 -0
  436. package/examples/jsm/loaders/materialx/MaterialXLog.d.ts +33 -0
  437. package/examples/jsm/loaders/materialx/MaterialXLog.js +75 -0
  438. package/examples/jsm/loaders/materialx/MaterialXNodeInterfaceRegistry.js +4 -0
  439. package/examples/jsm/loaders/materialx/MaterialXNodeLibrary.js +1021 -0
  440. package/examples/jsm/loaders/materialx/MaterialXSurfaceMappings.js +661 -0
  441. package/examples/jsm/loaders/materialx/MaterialXUtils.js +57 -0
  442. package/examples/jsm/loaders/materialx/compile/MaterialXCompileRegistry.js +997 -0
  443. package/examples/jsm/loaders/materialx/parse/MaterialXParser.js +28 -0
  444. package/examples/jsm/loaders/usd/USDAParser.js +914 -0
  445. package/examples/jsm/loaders/usd/USDCParser.js +1875 -0
  446. package/examples/jsm/loaders/usd/USDComposer.js +4665 -0
  447. package/examples/jsm/materials/LDrawConditionalLineMaterial.d.ts +9 -0
  448. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +183 -0
  449. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.d.ts +9 -0
  450. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +154 -0
  451. package/examples/jsm/materials/WoodNodeMaterial.d.ts +75 -0
  452. package/examples/jsm/materials/WoodNodeMaterial.js +431 -0
  453. package/examples/jsm/math/Capsule.d.ts +26 -0
  454. package/examples/jsm/math/Capsule.js +159 -0
  455. package/examples/jsm/math/ColorConverter.d.ts +19 -0
  456. package/examples/jsm/math/ColorConverter.js +58 -0
  457. package/examples/jsm/math/ColorSpaces.d.ts +15 -0
  458. package/examples/jsm/math/ColorSpaces.js +147 -0
  459. package/examples/jsm/math/ConvexHull.d.ts +89 -0
  460. package/examples/jsm/math/ConvexHull.js +1695 -0
  461. package/examples/jsm/math/ImprovedNoise.d.ts +4 -0
  462. package/examples/jsm/math/ImprovedNoise.js +88 -0
  463. package/examples/jsm/math/Lut.d.ts +27 -0
  464. package/examples/jsm/math/Lut.js +317 -0
  465. package/examples/jsm/math/MeshSurfaceSampler.d.ts +21 -0
  466. package/examples/jsm/math/MeshSurfaceSampler.js +315 -0
  467. package/examples/jsm/math/OBB.d.ts +24 -0
  468. package/examples/jsm/math/OBB.js +535 -0
  469. package/examples/jsm/math/Octree.d.ts +54 -0
  470. package/examples/jsm/math/Octree.js +822 -0
  471. package/examples/jsm/math/SimplexNoise.d.ts +9 -0
  472. package/examples/jsm/math/SimplexNoise.js +470 -0
  473. package/examples/jsm/misc/ConvexObjectBreaker.d.ts +25 -0
  474. package/examples/jsm/misc/ConvexObjectBreaker.js +539 -0
  475. package/examples/jsm/misc/GPUComputationRenderer.d.ts +55 -0
  476. package/examples/jsm/misc/GPUComputationRenderer.js +508 -0
  477. package/examples/jsm/misc/Gyroscope.d.ts +5 -0
  478. package/examples/jsm/misc/Gyroscope.js +78 -0
  479. package/examples/jsm/misc/MD2Character.d.ts +33 -0
  480. package/examples/jsm/misc/MD2Character.js +391 -0
  481. package/examples/jsm/misc/MD2CharacterComplex.d.ts +55 -0
  482. package/examples/jsm/misc/MD2CharacterComplex.js +740 -0
  483. package/examples/jsm/misc/MorphAnimMesh.d.ts +13 -0
  484. package/examples/jsm/misc/MorphAnimMesh.js +119 -0
  485. package/examples/jsm/misc/MorphBlendMesh.d.ts +21 -0
  486. package/examples/jsm/misc/MorphBlendMesh.js +425 -0
  487. package/examples/jsm/misc/ProgressiveLightMap.d.ts +58 -0
  488. package/examples/jsm/misc/ProgressiveLightMap.js +370 -0
  489. package/examples/jsm/misc/ProgressiveLightMapGPU.d.ts +27 -0
  490. package/examples/jsm/misc/ProgressiveLightMapGPU.js +322 -0
  491. package/examples/jsm/misc/RollerCoaster.d.ts +26 -0
  492. package/examples/jsm/misc/RollerCoaster.js +661 -0
  493. package/examples/jsm/misc/SculptGL.LICENSE.txt +21 -0
  494. package/examples/jsm/misc/Sculptor.d.ts +259 -0
  495. package/examples/jsm/misc/Sculptor.js +1679 -0
  496. package/examples/jsm/misc/SculptorMesh.js +1504 -0
  497. package/examples/jsm/misc/SculptorTools.js +1180 -0
  498. package/examples/jsm/misc/SculptorUtils.js +345 -0
  499. package/examples/jsm/misc/TileCreasedNormalsPlugin.d.ts +49 -0
  500. package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
  501. package/examples/jsm/misc/TubePainter.d.ts +10 -0
  502. package/examples/jsm/misc/TubePainter.js +611 -0
  503. package/examples/jsm/misc/Volume.d.ts +37 -0
  504. package/examples/jsm/misc/Volume.js +520 -0
  505. package/examples/jsm/misc/VolumeSlice.d.ts +28 -0
  506. package/examples/jsm/misc/VolumeSlice.js +275 -0
  507. package/examples/jsm/modifiers/CurveModifier.d.ts +41 -0
  508. package/examples/jsm/modifiers/CurveModifier.js +374 -0
  509. package/examples/jsm/modifiers/CurveModifierGPU.d.ts +31 -0
  510. package/examples/jsm/modifiers/CurveModifierGPU.js +256 -0
  511. package/examples/jsm/modifiers/EdgeSplitModifier.d.ts +26 -0
  512. package/examples/jsm/modifiers/EdgeSplitModifier.js +299 -0
  513. package/examples/jsm/modifiers/SimplifyModifier.d.ts +6 -0
  514. package/examples/jsm/modifiers/SimplifyModifier.js +139 -0
  515. package/examples/jsm/modifiers/TessellateModifier.d.ts +9 -0
  516. package/examples/jsm/modifiers/TessellateModifier.js +340 -0
  517. package/examples/jsm/objects/GaussianSplat.d.ts +35 -0
  518. package/examples/jsm/objects/GaussianSplat.js +1039 -0
  519. package/examples/jsm/objects/GroundedSkybox.d.ts +5 -0
  520. package/examples/jsm/objects/GroundedSkybox.js +69 -0
  521. package/examples/jsm/objects/Lensflare.d.ts +21 -0
  522. package/examples/jsm/objects/Lensflare.js +489 -0
  523. package/examples/jsm/objects/LensflareMesh.d.ts +21 -0
  524. package/examples/jsm/objects/LensflareMesh.js +376 -0
  525. package/examples/jsm/objects/MarchingCubes.d.ts +76 -0
  526. package/examples/jsm/objects/MarchingCubes.js +1261 -0
  527. package/examples/jsm/objects/Reflector.d.ts +54 -0
  528. package/examples/jsm/objects/Reflector.js +385 -0
  529. package/examples/jsm/objects/ReflectorForSSRPass.d.ts +62 -0
  530. package/examples/jsm/objects/ReflectorForSSRPass.js +393 -0
  531. package/examples/jsm/objects/Refractor.d.ts +21 -0
  532. package/examples/jsm/objects/Refractor.js +389 -0
  533. package/examples/jsm/objects/ShadowMesh.d.ts +10 -0
  534. package/examples/jsm/objects/ShadowMesh.js +130 -0
  535. package/examples/jsm/objects/Sky.d.ts +28 -0
  536. package/examples/jsm/objects/Sky.js +342 -0
  537. package/examples/jsm/objects/SkyMesh.d.ts +26 -0
  538. package/examples/jsm/objects/SkyMesh.js +396 -0
  539. package/examples/jsm/objects/Water.d.ts +22 -0
  540. package/examples/jsm/objects/Water.js +374 -0
  541. package/examples/jsm/objects/Water2.d.ts +21 -0
  542. package/examples/jsm/objects/Water2.js +403 -0
  543. package/examples/jsm/objects/Water2Mesh.d.ts +53 -0
  544. package/examples/jsm/objects/Water2Mesh.js +199 -0
  545. package/examples/jsm/objects/WaterMesh.d.ts +40 -0
  546. package/examples/jsm/objects/WaterMesh.js +194 -0
  547. package/examples/jsm/offscreen/jank.js +45 -0
  548. package/examples/jsm/offscreen/offscreen.js +8 -0
  549. package/examples/jsm/offscreen/scene.js +86 -0
  550. package/examples/jsm/physics/AmmoPhysics.d.ts +9 -0
  551. package/examples/jsm/physics/AmmoPhysics.js +366 -0
  552. package/examples/jsm/physics/JoltPhysics.d.ts +10 -0
  553. package/examples/jsm/physics/JoltPhysics.js +334 -0
  554. package/examples/jsm/physics/RapierPhysics.d.ts +26 -0
  555. package/examples/jsm/physics/RapierPhysics.js +461 -0
  556. package/examples/jsm/postprocessing/AfterimagePass.d.ts +17 -0
  557. package/examples/jsm/postprocessing/AfterimagePass.js +187 -0
  558. package/examples/jsm/postprocessing/BloomPass.d.ts +14 -0
  559. package/examples/jsm/postprocessing/BloomPass.js +274 -0
  560. package/examples/jsm/postprocessing/BokehPass.d.ts +23 -0
  561. package/examples/jsm/postprocessing/BokehPass.js +218 -0
  562. package/examples/jsm/postprocessing/ClearPass.d.ts +9 -0
  563. package/examples/jsm/postprocessing/ClearPass.js +97 -0
  564. package/examples/jsm/postprocessing/CubeTexturePass.d.ts +14 -0
  565. package/examples/jsm/postprocessing/CubeTexturePass.js +146 -0
  566. package/examples/jsm/postprocessing/DotScreenPass.d.ts +10 -0
  567. package/examples/jsm/postprocessing/DotScreenPass.js +114 -0
  568. package/examples/jsm/postprocessing/EffectComposer.d.ts +30 -0
  569. package/examples/jsm/postprocessing/EffectComposer.js +365 -0
  570. package/examples/jsm/postprocessing/FXAAPass.d.ts +7 -0
  571. package/examples/jsm/postprocessing/FXAAPass.js +40 -0
  572. package/examples/jsm/postprocessing/FilmPass.d.ts +10 -0
  573. package/examples/jsm/postprocessing/FilmPass.js +113 -0
  574. package/examples/jsm/postprocessing/GTAOPass.d.ts +121 -0
  575. package/examples/jsm/postprocessing/GTAOPass.js +727 -0
  576. package/examples/jsm/postprocessing/GlitchPass.d.ts +16 -0
  577. package/examples/jsm/postprocessing/GlitchPass.js +177 -0
  578. package/examples/jsm/postprocessing/HalftonePass.d.ts +37 -0
  579. package/examples/jsm/postprocessing/HalftonePass.js +134 -0
  580. package/examples/jsm/postprocessing/LUTPass.d.ts +13 -0
  581. package/examples/jsm/postprocessing/LUTPass.js +138 -0
  582. package/examples/jsm/postprocessing/MaskPass.d.ts +14 -0
  583. package/examples/jsm/postprocessing/MaskPass.js +195 -0
  584. package/examples/jsm/postprocessing/OutlinePass.d.ts +64 -0
  585. package/examples/jsm/postprocessing/OutlinePass.js +776 -0
  586. package/examples/jsm/postprocessing/OutputPass.d.ts +14 -0
  587. package/examples/jsm/postprocessing/OutputPass.js +148 -0
  588. package/examples/jsm/postprocessing/Pass.d.ts +31 -0
  589. package/examples/jsm/postprocessing/Pass.js +191 -0
  590. package/examples/jsm/postprocessing/RenderPass.d.ts +28 -0
  591. package/examples/jsm/postprocessing/RenderPass.js +193 -0
  592. package/examples/jsm/postprocessing/RenderPixelatedPass.d.ts +30 -0
  593. package/examples/jsm/postprocessing/RenderPixelatedPass.js +314 -0
  594. package/examples/jsm/postprocessing/RenderTransitionPass.d.ts +33 -0
  595. package/examples/jsm/postprocessing/RenderTransitionPass.js +267 -0
  596. package/examples/jsm/postprocessing/SAOPass.d.ts +70 -0
  597. package/examples/jsm/postprocessing/SAOPass.js +407 -0
  598. package/examples/jsm/postprocessing/SMAAPass.d.ts +21 -0
  599. package/examples/jsm/postprocessing/SMAAPass.js +230 -0
  600. package/examples/jsm/postprocessing/SSAARenderPass.d.ts +26 -0
  601. package/examples/jsm/postprocessing/SSAARenderPass.js +313 -0
  602. package/examples/jsm/postprocessing/SSAOPass.d.ts +68 -0
  603. package/examples/jsm/postprocessing/SSAOPass.js +527 -0
  604. package/examples/jsm/postprocessing/SSRPass.d.ts +99 -0
  605. package/examples/jsm/postprocessing/SSRPass.js +858 -0
  606. package/examples/jsm/postprocessing/SavePass.d.ts +12 -0
  607. package/examples/jsm/postprocessing/SavePass.js +132 -0
  608. package/examples/jsm/postprocessing/ShaderPass.d.ts +11 -0
  609. package/examples/jsm/postprocessing/ShaderPass.js +135 -0
  610. package/examples/jsm/postprocessing/TAARenderPass.d.ts +8 -0
  611. package/examples/jsm/postprocessing/TAARenderPass.js +243 -0
  612. package/examples/jsm/postprocessing/TexturePass.d.ts +12 -0
  613. package/examples/jsm/postprocessing/TexturePass.js +131 -0
  614. package/examples/jsm/postprocessing/UnrealBloomPass.d.ts +26 -0
  615. package/examples/jsm/postprocessing/UnrealBloomPass.js +541 -0
  616. package/examples/jsm/renderers/CSS2DRenderer.d.ts +29 -0
  617. package/examples/jsm/renderers/CSS2DRenderer.js +352 -0
  618. package/examples/jsm/renderers/CSS3DRenderer.d.ts +26 -0
  619. package/examples/jsm/renderers/CSS3DRenderer.js +454 -0
  620. package/examples/jsm/renderers/Projector.d.ts +60 -0
  621. package/examples/jsm/renderers/Projector.js +1154 -0
  622. package/examples/jsm/renderers/SVGRenderer.d.ts +26 -0
  623. package/examples/jsm/renderers/SVGRenderer.js +799 -0
  624. package/examples/jsm/shaders/ACESFilmicToneMappingShader.d.ts +11 -0
  625. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +96 -0
  626. package/examples/jsm/shaders/AfterimageShader.d.ts +12 -0
  627. package/examples/jsm/shaders/AfterimageShader.js +63 -0
  628. package/examples/jsm/shaders/BasicShader.d.ts +6 -0
  629. package/examples/jsm/shaders/BasicShader.js +36 -0
  630. package/examples/jsm/shaders/BleachBypassShader.d.ts +10 -0
  631. package/examples/jsm/shaders/BleachBypassShader.js +68 -0
  632. package/examples/jsm/shaders/BlendShader.d.ts +13 -0
  633. package/examples/jsm/shaders/BlendShader.js +56 -0
  634. package/examples/jsm/shaders/BokehShader.d.ts +21 -0
  635. package/examples/jsm/shaders/BokehShader.js +151 -0
  636. package/examples/jsm/shaders/BokehShader2.d.ts +44 -0
  637. package/examples/jsm/shaders/BokehShader2.js +404 -0
  638. package/examples/jsm/shaders/BrightnessContrastShader.d.ts +12 -0
  639. package/examples/jsm/shaders/BrightnessContrastShader.js +62 -0
  640. package/examples/jsm/shaders/ColorCorrectionShader.d.ts +13 -0
  641. package/examples/jsm/shaders/ColorCorrectionShader.js +59 -0
  642. package/examples/jsm/shaders/ColorifyShader.d.ts +10 -0
  643. package/examples/jsm/shaders/ColorifyShader.js +57 -0
  644. package/examples/jsm/shaders/ConvolutionShader.d.ts +17 -0
  645. package/examples/jsm/shaders/ConvolutionShader.js +74 -0
  646. package/examples/jsm/shaders/CopyShader.d.ts +10 -0
  647. package/examples/jsm/shaders/CopyShader.js +52 -0
  648. package/examples/jsm/shaders/DOFMipMapShader.d.ts +13 -0
  649. package/examples/jsm/shaders/DOFMipMapShader.js +63 -0
  650. package/examples/jsm/shaders/DepthLimitedBlurShader.d.ts +28 -0
  651. package/examples/jsm/shaders/DepthLimitedBlurShader.js +183 -0
  652. package/examples/jsm/shaders/DigitalGlitch.d.ts +19 -0
  653. package/examples/jsm/shaders/DigitalGlitch.js +104 -0
  654. package/examples/jsm/shaders/DotScreenShader.d.ts +13 -0
  655. package/examples/jsm/shaders/DotScreenShader.js +75 -0
  656. package/examples/jsm/shaders/ExposureShader.d.ts +11 -0
  657. package/examples/jsm/shaders/ExposureShader.js +51 -0
  658. package/examples/jsm/shaders/FXAAShader.d.ts +11 -0
  659. package/examples/jsm/shaders/FXAAShader.js +298 -0
  660. package/examples/jsm/shaders/FilmShader.d.ts +12 -0
  661. package/examples/jsm/shaders/FilmShader.js +73 -0
  662. package/examples/jsm/shaders/FocusShader.d.ts +14 -0
  663. package/examples/jsm/shaders/FocusShader.js +94 -0
  664. package/examples/jsm/shaders/FreiChenShader.d.ts +11 -0
  665. package/examples/jsm/shaders/FreiChenShader.js +103 -0
  666. package/examples/jsm/shaders/GTAOShader.d.ts +59 -0
  667. package/examples/jsm/shaders/GTAOShader.js +434 -0
  668. package/examples/jsm/shaders/GammaCorrectionShader.d.ts +9 -0
  669. package/examples/jsm/shaders/GammaCorrectionShader.js +52 -0
  670. package/examples/jsm/shaders/HalftoneShader.d.ts +22 -0
  671. package/examples/jsm/shaders/HalftoneShader.js +332 -0
  672. package/examples/jsm/shaders/HorizontalBlurShader.d.ts +10 -0
  673. package/examples/jsm/shaders/HorizontalBlurShader.js +68 -0
  674. package/examples/jsm/shaders/HorizontalTiltShiftShader.d.ts +12 -0
  675. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +70 -0
  676. package/examples/jsm/shaders/HueSaturationShader.d.ts +12 -0
  677. package/examples/jsm/shaders/HueSaturationShader.js +74 -0
  678. package/examples/jsm/shaders/KaleidoShader.d.ts +12 -0
  679. package/examples/jsm/shaders/KaleidoShader.js +65 -0
  680. package/examples/jsm/shaders/LuminosityHighPassShader.d.ts +15 -0
  681. package/examples/jsm/shaders/LuminosityHighPassShader.js +68 -0
  682. package/examples/jsm/shaders/LuminosityShader.d.ts +10 -0
  683. package/examples/jsm/shaders/LuminosityShader.js +54 -0
  684. package/examples/jsm/shaders/MirrorShader.d.ts +11 -0
  685. package/examples/jsm/shaders/MirrorShader.js +62 -0
  686. package/examples/jsm/shaders/NormalMapShader.d.ts +13 -0
  687. package/examples/jsm/shaders/NormalMapShader.js +60 -0
  688. package/examples/jsm/shaders/OutputShader.d.ts +11 -0
  689. package/examples/jsm/shaders/OutputShader.js +103 -0
  690. package/examples/jsm/shaders/PoissonDenoiseShader.d.ts +28 -0
  691. package/examples/jsm/shaders/PoissonDenoiseShader.js +239 -0
  692. package/examples/jsm/shaders/RGBShiftShader.d.ts +11 -0
  693. package/examples/jsm/shaders/RGBShiftShader.js +61 -0
  694. package/examples/jsm/shaders/SAOShader.d.ts +29 -0
  695. package/examples/jsm/shaders/SAOShader.js +201 -0
  696. package/examples/jsm/shaders/SMAAShader.d.ts +43 -0
  697. package/examples/jsm/shaders/SMAAShader.js +489 -0
  698. package/examples/jsm/shaders/SSAOShader.d.ts +49 -0
  699. package/examples/jsm/shaders/SSAOShader.js +331 -0
  700. package/examples/jsm/shaders/SSRShader.d.ts +62 -0
  701. package/examples/jsm/shaders/SSRShader.js +396 -0
  702. package/examples/jsm/shaders/SepiaShader.d.ts +10 -0
  703. package/examples/jsm/shaders/SepiaShader.js +57 -0
  704. package/examples/jsm/shaders/SobelOperatorShader.d.ts +11 -0
  705. package/examples/jsm/shaders/SobelOperatorShader.js +98 -0
  706. package/examples/jsm/shaders/SubsurfaceScatteringShader.d.ts +38 -0
  707. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +95 -0
  708. package/examples/jsm/shaders/TechnicolorShader.d.ts +10 -0
  709. package/examples/jsm/shaders/TechnicolorShader.js +51 -0
  710. package/examples/jsm/shaders/ToonShader.d.ts +54 -0
  711. package/examples/jsm/shaders/ToonShader.js +349 -0
  712. package/examples/jsm/shaders/TriangleBlurShader.d.ts +11 -0
  713. package/examples/jsm/shaders/TriangleBlurShader.js +79 -0
  714. package/examples/jsm/shaders/UnpackDepthRGBAShader.d.ts +11 -0
  715. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +60 -0
  716. package/examples/jsm/shaders/VelocityShader.d.ts +16 -0
  717. package/examples/jsm/shaders/VelocityShader.js +137 -0
  718. package/examples/jsm/shaders/VerticalBlurShader.d.ts +10 -0
  719. package/examples/jsm/shaders/VerticalBlurShader.js +66 -0
  720. package/examples/jsm/shaders/VerticalTiltShiftShader.d.ts +12 -0
  721. package/examples/jsm/shaders/VerticalTiltShiftShader.js +70 -0
  722. package/examples/jsm/shaders/VignetteShader.d.ts +11 -0
  723. package/examples/jsm/shaders/VignetteShader.js +56 -0
  724. package/examples/jsm/shaders/VolumeShader.d.ts +14 -0
  725. package/examples/jsm/shaders/VolumeShader.js +285 -0
  726. package/examples/jsm/shaders/WaterRefractionShader.d.ts +14 -0
  727. package/examples/jsm/shaders/WaterRefractionShader.js +106 -0
  728. package/examples/jsm/textures/FlakesTexture.d.ts +3 -0
  729. package/examples/jsm/textures/FlakesTexture.js +54 -0
  730. package/examples/jsm/transpiler/AST.d.ts +293 -0
  731. package/examples/jsm/transpiler/AST.js +694 -0
  732. package/examples/jsm/transpiler/GLSLDecoder.d.ts +7 -0
  733. package/examples/jsm/transpiler/GLSLDecoder.js +1718 -0
  734. package/examples/jsm/transpiler/Linker.js +327 -0
  735. package/examples/jsm/transpiler/ShaderToyDecoder.d.ts +3 -0
  736. package/examples/jsm/transpiler/ShaderToyDecoder.js +51 -0
  737. package/examples/jsm/transpiler/TSLEncoder.d.ts +51 -0
  738. package/examples/jsm/transpiler/TSLEncoder.js +1055 -0
  739. package/examples/jsm/transpiler/Transpiler.d.ts +5 -0
  740. package/examples/jsm/transpiler/Transpiler.js +67 -0
  741. package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  742. package/examples/jsm/transpiler/WGSLEncoder.js +868 -0
  743. package/examples/jsm/tsl/WebGLNodesHandler.d.ts +17 -0
  744. package/examples/jsm/tsl/WebGLNodesHandler.js +595 -0
  745. package/examples/jsm/tsl/display/AfterImageNode.d.ts +15 -0
  746. package/examples/jsm/tsl/display/AfterImageNode.js +256 -0
  747. package/examples/jsm/tsl/display/AnaglyphPassNode.d.ts +42 -0
  748. package/examples/jsm/tsl/display/AnaglyphPassNode.js +550 -0
  749. package/examples/jsm/tsl/display/BilateralBlurNode.d.ts +27 -0
  750. package/examples/jsm/tsl/display/BilateralBlurNode.js +377 -0
  751. package/examples/jsm/tsl/display/BleachBypass.d.ts +3 -0
  752. package/examples/jsm/tsl/display/BleachBypass.js +33 -0
  753. package/examples/jsm/tsl/display/BloomNode.d.ts +44 -0
  754. package/examples/jsm/tsl/display/BloomNode.js +599 -0
  755. package/examples/jsm/tsl/display/CRT.d.ts +22 -0
  756. package/examples/jsm/tsl/display/CRT.js +150 -0
  757. package/examples/jsm/tsl/display/ChromaticAberrationNode.d.ts +19 -0
  758. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +174 -0
  759. package/examples/jsm/tsl/display/DenoiseNode.d.ts +26 -0
  760. package/examples/jsm/tsl/display/DenoiseNode.js +354 -0
  761. package/examples/jsm/tsl/display/DepthOfFieldNode.d.ts +28 -0
  762. package/examples/jsm/tsl/display/DepthOfFieldNode.js +572 -0
  763. package/examples/jsm/tsl/display/DotScreenNode.d.ts +17 -0
  764. package/examples/jsm/tsl/display/DotScreenNode.js +104 -0
  765. package/examples/jsm/tsl/display/FSR1Node.d.ts +17 -0
  766. package/examples/jsm/tsl/display/FSR1Node.js +481 -0
  767. package/examples/jsm/tsl/display/FXAANode.d.ts +11 -0
  768. package/examples/jsm/tsl/display/FXAANode.js +364 -0
  769. package/examples/jsm/tsl/display/FilmNode.d.ts +17 -0
  770. package/examples/jsm/tsl/display/FilmNode.js +101 -0
  771. package/examples/jsm/tsl/display/GTAONode.d.ts +37 -0
  772. package/examples/jsm/tsl/display/GTAONode.js +719 -0
  773. package/examples/jsm/tsl/display/GaussianBlurNode.d.ts +56 -0
  774. package/examples/jsm/tsl/display/GaussianBlurNode.js +412 -0
  775. package/examples/jsm/tsl/display/GodraysNode.d.ts +20 -0
  776. package/examples/jsm/tsl/display/GodraysNode.js +618 -0
  777. package/examples/jsm/tsl/display/ImportanceSampledEnvironment.d.ts +84 -0
  778. package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
  779. package/examples/jsm/tsl/display/LensflareNode.d.ts +34 -0
  780. package/examples/jsm/tsl/display/LensflareNode.js +282 -0
  781. package/examples/jsm/tsl/display/Lut3DNode.d.ts +19 -0
  782. package/examples/jsm/tsl/display/Lut3DNode.js +109 -0
  783. package/examples/jsm/tsl/display/MotionBlur.d.ts +7 -0
  784. package/examples/jsm/tsl/display/MotionBlur.js +33 -0
  785. package/examples/jsm/tsl/display/OITPassNode.d.ts +64 -0
  786. package/examples/jsm/tsl/display/OITPassNode.js +352 -0
  787. package/examples/jsm/tsl/display/OutlineNode.d.ts +31 -0
  788. package/examples/jsm/tsl/display/OutlineNode.js +814 -0
  789. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.d.ts +12 -0
  790. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +90 -0
  791. package/examples/jsm/tsl/display/PixelationPassNode.d.ts +27 -0
  792. package/examples/jsm/tsl/display/PixelationPassNode.js +335 -0
  793. package/examples/jsm/tsl/display/RGBShiftNode.d.ts +15 -0
  794. package/examples/jsm/tsl/display/RGBShiftNode.js +96 -0
  795. package/examples/jsm/tsl/display/RecurrentDenoiseNode.d.ts +89 -0
  796. package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +915 -0
  797. package/examples/jsm/tsl/display/RetroPassNode.d.ts +17 -0
  798. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  799. package/examples/jsm/tsl/display/SMAANode.d.ts +17 -0
  800. package/examples/jsm/tsl/display/SMAANode.js +729 -0
  801. package/examples/jsm/tsl/display/SSAAPassNode.d.ts +18 -0
  802. package/examples/jsm/tsl/display/SSAAPassNode.js +344 -0
  803. package/examples/jsm/tsl/display/SSAONode.d.ts +116 -0
  804. package/examples/jsm/tsl/display/SSAONode.js +436 -0
  805. package/examples/jsm/tsl/display/SSGINode.d.ts +33 -0
  806. package/examples/jsm/tsl/display/SSGINode.js +691 -0
  807. package/examples/jsm/tsl/display/SSRNode.d.ts +315 -0
  808. package/examples/jsm/tsl/display/SSRNode.js +1358 -0
  809. package/examples/jsm/tsl/display/SSSNode.d.ts +20 -0
  810. package/examples/jsm/tsl/display/SSSNode.js +493 -0
  811. package/examples/jsm/tsl/display/Sepia.d.ts +3 -0
  812. package/examples/jsm/tsl/display/Sepia.js +24 -0
  813. package/examples/jsm/tsl/display/Shape.d.ts +3 -0
  814. package/examples/jsm/tsl/display/Shape.js +29 -0
  815. package/examples/jsm/tsl/display/SharpenNode.d.ts +22 -0
  816. package/examples/jsm/tsl/display/SharpenNode.js +284 -0
  817. package/examples/jsm/tsl/display/SobelOperatorNode.d.ts +11 -0
  818. package/examples/jsm/tsl/display/SobelOperatorNode.js +168 -0
  819. package/examples/jsm/tsl/display/StereoCompositePassNode.d.ts +13 -0
  820. package/examples/jsm/tsl/display/StereoCompositePassNode.js +190 -0
  821. package/examples/jsm/tsl/display/StereoPassNode.d.ts +13 -0
  822. package/examples/jsm/tsl/display/StereoPassNode.js +117 -0
  823. package/examples/jsm/tsl/display/TAAUNode.d.ts +31 -0
  824. package/examples/jsm/tsl/display/TAAUNode.js +732 -0
  825. package/examples/jsm/tsl/display/TRAANode.d.ts +26 -0
  826. package/examples/jsm/tsl/display/TRAANode.js +641 -0
  827. package/examples/jsm/tsl/display/TemporalReprojectNode.d.ts +64 -0
  828. package/examples/jsm/tsl/display/TemporalReprojectNode.js +1029 -0
  829. package/examples/jsm/tsl/display/TransitionNode.d.ts +31 -0
  830. package/examples/jsm/tsl/display/TransitionNode.js +141 -0
  831. package/examples/jsm/tsl/display/boxBlur.d.ts +10 -0
  832. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  833. package/examples/jsm/tsl/display/depthAwareBlend.d.ts +15 -0
  834. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  835. package/examples/jsm/tsl/display/depthAwareBlur.d.ts +10 -0
  836. package/examples/jsm/tsl/display/depthAwareBlur.js +63 -0
  837. package/examples/jsm/tsl/display/hashBlur.d.ts +12 -0
  838. package/examples/jsm/tsl/display/hashBlur.js +55 -0
  839. package/examples/jsm/tsl/display/radialBlur.d.ts +12 -0
  840. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  841. package/examples/jsm/tsl/lighting/ClusteredLightsNode.d.ts +54 -0
  842. package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +633 -0
  843. package/examples/jsm/tsl/lighting/DynamicLightsNode.d.ts +21 -0
  844. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
  845. package/examples/jsm/tsl/lighting/LightProbeGridNode.js +136 -0
  846. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.d.ts +9 -0
  847. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
  848. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.d.ts +9 -0
  849. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
  850. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.d.ts +9 -0
  851. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
  852. package/examples/jsm/tsl/lighting/data/PointLightDataNode.d.ts +9 -0
  853. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
  854. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.d.ts +9 -0
  855. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
  856. package/examples/jsm/tsl/math/Bayer.d.ts +5 -0
  857. package/examples/jsm/tsl/math/Bayer.js +84 -0
  858. package/examples/jsm/tsl/math/curlNoise.d.ts +38 -0
  859. package/examples/jsm/tsl/math/curlNoise.js +107 -0
  860. package/examples/jsm/tsl/math/voronoiNoise.d.ts +52 -0
  861. package/examples/jsm/tsl/math/voronoiNoise.js +112 -0
  862. package/examples/jsm/tsl/shadows/TileShadowNode.d.ts +14 -0
  863. package/examples/jsm/tsl/shadows/TileShadowNode.js +454 -0
  864. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.d.ts +14 -0
  865. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  866. package/examples/jsm/tsl/utils/GroundedSkybox.d.ts +17 -0
  867. package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
  868. package/examples/jsm/tsl/utils/RNoise.d.ts +12 -0
  869. package/examples/jsm/tsl/utils/RNoise.js +51 -0
  870. package/examples/jsm/tsl/utils/Raymarching.d.ts +8 -0
  871. package/examples/jsm/tsl/utils/Raymarching.js +70 -0
  872. package/examples/jsm/tsl/utils/SoftParticles.d.ts +21 -0
  873. package/examples/jsm/tsl/utils/SoftParticles.js +60 -0
  874. package/examples/jsm/tsl/utils/SpecularHelpers.d.ts +20 -0
  875. package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
  876. package/examples/jsm/tsl/utils/TAAUtils.js +195 -0
  877. package/examples/jsm/utils/BufferGeometryUtils.d.ts +37 -0
  878. package/examples/jsm/utils/BufferGeometryUtils.js +1501 -0
  879. package/examples/jsm/utils/CameraUtils.d.ts +9 -0
  880. package/examples/jsm/utils/CameraUtils.js +82 -0
  881. package/examples/jsm/utils/ColorUtils.d.ts +5 -0
  882. package/examples/jsm/utils/ColorUtils.js +76 -0
  883. package/examples/jsm/utils/GaussianSplatUtils.d.ts +68 -0
  884. package/examples/jsm/utils/GaussianSplatUtils.js +229 -0
  885. package/examples/jsm/utils/GeometryCompressionUtils.d.ts +21 -0
  886. package/examples/jsm/utils/GeometryCompressionUtils.js +547 -0
  887. package/examples/jsm/utils/GeometryUtils.d.ts +25 -0
  888. package/examples/jsm/utils/GeometryUtils.js +226 -0
  889. package/examples/jsm/utils/LDrawUtils.d.ts +5 -0
  890. package/examples/jsm/utils/LDrawUtils.js +211 -0
  891. package/examples/jsm/utils/SceneOptimizer.d.ts +18 -0
  892. package/examples/jsm/utils/SceneOptimizer.js +458 -0
  893. package/examples/jsm/utils/SceneUtils.d.ts +57 -0
  894. package/examples/jsm/utils/SceneUtils.js +363 -0
  895. package/examples/jsm/utils/ShadowMapViewer.d.ts +26 -0
  896. package/examples/jsm/utils/ShadowMapViewer.js +244 -0
  897. package/examples/jsm/utils/ShadowMapViewerGPU.d.ts +26 -0
  898. package/examples/jsm/utils/ShadowMapViewerGPU.js +233 -0
  899. package/examples/jsm/utils/SkeletonUtils.d.ts +32 -0
  900. package/examples/jsm/utils/SkeletonUtils.js +496 -0
  901. package/examples/jsm/utils/SortUtils.d.ts +7 -0
  902. package/examples/jsm/utils/SortUtils.js +175 -0
  903. package/examples/jsm/utils/UVsDebug.d.ts +3 -0
  904. package/examples/jsm/utils/UVsDebug.js +173 -0
  905. package/examples/jsm/utils/WebGLTextureUtils.d.ts +3 -0
  906. package/examples/jsm/utils/WebGLTextureUtils.js +115 -0
  907. package/examples/jsm/utils/WebGPUTextureUtils.d.ts +3 -0
  908. package/examples/jsm/utils/WebGPUTextureUtils.js +81 -0
  909. package/examples/jsm/utils/WorkerPool.d.ts +26 -0
  910. package/examples/jsm/utils/WorkerPool.js +167 -0
  911. package/examples/jsm/webxr/ARButton.d.ts +9 -0
  912. package/examples/jsm/webxr/ARButton.js +251 -0
  913. package/examples/jsm/webxr/OculusHandModel.d.ts +23 -0
  914. package/examples/jsm/webxr/OculusHandModel.js +194 -0
  915. package/examples/jsm/webxr/OculusHandPointerModel.d.ts +67 -0
  916. package/examples/jsm/webxr/OculusHandPointerModel.js +539 -0
  917. package/examples/jsm/webxr/Text2D.d.ts +3 -0
  918. package/examples/jsm/webxr/Text2D.js +52 -0
  919. package/examples/jsm/webxr/VRButton.d.ts +7 -0
  920. package/examples/jsm/webxr/VRButton.js +264 -0
  921. package/examples/jsm/webxr/WebGLXRFallback.d.ts +14 -0
  922. package/examples/jsm/webxr/WebGLXRFallback.js +75 -0
  923. package/examples/jsm/webxr/XRButton.d.ts +7 -0
  924. package/examples/jsm/webxr/XRButton.js +246 -0
  925. package/examples/jsm/webxr/XRControllerModelFactory.d.ts +23 -0
  926. package/examples/jsm/webxr/XRControllerModelFactory.js +415 -0
  927. package/examples/jsm/webxr/XREstimatedLight.d.ts +69 -0
  928. package/examples/jsm/webxr/XREstimatedLight.js +254 -0
  929. package/examples/jsm/webxr/XRHandMeshModel.d.ts +20 -0
  930. package/examples/jsm/webxr/XRHandMeshModel.js +177 -0
  931. package/examples/jsm/webxr/XRHandModelFactory.d.ts +32 -0
  932. package/examples/jsm/webxr/XRHandModelFactory.js +198 -0
  933. package/examples/jsm/webxr/XRHandPrimitiveModel.d.ts +24 -0
  934. package/examples/jsm/webxr/XRHandPrimitiveModel.js +147 -0
  935. package/examples/jsm/webxr/XRPlanes.d.ts +5 -0
  936. package/examples/jsm/webxr/XRPlanes.js +118 -0
  937. package/index.d.ts +6 -0
  938. package/package.json +68 -4
  939. package/src/Three.Core.d.ts +176 -0
  940. package/src/Three.Core.js +189 -0
  941. package/src/Three.Legacy.js +0 -0
  942. package/src/Three.TSL.d.ts +686 -0
  943. package/src/Three.TSL.js +684 -0
  944. package/src/Three.WebGPU.Nodes.d.ts +36 -0
  945. package/src/Three.WebGPU.Nodes.js +33 -0
  946. package/src/Three.WebGPU.d.ts +44 -0
  947. package/src/Three.WebGPU.js +43 -0
  948. package/src/Three.d.ts +47 -0
  949. package/src/Three.js +10 -0
  950. package/src/animation/AnimationAction.d.ts +286 -0
  951. package/src/animation/AnimationAction.js +946 -0
  952. package/src/animation/AnimationClip.d.ts +168 -0
  953. package/src/animation/AnimationClip.js +502 -0
  954. package/src/animation/AnimationMixer.d.ts +175 -0
  955. package/src/animation/AnimationMixer.js +860 -0
  956. package/src/animation/AnimationObjectGroup.d.ts +58 -0
  957. package/src/animation/AnimationObjectGroup.js +423 -0
  958. package/src/animation/AnimationUtils.d.ts +182 -0
  959. package/src/animation/AnimationUtils.js +521 -0
  960. package/src/animation/KeyframeTrack.d.ts +197 -0
  961. package/src/animation/KeyframeTrack.js +673 -0
  962. package/src/animation/PropertyBinding.d.ts +101 -0
  963. package/src/animation/PropertyBinding.js +794 -0
  964. package/src/animation/PropertyMixer.d.ts +75 -0
  965. package/src/animation/PropertyMixer.js +385 -0
  966. package/src/animation/tracks/BooleanKeyframeTrack.d.ts +18 -0
  967. package/src/animation/tracks/BooleanKeyframeTrack.js +55 -0
  968. package/src/animation/tracks/ColorKeyframeTrack.d.ts +17 -0
  969. package/src/animation/tracks/ColorKeyframeTrack.js +36 -0
  970. package/src/animation/tracks/NumberKeyframeTrack.d.ts +17 -0
  971. package/src/animation/tracks/NumberKeyframeTrack.js +36 -0
  972. package/src/animation/tracks/QuaternionKeyframeTrack.d.ts +17 -0
  973. package/src/animation/tracks/QuaternionKeyframeTrack.js +51 -0
  974. package/src/animation/tracks/StringKeyframeTrack.d.ts +18 -0
  975. package/src/animation/tracks/StringKeyframeTrack.js +55 -0
  976. package/src/animation/tracks/VectorKeyframeTrack.d.ts +17 -0
  977. package/src/animation/tracks/VectorKeyframeTrack.js +36 -0
  978. package/src/audio/Audio.d.ts +340 -0
  979. package/src/audio/Audio.js +778 -0
  980. package/src/audio/AudioAnalyser.d.ts +63 -0
  981. package/src/audio/AudioAnalyser.js +97 -0
  982. package/src/audio/AudioContext.d.ts +19 -0
  983. package/src/audio/AudioContext.js +40 -0
  984. package/src/audio/AudioListener.d.ts +75 -0
  985. package/src/audio/AudioListener.js +218 -0
  986. package/src/audio/PositionalAudio.d.ts +108 -0
  987. package/src/audio/PositionalAudio.js +253 -0
  988. package/src/cameras/ArrayCamera.d.ts +35 -0
  989. package/src/cameras/ArrayCamera.js +54 -0
  990. package/src/cameras/Camera.d.ts +42 -0
  991. package/src/cameras/Camera.js +160 -0
  992. package/src/cameras/CubeCamera.d.ts +89 -0
  993. package/src/cameras/CubeCamera.js +259 -0
  994. package/src/cameras/OrthographicCamera.d.ts +144 -0
  995. package/src/cameras/OrthographicCamera.js +245 -0
  996. package/src/cameras/PerspectiveCamera.d.ts +241 -0
  997. package/src/cameras/PerspectiveCamera.js +407 -0
  998. package/src/cameras/StereoCamera.d.ts +44 -0
  999. package/src/cameras/StereoCamera.js +149 -0
  1000. package/src/constants.d.ts +976 -0
  1001. package/src/constants.js +1782 -0
  1002. package/src/core/BufferAttribute.d.ts +650 -0
  1003. package/src/core/BufferAttribute.js +1057 -0
  1004. package/src/core/BufferGeometry.d.ts +442 -0
  1005. package/src/core/BufferGeometry.js +1480 -0
  1006. package/src/core/Clock.d.ts +73 -0
  1007. package/src/core/Clock.js +135 -0
  1008. package/src/core/EventDispatcher.d.ts +82 -0
  1009. package/src/core/EventDispatcher.js +131 -0
  1010. package/src/core/GLBufferAttribute.d.ts +138 -0
  1011. package/src/core/GLBufferAttribute.js +171 -0
  1012. package/src/core/InstancedBufferAttribute.d.ts +32 -0
  1013. package/src/core/InstancedBufferAttribute.js +68 -0
  1014. package/src/core/InstancedBufferGeometry.d.ts +37 -0
  1015. package/src/core/InstancedBufferGeometry.js +60 -0
  1016. package/src/core/InstancedInterleavedBuffer.d.ts +22 -0
  1017. package/src/core/InstancedInterleavedBuffer.js +74 -0
  1018. package/src/core/InterleavedBuffer.d.ts +162 -0
  1019. package/src/core/InterleavedBuffer.js +295 -0
  1020. package/src/core/InterleavedBufferAttribute.d.ts +201 -0
  1021. package/src/core/InterleavedBufferAttribute.js +549 -0
  1022. package/src/core/Layers.d.ts +72 -0
  1023. package/src/core/Layers.js +121 -0
  1024. package/src/core/Object3D.d.ts +725 -0
  1025. package/src/core/Object3D.js +1709 -0
  1026. package/src/core/Raycaster.d.ts +212 -0
  1027. package/src/core/Raycaster.js +266 -0
  1028. package/src/core/RenderTarget.d.ts +153 -0
  1029. package/src/core/RenderTarget.js +495 -0
  1030. package/src/core/RenderTarget3D.d.ts +9 -0
  1031. package/src/core/RenderTarget3D.js +52 -0
  1032. package/src/core/Timer.d.ts +77 -0
  1033. package/src/core/Timer.js +184 -0
  1034. package/src/core/Uniform.d.ts +38 -0
  1035. package/src/core/Uniform.js +46 -0
  1036. package/src/core/UniformsGroup.d.ts +39 -0
  1037. package/src/core/UniformsGroup.js +180 -0
  1038. package/src/extras/Controls.d.ts +59 -0
  1039. package/src/extras/Controls.js +112 -0
  1040. package/src/extras/DataUtils.d.ts +22 -0
  1041. package/src/extras/DataUtils.js +217 -0
  1042. package/src/extras/Earcut.d.ts +17 -0
  1043. package/src/extras/Earcut.js +28 -0
  1044. package/src/extras/ImageUtils.d.ts +33 -0
  1045. package/src/extras/ImageUtils.js +137 -0
  1046. package/src/extras/PMREMGenerator.d.ts +95 -0
  1047. package/src/extras/PMREMGenerator.js +1063 -0
  1048. package/src/extras/ShapeUtils.d.ts +25 -0
  1049. package/src/extras/ShapeUtils.js +114 -0
  1050. package/src/extras/TextureUtils.d.ts +42 -0
  1051. package/src/extras/TextureUtils.js +297 -0
  1052. package/src/extras/core/Curve.d.ts +162 -0
  1053. package/src/extras/core/Curve.js +517 -0
  1054. package/src/extras/core/CurvePath.d.ts +77 -0
  1055. package/src/extras/core/CurvePath.js +296 -0
  1056. package/src/extras/core/Interpolations.d.ts +36 -0
  1057. package/src/extras/core/Interpolations.js +111 -0
  1058. package/src/extras/core/Path.d.ts +166 -0
  1059. package/src/extras/core/Path.js +329 -0
  1060. package/src/extras/core/Shape.d.ts +86 -0
  1061. package/src/extras/core/Shape.js +165 -0
  1062. package/src/extras/core/ShapePath.d.ts +94 -0
  1063. package/src/extras/core/ShapePath.js +356 -0
  1064. package/src/extras/curves/ArcCurve.d.ts +41 -0
  1065. package/src/extras/curves/ArcCurve.js +39 -0
  1066. package/src/extras/curves/CatmullRomCurve3.d.ts +77 -0
  1067. package/src/extras/curves/CatmullRomCurve3.js +327 -0
  1068. package/src/extras/curves/CubicBezierCurve.d.ts +72 -0
  1069. package/src/extras/curves/CubicBezierCurve.js +145 -0
  1070. package/src/extras/curves/CubicBezierCurve3.d.ts +72 -0
  1071. package/src/extras/curves/CubicBezierCurve3.js +129 -0
  1072. package/src/extras/curves/Curves.d.ts +10 -0
  1073. package/src/extras/curves/Curves.js +10 -0
  1074. package/src/extras/curves/EllipseCurve.d.ts +115 -0
  1075. package/src/extras/curves/EllipseCurve.js +258 -0
  1076. package/src/extras/curves/LineCurve.d.ts +42 -0
  1077. package/src/extras/curves/LineCurve.js +128 -0
  1078. package/src/extras/curves/LineCurve3.d.ts +42 -0
  1079. package/src/extras/curves/LineCurve3.js +128 -0
  1080. package/src/extras/curves/QuadraticBezierCurve.d.ts +64 -0
  1081. package/src/extras/curves/QuadraticBezierCurve.js +133 -0
  1082. package/src/extras/curves/QuadraticBezierCurve3.d.ts +64 -0
  1083. package/src/extras/curves/QuadraticBezierCurve3.js +118 -0
  1084. package/src/extras/curves/SplineCurve.d.ts +52 -0
  1085. package/src/extras/curves/SplineCurve.js +145 -0
  1086. package/src/extras/lib/earcut.js +685 -0
  1087. package/src/geometries/BoxGeometry.d.ts +59 -0
  1088. package/src/geometries/BoxGeometry.js +219 -0
  1089. package/src/geometries/CapsuleGeometry.d.ts +56 -0
  1090. package/src/geometries/CapsuleGeometry.js +218 -0
  1091. package/src/geometries/CircleGeometry.d.ts +51 -0
  1092. package/src/geometries/CircleGeometry.js +142 -0
  1093. package/src/geometries/ConeGeometry.d.ts +64 -0
  1094. package/src/geometries/ConeGeometry.js +70 -0
  1095. package/src/geometries/CylinderGeometry.d.ts +64 -0
  1096. package/src/geometries/CylinderGeometry.js +333 -0
  1097. package/src/geometries/DodecahedronGeometry.d.ts +25 -0
  1098. package/src/geometries/DodecahedronGeometry.js +99 -0
  1099. package/src/geometries/EdgesGeometry.d.ts +41 -0
  1100. package/src/geometries/EdgesGeometry.js +180 -0
  1101. package/src/geometries/ExtrudeGeometry.d.ts +138 -0
  1102. package/src/geometries/ExtrudeGeometry.js +910 -0
  1103. package/src/geometries/Geometries.d.ts +21 -0
  1104. package/src/geometries/Geometries.js +21 -0
  1105. package/src/geometries/IcosahedronGeometry.d.ts +26 -0
  1106. package/src/geometries/IcosahedronGeometry.js +75 -0
  1107. package/src/geometries/LatheGeometry.d.ts +55 -0
  1108. package/src/geometries/LatheGeometry.js +230 -0
  1109. package/src/geometries/OctahedronGeometry.d.ts +25 -0
  1110. package/src/geometries/OctahedronGeometry.js +70 -0
  1111. package/src/geometries/PlaneGeometry.d.ts +48 -0
  1112. package/src/geometries/PlaneGeometry.js +133 -0
  1113. package/src/geometries/PolyhedronGeometry.d.ts +54 -0
  1114. package/src/geometries/PolyhedronGeometry.js +348 -0
  1115. package/src/geometries/RingGeometry.d.ts +59 -0
  1116. package/src/geometries/RingGeometry.js +165 -0
  1117. package/src/geometries/ShapeGeometry.d.ts +53 -0
  1118. package/src/geometries/ShapeGeometry.js +233 -0
  1119. package/src/geometries/SphereGeometry.d.ts +67 -0
  1120. package/src/geometries/SphereGeometry.js +180 -0
  1121. package/src/geometries/TetrahedronGeometry.d.ts +25 -0
  1122. package/src/geometries/TetrahedronGeometry.js +67 -0
  1123. package/src/geometries/TorusGeometry.d.ts +69 -0
  1124. package/src/geometries/TorusGeometry.js +161 -0
  1125. package/src/geometries/TorusKnotGeometry.d.ts +59 -0
  1126. package/src/geometries/TorusKnotGeometry.js +206 -0
  1127. package/src/geometries/TubeGeometry.d.ts +86 -0
  1128. package/src/geometries/TubeGeometry.js +253 -0
  1129. package/src/geometries/WireframeGeometry.d.ts +40 -0
  1130. package/src/geometries/WireframeGeometry.js +179 -0
  1131. package/src/helpers/ArrowHelper.d.ts +72 -0
  1132. package/src/helpers/ArrowHelper.js +173 -0
  1133. package/src/helpers/AxesHelper.d.ts +33 -0
  1134. package/src/helpers/AxesHelper.js +98 -0
  1135. package/src/helpers/Box3Helper.d.ts +28 -0
  1136. package/src/helpers/Box3Helper.js +85 -0
  1137. package/src/helpers/BoxHelper.d.ts +48 -0
  1138. package/src/helpers/BoxHelper.js +151 -0
  1139. package/src/helpers/CameraHelper.d.ts +54 -0
  1140. package/src/helpers/CameraHelper.js +347 -0
  1141. package/src/helpers/DirectionalLightHelper.d.ts +55 -0
  1142. package/src/helpers/DirectionalLightHelper.js +152 -0
  1143. package/src/helpers/GridHelper.d.ts +28 -0
  1144. package/src/helpers/GridHelper.js +84 -0
  1145. package/src/helpers/HemisphereLightHelper.d.ts +44 -0
  1146. package/src/helpers/HemisphereLightHelper.js +134 -0
  1147. package/src/helpers/PlaneHelper.d.ts +33 -0
  1148. package/src/helpers/PlaneHelper.js +98 -0
  1149. package/src/helpers/PointLightHelper.d.ts +43 -0
  1150. package/src/helpers/PointLightHelper.js +115 -0
  1151. package/src/helpers/PolarGridHelper.d.ts +37 -0
  1152. package/src/helpers/PolarGridHelper.js +128 -0
  1153. package/src/helpers/SkeletonHelper.d.ts +44 -0
  1154. package/src/helpers/SkeletonHelper.js +196 -0
  1155. package/src/helpers/SpotLightHelper.d.ts +45 -0
  1156. package/src/helpers/SpotLightHelper.js +156 -0
  1157. package/src/lights/AmbientLight.d.ts +28 -0
  1158. package/src/lights/AmbientLight.js +42 -0
  1159. package/src/lights/DirectionalLight.d.ts +68 -0
  1160. package/src/lights/DirectionalLight.js +113 -0
  1161. package/src/lights/DirectionalLightShadow.d.ts +18 -0
  1162. package/src/lights/DirectionalLightShadow.js +31 -0
  1163. package/src/lights/HemisphereLight.d.ts +41 -0
  1164. package/src/lights/HemisphereLight.js +76 -0
  1165. package/src/lights/Light.d.ts +39 -0
  1166. package/src/lights/Light.js +75 -0
  1167. package/src/lights/LightProbe.d.ts +46 -0
  1168. package/src/lights/LightProbe.js +75 -0
  1169. package/src/lights/LightShadow.d.ts +201 -0
  1170. package/src/lights/LightShadow.js +378 -0
  1171. package/src/lights/PointLight.d.ts +72 -0
  1172. package/src/lights/PointLight.js +131 -0
  1173. package/src/lights/PointLightShadow.d.ts +18 -0
  1174. package/src/lights/PointLightShadow.js +31 -0
  1175. package/src/lights/RectAreaLight.d.ts +62 -0
  1176. package/src/lights/RectAreaLight.js +115 -0
  1177. package/src/lights/SpotLight.d.ts +124 -0
  1178. package/src/lights/SpotLight.js +194 -0
  1179. package/src/lights/SpotLightShadow.d.ts +44 -0
  1180. package/src/lights/SpotLightShadow.js +98 -0
  1181. package/src/lights/webgpu/IESSpotLight.d.ts +18 -0
  1182. package/src/lights/webgpu/IESSpotLight.js +47 -0
  1183. package/src/lights/webgpu/ProjectorLight.d.ts +16 -0
  1184. package/src/lights/webgpu/ProjectorLight.js +46 -0
  1185. package/src/loaders/AnimationLoader.d.ts +9 -0
  1186. package/src/loaders/AnimationLoader.js +98 -0
  1187. package/src/loaders/AudioLoader.d.ts +6 -0
  1188. package/src/loaders/AudioLoader.js +108 -0
  1189. package/src/loaders/BufferGeometryLoader.d.ts +10 -0
  1190. package/src/loaders/BufferGeometryLoader.js +247 -0
  1191. package/src/loaders/Cache.d.ts +21 -0
  1192. package/src/loaders/Cache.js +115 -0
  1193. package/src/loaders/CompressedTextureLoader.d.ts +14 -0
  1194. package/src/loaders/CompressedTextureLoader.js +167 -0
  1195. package/src/loaders/CubeTextureLoader.d.ts +14 -0
  1196. package/src/loaders/CubeTextureLoader.js +103 -0
  1197. package/src/loaders/DataTextureLoader.d.ts +48 -0
  1198. package/src/loaders/DataTextureLoader.js +205 -0
  1199. package/src/loaders/FileLoader.d.ts +19 -0
  1200. package/src/loaders/FileLoader.js +367 -0
  1201. package/src/loaders/ImageBitmapLoader.d.ts +22 -0
  1202. package/src/loaders/ImageBitmapLoader.js +225 -0
  1203. package/src/loaders/ImageLoader.d.ts +17 -0
  1204. package/src/loaders/ImageLoader.js +168 -0
  1205. package/src/loaders/Loader.d.ts +51 -0
  1206. package/src/loaders/Loader.js +222 -0
  1207. package/src/loaders/LoaderUtils.d.ts +5 -0
  1208. package/src/loaders/LoaderUtils.js +59 -0
  1209. package/src/loaders/LoadingManager.d.ts +73 -0
  1210. package/src/loaders/LoadingManager.js +334 -0
  1211. package/src/loaders/MaterialLoader.d.ts +29 -0
  1212. package/src/loaders/MaterialLoader.js +209 -0
  1213. package/src/loaders/ObjectLoader.d.ts +35 -0
  1214. package/src/loaders/ObjectLoader.js +1309 -0
  1215. package/src/loaders/TextureLoader.d.ts +18 -0
  1216. package/src/loaders/TextureLoader.js +74 -0
  1217. package/src/loaders/nodes/NodeLoader.d.ts +21 -0
  1218. package/src/loaders/nodes/NodeLoader.js +194 -0
  1219. package/src/loaders/nodes/NodeMaterialLoader.d.ts +11 -0
  1220. package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
  1221. package/src/loaders/nodes/NodeObjectLoader.d.ts +22 -0
  1222. package/src/loaders/nodes/NodeObjectLoader.js +169 -0
  1223. package/src/materials/LineBasicMaterial.d.ts +93 -0
  1224. package/src/materials/LineBasicMaterial.js +126 -0
  1225. package/src/materials/LineDashedMaterial.d.ts +56 -0
  1226. package/src/materials/LineDashedMaterial.js +86 -0
  1227. package/src/materials/Material.d.ts +663 -0
  1228. package/src/materials/Material.js +1235 -0
  1229. package/src/materials/Materials.d.ts +18 -0
  1230. package/src/materials/Materials.js +39 -0
  1231. package/src/materials/MeshBasicMaterial.d.ts +204 -0
  1232. package/src/materials/MeshBasicMaterial.js +274 -0
  1233. package/src/materials/MeshDepthMaterial.d.ts +119 -0
  1234. package/src/materials/MeshDepthMaterial.js +158 -0
  1235. package/src/materials/MeshDistanceMaterial.d.ts +102 -0
  1236. package/src/materials/MeshDistanceMaterial.js +129 -0
  1237. package/src/materials/MeshLambertMaterial.d.ts +331 -0
  1238. package/src/materials/MeshLambertMaterial.js +441 -0
  1239. package/src/materials/MeshMatcapMaterial.d.ts +199 -0
  1240. package/src/materials/MeshMatcapMaterial.js +269 -0
  1241. package/src/materials/MeshNormalMaterial.d.ts +134 -0
  1242. package/src/materials/MeshNormalMaterial.js +183 -0
  1243. package/src/materials/MeshPhongMaterial.d.ts +343 -0
  1244. package/src/materials/MeshPhongMaterial.js +460 -0
  1245. package/src/materials/MeshPhysicalMaterial.d.ts +353 -0
  1246. package/src/materials/MeshPhysicalMaterial.js +606 -0
  1247. package/src/materials/MeshStandardMaterial.d.ts +352 -0
  1248. package/src/materials/MeshStandardMaterial.js +466 -0
  1249. package/src/materials/MeshToonMaterial.d.ts +265 -0
  1250. package/src/materials/MeshToonMaterial.js +354 -0
  1251. package/src/materials/PointsMaterial.d.ts +113 -0
  1252. package/src/materials/PointsMaterial.js +146 -0
  1253. package/src/materials/RawShaderMaterial.d.ts +17 -0
  1254. package/src/materials/RawShaderMaterial.js +42 -0
  1255. package/src/materials/ShaderMaterial.d.ts +268 -0
  1256. package/src/materials/ShaderMaterial.js +499 -0
  1257. package/src/materials/ShadowMaterial.d.ts +61 -0
  1258. package/src/materials/ShadowMaterial.js +91 -0
  1259. package/src/materials/SpriteMaterial.d.ts +100 -0
  1260. package/src/materials/SpriteMaterial.js +143 -0
  1261. package/src/materials/nodes/Line2NodeMaterial.d.ts +102 -0
  1262. package/src/materials/nodes/Line2NodeMaterial.js +634 -0
  1263. package/src/materials/nodes/LineBasicNodeMaterial.d.ts +38 -0
  1264. package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
  1265. package/src/materials/nodes/LineDashedNodeMaterial.d.ts +88 -0
  1266. package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
  1267. package/src/materials/nodes/MeshBasicNodeMaterial.d.ts +55 -0
  1268. package/src/materials/nodes/MeshBasicNodeMaterial.js +134 -0
  1269. package/src/materials/nodes/MeshLambertNodeMaterial.d.ts +55 -0
  1270. package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
  1271. package/src/materials/nodes/MeshMatcapNodeMaterial.d.ts +45 -0
  1272. package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
  1273. package/src/materials/nodes/MeshNormalNodeMaterial.d.ts +41 -0
  1274. package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
  1275. package/src/materials/nodes/MeshPhongNodeMaterial.d.ts +77 -0
  1276. package/src/materials/nodes/MeshPhongNodeMaterial.js +132 -0
  1277. package/src/materials/nodes/MeshPhysicalNodeMaterial.d.ts +286 -0
  1278. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +528 -0
  1279. package/src/materials/nodes/MeshSSSNodeMaterial.d.ts +110 -0
  1280. package/src/materials/nodes/MeshSSSNodeMaterial.js +162 -0
  1281. package/src/materials/nodes/MeshStandardNodeMaterial.d.ts +93 -0
  1282. package/src/materials/nodes/MeshStandardNodeMaterial.js +176 -0
  1283. package/src/materials/nodes/MeshToonNodeMaterial.d.ts +45 -0
  1284. package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
  1285. package/src/materials/nodes/NodeMaterial.d.ts +503 -0
  1286. package/src/materials/nodes/NodeMaterial.js +1380 -0
  1287. package/src/materials/nodes/NodeMaterials.d.ts +18 -0
  1288. package/src/materials/nodes/NodeMaterials.js +21 -0
  1289. package/src/materials/nodes/PointsNodeMaterial.d.ts +60 -0
  1290. package/src/materials/nodes/PointsNodeMaterial.js +212 -0
  1291. package/src/materials/nodes/ShadowNodeMaterial.d.ts +45 -0
  1292. package/src/materials/nodes/ShadowNodeMaterial.js +76 -0
  1293. package/src/materials/nodes/SpriteNodeMaterial.d.ts +74 -0
  1294. package/src/materials/nodes/SpriteNodeMaterial.js +176 -0
  1295. package/src/materials/nodes/VolumeNodeMaterial.d.ts +56 -0
  1296. package/src/materials/nodes/VolumeNodeMaterial.js +81 -0
  1297. package/src/materials/nodes/manager/NodeMaterialObserver.d.ts +58 -0
  1298. package/src/materials/nodes/manager/NodeMaterialObserver.js +973 -0
  1299. package/src/math/Box2.d.ts +48 -0
  1300. package/src/math/Box2.js +381 -0
  1301. package/src/math/Box3.d.ts +310 -0
  1302. package/src/math/Box3.js +810 -0
  1303. package/src/math/Color.d.ts +376 -0
  1304. package/src/math/Color.js +967 -0
  1305. package/src/math/ColorManagement.d.ts +59 -0
  1306. package/src/math/ColorManagement.js +215 -0
  1307. package/src/math/Cylindrical.d.ts +26 -0
  1308. package/src/math/Cylindrical.js +120 -0
  1309. package/src/math/Euler.d.ts +50 -0
  1310. package/src/math/Euler.js +449 -0
  1311. package/src/math/Frustum.d.ts +30 -0
  1312. package/src/math/Frustum.js +294 -0
  1313. package/src/math/FrustumArray.d.ts +86 -0
  1314. package/src/math/FrustumArray.js +228 -0
  1315. package/src/math/Interpolant.d.ts +113 -0
  1316. package/src/math/Interpolant.js +320 -0
  1317. package/src/math/Line3.d.ts +30 -0
  1318. package/src/math/Line3.js +337 -0
  1319. package/src/math/MathUtils.d.ts +153 -0
  1320. package/src/math/MathUtils.js +753 -0
  1321. package/src/math/Matrix2.d.ts +53 -0
  1322. package/src/math/Matrix2.js +128 -0
  1323. package/src/math/Matrix3.d.ts +193 -0
  1324. package/src/math/Matrix3.js +628 -0
  1325. package/src/math/Matrix4.d.ts +506 -0
  1326. package/src/math/Matrix4.js +1332 -0
  1327. package/src/math/Plane.d.ts +55 -0
  1328. package/src/math/Plane.js +397 -0
  1329. package/src/math/Quaternion.d.ts +189 -0
  1330. package/src/math/Quaternion.js +908 -0
  1331. package/src/math/Ray.d.ts +60 -0
  1332. package/src/math/Ray.js +705 -0
  1333. package/src/math/Sphere.d.ts +55 -0
  1334. package/src/math/Sphere.js +420 -0
  1335. package/src/math/Spherical.d.ts +27 -0
  1336. package/src/math/Spherical.js +147 -0
  1337. package/src/math/SphericalHarmonics3.d.ts +50 -0
  1338. package/src/math/SphericalHarmonics3.js +341 -0
  1339. package/src/math/Triangle.d.ts +110 -0
  1340. package/src/math/Triangle.js +537 -0
  1341. package/src/math/Vector2.d.ts +321 -0
  1342. package/src/math/Vector2.js +870 -0
  1343. package/src/math/Vector3.d.ts +301 -0
  1344. package/src/math/Vector3.js +1263 -0
  1345. package/src/math/Vector4.d.ts +241 -0
  1346. package/src/math/Vector4.js +1063 -0
  1347. package/src/math/interpolants/BezierInterpolant.d.ts +23 -0
  1348. package/src/math/interpolants/BezierInterpolant.js +119 -0
  1349. package/src/math/interpolants/CubicInterpolant.d.ts +22 -0
  1350. package/src/math/interpolants/CubicInterpolant.js +159 -0
  1351. package/src/math/interpolants/DiscreteInterpolant.d.ts +12 -0
  1352. package/src/math/interpolants/DiscreteInterpolant.js +34 -0
  1353. package/src/math/interpolants/LinearInterpolant.d.ts +11 -0
  1354. package/src/math/interpolants/LinearInterpolant.js +51 -0
  1355. package/src/math/interpolants/QuaternionLinearInterpolant.d.ts +11 -0
  1356. package/src/math/interpolants/QuaternionLinearInterpolant.js +48 -0
  1357. package/src/nodes/Nodes.d.ts +170 -0
  1358. package/src/nodes/Nodes.js +165 -0
  1359. package/src/nodes/TSL.d.ts +183 -0
  1360. package/src/nodes/TSL.js +183 -0
  1361. package/src/nodes/accessors/AccessorsUtils.d.ts +8 -0
  1362. package/src/nodes/accessors/AccessorsUtils.js +53 -0
  1363. package/src/nodes/accessors/Arrays.d.ts +22 -0
  1364. package/src/nodes/accessors/Arrays.js +68 -0
  1365. package/src/nodes/accessors/Batch.d.ts +25 -0
  1366. package/src/nodes/accessors/Batch.js +180 -0
  1367. package/src/nodes/accessors/Bitangent.d.ts +6 -0
  1368. package/src/nodes/accessors/Bitangent.js +82 -0
  1369. package/src/nodes/accessors/BufferAttributeNode.d.ts +247 -0
  1370. package/src/nodes/accessors/BufferAttributeNode.js +452 -0
  1371. package/src/nodes/accessors/BufferNode.d.ts +33 -0
  1372. package/src/nodes/accessors/BufferNode.js +138 -0
  1373. package/src/nodes/accessors/BuiltinNode.d.ts +13 -0
  1374. package/src/nodes/accessors/BuiltinNode.js +63 -0
  1375. package/src/nodes/accessors/Camera.d.ts +16 -0
  1376. package/src/nodes/accessors/Camera.js +403 -0
  1377. package/src/nodes/accessors/ClippingNode.d.ts +19 -0
  1378. package/src/nodes/accessors/ClippingNode.js +255 -0
  1379. package/src/nodes/accessors/CubeTextureNode.d.ts +38 -0
  1380. package/src/nodes/accessors/CubeTextureNode.js +215 -0
  1381. package/src/nodes/accessors/Instance.d.ts +32 -0
  1382. package/src/nodes/accessors/Instance.js +349 -0
  1383. package/src/nodes/accessors/Lights.d.ts +17 -0
  1384. package/src/nodes/accessors/Lights.js +139 -0
  1385. package/src/nodes/accessors/MaterialNode.d.ts +134 -0
  1386. package/src/nodes/accessors/MaterialNode.js +808 -0
  1387. package/src/nodes/accessors/MaterialProperties.d.ts +8 -0
  1388. package/src/nodes/accessors/MaterialProperties.js +57 -0
  1389. package/src/nodes/accessors/MaterialReferenceNode.d.ts +15 -0
  1390. package/src/nodes/accessors/MaterialReferenceNode.js +84 -0
  1391. package/src/nodes/accessors/ModelNode.d.ts +49 -0
  1392. package/src/nodes/accessors/ModelNode.js +260 -0
  1393. package/src/nodes/accessors/ModelViewProjectionNode.d.ts +3 -0
  1394. package/src/nodes/accessors/ModelViewProjectionNode.js +13 -0
  1395. package/src/nodes/accessors/Morph.d.ts +11 -0
  1396. package/src/nodes/accessors/Morph.js +297 -0
  1397. package/src/nodes/accessors/Normal.d.ts +36 -0
  1398. package/src/nodes/accessors/Normal.js +243 -0
  1399. package/src/nodes/accessors/Object3DNode.d.ts +42 -0
  1400. package/src/nodes/accessors/Object3DNode.js +268 -0
  1401. package/src/nodes/accessors/PointUVNode.d.ts +9 -0
  1402. package/src/nodes/accessors/PointUVNode.js +55 -0
  1403. package/src/nodes/accessors/Position.d.ts +11 -0
  1404. package/src/nodes/accessors/Position.js +126 -0
  1405. package/src/nodes/accessors/ReferenceBaseNode.d.ts +26 -0
  1406. package/src/nodes/accessors/ReferenceBaseNode.js +288 -0
  1407. package/src/nodes/accessors/ReferenceElementNode.d.ts +15 -0
  1408. package/src/nodes/accessors/ReferenceElementNode.js +72 -0
  1409. package/src/nodes/accessors/ReferenceNode.d.ts +37 -0
  1410. package/src/nodes/accessors/ReferenceNode.js +356 -0
  1411. package/src/nodes/accessors/ReflectVector.d.ts +7 -0
  1412. package/src/nodes/accessors/ReflectVector.js +36 -0
  1413. package/src/nodes/accessors/RendererReferenceNode.d.ts +14 -0
  1414. package/src/nodes/accessors/RendererReferenceNode.js +78 -0
  1415. package/src/nodes/accessors/SceneProperties.d.ts +5 -0
  1416. package/src/nodes/accessors/SceneProperties.js +47 -0
  1417. package/src/nodes/accessors/Skinning.d.ts +23 -0
  1418. package/src/nodes/accessors/Skinning.js +375 -0
  1419. package/src/nodes/accessors/StorageBufferNode.d.ts +82 -0
  1420. package/src/nodes/accessors/StorageBufferNode.js +405 -0
  1421. package/src/nodes/accessors/StorageTexture3DNode.d.ts +17 -0
  1422. package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
  1423. package/src/nodes/accessors/StorageTextureNode.d.ts +47 -0
  1424. package/src/nodes/accessors/StorageTextureNode.js +331 -0
  1425. package/src/nodes/accessors/Tangent.d.ts +6 -0
  1426. package/src/nodes/accessors/Tangent.js +60 -0
  1427. package/src/nodes/accessors/TangentUtils.d.ts +21 -0
  1428. package/src/nodes/accessors/TangentUtils.js +46 -0
  1429. package/src/nodes/accessors/Texture3DNode.d.ts +29 -0
  1430. package/src/nodes/accessors/Texture3DNode.js +196 -0
  1431. package/src/nodes/accessors/TextureBicubic.d.ts +6 -0
  1432. package/src/nodes/accessors/TextureBicubic.js +92 -0
  1433. package/src/nodes/accessors/TextureNode.d.ts +104 -0
  1434. package/src/nodes/accessors/TextureNode.js +1056 -0
  1435. package/src/nodes/accessors/TextureSizeNode.d.ts +17 -0
  1436. package/src/nodes/accessors/TextureSizeNode.js +79 -0
  1437. package/src/nodes/accessors/UV.d.ts +3 -0
  1438. package/src/nodes/accessors/UV.js +11 -0
  1439. package/src/nodes/accessors/UniformArrayNode.d.ts +29 -0
  1440. package/src/nodes/accessors/UniformArrayNode.js +375 -0
  1441. package/src/nodes/accessors/UserDataNode.d.ts +14 -0
  1442. package/src/nodes/accessors/UserDataNode.js +76 -0
  1443. package/src/nodes/accessors/VelocityNode.d.ts +19 -0
  1444. package/src/nodes/accessors/VelocityNode.js +224 -0
  1445. package/src/nodes/accessors/VertexColorNode.d.ts +11 -0
  1446. package/src/nodes/accessors/VertexColorNode.js +109 -0
  1447. package/src/nodes/code/CodeNode.d.ts +22 -0
  1448. package/src/nodes/code/CodeNode.js +181 -0
  1449. package/src/nodes/code/ExpressionNode.d.ts +9 -0
  1450. package/src/nodes/code/ExpressionNode.js +68 -0
  1451. package/src/nodes/code/FunctionCallNode.d.ts +27 -0
  1452. package/src/nodes/code/FunctionCallNode.js +187 -0
  1453. package/src/nodes/code/FunctionNode.d.ts +40 -0
  1454. package/src/nodes/code/FunctionNode.js +178 -0
  1455. package/src/nodes/core/ArrayNode.d.ts +33 -0
  1456. package/src/nodes/core/ArrayNode.js +174 -0
  1457. package/src/nodes/core/AssignNode.d.ts +15 -0
  1458. package/src/nodes/core/AssignNode.js +202 -0
  1459. package/src/nodes/core/AttributeNode.d.ts +21 -0
  1460. package/src/nodes/core/AttributeNode.js +168 -0
  1461. package/src/nodes/core/BypassNode.d.ts +17 -0
  1462. package/src/nodes/core/BypassNode.js +93 -0
  1463. package/src/nodes/core/ConstNode.d.ts +16 -0
  1464. package/src/nodes/core/ConstNode.js +67 -0
  1465. package/src/nodes/core/ContextNode.d.ts +65 -0
  1466. package/src/nodes/core/ContextNode.js +336 -0
  1467. package/src/nodes/core/IndexNode.d.ts +33 -0
  1468. package/src/nodes/core/IndexNode.js +230 -0
  1469. package/src/nodes/core/InputNode.d.ts +23 -0
  1470. package/src/nodes/core/InputNode.js +136 -0
  1471. package/src/nodes/core/InspectorNode.d.ts +15 -0
  1472. package/src/nodes/core/InspectorNode.js +128 -0
  1473. package/src/nodes/core/IsolateNode.d.ts +31 -0
  1474. package/src/nodes/core/IsolateNode.js +133 -0
  1475. package/src/nodes/core/LightingModel.d.ts +33 -0
  1476. package/src/nodes/core/LightingModel.js +77 -0
  1477. package/src/nodes/core/MRTNode.d.ts +38 -0
  1478. package/src/nodes/core/MRTNode.js +243 -0
  1479. package/src/nodes/core/Node.d.ts +622 -0
  1480. package/src/nodes/core/Node.js +1220 -0
  1481. package/src/nodes/core/NodeAttribute.d.ts +47 -0
  1482. package/src/nodes/core/NodeAttribute.js +53 -0
  1483. package/src/nodes/core/NodeBuilder.d.ts +25 -0
  1484. package/src/nodes/core/NodeBuilder.js +3476 -0
  1485. package/src/nodes/core/NodeCache.d.ts +50 -0
  1486. package/src/nodes/core/NodeCache.js +75 -0
  1487. package/src/nodes/core/NodeCode.d.ts +4 -0
  1488. package/src/nodes/core/NodeCode.js +46 -0
  1489. package/src/nodes/core/NodeError.d.ts +9 -0
  1490. package/src/nodes/core/NodeError.js +28 -0
  1491. package/src/nodes/core/NodeFrame.d.ts +36 -0
  1492. package/src/nodes/core/NodeFrame.js +322 -0
  1493. package/src/nodes/core/NodeFunction.d.ts +13 -0
  1494. package/src/nodes/core/NodeFunction.js +69 -0
  1495. package/src/nodes/core/NodeFunctionInput.d.ts +7 -0
  1496. package/src/nodes/core/NodeFunctionInput.js +61 -0
  1497. package/src/nodes/core/NodeParser.d.ts +18 -0
  1498. package/src/nodes/core/NodeParser.js +23 -0
  1499. package/src/nodes/core/NodeUniform.d.ts +66 -0
  1500. package/src/nodes/core/NodeUniform.js +91 -0
  1501. package/src/nodes/core/NodeUtils.d.ts +26 -0
  1502. package/src/nodes/core/NodeUtils.js +496 -0
  1503. package/src/nodes/core/NodeVar.d.ts +51 -0
  1504. package/src/nodes/core/NodeVar.js +60 -0
  1505. package/src/nodes/core/NodeVarying.d.ts +59 -0
  1506. package/src/nodes/core/NodeVarying.js +63 -0
  1507. package/src/nodes/core/OutputStructNode.d.ts +11 -0
  1508. package/src/nodes/core/OutputStructNode.js +105 -0
  1509. package/src/nodes/core/OverrideContextNode.d.ts +92 -0
  1510. package/src/nodes/core/OverrideContextNode.js +153 -0
  1511. package/src/nodes/core/ParameterNode.d.ts +18 -0
  1512. package/src/nodes/core/ParameterNode.js +94 -0
  1513. package/src/nodes/core/PropertyNode.d.ts +66 -0
  1514. package/src/nodes/core/PropertyNode.js +421 -0
  1515. package/src/nodes/core/StackNode.d.ts +25 -0
  1516. package/src/nodes/core/StackNode.js +447 -0
  1517. package/src/nodes/core/StackTrace.d.ts +9 -0
  1518. package/src/nodes/core/StackTrace.js +139 -0
  1519. package/src/nodes/core/StructNode.d.ts +37 -0
  1520. package/src/nodes/core/StructNode.js +133 -0
  1521. package/src/nodes/core/StructType.d.ts +10 -0
  1522. package/src/nodes/core/StructType.js +13 -0
  1523. package/src/nodes/core/StructTypeNode.d.ts +57 -0
  1524. package/src/nodes/core/StructTypeNode.js +148 -0
  1525. package/src/nodes/core/SubBuildNode.d.ts +14 -0
  1526. package/src/nodes/core/SubBuildNode.js +89 -0
  1527. package/src/nodes/core/TempNode.d.ts +16 -0
  1528. package/src/nodes/core/TempNode.js +88 -0
  1529. package/src/nodes/core/UniformGroupNode.d.ts +22 -0
  1530. package/src/nodes/core/UniformGroupNode.js +168 -0
  1531. package/src/nodes/core/UniformNode.d.ts +162 -0
  1532. package/src/nodes/core/UniformNode.js +273 -0
  1533. package/src/nodes/core/VarNode.d.ts +45 -0
  1534. package/src/nodes/core/VarNode.js +374 -0
  1535. package/src/nodes/core/VaryingNode.d.ts +36 -0
  1536. package/src/nodes/core/VaryingNode.js +220 -0
  1537. package/src/nodes/core/constants.d.ts +72 -0
  1538. package/src/nodes/core/constants.js +68 -0
  1539. package/src/nodes/display/BlendModes.d.ts +76 -0
  1540. package/src/nodes/display/BlendModes.js +131 -0
  1541. package/src/nodes/display/BumpMapNode.d.ts +16 -0
  1542. package/src/nodes/display/BumpMapNode.js +122 -0
  1543. package/src/nodes/display/ColorAdjustment.d.ts +54 -0
  1544. package/src/nodes/display/ColorAdjustment.js +159 -0
  1545. package/src/nodes/display/ColorSpaceFunctions.d.ts +5 -0
  1546. package/src/nodes/display/ColorSpaceFunctions.js +54 -0
  1547. package/src/nodes/display/ColorSpaceNode.d.ts +54 -0
  1548. package/src/nodes/display/ColorSpaceNode.js +164 -0
  1549. package/src/nodes/display/FrontFacingNode.d.ts +71 -0
  1550. package/src/nodes/display/FrontFacingNode.js +131 -0
  1551. package/src/nodes/display/NormalMapNode.d.ts +18 -0
  1552. package/src/nodes/display/NormalMapNode.js +153 -0
  1553. package/src/nodes/display/PassNode.d.ts +124 -0
  1554. package/src/nodes/display/PassNode.js +1108 -0
  1555. package/src/nodes/display/PremultiplyAlphaFunctions.d.ts +37 -0
  1556. package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
  1557. package/src/nodes/display/RenderOutputNode.d.ts +29 -0
  1558. package/src/nodes/display/RenderOutputNode.js +159 -0
  1559. package/src/nodes/display/ScreenNode.d.ts +44 -0
  1560. package/src/nodes/display/ScreenNode.js +249 -0
  1561. package/src/nodes/display/ToneMappingFunctions.d.ts +13 -0
  1562. package/src/nodes/display/ToneMappingFunctions.js +242 -0
  1563. package/src/nodes/display/ToneMappingNode.d.ts +29 -0
  1564. package/src/nodes/display/ToneMappingNode.js +147 -0
  1565. package/src/nodes/display/ToonOutlinePassNode.d.ts +23 -0
  1566. package/src/nodes/display/ToonOutlinePassNode.js +191 -0
  1567. package/src/nodes/display/ViewportDepthNode.d.ts +41 -0
  1568. package/src/nodes/display/ViewportDepthNode.js +342 -0
  1569. package/src/nodes/display/ViewportDepthTextureNode.d.ts +14 -0
  1570. package/src/nodes/display/ViewportDepthTextureNode.js +63 -0
  1571. package/src/nodes/display/ViewportSharedTextureNode.d.ts +16 -0
  1572. package/src/nodes/display/ViewportSharedTextureNode.js +73 -0
  1573. package/src/nodes/display/ViewportTextureNode.d.ts +33 -0
  1574. package/src/nodes/display/ViewportTextureNode.js +256 -0
  1575. package/src/nodes/fog/Fog.d.ts +27 -0
  1576. package/src/nodes/fog/Fog.js +97 -0
  1577. package/src/nodes/functions/BSDF/BRDF_GGX.d.ts +15 -0
  1578. package/src/nodes/functions/BSDF/BRDF_GGX.js +55 -0
  1579. package/src/nodes/functions/BSDF/BRDF_Lambert.d.ts +6 -0
  1580. package/src/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
  1581. package/src/nodes/functions/BSDF/BRDF_Sheen.d.ts +6 -0
  1582. package/src/nodes/functions/BSDF/BRDF_Sheen.js +57 -0
  1583. package/src/nodes/functions/BSDF/DFGLUT.d.ts +13 -0
  1584. package/src/nodes/functions/BSDF/DFGLUT.js +57 -0
  1585. package/src/nodes/functions/BSDF/D_GGX.d.ts +9 -0
  1586. package/src/nodes/functions/BSDF/D_GGX.js +23 -0
  1587. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.d.ts +9 -0
  1588. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +28 -0
  1589. package/src/nodes/functions/BSDF/EnvironmentBRDF.d.ts +8 -0
  1590. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +13 -0
  1591. package/src/nodes/functions/BSDF/F_Schlick.d.ts +6 -0
  1592. package/src/nodes/functions/BSDF/F_Schlick.js +16 -0
  1593. package/src/nodes/functions/BSDF/LTC.d.ts +13 -0
  1594. package/src/nodes/functions/BSDF/LTC.js +175 -0
  1595. package/src/nodes/functions/BSDF/Schlick_to_F0.d.ts +9 -0
  1596. package/src/nodes/functions/BSDF/Schlick_to_F0.js +21 -0
  1597. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.d.ts +10 -0
  1598. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +26 -0
  1599. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.d.ts +15 -0
  1600. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +29 -0
  1601. package/src/nodes/functions/BasicLightingModel.d.ts +7 -0
  1602. package/src/nodes/functions/BasicLightingModel.js +100 -0
  1603. package/src/nodes/functions/PhongLightingModel.d.ts +7 -0
  1604. package/src/nodes/functions/PhongLightingModel.js +99 -0
  1605. package/src/nodes/functions/PhysicalLightingModel.d.ts +40 -0
  1606. package/src/nodes/functions/PhysicalLightingModel.js +936 -0
  1607. package/src/nodes/functions/ShadowMaskModel.d.ts +8 -0
  1608. package/src/nodes/functions/ShadowMaskModel.js +58 -0
  1609. package/src/nodes/functions/ToonLightingModel.d.ts +4 -0
  1610. package/src/nodes/functions/ToonLightingModel.js +70 -0
  1611. package/src/nodes/functions/VolumetricLightingModel.d.ts +6 -0
  1612. package/src/nodes/functions/VolumetricLightingModel.js +216 -0
  1613. package/src/nodes/functions/material/getAlphaHashThreshold.d.ts +5 -0
  1614. package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
  1615. package/src/nodes/functions/material/getGeometryRoughness.d.ts +5 -0
  1616. package/src/nodes/functions/material/getGeometryRoughness.js +19 -0
  1617. package/src/nodes/functions/material/getParallaxCorrectNormal.d.ts +9 -0
  1618. package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
  1619. package/src/nodes/functions/material/getRoughness.d.ts +6 -0
  1620. package/src/nodes/functions/material/getRoughness.js +18 -0
  1621. package/src/nodes/functions/material/getShIrradianceAt.d.ts +5 -0
  1622. package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  1623. package/src/nodes/geometry/RangeNode.d.ts +62 -0
  1624. package/src/nodes/geometry/RangeNode.js +210 -0
  1625. package/src/nodes/gpgpu/AtomicFunctionNode.d.ts +91 -0
  1626. package/src/nodes/gpgpu/AtomicFunctionNode.js +325 -0
  1627. package/src/nodes/gpgpu/BarrierNode.d.ts +15 -0
  1628. package/src/nodes/gpgpu/BarrierNode.js +107 -0
  1629. package/src/nodes/gpgpu/ComputeBuiltinNode.d.ts +22 -0
  1630. package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
  1631. package/src/nodes/gpgpu/ComputeNode.d.ts +50 -0
  1632. package/src/nodes/gpgpu/ComputeNode.js +313 -0
  1633. package/src/nodes/gpgpu/SubgroupFunctionNode.d.ts +99 -0
  1634. package/src/nodes/gpgpu/SubgroupFunctionNode.js +583 -0
  1635. package/src/nodes/gpgpu/WorkgroupInfoNode.d.ts +24 -0
  1636. package/src/nodes/gpgpu/WorkgroupInfoNode.js +272 -0
  1637. package/src/nodes/lighting/AONode.d.ts +8 -0
  1638. package/src/nodes/lighting/AONode.js +45 -0
  1639. package/src/nodes/lighting/AmbientLightNode.d.ts +8 -0
  1640. package/src/nodes/lighting/AmbientLightNode.js +35 -0
  1641. package/src/nodes/lighting/AnalyticLightNode.d.ts +32 -0
  1642. package/src/nodes/lighting/AnalyticLightNode.js +309 -0
  1643. package/src/nodes/lighting/BasicEnvironmentNode.d.ts +10 -0
  1644. package/src/nodes/lighting/BasicEnvironmentNode.js +49 -0
  1645. package/src/nodes/lighting/BasicLightMapNode.d.ts +8 -0
  1646. package/src/nodes/lighting/BasicLightMapNode.js +49 -0
  1647. package/src/nodes/lighting/DirectionalLightNode.d.ts +8 -0
  1648. package/src/nodes/lighting/DirectionalLightNode.js +39 -0
  1649. package/src/nodes/lighting/EnvironmentNode.d.ts +8 -0
  1650. package/src/nodes/lighting/EnvironmentNode.js +214 -0
  1651. package/src/nodes/lighting/HemisphereLightNode.d.ts +14 -0
  1652. package/src/nodes/lighting/HemisphereLightNode.js +87 -0
  1653. package/src/nodes/lighting/IESSpotLightNode.d.ts +5 -0
  1654. package/src/nodes/lighting/IESSpotLightNode.js +87 -0
  1655. package/src/nodes/lighting/IrradianceNode.d.ts +8 -0
  1656. package/src/nodes/lighting/IrradianceNode.js +44 -0
  1657. package/src/nodes/lighting/LightProbeNode.d.ts +11 -0
  1658. package/src/nodes/lighting/LightProbeNode.js +73 -0
  1659. package/src/nodes/lighting/LightUtils.d.ts +8 -0
  1660. package/src/nodes/lighting/LightUtils.js +25 -0
  1661. package/src/nodes/lighting/LightingContextNode.d.ts +41 -0
  1662. package/src/nodes/lighting/LightingContextNode.js +123 -0
  1663. package/src/nodes/lighting/LightingNode.d.ts +7 -0
  1664. package/src/nodes/lighting/LightingNode.js +36 -0
  1665. package/src/nodes/lighting/LightsNode.d.ts +48 -0
  1666. package/src/nodes/lighting/LightsNode.js +501 -0
  1667. package/src/nodes/lighting/PointLightNode.d.ts +23 -0
  1668. package/src/nodes/lighting/PointLightNode.js +102 -0
  1669. package/src/nodes/lighting/PointShadowNode.d.ts +25 -0
  1670. package/src/nodes/lighting/PointShadowNode.js +330 -0
  1671. package/src/nodes/lighting/ProjectorLightNode.d.ts +5 -0
  1672. package/src/nodes/lighting/ProjectorLightNode.js +91 -0
  1673. package/src/nodes/lighting/RectAreaLightNode.d.ts +21 -0
  1674. package/src/nodes/lighting/RectAreaLightNode.js +133 -0
  1675. package/src/nodes/lighting/ShadowBaseNode.d.ts +47 -0
  1676. package/src/nodes/lighting/ShadowBaseNode.js +238 -0
  1677. package/src/nodes/lighting/ShadowFilterNode.d.ts +17 -0
  1678. package/src/nodes/lighting/ShadowFilterNode.js +129 -0
  1679. package/src/nodes/lighting/ShadowNode.d.ts +11 -0
  1680. package/src/nodes/lighting/ShadowNode.js +841 -0
  1681. package/src/nodes/lighting/SpotLightNode.d.ts +22 -0
  1682. package/src/nodes/lighting/SpotLightNode.js +168 -0
  1683. package/src/nodes/materialx/DISCLAIMER.md +199 -0
  1684. package/src/nodes/materialx/MaterialXColor.d.ts +5 -0
  1685. package/src/nodes/materialx/MaterialXColor.js +124 -0
  1686. package/src/nodes/materialx/MaterialXColorTransform.d.ts +3 -0
  1687. package/src/nodes/materialx/MaterialXColorTransform.js +20 -0
  1688. package/src/nodes/materialx/MaterialXCore.d.ts +5 -0
  1689. package/src/nodes/materialx/MaterialXCore.js +37 -0
  1690. package/src/nodes/materialx/MaterialXNodes.d.ts +206 -0
  1691. package/src/nodes/materialx/MaterialXNodes.js +189 -0
  1692. package/src/nodes/materialx/MaterialXNoise.d.ts +415 -0
  1693. package/src/nodes/materialx/MaterialXNoise.js +1720 -0
  1694. package/src/nodes/math/BitcastNode.d.ts +24 -0
  1695. package/src/nodes/math/BitcastNode.js +156 -0
  1696. package/src/nodes/math/BitcountNode.d.ts +23 -0
  1697. package/src/nodes/math/BitcountNode.js +453 -0
  1698. package/src/nodes/math/ConditionalNode.d.ts +51 -0
  1699. package/src/nodes/math/ConditionalNode.js +245 -0
  1700. package/src/nodes/math/Hash.d.ts +3 -0
  1701. package/src/nodes/math/Hash.js +21 -0
  1702. package/src/nodes/math/MathNode.d.ts +895 -0
  1703. package/src/nodes/math/MathNode.js +1230 -0
  1704. package/src/nodes/math/MathUtils.d.ts +10 -0
  1705. package/src/nodes/math/MathUtils.js +65 -0
  1706. package/src/nodes/math/OperatorNode.d.ts +709 -0
  1707. package/src/nodes/math/OperatorNode.js +752 -0
  1708. package/src/nodes/math/PackFloatNode.d.ts +24 -0
  1709. package/src/nodes/math/PackFloatNode.js +126 -0
  1710. package/src/nodes/math/Packed4x8IntegerNode.d.ts +49 -0
  1711. package/src/nodes/math/Packed4x8IntegerNode.js +433 -0
  1712. package/src/nodes/math/TriNoise3D.d.ts +11 -0
  1713. package/src/nodes/math/TriNoise3D.js +71 -0
  1714. package/src/nodes/math/UnpackFloatNode.d.ts +21 -0
  1715. package/src/nodes/math/UnpackFloatNode.js +124 -0
  1716. package/src/nodes/parsers/GLSLNodeFunction.d.ts +9 -0
  1717. package/src/nodes/parsers/GLSLNodeFunction.js +168 -0
  1718. package/src/nodes/parsers/GLSLNodeParser.d.ts +8 -0
  1719. package/src/nodes/parsers/GLSLNodeParser.js +25 -0
  1720. package/src/nodes/pmrem/PMREMNode.d.ts +21 -0
  1721. package/src/nodes/pmrem/PMREMNode.js +428 -0
  1722. package/src/nodes/pmrem/PMREMUtils.d.ts +21 -0
  1723. package/src/nodes/pmrem/PMREMUtils.js +354 -0
  1724. package/src/nodes/procedural/Checker.d.ts +3 -0
  1725. package/src/nodes/procedural/Checker.js +22 -0
  1726. package/src/nodes/shapes/Shapes.d.ts +3 -0
  1727. package/src/nodes/shapes/Shapes.js +33 -0
  1728. package/src/nodes/tsl/TSLBase.d.ts +30 -0
  1729. package/src/nodes/tsl/TSLBase.js +36 -0
  1730. package/src/nodes/tsl/TSLCore.d.ts +2420 -0
  1731. package/src/nodes/tsl/TSLCore.js +1265 -0
  1732. package/src/nodes/utils/ArrayElementNode.d.ts +15 -0
  1733. package/src/nodes/utils/ArrayElementNode.js +90 -0
  1734. package/src/nodes/utils/ConvertNode.d.ts +14 -0
  1735. package/src/nodes/utils/ConvertNode.js +100 -0
  1736. package/src/nodes/utils/CubeMapNode.d.ts +12 -0
  1737. package/src/nodes/utils/CubeMapNode.js +237 -0
  1738. package/src/nodes/utils/DebugNode.d.ts +22 -0
  1739. package/src/nodes/utils/DebugNode.js +83 -0
  1740. package/src/nodes/utils/Discard.d.ts +10 -0
  1741. package/src/nodes/utils/Discard.js +24 -0
  1742. package/src/nodes/utils/EquirectUV.d.ts +33 -0
  1743. package/src/nodes/utils/EquirectUV.js +52 -0
  1744. package/src/nodes/utils/EventNode.d.ts +41 -0
  1745. package/src/nodes/utils/EventNode.js +223 -0
  1746. package/src/nodes/utils/FlipNode.d.ts +11 -0
  1747. package/src/nodes/utils/FlipNode.js +106 -0
  1748. package/src/nodes/utils/FunctionOverloadingNode.d.ts +12 -0
  1749. package/src/nodes/utils/FunctionOverloadingNode.js +170 -0
  1750. package/src/nodes/utils/JoinNode.d.ts +14 -0
  1751. package/src/nodes/utils/JoinNode.js +117 -0
  1752. package/src/nodes/utils/LoopNode.d.ts +43 -0
  1753. package/src/nodes/utils/LoopNode.js +390 -0
  1754. package/src/nodes/utils/MatcapUV.d.ts +3 -0
  1755. package/src/nodes/utils/MatcapUV.js +22 -0
  1756. package/src/nodes/utils/MaxMipLevelNode.d.ts +13 -0
  1757. package/src/nodes/utils/MaxMipLevelNode.js +103 -0
  1758. package/src/nodes/utils/MemberNode.d.ts +11 -0
  1759. package/src/nodes/utils/MemberNode.js +120 -0
  1760. package/src/nodes/utils/Oscillators.d.ts +6 -0
  1761. package/src/nodes/utils/Oscillators.js +41 -0
  1762. package/src/nodes/utils/Packing.d.ts +52 -0
  1763. package/src/nodes/utils/Packing.js +64 -0
  1764. package/src/nodes/utils/PostProcessingUtils.d.ts +56 -0
  1765. package/src/nodes/utils/PostProcessingUtils.js +175 -0
  1766. package/src/nodes/utils/RTTNode.d.ts +46 -0
  1767. package/src/nodes/utils/RTTNode.js +370 -0
  1768. package/src/nodes/utils/ReflectorNode.d.ts +61 -0
  1769. package/src/nodes/utils/ReflectorNode.js +634 -0
  1770. package/src/nodes/utils/Remap.d.ts +223 -0
  1771. package/src/nodes/utils/Remap.js +48 -0
  1772. package/src/nodes/utils/RotateNode.d.ts +26 -0
  1773. package/src/nodes/utils/RotateNode.js +180 -0
  1774. package/src/nodes/utils/SampleNode.d.ts +26 -0
  1775. package/src/nodes/utils/SampleNode.js +91 -0
  1776. package/src/nodes/utils/SetNode.d.ts +11 -0
  1777. package/src/nodes/utils/SetNode.js +108 -0
  1778. package/src/nodes/utils/SplitNode.d.ts +14 -0
  1779. package/src/nodes/utils/SplitNode.js +179 -0
  1780. package/src/nodes/utils/SpriteSheetUV.d.ts +7 -0
  1781. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  1782. package/src/nodes/utils/SpriteUtils.d.ts +5 -0
  1783. package/src/nodes/utils/SpriteUtils.js +98 -0
  1784. package/src/nodes/utils/StorageArrayElementNode.d.ts +28 -0
  1785. package/src/nodes/utils/StorageArrayElementNode.js +143 -0
  1786. package/src/nodes/utils/Timer.d.ts +5 -0
  1787. package/src/nodes/utils/Timer.js +26 -0
  1788. package/src/nodes/utils/TriplanarTextures.d.ts +19 -0
  1789. package/src/nodes/utils/TriplanarTextures.js +65 -0
  1790. package/src/nodes/utils/UVUtils.d.ts +19 -0
  1791. package/src/nodes/utils/UVUtils.js +67 -0
  1792. package/src/nodes/utils/ViewportUtils.d.ts +3 -0
  1793. package/src/nodes/utils/ViewportUtils.js +26 -0
  1794. package/src/objects/BatchedMesh.d.ts +280 -0
  1795. package/src/objects/BatchedMesh.js +1696 -0
  1796. package/src/objects/Bone.d.ts +36 -0
  1797. package/src/objects/Bone.js +41 -0
  1798. package/src/objects/ClippingGroup.d.ts +41 -0
  1799. package/src/objects/ClippingGroup.js +68 -0
  1800. package/src/objects/Group.d.ts +37 -0
  1801. package/src/objects/Group.js +41 -0
  1802. package/src/objects/InstancedMesh.d.ts +175 -0
  1803. package/src/objects/InstancedMesh.js +411 -0
  1804. package/src/objects/LOD.d.ts +112 -0
  1805. package/src/objects/LOD.js +329 -0
  1806. package/src/objects/Line.d.ts +96 -0
  1807. package/src/objects/Line.js +341 -0
  1808. package/src/objects/LineLoop.d.ts +40 -0
  1809. package/src/objects/LineLoop.js +37 -0
  1810. package/src/objects/LineSegments.d.ts +41 -0
  1811. package/src/objects/LineSegments.js +74 -0
  1812. package/src/objects/Mesh.d.ts +111 -0
  1813. package/src/objects/Mesh.js +508 -0
  1814. package/src/objects/Points.d.ts +75 -0
  1815. package/src/objects/Points.js +240 -0
  1816. package/src/objects/Skeleton.d.ts +120 -0
  1817. package/src/objects/Skeleton.js +383 -0
  1818. package/src/objects/SkinnedMesh.d.ts +163 -0
  1819. package/src/objects/SkinnedMesh.js +370 -0
  1820. package/src/objects/Sprite.d.ts +82 -0
  1821. package/src/objects/Sprite.js +257 -0
  1822. package/src/renderers/WebGL3DRenderTarget.d.ts +29 -0
  1823. package/src/renderers/WebGL3DRenderTarget.js +48 -0
  1824. package/src/renderers/WebGLArrayRenderTarget.d.ts +29 -0
  1825. package/src/renderers/WebGLArrayRenderTarget.js +48 -0
  1826. package/src/renderers/WebGLCubeRenderTarget.d.ts +18 -0
  1827. package/src/renderers/WebGLCubeRenderTarget.js +182 -0
  1828. package/src/renderers/WebGLRenderTarget.d.ts +8 -0
  1829. package/src/renderers/WebGLRenderTarget.js +34 -0
  1830. package/src/renderers/WebGLRenderer.d.ts +489 -0
  1831. package/src/renderers/WebGLRenderer.js +3769 -0
  1832. package/src/renderers/common/Animation.js +169 -0
  1833. package/src/renderers/common/Attributes.js +187 -0
  1834. package/src/renderers/common/Backend.d.ts +29 -0
  1835. package/src/renderers/common/Backend.js +841 -0
  1836. package/src/renderers/common/Background.js +225 -0
  1837. package/src/renderers/common/BindGroup.js +45 -0
  1838. package/src/renderers/common/Binding.js +71 -0
  1839. package/src/renderers/common/Bindings.js +535 -0
  1840. package/src/renderers/common/BlendMode.d.ts +22 -0
  1841. package/src/renderers/common/BlendMode.js +143 -0
  1842. package/src/renderers/common/Buffer.js +136 -0
  1843. package/src/renderers/common/BufferUtils.d.ts +28 -0
  1844. package/src/renderers/common/BufferUtils.js +58 -0
  1845. package/src/renderers/common/BundleGroup.d.ts +46 -0
  1846. package/src/renderers/common/BundleGroup.js +87 -0
  1847. package/src/renderers/common/CanvasTarget.d.ts +158 -0
  1848. package/src/renderers/common/CanvasTarget.js +341 -0
  1849. package/src/renderers/common/CapabilityTier.js +18 -0
  1850. package/src/renderers/common/ChainMap.js +122 -0
  1851. package/src/renderers/common/ClippingContext.d.ts +134 -0
  1852. package/src/renderers/common/ClippingContext.js +280 -0
  1853. package/src/renderers/common/Color4.d.ts +53 -0
  1854. package/src/renderers/common/Color4.js +86 -0
  1855. package/src/renderers/common/ComputePipeline.js +41 -0
  1856. package/src/renderers/common/Constants.d.ts +9 -0
  1857. package/src/renderers/common/Constants.js +10 -0
  1858. package/src/renderers/common/CubeRenderTarget.d.ts +47 -0
  1859. package/src/renderers/common/CubeRenderTarget.js +147 -0
  1860. package/src/renderers/common/DataMap.js +90 -0
  1861. package/src/renderers/common/DirectRenderPipeline.d.ts +20 -0
  1862. package/src/renderers/common/DirectRenderPipeline.js +233 -0
  1863. package/src/renderers/common/GPUInstanceCuller.d.ts +43 -0
  1864. package/src/renderers/common/GPUInstanceCuller.js +372 -0
  1865. package/src/renderers/common/GPUTimings.js +66 -0
  1866. package/src/renderers/common/Geometries.js +485 -0
  1867. package/src/renderers/common/IndirectStorageBufferAttribute.d.ts +10 -0
  1868. package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
  1869. package/src/renderers/common/Info.d.ts +194 -0
  1870. package/src/renderers/common/Info.js +542 -0
  1871. package/src/renderers/common/InspectorBase.d.ts +129 -0
  1872. package/src/renderers/common/InspectorBase.js +180 -0
  1873. package/src/renderers/common/Lighting.d.ts +55 -0
  1874. package/src/renderers/common/Lighting.js +112 -0
  1875. package/src/renderers/common/Pipeline.js +35 -0
  1876. package/src/renderers/common/Pipelines.js +500 -0
  1877. package/src/renderers/common/PostProcessing.d.ts +21 -0
  1878. package/src/renderers/common/PostProcessing.js +28 -0
  1879. package/src/renderers/common/ProgrammableStage.js +78 -0
  1880. package/src/renderers/common/QuadMesh.d.ts +19 -0
  1881. package/src/renderers/common/QuadMesh.js +126 -0
  1882. package/src/renderers/common/ReadbackBuffer.d.ts +63 -0
  1883. package/src/renderers/common/ReadbackBuffer.js +78 -0
  1884. package/src/renderers/common/RenderBundle.js +26 -0
  1885. package/src/renderers/common/RenderBundles.js +71 -0
  1886. package/src/renderers/common/RenderContext.js +289 -0
  1887. package/src/renderers/common/RenderContexts.js +100 -0
  1888. package/src/renderers/common/RenderList.js +475 -0
  1889. package/src/renderers/common/RenderLists.js +125 -0
  1890. package/src/renderers/common/RenderObject.js +989 -0
  1891. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  1892. package/src/renderers/common/RenderObjects.js +245 -0
  1893. package/src/renderers/common/RenderPipeline.d.ts +26 -0
  1894. package/src/renderers/common/RenderPipeline.js +263 -0
  1895. package/src/renderers/common/Renderer.d.ts +1209 -0
  1896. package/src/renderers/common/Renderer.js +4115 -0
  1897. package/src/renderers/common/RendererUtils.d.ts +77 -0
  1898. package/src/renderers/common/RendererUtils.js +200 -0
  1899. package/src/renderers/common/SampledTexture.js +152 -0
  1900. package/src/renderers/common/Sampler.js +133 -0
  1901. package/src/renderers/common/Storage3DTexture.d.ts +42 -0
  1902. package/src/renderers/common/Storage3DTexture.js +116 -0
  1903. package/src/renderers/common/StorageArrayTexture.d.ts +31 -0
  1904. package/src/renderers/common/StorageArrayTexture.js +84 -0
  1905. package/src/renderers/common/StorageBuffer.js +53 -0
  1906. package/src/renderers/common/StorageBufferAttribute.d.ts +7 -0
  1907. package/src/renderers/common/StorageBufferAttribute.js +46 -0
  1908. package/src/renderers/common/StorageInstancedBufferAttribute.d.ts +8 -0
  1909. package/src/renderers/common/StorageInstancedBufferAttribute.js +46 -0
  1910. package/src/renderers/common/StorageTexture.d.ts +7 -0
  1911. package/src/renderers/common/StorageTexture.js +86 -0
  1912. package/src/renderers/common/Textures.js +656 -0
  1913. package/src/renderers/common/TimestampQueryPool.d.ts +120 -0
  1914. package/src/renderers/common/TimestampQueryPool.js +173 -0
  1915. package/src/renderers/common/Uniform.js +375 -0
  1916. package/src/renderers/common/UniformBuffer.js +34 -0
  1917. package/src/renderers/common/UniformsGroup.js +570 -0
  1918. package/src/renderers/common/XRManager.d.ts +293 -0
  1919. package/src/renderers/common/XRManager.js +2009 -0
  1920. package/src/renderers/common/XRRenderTarget.js +91 -0
  1921. package/src/renderers/common/extras/PMREMGenerator.d.ts +52 -0
  1922. package/src/renderers/common/extras/PMREMGenerator.js +951 -0
  1923. package/src/renderers/common/nodes/NodeBuilderState.js +160 -0
  1924. package/src/renderers/common/nodes/NodeLibrary.d.ts +129 -0
  1925. package/src/renderers/common/nodes/NodeLibrary.js +196 -0
  1926. package/src/renderers/common/nodes/NodeManager.js +1170 -0
  1927. package/src/renderers/common/nodes/NodeSampledTexture.js +140 -0
  1928. package/src/renderers/common/nodes/NodeSampler.js +62 -0
  1929. package/src/renderers/common/nodes/NodeStorageBuffer.js +74 -0
  1930. package/src/renderers/common/nodes/NodeUniform.js +418 -0
  1931. package/src/renderers/common/nodes/NodeUniformBuffer.js +120 -0
  1932. package/src/renderers/common/nodes/NodeUniformsGroup.js +51 -0
  1933. package/src/renderers/shaders/DFGLUTData.js +50 -0
  1934. package/src/renderers/shaders/ShaderChunk/alphahash_fragment.glsl.js +7 -0
  1935. package/src/renderers/shaders/ShaderChunk/alphahash_pars_fragment.glsl.js +68 -0
  1936. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +7 -0
  1937. package/src/renderers/shaders/ShaderChunk/alphamap_pars_fragment.glsl.js +7 -0
  1938. package/src/renderers/shaders/ShaderChunk/alphatest_fragment.glsl.js +16 -0
  1939. package/src/renderers/shaders/ShaderChunk/alphatest_pars_fragment.glsl.js +5 -0
  1940. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +26 -0
  1941. package/src/renderers/shaders/ShaderChunk/aomap_pars_fragment.glsl.js +8 -0
  1942. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +49 -0
  1943. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +5 -0
  1944. package/src/renderers/shaders/ShaderChunk/begin_vertex.glsl.js +9 -0
  1945. package/src/renderers/shaders/ShaderChunk/beginnormal_vertex.glsl.js +9 -0
  1946. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +33 -0
  1947. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +43 -0
  1948. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_begin.glsl.js +7 -0
  1949. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +10 -0
  1950. package/src/renderers/shaders/ShaderChunk/clearcoat_pars_fragment.glsl.js +21 -0
  1951. package/src/renderers/shaders/ShaderChunk/clipping_planes_fragment.glsl.js +78 -0
  1952. package/src/renderers/shaders/ShaderChunk/clipping_planes_pars_fragment.glsl.js +9 -0
  1953. package/src/renderers/shaders/ShaderChunk/clipping_planes_pars_vertex.glsl.js +7 -0
  1954. package/src/renderers/shaders/ShaderChunk/clipping_planes_vertex.glsl.js +7 -0
  1955. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +7 -0
  1956. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +7 -0
  1957. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +7 -0
  1958. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +29 -0
  1959. package/src/renderers/shaders/ShaderChunk/colorspace_fragment.glsl.js +3 -0
  1960. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +15 -0
  1961. package/src/renderers/shaders/ShaderChunk/common.glsl.js +134 -0
  1962. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +186 -0
  1963. package/src/renderers/shaders/ShaderChunk/default_fragment.glsl.js +5 -0
  1964. package/src/renderers/shaders/ShaderChunk/default_vertex.glsl.js +5 -0
  1965. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +59 -0
  1966. package/src/renderers/shaders/ShaderChunk/displacementmap_pars_vertex.glsl.js +9 -0
  1967. package/src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl.js +7 -0
  1968. package/src/renderers/shaders/ShaderChunk/dithering_fragment.glsl.js +7 -0
  1969. package/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +20 -0
  1970. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +17 -0
  1971. package/src/renderers/shaders/ShaderChunk/emissivemap_pars_fragment.glsl.js +7 -0
  1972. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +14 -0
  1973. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +58 -0
  1974. package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +21 -0
  1975. package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +22 -0
  1976. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +117 -0
  1977. package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +37 -0
  1978. package/src/renderers/shaders/ShaderChunk/fog_fragment.glsl.js +17 -0
  1979. package/src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl.js +19 -0
  1980. package/src/renderers/shaders/ShaderChunk/fog_pars_vertex.glsl.js +7 -0
  1981. package/src/renderers/shaders/ShaderChunk/fog_vertex.glsl.js +7 -0
  1982. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +27 -0
  1983. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +120 -0
  1984. package/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -0
  1985. package/src/renderers/shaders/ShaderChunk/lightmap_pars_fragment.glsl.js +8 -0
  1986. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
  1987. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +262 -0
  1988. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +19 -0
  1989. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +62 -0
  1990. package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
  1991. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +28 -0
  1992. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +236 -0
  1993. package/src/renderers/shaders/ShaderChunk/lights_phong_fragment.glsl.js +7 -0
  1994. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +32 -0
  1995. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +167 -0
  1996. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +660 -0
  1997. package/src/renderers/shaders/ShaderChunk/lights_toon_fragment.glsl.js +4 -0
  1998. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +26 -0
  1999. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +9 -0
  2000. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +9 -0
  2001. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +8 -0
  2002. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +8 -0
  2003. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +17 -0
  2004. package/src/renderers/shaders/ShaderChunk/map_pars_fragment.glsl.js +7 -0
  2005. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +27 -0
  2006. package/src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl.js +27 -0
  2007. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +12 -0
  2008. package/src/renderers/shaders/ShaderChunk/metalnessmap_pars_fragment.glsl.js +7 -0
  2009. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +24 -0
  2010. package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +14 -0
  2011. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +16 -0
  2012. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +26 -0
  2013. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +16 -0
  2014. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +76 -0
  2015. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +40 -0
  2016. package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +14 -0
  2017. package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +14 -0
  2018. package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +20 -0
  2019. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +43 -0
  2020. package/src/renderers/shaders/ShaderChunk/opaque_fragment.glsl.js +11 -0
  2021. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +116 -0
  2022. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +7 -0
  2023. package/src/renderers/shaders/ShaderChunk/project_vertex.glsl.js +19 -0
  2024. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -0
  2025. package/src/renderers/shaders/ShaderChunk/roughnessmap_pars_fragment.glsl.js +7 -0
  2026. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +458 -0
  2027. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +80 -0
  2028. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +85 -0
  2029. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +81 -0
  2030. package/src/renderers/shaders/ShaderChunk/skinbase_vertex.glsl.js +10 -0
  2031. package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +25 -0
  2032. package/src/renderers/shaders/ShaderChunk/skinning_vertex.glsl.js +15 -0
  2033. package/src/renderers/shaders/ShaderChunk/skinnormal_vertex.glsl.js +20 -0
  2034. package/src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl.js +14 -0
  2035. package/src/renderers/shaders/ShaderChunk/specularmap_pars_fragment.glsl.js +7 -0
  2036. package/src/renderers/shaders/ShaderChunk/tonemapping_fragment.glsl.js +7 -0
  2037. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +200 -0
  2038. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +36 -0
  2039. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +235 -0
  2040. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +119 -0
  2041. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +145 -0
  2042. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +122 -0
  2043. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +21 -0
  2044. package/src/renderers/shaders/ShaderChunk.d.ts +144 -0
  2045. package/src/renderers/shaders/ShaderChunk.js +272 -0
  2046. package/src/renderers/shaders/ShaderLib/background.glsl.js +40 -0
  2047. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  2048. package/src/renderers/shaders/ShaderLib/cube.glsl.js +36 -0
  2049. package/src/renderers/shaders/ShaderLib/depth.glsl.js +117 -0
  2050. package/src/renderers/shaders/ShaderLib/distance.glsl.js +77 -0
  2051. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +35 -0
  2052. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +76 -0
  2053. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +116 -0
  2054. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +126 -0
  2055. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +112 -0
  2056. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +86 -0
  2057. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +128 -0
  2058. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +228 -0
  2059. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +118 -0
  2060. package/src/renderers/shaders/ShaderLib/points.glsl.js +87 -0
  2061. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +58 -0
  2062. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +79 -0
  2063. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +51 -0
  2064. package/src/renderers/shaders/ShaderLib.d.ts +29 -0
  2065. package/src/renderers/shaders/ShaderLib.js +363 -0
  2066. package/src/renderers/shaders/UniformsLib.d.ts +209 -0
  2067. package/src/renderers/shaders/UniformsLib.js +250 -0
  2068. package/src/renderers/shaders/UniformsUtils.d.ts +14 -0
  2069. package/src/renderers/shaders/UniformsUtils.js +154 -0
  2070. package/src/renderers/webgl/WebGLAnimation.js +54 -0
  2071. package/src/renderers/webgl/WebGLAttributes.d.ts +23 -0
  2072. package/src/renderers/webgl/WebGLAttributes.js +237 -0
  2073. package/src/renderers/webgl/WebGLBackground.js +303 -0
  2074. package/src/renderers/webgl/WebGLBindingStates.d.ts +26 -0
  2075. package/src/renderers/webgl/WebGLBindingStates.js +666 -0
  2076. package/src/renderers/webgl/WebGLBufferRenderer.d.ts +15 -0
  2077. package/src/renderers/webgl/WebGLBufferRenderer.js +57 -0
  2078. package/src/renderers/webgl/WebGLCapabilities.d.ts +48 -0
  2079. package/src/renderers/webgl/WebGLCapabilities.js +150 -0
  2080. package/src/renderers/webgl/WebGLClipping.d.ts +26 -0
  2081. package/src/renderers/webgl/WebGLClipping.js +171 -0
  2082. package/src/renderers/webgl/WebGLEnvironments.d.ts +8 -0
  2083. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  2084. package/src/renderers/webgl/WebGLExtensions.d.ts +7 -0
  2085. package/src/renderers/webgl/WebGLExtensions.js +61 -0
  2086. package/src/renderers/webgl/WebGLGeometries.d.ts +13 -0
  2087. package/src/renderers/webgl/WebGLGeometries.js +186 -0
  2088. package/src/renderers/webgl/WebGLIndexedBufferRenderer.d.ts +13 -0
  2089. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +68 -0
  2090. package/src/renderers/webgl/WebGLInfo.d.ts +39 -0
  2091. package/src/renderers/webgl/WebGLInfo.js +73 -0
  2092. package/src/renderers/webgl/WebGLLights.d.ts +57 -0
  2093. package/src/renderers/webgl/WebGLLights.js +654 -0
  2094. package/src/renderers/webgl/WebGLMaterials.js +608 -0
  2095. package/src/renderers/webgl/WebGLMorphtargets.js +168 -0
  2096. package/src/renderers/webgl/WebGLObjects.d.ts +19 -0
  2097. package/src/renderers/webgl/WebGLObjects.js +94 -0
  2098. package/src/renderers/webgl/WebGLOutput.js +283 -0
  2099. package/src/renderers/webgl/WebGLProgram.d.ts +22 -0
  2100. package/src/renderers/webgl/WebGLProgram.js +1035 -0
  2101. package/src/renderers/webgl/WebGLPrograms.d.ts +242 -0
  2102. package/src/renderers/webgl/WebGLPrograms.js +694 -0
  2103. package/src/renderers/webgl/WebGLProperties.d.ts +9 -0
  2104. package/src/renderers/webgl/WebGLProperties.js +55 -0
  2105. package/src/renderers/webgl/WebGLRenderLists.d.ts +68 -0
  2106. package/src/renderers/webgl/WebGLRenderLists.js +257 -0
  2107. package/src/renderers/webgl/WebGLRenderStates.js +124 -0
  2108. package/src/renderers/webgl/WebGLShader.d.ts +1 -0
  2109. package/src/renderers/webgl/WebGLShader.js +12 -0
  2110. package/src/renderers/webgl/WebGLShaderCache.js +118 -0
  2111. package/src/renderers/webgl/WebGLShadowMap.d.ts +33 -0
  2112. package/src/renderers/webgl/WebGLShadowMap.js +611 -0
  2113. package/src/renderers/webgl/WebGLState.d.ts +399 -0
  2114. package/src/renderers/webgl/WebGLState.js +1370 -0
  2115. package/src/renderers/webgl/WebGLTextures.d.ts +31 -0
  2116. package/src/renderers/webgl/WebGLTextures.js +2519 -0
  2117. package/src/renderers/webgl/WebGLUniforms.d.ts +5 -0
  2118. package/src/renderers/webgl/WebGLUniforms.js +1203 -0
  2119. package/src/renderers/webgl/WebGLUniformsGroups.d.ts +17 -0
  2120. package/src/renderers/webgl/WebGLUniformsGroups.js +441 -0
  2121. package/src/renderers/webgl/WebGLUtils.d.ts +11 -0
  2122. package/src/renderers/webgl/WebGLUtils.js +217 -0
  2123. package/src/renderers/webgl-fallback/WebGLBackend.d.ts +16 -0
  2124. package/src/renderers/webgl-fallback/WebGLBackend.js +2950 -0
  2125. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +99 -0
  2126. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.d.ts +9 -0
  2127. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +1860 -0
  2128. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +359 -0
  2129. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.d.ts +51 -0
  2130. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +105 -0
  2131. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +13 -0
  2132. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +83 -0
  2133. package/src/renderers/webgl-fallback/utils/WebGLState.js +1507 -0
  2134. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1381 -0
  2135. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +406 -0
  2136. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +319 -0
  2137. package/src/renderers/webgpu/WebGPUBackend.d.ts +32 -0
  2138. package/src/renderers/webgpu/WebGPUBackend.js +3321 -0
  2139. package/src/renderers/webgpu/WebGPURenderer.Nodes.d.ts +12 -0
  2140. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +69 -0
  2141. package/src/renderers/webgpu/WebGPURenderer.d.ts +17 -0
  2142. package/src/renderers/webgpu/WebGPURenderer.js +107 -0
  2143. package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
  2144. package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
  2145. package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
  2146. package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
  2147. package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
  2148. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
  2149. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
  2150. package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
  2151. package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
  2152. package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
  2153. package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
  2154. package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
  2155. package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
  2156. package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
  2157. package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
  2158. package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
  2159. package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
  2160. package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
  2161. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
  2162. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
  2163. package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
  2164. package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
  2165. package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
  2166. package/src/renderers/webgpu/nodes/BasicNodeLibrary.d.ts +13 -0
  2167. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +66 -0
  2168. package/src/renderers/webgpu/nodes/StandardNodeLibrary.d.ts +91 -0
  2169. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +99 -0
  2170. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.d.ts +9 -0
  2171. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +2759 -0
  2172. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +188 -0
  2173. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +25 -0
  2174. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +573 -0
  2175. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +683 -0
  2176. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +149 -0
  2177. package/src/renderers/webgpu/utils/WebGPUConstants.d.ts +348 -0
  2178. package/src/renderers/webgpu/utils/WebGPUConstants.js +354 -0
  2179. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +1007 -0
  2180. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +452 -0
  2181. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1884 -0
  2182. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +337 -0
  2183. package/src/renderers/webgpu/utils/WebGPUUniformArena.js +240 -0
  2184. package/src/renderers/webgpu/utils/WebGPUUtils.js +342 -0
  2185. package/src/renderers/webxr/WebXRController.d.ts +67 -0
  2186. package/src/renderers/webxr/WebXRController.js +440 -0
  2187. package/src/renderers/webxr/WebXRDepthSensing.d.ts +21 -0
  2188. package/src/renderers/webxr/WebXRDepthSensing.js +155 -0
  2189. package/src/renderers/webxr/WebXRManager.d.ts +89 -0
  2190. package/src/renderers/webxr/WebXRManager.js +1126 -0
  2191. package/src/scenes/Fog.d.ts +71 -0
  2192. package/src/scenes/Fog.js +98 -0
  2193. package/src/scenes/FogExp2.d.ts +61 -0
  2194. package/src/scenes/FogExp2.js +86 -0
  2195. package/src/scenes/Scene.d.ts +104 -0
  2196. package/src/scenes/Scene.js +165 -0
  2197. package/src/textures/CanvasTexture.d.ts +51 -0
  2198. package/src/textures/CanvasTexture.js +45 -0
  2199. package/src/textures/CompressedArrayTexture.d.ts +65 -0
  2200. package/src/textures/CompressedArrayTexture.js +105 -0
  2201. package/src/textures/CompressedCubeTexture.d.ts +13 -0
  2202. package/src/textures/CompressedCubeTexture.js +48 -0
  2203. package/src/textures/CompressedTexture.d.ts +92 -0
  2204. package/src/textures/CompressedTexture.js +86 -0
  2205. package/src/textures/CubeDepthTexture.d.ts +40 -0
  2206. package/src/textures/CubeDepthTexture.js +76 -0
  2207. package/src/textures/CubeTexture.d.ts +82 -0
  2208. package/src/textures/CubeTexture.js +81 -0
  2209. package/src/textures/Data3DTexture.d.ts +94 -0
  2210. package/src/textures/Data3DTexture.js +128 -0
  2211. package/src/textures/DataArrayTexture.d.ts +123 -0
  2212. package/src/textures/DataArrayTexture.js +150 -0
  2213. package/src/textures/DataTexture.d.ts +112 -0
  2214. package/src/textures/DataTexture.js +87 -0
  2215. package/src/textures/DepthTexture.d.ts +105 -0
  2216. package/src/textures/DepthTexture.js +104 -0
  2217. package/src/textures/ExternalTexture.d.ts +14 -0
  2218. package/src/textures/ExternalTexture.js +53 -0
  2219. package/src/textures/FramebufferTexture.d.ts +67 -0
  2220. package/src/textures/FramebufferTexture.js +85 -0
  2221. package/src/textures/HTMLTexture.d.ts +27 -0
  2222. package/src/textures/HTMLTexture.js +74 -0
  2223. package/src/textures/Texture.d.ts +565 -0
  2224. package/src/textures/Texture.js +812 -0
  2225. package/src/textures/TextureSource.d.ts +99 -0
  2226. package/src/textures/TextureSource.js +261 -0
  2227. package/src/textures/VideoFrameTexture.d.ts +27 -0
  2228. package/src/textures/VideoFrameTexture.js +72 -0
  2229. package/src/textures/VideoTexture.d.ts +90 -0
  2230. package/src/textures/VideoTexture.js +127 -0
  2231. package/src/upe.d.ts +5 -0
  2232. package/src/upe.js +17 -0
  2233. package/src/utils.d.ts +36 -0
  2234. package/src/utils.js +493 -0
@@ -0,0 +1,4115 @@
1
+ import Animation from './Animation.js';
2
+ import RenderObjects from './RenderObjects.js';
3
+ import Attributes from './Attributes.js';
4
+ import Geometries from './Geometries.js';
5
+ import Info from './Info.js';
6
+ import Pipelines from './Pipelines.js';
7
+ import Bindings from './Bindings.js';
8
+ import RenderLists from './RenderLists.js';
9
+ import RenderContexts from './RenderContexts.js';
10
+ import Textures from './Textures.js';
11
+ import Background from './Background.js';
12
+ import NodeManager from './nodes/NodeManager.js';
13
+ import Color4 from './Color4.js';
14
+ import ClippingContext from './ClippingContext.js';
15
+ import QuadMesh from './QuadMesh.js';
16
+ import RenderBundles from './RenderBundles.js';
17
+ import NodeLibrary from './nodes/NodeLibrary.js';
18
+ import Lighting from './Lighting.js';
19
+ import XRManager from './XRManager.js';
20
+ import InspectorBase from './InspectorBase.js';
21
+ import CanvasTarget from './CanvasTarget.js';
22
+
23
+ import NodeMaterial from '../../materials/nodes/NodeMaterial.js';
24
+
25
+ import { Scene } from '../../scenes/Scene.js';
26
+ import { ColorManagement } from '../../math/ColorManagement.js';
27
+ import { Frustum } from '../../math/Frustum.js';
28
+ import { FrustumArray } from '../../math/FrustumArray.js';
29
+ import { Matrix4 } from '../../math/Matrix4.js';
30
+ import { Vector2 } from '../../math/Vector2.js';
31
+ import { Vector4 } from '../../math/Vector4.js';
32
+ import { RenderTarget } from '../../core/RenderTarget.js';
33
+ import { DoubleSide, BackSide, FrontSide, SRGBColorSpace, NoToneMapping, LinearFilter, HalfFloatType, RGBAFormat, PCFShadowMap, PCFSoftShadowMap, VSMShadowMap, RenderObjectRefreshType } from '../../constants.js';
34
+
35
+ import { float, vec3, vec4, Fn } from '../../nodes/tsl/TSLCore.js';
36
+ import { reference } from '../../nodes/accessors/ReferenceNode.js';
37
+ import { highpModelNormalViewMatrix, highpModelViewMatrix } from '../../nodes/accessors/ModelNode.js';
38
+ import { context } from '../../nodes/core/ContextNode.js';
39
+ import { error, warn, warnOnce, yieldToMain } from '../../utils.js';
40
+ import { frameTimings } from './GPUTimings.js';
41
+
42
+ const _scene = /*@__PURE__*/ new Scene();
43
+ const _drawingBufferSize = /*@__PURE__*/ new Vector2();
44
+ const _screen = /*@__PURE__*/ new Vector4();
45
+ const _frustum = /*@__PURE__*/ new Frustum();
46
+ const _frustumArray = /*@__PURE__*/ new FrustumArray();
47
+
48
+ const _projScreenMatrix = /*@__PURE__*/ new Matrix4();
49
+ const _vector4 = /*@__PURE__*/ new Vector4();
50
+
51
+ const _shadowSide = { [ FrontSide ]: BackSide, [ BackSide ]: FrontSide, [ DoubleSide ]: DoubleSide };
52
+
53
+ /**
54
+ * Base class for renderers.
55
+ */
56
+ class Renderer {
57
+
58
+ /**
59
+ * Renderer options.
60
+ *
61
+ * @typedef {Object} Renderer~Options
62
+ * @property {boolean} [logarithmicDepthBuffer=false] - Whether logarithmic depth buffer is enabled or not.
63
+ * @property {boolean} [reversedDepthBuffer=false] - Whether reversed depth buffer is enabled or not.
64
+ * @property {boolean} [alpha=true] - Whether the default framebuffer (which represents the final contents of the canvas) should be transparent or opaque.
65
+ * @property {boolean} [depth=true] - Whether the default framebuffer should have a depth buffer or not.
66
+ * @property {boolean} [stencil=false] - Whether the default framebuffer should have a stencil buffer or not.
67
+ * @property {boolean} [antialias=false] - Whether MSAA as the default anti-aliasing should be enabled or not.
68
+ * @property {number} [samples=0] - When `antialias` is `true`, `4` samples are used by default. This parameter can set to any other integer value than 0
69
+ * to overwrite the default.
70
+ * @property {?Function} [getFallback=null] - This callback function can be used to provide a fallback backend, if the primary backend can't be targeted.
71
+ * @property {number} [outputBufferType=HalfFloatType] - Defines the type of output buffers. The default `HalfFloatType` is recommend for best
72
+ * quality. To save memory and bandwidth, `UnsignedByteType` might be used. This will reduce rendering quality though.
73
+ * @property {boolean} [multiview=false] - If set to `true`, the renderer will use multiview during WebXR rendering if supported.
74
+ */
75
+
76
+ /**
77
+ * Constructs a new renderer.
78
+ *
79
+ * @param {Backend} backend - The backend the renderer is targeting (e.g. WebGPU or WebGL 2).
80
+ * @param {Renderer~Options} [parameters] - The configuration parameter.
81
+
82
+ */
83
+ constructor( backend, parameters = {} ) {
84
+
85
+ /**
86
+ * This flag can be used for type testing.
87
+ *
88
+ * @type {boolean}
89
+ * @readonly
90
+ * @default true
91
+ */
92
+ this.isRenderer = true;
93
+
94
+ //
95
+
96
+ const {
97
+ logarithmicDepthBuffer = false,
98
+ reversedDepthBuffer = false,
99
+ alpha = true,
100
+ depth = true,
101
+ stencil = false,
102
+ antialias = false,
103
+ samples = 0,
104
+ getFallback = null,
105
+ outputBufferType = HalfFloatType,
106
+ multiview = false
107
+ } = parameters;
108
+
109
+ /**
110
+ * A reference to the current backend.
111
+ *
112
+ * @type {Backend}
113
+ */
114
+ this.backend = backend;
115
+
116
+ /**
117
+ * Whether the renderer should automatically clear the current rendering target
118
+ * before execute a `render()` call. The target can be the canvas (default framebuffer)
119
+ * or the current bound render target (custom framebuffer).
120
+ *
121
+ * @type {boolean}
122
+ * @default true
123
+ */
124
+ this.autoClear = true;
125
+
126
+ /**
127
+ * When `autoClear` is set to `true`, this property defines whether the renderer
128
+ * should clear the color buffer.
129
+ *
130
+ * @type {boolean}
131
+ * @default true
132
+ */
133
+ this.autoClearColor = true;
134
+
135
+ /**
136
+ * When `autoClear` is set to `true`, this property defines whether the renderer
137
+ * should clear the depth buffer.
138
+ *
139
+ * @type {boolean}
140
+ * @default true
141
+ */
142
+ this.autoClearDepth = true;
143
+
144
+ /**
145
+ * When `autoClear` is set to `true`, this property defines whether the renderer
146
+ * should clear the stencil buffer.
147
+ *
148
+ * @type {boolean}
149
+ * @default true
150
+ */
151
+ this.autoClearStencil = true;
152
+
153
+ /**
154
+ * Whether the default framebuffer should be transparent or opaque.
155
+ *
156
+ * @type {boolean}
157
+ * @default true
158
+ */
159
+ this.alpha = alpha;
160
+
161
+ /**
162
+ * Whether logarithmic depth buffer is enabled or not.
163
+ *
164
+ * @type {boolean}
165
+ * @default false
166
+ * @readonly
167
+ */
168
+ this.logarithmicDepthBuffer = logarithmicDepthBuffer;
169
+
170
+ /**
171
+ * Whether reversed depth buffer is enabled or not.
172
+ *
173
+ * @type {boolean}
174
+ * @default false
175
+ * @readonly
176
+ */
177
+ this.reversedDepthBuffer = reversedDepthBuffer;
178
+
179
+ /**
180
+ * Defines the output color space of the renderer.
181
+ *
182
+ * @type {string}
183
+ * @default SRGBColorSpace
184
+ */
185
+ this.outputColorSpace = SRGBColorSpace;
186
+
187
+ /**
188
+ * Defines the tone mapping of the renderer.
189
+ *
190
+ * @type {number}
191
+ * @default NoToneMapping
192
+ */
193
+ this.toneMapping = NoToneMapping;
194
+
195
+ /**
196
+ * Defines the tone mapping exposure.
197
+ *
198
+ * @type {number}
199
+ * @default 1
200
+ */
201
+ this.toneMappingExposure = 1.0;
202
+
203
+ /**
204
+ * Whether the renderer should sort its render lists or not.
205
+ *
206
+ * Note: Sorting is used to attempt to properly render objects that have some degree of transparency.
207
+ * By definition, sorting objects may not work in all cases. Depending on the needs of application,
208
+ * it may be necessary to turn off sorting and use other methods to deal with transparency rendering
209
+ * e.g. manually determining each object's rendering order.
210
+ *
211
+ * @type {boolean}
212
+ * @default true
213
+ */
214
+ this.sortObjects = true;
215
+
216
+ /**
217
+ * Whether the default framebuffer should have a depth buffer or not.
218
+ *
219
+ * @type {boolean}
220
+ * @default true
221
+ */
222
+ this.depth = depth;
223
+
224
+ /**
225
+ * Whether the default framebuffer should have a stencil buffer or not.
226
+ *
227
+ * @type {boolean}
228
+ * @default false
229
+ */
230
+ this.stencil = stencil;
231
+
232
+ /**
233
+ * Holds a series of statistical information about the GPU memory
234
+ * and the rendering process. Useful for debugging and monitoring.
235
+ *
236
+ * @type {Info}
237
+ */
238
+ this.info = new Info();
239
+
240
+ /**
241
+ * A global context node that stores override nodes for specific transformations or calculations.
242
+ * These nodes can be used to replace default behavior in the rendering pipeline.
243
+ *
244
+ * @type {ContextNode}
245
+ * @property {Object} value - The context value object.
246
+ */
247
+ this.contextNode = context();
248
+
249
+ /**
250
+ * The node library defines how certain library objects like materials, lights
251
+ * or tone mapping functions are mapped to node types. This is required since
252
+ * although instances of classes like `MeshBasicMaterial` or `PointLight` can
253
+ * be part of the scene graph, they are internally represented as nodes for
254
+ * further processing.
255
+ *
256
+ * @type {NodeLibrary}
257
+ */
258
+ this.library = new NodeLibrary();
259
+
260
+ /**
261
+ * A map-like data structure for managing lights.
262
+ *
263
+ * @type {Lighting}
264
+ */
265
+ this.lighting = new Lighting();
266
+
267
+ // internals
268
+
269
+ /**
270
+ * The number of MSAA samples.
271
+ *
272
+ * @private
273
+ * @type {number}
274
+ * @default 0
275
+ */
276
+ this._samples = samples || ( antialias === true ? 4 : 0 );
277
+
278
+ /**
279
+ * OnCanvasTargetResize callback function.
280
+ *
281
+ * @private
282
+ * @type {Function}
283
+ */
284
+ this._onCanvasTargetResize = this._onCanvasTargetResize.bind( this );
285
+
286
+ /**
287
+ * The canvas target for rendering.
288
+ *
289
+ * @private
290
+ * @type {CanvasTarget}
291
+ */
292
+ this._canvasTarget = new CanvasTarget( backend.getDomElement() );
293
+ this._canvasTarget.addEventListener( 'resize', this._onCanvasTargetResize );
294
+ this._canvasTarget.isDefaultCanvasTarget = true;
295
+
296
+ /**
297
+ * The inspector provides information about the internal renderer state.
298
+ *
299
+ * @private
300
+ * @type {InspectorBase}
301
+ */
302
+ this._inspector = new InspectorBase();
303
+ this._inspector.setRenderer( this );
304
+
305
+ /**
306
+ * This callback function can be used to provide a fallback backend, if the primary backend can't be targeted.
307
+ *
308
+ * @private
309
+ * @type {?Function}
310
+ */
311
+ this._getFallback = getFallback;
312
+
313
+ /**
314
+ * A reference to a renderer module for managing shader attributes.
315
+ *
316
+ * @private
317
+ * @type {?Attributes}
318
+ * @default null
319
+ */
320
+ this._attributes = null;
321
+
322
+ /**
323
+ * A reference to a renderer module for managing geometries.
324
+ *
325
+ * @private
326
+ * @type {?Geometries}
327
+ * @default null
328
+ */
329
+ this._geometries = null;
330
+
331
+ /**
332
+ * A reference to a renderer module for managing node related logic.
333
+ *
334
+ * @private
335
+ * @type {?NodeManager}
336
+ * @default null
337
+ */
338
+ this._nodes = null;
339
+
340
+ /**
341
+ * A reference to a renderer module for managing the internal animation loop.
342
+ *
343
+ * @private
344
+ * @type {?Animation}
345
+ * @default null
346
+ */
347
+ this._animation = null;
348
+
349
+ /**
350
+ * A reference to a renderer module for managing shader program bindings.
351
+ *
352
+ * @private
353
+ * @type {?Bindings}
354
+ * @default null
355
+ */
356
+ this._bindings = null;
357
+
358
+ /**
359
+ * A reference to a renderer module for managing render objects.
360
+ *
361
+ * @private
362
+ * @type {?RenderObjects}
363
+ * @default null
364
+ */
365
+ this._objects = null;
366
+
367
+ /**
368
+ * A reference to a renderer module for managing render and compute pipelines.
369
+ *
370
+ * @private
371
+ * @type {?Pipelines}
372
+ * @default null
373
+ */
374
+ this._pipelines = null;
375
+
376
+ /**
377
+ * A reference to a renderer module for managing render bundles.
378
+ *
379
+ * @private
380
+ * @type {?RenderBundles}
381
+ * @default null
382
+ */
383
+ this._bundles = null;
384
+
385
+ /**
386
+ * A reference to a renderer module for managing render lists.
387
+ *
388
+ * @private
389
+ * @type {?RenderLists}
390
+ * @default null
391
+ */
392
+ this._renderLists = null;
393
+
394
+ /**
395
+ * A reference to a renderer module for managing render contexts.
396
+ *
397
+ * @private
398
+ * @type {?RenderContexts}
399
+ * @default null
400
+ */
401
+ this._renderContexts = null;
402
+
403
+ /**
404
+ * A reference to a renderer module for managing textures.
405
+ *
406
+ * @private
407
+ * @type {?Textures}
408
+ * @default null
409
+ */
410
+ this._textures = null;
411
+
412
+ /**
413
+ * A reference to a renderer module for backgrounds.
414
+ *
415
+ * @private
416
+ * @type {?Background}
417
+ * @default null
418
+ */
419
+ this._background = null;
420
+
421
+ /**
422
+ * Cache for the fullscreen quad.
423
+ * This fullscreen quad is used for internal render passes
424
+ * like the tone mapping and color space output pass.
425
+ *
426
+ * @private
427
+ * @type {Map<Texture,QuadMesh>}
428
+ */
429
+ this._quadCache = new Map();
430
+
431
+ /**
432
+ * A reference to the current render context.
433
+ *
434
+ * @private
435
+ * @type {?RenderContext}
436
+ * @default null
437
+ */
438
+ this._currentRenderContext = null;
439
+
440
+ /**
441
+ * A custom sort function for the opaque render list.
442
+ *
443
+ * @private
444
+ * @type {?Function}
445
+ * @default null
446
+ */
447
+ this._opaqueSort = null;
448
+
449
+ /**
450
+ * A custom sort function for the transparent render list.
451
+ *
452
+ * @private
453
+ * @type {?Function}
454
+ * @default null
455
+ */
456
+ this._transparentSort = null;
457
+
458
+ /**
459
+ * Cache of framebuffer targets per canvas target.
460
+ *
461
+ * @private
462
+ * @type {Map<CanvasTarget, RenderTarget>}
463
+ */
464
+ this._frameBufferTargets = new Map();
465
+
466
+ const alphaClear = this.alpha === true ? 0 : 1;
467
+
468
+ /**
469
+ * The clear color value.
470
+ *
471
+ * @private
472
+ * @type {Color4}
473
+ */
474
+ this._clearColor = new Color4( 0, 0, 0, alphaClear );
475
+
476
+ /**
477
+ * The clear depth value.
478
+ *
479
+ * @private
480
+ * @type {number}
481
+ * @default 1
482
+ */
483
+ this._clearDepth = 1;
484
+
485
+ /**
486
+ * The clear stencil value.
487
+ *
488
+ * @private
489
+ * @type {number}
490
+ * @default 0
491
+ */
492
+ this._clearStencil = 0;
493
+
494
+ /**
495
+ * The current render target.
496
+ *
497
+ * @private
498
+ * @type {?RenderTarget}
499
+ * @default null
500
+ */
501
+ this._renderTarget = null;
502
+
503
+ /**
504
+ * The active cube face.
505
+ *
506
+ * @private
507
+ * @type {number}
508
+ * @default 0
509
+ */
510
+ this._activeCubeFace = 0;
511
+
512
+ /**
513
+ * The active mipmap level.
514
+ *
515
+ * @private
516
+ * @type {number}
517
+ * @default 0
518
+ */
519
+ this._activeMipmapLevel = 0;
520
+
521
+ /**
522
+ * The current output render target.
523
+ *
524
+ * @private
525
+ * @type {?RenderTarget}
526
+ * @default null
527
+ */
528
+ this._outputRenderTarget = null;
529
+
530
+ /**
531
+ * The MRT setting.
532
+ *
533
+ * @private
534
+ * @type {?MRTNode}
535
+ * @default null
536
+ */
537
+ this._mrt = null;
538
+
539
+ /**
540
+ * This function defines how a render object is going
541
+ * to be rendered.
542
+ *
543
+ * @private
544
+ * @type {?Function}
545
+ * @default null
546
+ */
547
+ this._renderObjectFunction = null;
548
+
549
+ /**
550
+ * Used to keep track of the current render object function.
551
+ *
552
+ * @private
553
+ * @type {?Function}
554
+ * @default null
555
+ */
556
+ this._currentRenderObjectFunction = null;
557
+
558
+ /**
559
+ * Used to keep track of the current render bundle.
560
+ *
561
+ * @private
562
+ * @type {?RenderBundle}
563
+ * @default null
564
+ */
565
+ this._currentRenderBundle = null;
566
+
567
+ /**
568
+ * Next to `_renderObjectFunction()`, this function provides another hook
569
+ * for influencing the render process of a render object. It is meant for internal
570
+ * use and only relevant for `compileAsync()` right now. Instead of using
571
+ * the default logic of `_renderObjectDirect()` which actually draws the render object,
572
+ * a different function might be used which performs no draw but just the node
573
+ * and pipeline updates.
574
+ *
575
+ * @private
576
+ * @type {Function}
577
+ */
578
+ this._handleObjectFunction = this._renderObjectDirect;
579
+
580
+ /**
581
+ * Indicates whether the device has been lost or not. In WebGL terms, the device
582
+ * lost is considered as a context lost. When this is set to `true`, rendering
583
+ * isn't possible anymore.
584
+ *
585
+ * @private
586
+ * @type {boolean}
587
+ * @default false
588
+ */
589
+ this._isDeviceLost = false;
590
+
591
+ /**
592
+ * A callback function that defines what should happen when a device/context lost occurs.
593
+ *
594
+ * @type {Function}
595
+ */
596
+ this.onDeviceLost = this._onDeviceLost;
597
+
598
+ /**
599
+ * A callback function that defines what should happen when an uncaptured
600
+ * backend error is reported (e.g. a WebGPU validation/out-of-memory/internal
601
+ * error raised outside an error scope). Applications can override this to
602
+ * surface errors in their own UI without letting them escalate to a device
603
+ * loss. The default implementation logs to the console.
604
+ *
605
+ * @type {Function}
606
+ */
607
+ this.onError = this._onError;
608
+
609
+ /**
610
+ * Defines the type of output buffers. The default `HalfFloatType` is recommend for
611
+ * best quality. To save memory and bandwidth, `UnsignedByteType` might be used.
612
+ * This will reduce rendering quality though.
613
+ *
614
+ * @private
615
+ * @type {number}
616
+ * @default HalfFloatType
617
+ */
618
+ this._outputBufferType = outputBufferType;
619
+
620
+ /**
621
+ * A cache for shadow nodes per material
622
+ *
623
+ * @private
624
+ * @type {WeakMap<Material, Object>}
625
+ */
626
+ this._cacheShadowNodes = new WeakMap();
627
+
628
+ /**
629
+ * Whether the renderer has been initialized or not.
630
+ *
631
+ * @private
632
+ * @type {boolean}
633
+ * @default false
634
+ */
635
+ this._initialized = false;
636
+
637
+ /**
638
+ * The call depth of the renderer. Counts the number of
639
+ * nested render calls.
640
+ *
641
+ * @private
642
+ * @type {number}
643
+ * @default - 1
644
+ */
645
+ this._callDepth = - 1;
646
+
647
+ /**
648
+ * A reference to the promise which initializes the renderer.
649
+ *
650
+ * @private
651
+ * @type {?Promise<this>}
652
+ * @default null
653
+ */
654
+ this._initPromise = null;
655
+
656
+ /**
657
+ * An array of compilation promises which are used in `compileAsync()`.
658
+ *
659
+ * @private
660
+ * @type {?Array<Promise>}
661
+ * @default null
662
+ */
663
+ this._compilationPromises = null;
664
+
665
+ /**
666
+ * Whether the renderer is currently precompiling a render object in
667
+ * `compileAsync()`.
668
+ *
669
+ * @private
670
+ * @type {boolean}
671
+ * @default false
672
+ */
673
+ this._isPreCompiling = false;
674
+
675
+ /**
676
+ * When an override material is in use, this property points to the current
677
+ * source material during the rendering of a render object.
678
+ *
679
+ * @private
680
+ * @type {?Material}
681
+ * @default null
682
+ */
683
+ this._currentSourceMaterial = null;
684
+
685
+ /**
686
+ * Whether the renderer should render transparent render objects or not.
687
+ *
688
+ * @type {boolean}
689
+ * @default true
690
+ */
691
+ this.transparent = true;
692
+
693
+ /**
694
+ * Whether the renderer should render opaque render objects or not.
695
+ *
696
+ * @type {boolean}
697
+ * @default true
698
+ */
699
+ this.opaque = true;
700
+
701
+ /**
702
+ * Shadow map configuration
703
+ * @typedef {Object} ShadowMapConfig
704
+ * @property {boolean} enabled - Whether to globally enable shadows or not.
705
+ * @property {boolean} transmitted - Whether to enable light transmission through non-opaque materials.
706
+ * @property {number} type - The shadow map type.
707
+ */
708
+
709
+ /**
710
+ * The renderer's shadow configuration.
711
+ *
712
+ * @type {ShadowMapConfig}
713
+ */
714
+ this.shadowMap = {
715
+ enabled: false,
716
+ transmitted: false,
717
+ type: PCFShadowMap
718
+ };
719
+
720
+ /**
721
+ * XR configuration.
722
+ * @typedef {Object} XRConfig
723
+ * @property {boolean} enabled - Whether to globally enable XR or not.
724
+ */
725
+
726
+ /**
727
+ * The renderer's XR manager.
728
+ *
729
+ * @type {XRManager}
730
+ */
731
+ this.xr = new XRManager( this, multiview );
732
+
733
+ /**
734
+ * Debug configuration.
735
+ * @typedef {Object} DebugConfig
736
+ * @property {boolean} checkShaderErrors - Whether shader errors should be checked or not.
737
+ * @property {Object} diagnostics - Diagnostics configuration for the shader generation.
738
+ * @property {boolean} diagnostics.keywords - Whether declaration names that collide with reserved keywords should be renamed or not.
739
+ * @property {?Function} onNodeBuilderCreated - A callback function that is executed after a node builder has been created and before it is built.
740
+ * @property {?Function} onShaderError - A callback function that is executed when a shader error happens. Only supported with WebGL 2 right now.
741
+ * @property {Function} getShaderAsync - Allows the get the raw shader code for the given scene, camera and 3D object.
742
+ */
743
+
744
+ /**
745
+ * The renderer's debug configuration.
746
+ *
747
+ * @type {DebugConfig}
748
+ */
749
+ this.debug = {
750
+ checkShaderErrors: true,
751
+ diagnostics: {
752
+ keywords: false
753
+ },
754
+ onNodeBuilderCreated: null,
755
+ onShaderError: null,
756
+ getShaderAsync: async ( scene, camera, object ) => {
757
+
758
+ await this.compileAsync( object, camera, scene );
759
+
760
+ const useFrameBufferTarget = this.needsFrameBufferTarget && this._renderTarget === null;
761
+ const renderTarget = useFrameBufferTarget ? this._getFrameBufferTarget() : ( this._renderTarget || this._outputRenderTarget );
762
+
763
+ const renderList = this._renderLists.get( scene, camera, this.lighting );
764
+ const renderContext = this._renderContexts.get( renderTarget, this._mrt );
765
+
766
+ const material = scene.overrideMaterial || object.material;
767
+
768
+ const renderObject = this._objects.get( object, material, scene, camera, renderList.lightsNode, renderContext, renderContext.clippingContext );
769
+
770
+ const { fragmentShader, vertexShader } = renderObject.getNodeBuilderState();
771
+
772
+ return { fragmentShader, vertexShader };
773
+
774
+ }
775
+ };
776
+
777
+ }
778
+
779
+ /**
780
+ * Initializes the renderer so it is ready for usage.
781
+ *
782
+ * @async
783
+ * @return {Promise<this>} A Promise that resolves when the renderer has been initialized.
784
+ */
785
+ async init() {
786
+
787
+ if ( this._initPromise !== null ) {
788
+
789
+ return this._initPromise;
790
+
791
+ }
792
+
793
+ this._initPromise = new Promise( async ( resolve, reject ) => {
794
+
795
+ let backend = this.backend;
796
+
797
+ try {
798
+
799
+ await backend.init( this );
800
+
801
+ } catch ( error ) {
802
+
803
+ if ( this._getFallback !== null ) {
804
+
805
+ // try the fallback
806
+
807
+ try {
808
+
809
+ this.backend = backend = this._getFallback( error );
810
+ await backend.init( this );
811
+
812
+ } catch ( error ) {
813
+
814
+ reject( error );
815
+ return;
816
+
817
+ }
818
+
819
+ } else {
820
+
821
+ reject( error );
822
+ return;
823
+
824
+ }
825
+
826
+ }
827
+
828
+ this._nodes = new NodeManager( this, backend );
829
+ this._animation = new Animation( this, this._nodes, this.info );
830
+ this._attributes = new Attributes( backend, this.info );
831
+ this._background = new Background( this, this._nodes );
832
+ this._geometries = new Geometries( this._attributes, this.info );
833
+ this._textures = new Textures( this, backend, this.info );
834
+ this._pipelines = new Pipelines( backend, this._nodes, this.info );
835
+ this._bindings = new Bindings( backend, this._nodes, this._textures, this._attributes, this._pipelines, this.info );
836
+ this._objects = new RenderObjects( this, this._nodes, this._geometries, this._pipelines, this._bindings, this.info );
837
+ this._renderLists = new RenderLists();
838
+ this._bundles = new RenderBundles();
839
+ this._renderContexts = new RenderContexts( this );
840
+
841
+ //
842
+
843
+ this._animation.start();
844
+ this._initialized = true;
845
+
846
+ resolve( this );
847
+
848
+ } );
849
+
850
+ return this._initPromise;
851
+
852
+ }
853
+
854
+ /**
855
+ * A reference to the canvas element the renderer is drawing to.
856
+ * This value of this property will automatically be created by
857
+ * the renderer.
858
+ *
859
+ * @type {HTMLCanvasElement|OffscreenCanvas}
860
+ */
861
+ get domElement() {
862
+
863
+ return this._canvasTarget.domElement;
864
+
865
+ }
866
+
867
+ /**
868
+ * The coordinate system of the renderer. The value of this property
869
+ * depends on the selected backend. Either `THREE.WebGLCoordinateSystem` or
870
+ * `THREE.WebGPUCoordinateSystem`.
871
+ *
872
+ * @readonly
873
+ * @type {number}
874
+ */
875
+ get coordinateSystem() {
876
+
877
+ return this.backend.coordinateSystem;
878
+
879
+ }
880
+
881
+ /**
882
+ * Compiles all materials in the given scene. This can be useful to avoid a
883
+ * phenomenon which is called "shader compilation stutter", which occurs when
884
+ * rendering an object with a new shader for the first time.
885
+ *
886
+ * If you want to add a 3D object to an existing scene, use the third optional
887
+ * parameter for applying the target scene. Note that the (target) scene's lighting
888
+ * and environment must be configured before calling this method.
889
+ *
890
+ * @async
891
+ * @param {Object3D} scene - The scene or 3D object to precompile.
892
+ * @param {Camera} camera - The camera that is used to render the scene.
893
+ * @param {?Scene} targetScene - If the first argument is a 3D object, this parameter must represent the scene the 3D object is going to be added.
894
+ * @param {onProgressCallback} [onProgress] - Executed while the compilation is in progress.
895
+ * @return {Promise} A Promise that resolves when the compile has been finished.
896
+ */
897
+ async compileAsync( scene, camera, targetScene = null, onProgress = null ) {
898
+
899
+ if ( this._isDeviceLost === true ) return;
900
+
901
+ if ( this._initialized === false ) await this.init();
902
+
903
+ if ( this.shadowMap.type === PCFSoftShadowMap ) {
904
+
905
+ warn( 'WebGPURenderer: PCFSoftShadowMap has been removed. Using PCFShadowMap instead.' );
906
+
907
+ this.shadowMap.type = PCFShadowMap;
908
+
909
+ }
910
+
911
+ // preserve render tree
912
+
913
+ const nodeFrame = this._nodes.nodeFrame;
914
+
915
+ const previousRenderId = nodeFrame.renderId;
916
+ const previousRenderContext = this._currentRenderContext;
917
+ const previousRenderObjectFunction = this._currentRenderObjectFunction;
918
+ const previousHandleObjectFunction = this._handleObjectFunction;
919
+ const previousCompilationPromises = this._compilationPromises;
920
+
921
+ //
922
+
923
+ if ( targetScene === null ) targetScene = scene;
924
+
925
+ // Use the actual scene for caching when compiling individual objects
926
+ // This ensures cache keys match between compileAsync and render
927
+ const sceneRef = ( scene.isScene === true ) ? scene : ( targetScene.isScene === true ) ? targetScene : _scene;
928
+
929
+ // Match render()'s logic: use frameBufferTarget when needsFrameBufferTarget is true
930
+ const useFrameBufferTarget = this.needsFrameBufferTarget && this._renderTarget === null;
931
+ const outputRenderTarget = this._renderTarget || this._outputRenderTarget;
932
+ const useXRCamera = this.xr.isPresenting === true && this.isOutputTarget;
933
+ const renderTarget = useFrameBufferTarget ? this._getFrameBufferTarget() : outputRenderTarget;
934
+ const renderContext = this._renderContexts.get( renderTarget, this._mrt );
935
+ const activeMipmapLevel = this._activeMipmapLevel;
936
+
937
+ const compilationPromises = [];
938
+
939
+ this._currentRenderContext = renderContext;
940
+ this._currentRenderObjectFunction = this.renderObject;
941
+
942
+ this._handleObjectFunction = this._createObjectPipeline;
943
+
944
+ this._compilationPromises = compilationPromises;
945
+
946
+ nodeFrame.renderId ++;
947
+
948
+ //
949
+
950
+ nodeFrame.update();
951
+
952
+ //
953
+
954
+ renderContext.depth = this.depth;
955
+ renderContext.stencil = this.stencil;
956
+
957
+ if ( ! renderContext.clippingContext ) renderContext.clippingContext = new ClippingContext();
958
+ renderContext.clippingContext.updateGlobal( sceneRef, camera );
959
+
960
+ //
961
+
962
+ if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
963
+
964
+ camera = this._updateCamera( camera, useXRCamera );
965
+
966
+ //
967
+
968
+ sceneRef.onBeforeRender( this, scene, camera, renderTarget );
969
+
970
+ //
971
+
972
+ _projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );
973
+
974
+ if ( camera.isArrayCamera ) {
975
+
976
+ _frustumArray.setFromArrayCamera( camera );
977
+
978
+ } else {
979
+
980
+ _frustum.setFromProjectionMatrix( _projScreenMatrix, camera.coordinateSystem, camera.reversedDepth );
981
+
982
+ }
983
+
984
+ // Use sceneRef for render list to ensure lightsNode matches between compileAsync and render
985
+ const renderList = this._renderLists.get( sceneRef, camera, this.lighting );
986
+ renderList.begin();
987
+
988
+ this._projectObject( scene, camera, 0, renderList, renderContext.clippingContext );
989
+
990
+ // include lights from target scene
991
+ if ( targetScene !== scene ) {
992
+
993
+ targetScene.traverseVisible( function ( object ) {
994
+
995
+ if ( object.isLight && object.layers.test( camera.layers ) ) {
996
+
997
+ renderList.pushLight( object );
998
+
999
+ }
1000
+
1001
+ } );
1002
+
1003
+ }
1004
+
1005
+ renderList.finish();
1006
+
1007
+ //
1008
+
1009
+ if ( renderTarget !== null ) {
1010
+
1011
+ this._textures.updateRenderTarget( renderTarget, activeMipmapLevel );
1012
+
1013
+ const renderTargetData = this._textures.get( renderTarget );
1014
+
1015
+ renderContext.textures = renderTargetData.textures;
1016
+ renderContext.depthTexture = renderTargetData.depthTexture;
1017
+
1018
+ } else {
1019
+
1020
+ renderContext.textures = null;
1021
+ renderContext.depthTexture = null;
1022
+
1023
+ }
1024
+
1025
+ //
1026
+
1027
+ if ( targetScene !== scene ) {
1028
+
1029
+ this._background.update( targetScene, renderList, renderContext );
1030
+
1031
+ } else {
1032
+
1033
+ this._background.update( sceneRef, renderList, renderContext );
1034
+
1035
+ }
1036
+
1037
+ // process render lists - _createObjectPipeline will push async promises to _compilationPromises
1038
+
1039
+ const opaqueObjects = renderList.opaque;
1040
+ const transparentObjects = renderList.transparent;
1041
+ const transparentDoublePassObjects = renderList.transparentDoublePass;
1042
+ const lightsNode = renderList.lightsNode;
1043
+
1044
+ if ( this.opaque === true && opaqueObjects.length > 0 ) this._renderObjects( opaqueObjects, camera, sceneRef, lightsNode );
1045
+ if ( this.transparent === true && transparentObjects.length > 0 ) this._renderTransparents( transparentObjects, transparentDoublePassObjects, camera, sceneRef, lightsNode );
1046
+
1047
+ // restore render tree
1048
+
1049
+ nodeFrame.renderId = previousRenderId;
1050
+
1051
+ this._currentRenderContext = previousRenderContext;
1052
+ this._currentRenderObjectFunction = previousRenderObjectFunction;
1053
+ this._handleObjectFunction = previousHandleObjectFunction;
1054
+ this._compilationPromises = previousCompilationPromises;
1055
+
1056
+ // Process compilation work items sequentially to avoid freezing
1057
+ // Yields between objects to keep animation smooth
1058
+
1059
+ const total = compilationPromises.length;
1060
+ let loaded = 0;
1061
+
1062
+ for ( const item of compilationPromises ) {
1063
+
1064
+ const renderObject = this._objects.get( item.object, item.material, item.scene, item.camera, item.lightsNode, item.renderContext, item.clippingContext, item.passId );
1065
+ renderObject.drawRange = item.object.geometry.drawRange;
1066
+ renderObject.group = item.group;
1067
+
1068
+ // Use async node building to yield to main thread
1069
+ await this._nodes.getForRenderAsync( renderObject );
1070
+
1071
+ this._isPreCompiling = true; // note: no awaits are allowed when this flag is true otherwise the state leaks outside of this method
1072
+ this._nodes.updateBefore( renderObject );
1073
+ this._geometries.updateForRender( renderObject );
1074
+ this._nodes.updateForRender( renderObject );
1075
+ this._bindings.updateForRender( renderObject );
1076
+ this._isPreCompiling = false;
1077
+
1078
+ // Wait for pipeline creation
1079
+ const pipelinePromises = [];
1080
+ this._pipelines.getForRender( renderObject, pipelinePromises );
1081
+ if ( pipelinePromises.length > 0 ) {
1082
+
1083
+ await Promise.all( pipelinePromises );
1084
+
1085
+ }
1086
+
1087
+ this._isPreCompiling = true;
1088
+ this._nodes.updateAfter( renderObject );
1089
+ this._isPreCompiling = false;
1090
+
1091
+ loaded ++;
1092
+
1093
+ if ( onProgress !== null ) {
1094
+
1095
+ onProgress( new ProgressEvent( 'progress', { lengthComputable: true, loaded, total } ) );
1096
+
1097
+ }
1098
+
1099
+ // Yield between objects to allow animation frames
1100
+ await yieldToMain();
1101
+
1102
+ }
1103
+
1104
+ }
1105
+
1106
+ /**
1107
+ * Compile compute programs. This can be useful to avoid a
1108
+ * phenomenon which is called "shader compilation stutter", which occurs when
1109
+ * rendering an object with a new shader for the first time.
1110
+ *
1111
+ * @async
1112
+ * @param {Node|Array<Node>} computeNodes - The compute node(s).
1113
+ * @param {onProgressCallback} [onProgress] - Executed while the compilation is in progress.
1114
+ * @return {Promise} A Promise that resolves when the compile has been finished.
1115
+ */
1116
+ async compileComputeAsync( computeNodes, onProgress = null ) {
1117
+
1118
+ if ( this._isDeviceLost === true ) return;
1119
+
1120
+ if ( this._initialized === false ) await this.init();
1121
+
1122
+ const computeList = Array.isArray( computeNodes ) ? computeNodes : [ computeNodes ];
1123
+
1124
+ if ( computeList.length === 0 || computeList.some( ( computeNode ) => computeNode === undefined || computeNode === null || computeNode.isComputeNode !== true ) ) {
1125
+
1126
+ throw new Error( 'THREE.Renderer: .compileComputeAsync() expects a ComputeNode.' );
1127
+
1128
+ }
1129
+
1130
+ const total = computeList.length;
1131
+ let loaded = 0;
1132
+
1133
+ //
1134
+
1135
+ const pipelines = this._pipelines;
1136
+ const bindings = this._bindings;
1137
+ const nodes = this._nodes;
1138
+
1139
+ for ( const computeNode of computeList ) {
1140
+
1141
+ if ( pipelines.has( computeNode ) === false ) {
1142
+
1143
+ const dispose = () => {
1144
+
1145
+ computeNode.removeEventListener( 'dispose', dispose );
1146
+
1147
+ pipelines.delete( computeNode );
1148
+ bindings.deleteForCompute( computeNode );
1149
+ nodes.delete( computeNode );
1150
+
1151
+ };
1152
+
1153
+ computeNode.addEventListener( 'dispose', dispose );
1154
+
1155
+ const onInitFn = computeNode.onInitFunction;
1156
+
1157
+ if ( onInitFn !== null ) {
1158
+
1159
+ onInitFn.call( computeNode, { renderer: this } );
1160
+
1161
+ }
1162
+
1163
+ }
1164
+
1165
+ await nodes.getForComputeAsync( computeNode );
1166
+
1167
+ nodes.updateBeforeForCompute( computeNode );
1168
+ nodes.updateForCompute( computeNode );
1169
+ bindings.updateForCompute( computeNode );
1170
+
1171
+ const computeBindings = bindings.getForCompute( computeNode );
1172
+ const compilationPromises = [];
1173
+
1174
+ pipelines.getForCompute( computeNode, computeBindings, compilationPromises );
1175
+ await Promise.all( compilationPromises );
1176
+
1177
+ nodes.updateAfterForCompute( computeNode );
1178
+
1179
+ loaded ++;
1180
+
1181
+ if ( onProgress !== null ) {
1182
+
1183
+ onProgress( new ProgressEvent( 'progress', { lengthComputable: true, loaded, total } ) );
1184
+
1185
+ }
1186
+
1187
+ if ( loaded < total ) await yieldToMain();
1188
+
1189
+ }
1190
+
1191
+ }
1192
+
1193
+ /**
1194
+ * Renders the scene in an async fashion.
1195
+ *
1196
+ * @async
1197
+ * @deprecated
1198
+ * @param {Object3D} scene - The scene or 3D object to render.
1199
+ * @param {Camera} camera - The camera.
1200
+ * @return {Promise} A Promise that resolves when the render has been finished.
1201
+ */
1202
+ async renderAsync( scene, camera ) {
1203
+
1204
+ warnOnce( 'Renderer: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.' ); // @deprecated r181
1205
+
1206
+ await this.init();
1207
+
1208
+ this.render( scene, camera );
1209
+
1210
+ }
1211
+
1212
+ /**
1213
+ * Can be used to synchronize CPU operations with GPU tasks. So when this method is called,
1214
+ * the CPU waits for the GPU to complete its operation (e.g. a compute task).
1215
+ *
1216
+ * @async
1217
+ * @deprecated
1218
+ * @return {Promise} A Promise that resolves when synchronization has been finished.
1219
+ */
1220
+ async waitForGPU() {
1221
+
1222
+ error( 'Renderer: waitForGPU() has been removed. Read https://github.com/mrdoob/three.js/issues/32012 for more information.' );
1223
+
1224
+ }
1225
+
1226
+ //
1227
+
1228
+ set inspector( value ) {
1229
+
1230
+ if ( this._inspector !== null ) {
1231
+
1232
+ this._inspector.setRenderer( null );
1233
+
1234
+ }
1235
+
1236
+ this._inspector = value;
1237
+ this._inspector.setRenderer( this );
1238
+
1239
+ }
1240
+
1241
+ /**
1242
+ * The inspector instance. The inspector can be any class that extends from `InspectorBase`.
1243
+ *
1244
+ * @type {InspectorBase}
1245
+ */
1246
+ get inspector() {
1247
+
1248
+ return this._inspector;
1249
+
1250
+ }
1251
+
1252
+ /**
1253
+ * Enables or disables high precision for model-view and normal-view matrices.
1254
+ * When enabled, will use CPU 64-bit precision for higher precision instead of GPU 32-bit for higher performance.
1255
+ *
1256
+ * NOTE: 64-bit precision is not compatible with `InstancedMesh` and `SkinnedMesh`.
1257
+ *
1258
+ * @param {boolean} value - Whether to enable or disable high precision.
1259
+ * @type {boolean}
1260
+ */
1261
+ set highPrecision( value ) {
1262
+
1263
+ const contextNodeData = this.contextNode.value;
1264
+
1265
+ if ( value === true ) {
1266
+
1267
+ contextNodeData.modelViewMatrix = highpModelViewMatrix;
1268
+ contextNodeData.modelNormalViewMatrix = highpModelNormalViewMatrix;
1269
+
1270
+ } else if ( this.highPrecision ) {
1271
+
1272
+ delete contextNodeData.modelViewMatrix;
1273
+ delete contextNodeData.modelNormalViewMatrix;
1274
+
1275
+ }
1276
+
1277
+ }
1278
+
1279
+ /**
1280
+ * Returns whether high precision is enabled or not.
1281
+ *
1282
+ * @return {boolean} Whether high precision is enabled or not.
1283
+ * @type {boolean}
1284
+ */
1285
+ get highPrecision() {
1286
+
1287
+ const contextNodeData = this.contextNode.value;
1288
+
1289
+ return contextNodeData.modelViewMatrix === highpModelViewMatrix && contextNodeData.modelNormalViewMatrix === highpModelNormalViewMatrix;
1290
+
1291
+ }
1292
+
1293
+ /**
1294
+ * Sets the given MRT configuration.
1295
+ *
1296
+ * @param {MRTNode} mrt - The MRT node to set.
1297
+ * @return {Renderer} A reference to this renderer.
1298
+ */
1299
+ setMRT( mrt ) {
1300
+
1301
+ this._mrt = mrt;
1302
+
1303
+ return this;
1304
+
1305
+ }
1306
+
1307
+ /**
1308
+ * Returns the MRT configuration.
1309
+ *
1310
+ * @return {MRTNode} The MRT configuration.
1311
+ */
1312
+ getMRT() {
1313
+
1314
+ return this._mrt;
1315
+
1316
+ }
1317
+
1318
+ /**
1319
+ * Returns the output buffer type.
1320
+ *
1321
+ * @return {number} The output buffer type.
1322
+ */
1323
+ getOutputBufferType() {
1324
+
1325
+ return this._outputBufferType;
1326
+
1327
+ }
1328
+
1329
+ /**
1330
+ * Returns the output buffer type.
1331
+ *
1332
+ * @deprecated since r182. Use `.getOutputBufferType()` instead.
1333
+ * @return {number} The output buffer type.
1334
+ */
1335
+ getColorBufferType() { // @deprecated, r182
1336
+
1337
+ warnOnce( 'Renderer: ".getColorBufferType()" has been renamed to ".getOutputBufferType()".' );
1338
+
1339
+ return this.getOutputBufferType();
1340
+
1341
+ }
1342
+
1343
+ /**
1344
+ * Default implementation of the device lost callback.
1345
+ *
1346
+ * @private
1347
+ * @param {Object} info - Information about the context lost.
1348
+ */
1349
+ _onDeviceLost( info ) {
1350
+
1351
+ let errorMessage = `THREE.WebGPURenderer: ${info.api} Device Lost:\n\nMessage: ${info.message}`;
1352
+
1353
+ if ( info.reason ) {
1354
+
1355
+ errorMessage += `\nReason: ${info.reason}`;
1356
+
1357
+ }
1358
+
1359
+ error( errorMessage );
1360
+
1361
+ this._isDeviceLost = true;
1362
+
1363
+ }
1364
+
1365
+ /**
1366
+ * Default implementation of the uncaptured backend error callback.
1367
+ *
1368
+ * @private
1369
+ * @param {Object} info - Information about the uncaptured error.
1370
+ */
1371
+ _onError( info ) {
1372
+
1373
+ let errorMessage = `WebGPURenderer: Uncaptured ${ info.api } ${ info.type }`;
1374
+
1375
+ if ( info.message ) {
1376
+
1377
+ errorMessage += `: ${ info.message }`;
1378
+
1379
+ }
1380
+
1381
+ error( errorMessage );
1382
+
1383
+ }
1384
+
1385
+ /**
1386
+ * Returns `true` if the cached GPU render bundle for the given bundle group is
1387
+ * out-of-date and must be recorded again.
1388
+ *
1389
+ * @private
1390
+ * @param {BundleGroup} bundleGroup - The bundle group.
1391
+ * @param {Object} renderBundleData - The backend data of the render bundle.
1392
+ * @return {boolean} Whether the cached render bundle needs an update.
1393
+ */
1394
+ _bundleNeedsUpdate( bundleGroup, renderBundleData ) {
1395
+
1396
+ return renderBundleData.bundleGPU === undefined || bundleGroup.version !== renderBundleData.version;
1397
+
1398
+ }
1399
+
1400
+ /**
1401
+ * Renders the given render bundle.
1402
+ *
1403
+ * @private
1404
+ * @param {Object} bundle - Render bundle data.
1405
+ * @param {Scene} sceneRef - The scene the render bundle belongs to.
1406
+ * @param {LightsNode} lightsNode - The lights node.
1407
+ */
1408
+ _renderBundle( bundle, sceneRef, lightsNode ) {
1409
+
1410
+ const { bundleGroup, camera, renderList } = bundle;
1411
+
1412
+ const renderContext = this._currentRenderContext;
1413
+
1414
+ //
1415
+
1416
+ const renderBundle = this._bundles.get( bundleGroup, camera, renderContext );
1417
+ const renderBundleData = this.backend.get( renderBundle );
1418
+ const renderBundleNeedsUpdate = this._bundleNeedsUpdate( bundleGroup, renderBundleData );
1419
+
1420
+ if ( renderBundleNeedsUpdate ) {
1421
+
1422
+ this.backend.beginBundle( renderContext );
1423
+
1424
+ this._currentRenderBundle = renderBundle;
1425
+
1426
+ const {
1427
+ transparentDoublePass: transparentDoublePassObjects,
1428
+ transparent: transparentObjects,
1429
+ opaque: opaqueObjects
1430
+ } = renderList;
1431
+
1432
+ if ( this.opaque === true && opaqueObjects.length > 0 ) this._renderObjects( opaqueObjects, camera, sceneRef, lightsNode );
1433
+ if ( this.transparent === true && transparentObjects.length > 0 ) this._renderTransparents( transparentObjects, transparentDoublePassObjects, camera, sceneRef, lightsNode );
1434
+
1435
+ this._currentRenderBundle = null;
1436
+
1437
+ //
1438
+
1439
+ this.backend.finishBundle( renderContext, renderBundle );
1440
+
1441
+ renderBundleData.version = bundleGroup.version;
1442
+
1443
+ } else {
1444
+
1445
+ const { renderObjects } = renderBundleData;
1446
+
1447
+ for ( let i = 0, l = renderObjects.length; i < l; i ++ ) {
1448
+
1449
+ const renderObject = renderObjects[ i ];
1450
+
1451
+ const refreshType = this._nodes.needsRefresh( renderObject );
1452
+
1453
+ if ( refreshType === RenderObjectRefreshType.FULL ) {
1454
+
1455
+ this._nodes.updateBefore( renderObject );
1456
+
1457
+ this._geometries.updateForRender( renderObject );
1458
+ this._nodes.updateForRender( renderObject );
1459
+ this._bindings.updateForRender( renderObject );
1460
+
1461
+ this._nodes.updateAfter( renderObject );
1462
+
1463
+ } else if ( refreshType === RenderObjectRefreshType.SHARED ) {
1464
+
1465
+ this._nodes.updateBefore( renderObject );
1466
+
1467
+ this._nodes.updateForRender( renderObject );
1468
+ this._bindings.updateSharedForRender( renderObject );
1469
+
1470
+ this._nodes.updateAfter( renderObject );
1471
+
1472
+ }
1473
+
1474
+ }
1475
+
1476
+ }
1477
+
1478
+ this.backend.addBundle( renderContext, renderBundle );
1479
+
1480
+ }
1481
+
1482
+ /**
1483
+ * Renders the scene or 3D object with the given camera. This method can only be called
1484
+ * if the renderer has been initialized. When using `render()` inside an animation loop,
1485
+ * it's guaranteed the renderer will be initialized. The animation loop must be defined
1486
+ * with {@link Renderer#setAnimationLoop} though.
1487
+ *
1488
+ * For all other use cases (like when using on-demand rendering), you must call
1489
+ * {@link Renderer#init} before rendering.
1490
+ *
1491
+ * The target of the method is the default framebuffer (meaning the canvas)
1492
+ * or alternatively a render target when specified via `setRenderTarget()`.
1493
+ *
1494
+ * @param {Object3D} scene - The scene or 3D object to render.
1495
+ * @param {Camera} camera - The camera to render the scene with.
1496
+ */
1497
+ render( scene, camera ) {
1498
+
1499
+ if ( this._initialized === false ) {
1500
+
1501
+ throw new Error( 'THREE.Renderer: .render() called before the backend is initialized. Use "await renderer.init();" before rendering.' );
1502
+
1503
+ }
1504
+
1505
+ this._renderScene( scene, camera );
1506
+
1507
+ }
1508
+
1509
+ /**
1510
+ * Returns whether the renderer has been initialized or not.
1511
+ *
1512
+ * @readonly
1513
+ * @return {boolean} Whether the renderer has been initialized or not.
1514
+ */
1515
+ get initialized() {
1516
+
1517
+ return this._initialized;
1518
+
1519
+ }
1520
+
1521
+ _renderOutputLayers( quad, renderTarget ) {
1522
+
1523
+ const useMultiview = this.backend.isWebGLBackend === true && renderTarget.multiview === true;
1524
+
1525
+ if ( useMultiview || renderTarget.texture.isArrayTexture !== true || renderTarget.texture.image.depth <= 1 ) {
1526
+
1527
+ this._renderScene( quad, quad.camera, false );
1528
+ return;
1529
+
1530
+ }
1531
+
1532
+ const currentActiveCubeFace = this._activeCubeFace;
1533
+
1534
+ try {
1535
+
1536
+ for ( let layer = 0; layer < renderTarget.texture.image.depth; layer ++ ) {
1537
+
1538
+ this._nodes.setOutputLayerIndex( layer );
1539
+ this._activeCubeFace = layer;
1540
+
1541
+ this._renderScene( quad, quad.camera, false );
1542
+
1543
+ }
1544
+
1545
+ } finally {
1546
+
1547
+ this._nodes.setOutputLayerIndex( 0 );
1548
+ this._activeCubeFace = currentActiveCubeFace;
1549
+
1550
+ }
1551
+
1552
+ }
1553
+
1554
+ /**
1555
+ * Returns an internal render target which is used when computing the output tone mapping
1556
+ * and color space conversion. Unlike in `WebGLRenderer`, this is done in a separate render
1557
+ * pass and not inline to achieve more correct results.
1558
+ *
1559
+ * @private
1560
+ * @return {?RenderTarget} The render target. The method returns `null` if no output conversion should be applied.
1561
+ */
1562
+ _getFrameBufferTarget() {
1563
+
1564
+ if ( this.needsFrameBufferTarget === false ) return null;
1565
+
1566
+ const { width, height } = this.getDrawingBufferSize( _drawingBufferSize );
1567
+ const { depth, stencil } = this;
1568
+
1569
+ // TODO: Unify CanvasTarget and OutputRenderTarget
1570
+ const target = this._outputRenderTarget || this._canvasTarget;
1571
+
1572
+ let frameBufferTarget = this._frameBufferTargets.get( target );
1573
+
1574
+ if ( frameBufferTarget === undefined ) {
1575
+
1576
+ frameBufferTarget = new RenderTarget( width, height, {
1577
+ depthBuffer: depth,
1578
+ stencilBuffer: stencil,
1579
+ type: this._outputBufferType,
1580
+ format: RGBAFormat,
1581
+ colorSpace: ColorManagement.workingColorSpace,
1582
+ generateMipmaps: false,
1583
+ minFilter: LinearFilter,
1584
+ magFilter: LinearFilter,
1585
+ samples: this.samples
1586
+ } );
1587
+
1588
+ frameBufferTarget.isPostProcessingRenderTarget = true;
1589
+
1590
+ const dispose = () => {
1591
+
1592
+ target.removeEventListener( 'dispose', dispose );
1593
+
1594
+ frameBufferTarget.dispose();
1595
+
1596
+ this._frameBufferTargets.delete( target );
1597
+
1598
+ };
1599
+
1600
+ target.addEventListener( 'dispose', dispose );
1601
+
1602
+ this._frameBufferTargets.set( target, frameBufferTarget );
1603
+
1604
+ }
1605
+
1606
+ const outputRenderTarget = this.getOutputRenderTarget();
1607
+
1608
+ frameBufferTarget.depthBuffer = depth;
1609
+ frameBufferTarget.stencilBuffer = stencil;
1610
+
1611
+ if ( outputRenderTarget !== null ) {
1612
+
1613
+ frameBufferTarget.setSize( outputRenderTarget.width, outputRenderTarget.height, outputRenderTarget.depth );
1614
+
1615
+ } else {
1616
+
1617
+ frameBufferTarget.setSize( width, height, 1 );
1618
+
1619
+ }
1620
+
1621
+ // RenderTarget || CanvasTarget
1622
+
1623
+ const viewport = this._outputRenderTarget ? this._outputRenderTarget.viewport : target._viewport;
1624
+ const scissor = this._outputRenderTarget ? this._outputRenderTarget.scissor : target._scissor;
1625
+ const pixelRatio = this._outputRenderTarget ? 1 : target._pixelRatio;
1626
+ const scissorTest = this._outputRenderTarget ? this._outputRenderTarget.scissorTest : target._scissorTest;
1627
+
1628
+ frameBufferTarget.viewport.copy( viewport );
1629
+ frameBufferTarget.scissor.copy( scissor );
1630
+ frameBufferTarget.viewport.multiplyScalar( pixelRatio );
1631
+ frameBufferTarget.scissor.multiplyScalar( pixelRatio );
1632
+ frameBufferTarget.scissorTest = scissorTest;
1633
+ frameBufferTarget.multiview = outputRenderTarget !== null ? outputRenderTarget.multiview : false;
1634
+ frameBufferTarget.useArrayDepthTexture = outputRenderTarget !== null ? outputRenderTarget.useArrayDepthTexture : false;
1635
+ frameBufferTarget.resolveDepthBuffer = outputRenderTarget !== null ? outputRenderTarget.resolveDepthBuffer : true;
1636
+ frameBufferTarget.resolveStencilBuffer = outputRenderTarget !== null ? outputRenderTarget.resolveStencilBuffer : true;
1637
+ frameBufferTarget.storeMultisampledColorBuffer = outputRenderTarget !== null ? outputRenderTarget.storeMultisampledColorBuffer : true;
1638
+ frameBufferTarget.storeMultisampledDepthBuffer = outputRenderTarget !== null ? outputRenderTarget.storeMultisampledDepthBuffer : true;
1639
+ frameBufferTarget.storeMultisampledStencilBuffer = outputRenderTarget !== null ? outputRenderTarget.storeMultisampledStencilBuffer : true;
1640
+ frameBufferTarget._autoAllocateDepthBuffer = outputRenderTarget !== null ? outputRenderTarget._autoAllocateDepthBuffer : false;
1641
+
1642
+ return frameBufferTarget;
1643
+
1644
+ }
1645
+
1646
+ /**
1647
+ * Renders the scene or 3D object with the given camera.
1648
+ *
1649
+ * @private
1650
+ * @param {Object3D} scene - The scene or 3D object to render.
1651
+ * @param {Camera} camera - The camera to render the scene with.
1652
+ * @param {boolean} [useFrameBufferTarget=true] - Whether to use a framebuffer target or not.
1653
+ * @return {RenderContext} The current render context.
1654
+ */
1655
+ _renderScene( scene, camera, useFrameBufferTarget = true ) {
1656
+
1657
+ if ( this._isDeviceLost === true ) return;
1658
+
1659
+ if ( this.shadowMap.type === PCFSoftShadowMap ) {
1660
+
1661
+ warn( 'WebGPURenderer: PCFSoftShadowMap has been removed. Using PCFShadowMap instead.' );
1662
+
1663
+ this.shadowMap.type = PCFShadowMap;
1664
+
1665
+ }
1666
+
1667
+ //
1668
+
1669
+ const frameBufferTarget = useFrameBufferTarget ? this._getFrameBufferTarget() : null;
1670
+
1671
+ // preserve render tree
1672
+
1673
+ const nodeFrame = this._nodes.nodeFrame;
1674
+
1675
+ const previousRenderId = nodeFrame.renderId;
1676
+ const previousRenderContext = this._currentRenderContext;
1677
+ const previousRenderObjectFunction = this._currentRenderObjectFunction;
1678
+ const previousHandleObjectFunction = this._handleObjectFunction;
1679
+
1680
+ this.lighting.beginRender( scene );
1681
+
1682
+ //
1683
+
1684
+ this._callDepth ++;
1685
+
1686
+ const sceneRef = ( scene.isScene === true ) ? scene : _scene;
1687
+
1688
+ const outputRenderTarget = this._renderTarget || this._outputRenderTarget;
1689
+ const useXRCamera = this.xr.isPresenting === true && this.isOutputTarget;
1690
+
1691
+ const activeCubeFace = this._activeCubeFace;
1692
+ const activeMipmapLevel = this._activeMipmapLevel;
1693
+
1694
+ //
1695
+
1696
+ let renderTarget;
1697
+
1698
+ if ( frameBufferTarget !== null ) {
1699
+
1700
+ renderTarget = frameBufferTarget;
1701
+
1702
+ this.setRenderTarget( renderTarget );
1703
+
1704
+ } else {
1705
+
1706
+ renderTarget = outputRenderTarget;
1707
+
1708
+ }
1709
+
1710
+ // make sure a new render target has correct default depth values
1711
+
1712
+ if ( renderTarget !== null && renderTarget.depthBuffer === true ) {
1713
+
1714
+ const renderTargetData = this._textures.get( renderTarget );
1715
+
1716
+ if ( renderTargetData.depthInitialized !== true ) {
1717
+
1718
+ // we need a single manual clear if auto clear depth is disabled
1719
+
1720
+ if ( this.autoClear === false || ( this.autoClear === true && this.autoClearDepth === false ) ) {
1721
+
1722
+ this.clearDepth();
1723
+
1724
+ }
1725
+
1726
+ renderTargetData.depthInitialized = true;
1727
+
1728
+ }
1729
+
1730
+ }
1731
+
1732
+ //
1733
+
1734
+ const renderContext = this._renderContexts.get( renderTarget, this._mrt, this._callDepth );
1735
+
1736
+ this._currentRenderContext = renderContext;
1737
+ this._currentRenderObjectFunction = this._renderObjectFunction || this.renderObject;
1738
+ this._handleObjectFunction = this._renderObjectDirect;
1739
+
1740
+ //
1741
+
1742
+ this.info.calls ++;
1743
+ this.info.render.calls ++;
1744
+ this.info.render.frameCalls ++;
1745
+
1746
+ nodeFrame.renderId = this.info.calls;
1747
+
1748
+ //
1749
+
1750
+ this.backend.updateTimeStampUID( renderContext );
1751
+
1752
+ this.inspector.beginRender( this.backend.getTimestampUID( renderContext ), scene, camera, renderTarget );
1753
+
1754
+ //
1755
+
1756
+ if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
1757
+
1758
+ camera = this._updateCamera( camera, useXRCamera );
1759
+
1760
+ //
1761
+
1762
+ const canvasTarget = this._canvasTarget;
1763
+
1764
+ let viewport = canvasTarget._viewport;
1765
+ let scissor = canvasTarget._scissor;
1766
+ let pixelRatio = canvasTarget._pixelRatio;
1767
+
1768
+ if ( renderTarget !== null ) {
1769
+
1770
+ viewport = renderTarget.viewport;
1771
+ scissor = renderTarget.scissor;
1772
+ pixelRatio = 1;
1773
+
1774
+ }
1775
+
1776
+ this.getDrawingBufferSize( _drawingBufferSize );
1777
+
1778
+ _screen.set( 0, 0, _drawingBufferSize.width, _drawingBufferSize.height );
1779
+
1780
+ const minDepth = ( viewport.minDepth === undefined ) ? 0 : viewport.minDepth;
1781
+ const maxDepth = ( viewport.maxDepth === undefined ) ? 1 : viewport.maxDepth;
1782
+
1783
+ renderContext.viewportValue.copy( viewport ).multiplyScalar( pixelRatio ).floor();
1784
+ renderContext.viewportValue.width >>= activeMipmapLevel;
1785
+ renderContext.viewportValue.height >>= activeMipmapLevel;
1786
+ renderContext.viewportValue.minDepth = minDepth;
1787
+ renderContext.viewportValue.maxDepth = maxDepth;
1788
+ renderContext.viewport = renderContext.viewportValue.equals( _screen ) === false;
1789
+
1790
+ renderContext.scissorValue.copy( scissor ).multiplyScalar( pixelRatio ).floor();
1791
+ renderContext.scissor = canvasTarget._scissorTest && renderContext.scissorValue.equals( _screen ) === false;
1792
+ renderContext.scissorValue.width >>= activeMipmapLevel;
1793
+ renderContext.scissorValue.height >>= activeMipmapLevel;
1794
+
1795
+ if ( ! renderContext.clippingContext ) renderContext.clippingContext = new ClippingContext();
1796
+ renderContext.clippingContext.updateGlobal( sceneRef, camera );
1797
+
1798
+ //
1799
+
1800
+ sceneRef.onBeforeRender( this, scene, camera, renderTarget );
1801
+
1802
+ //
1803
+
1804
+ _projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );
1805
+
1806
+ if ( camera.isArrayCamera ) {
1807
+
1808
+ _frustumArray.setFromArrayCamera( camera );
1809
+
1810
+ } else {
1811
+
1812
+ _frustum.setFromProjectionMatrix( _projScreenMatrix, camera.coordinateSystem, camera.reversedDepth );
1813
+
1814
+ }
1815
+
1816
+ this._renderLists.update( nodeFrame.frameId );
1817
+
1818
+ const renderList = this._renderLists.get( scene, camera, this.lighting );
1819
+ renderList.begin();
1820
+
1821
+ this._projectObject( scene, camera, 0, renderList, renderContext.clippingContext );
1822
+
1823
+ renderList.finish();
1824
+
1825
+ if ( this.sortObjects === true ) {
1826
+
1827
+ renderList.sort( this._opaqueSort, this._transparentSort );
1828
+
1829
+ }
1830
+
1831
+ //
1832
+
1833
+ if ( renderTarget !== null ) {
1834
+
1835
+ this._textures.updateRenderTarget( renderTarget, activeMipmapLevel );
1836
+
1837
+ const renderTargetData = this._textures.get( renderTarget );
1838
+
1839
+ renderContext.textures = renderTargetData.textures;
1840
+ renderContext.depthTexture = renderTargetData.depthTexture;
1841
+ renderContext.width = renderTargetData.width;
1842
+ renderContext.height = renderTargetData.height;
1843
+ renderContext.renderTarget = renderTarget;
1844
+ renderContext.depth = renderTarget.depthBuffer;
1845
+ renderContext.stencil = renderTarget.stencilBuffer;
1846
+
1847
+ } else {
1848
+
1849
+ renderContext.textures = null;
1850
+ renderContext.depthTexture = null;
1851
+ renderContext.width = _drawingBufferSize.width;
1852
+ renderContext.height = _drawingBufferSize.height;
1853
+ renderContext.depth = this.depth;
1854
+ renderContext.stencil = this.stencil;
1855
+
1856
+ }
1857
+
1858
+ renderContext.width >>= activeMipmapLevel;
1859
+ renderContext.height >>= activeMipmapLevel;
1860
+ renderContext.activeCubeFace = activeCubeFace;
1861
+ renderContext.activeMipmapLevel = activeMipmapLevel;
1862
+ renderContext.occlusionQueryCount = renderList.occlusionQueryCount;
1863
+ renderContext.fullscreenPass = scene.isQuadMesh === true;
1864
+
1865
+ //
1866
+
1867
+ renderContext.scissorValue.max( _vector4.set( 0, 0, 0, 0 ) );
1868
+
1869
+ if ( renderContext.scissorValue.x + renderContext.scissorValue.width > renderContext.width ) {
1870
+
1871
+ renderContext.scissorValue.width = Math.max( renderContext.width - renderContext.scissorValue.x, 0 );
1872
+
1873
+ }
1874
+
1875
+ if ( renderContext.scissorValue.y + renderContext.scissorValue.height > renderContext.height ) {
1876
+
1877
+ renderContext.scissorValue.height = Math.max( renderContext.height - renderContext.scissorValue.y, 0 );
1878
+
1879
+ }
1880
+
1881
+ //
1882
+
1883
+ this._background.update( sceneRef, renderList, renderContext );
1884
+
1885
+ //
1886
+
1887
+ renderContext.camera = camera;
1888
+ this.backend.beginRender( renderContext );
1889
+
1890
+ // process render lists
1891
+
1892
+ const {
1893
+ bundles,
1894
+ lightsNode,
1895
+ transparentDoublePass: transparentDoublePassObjects,
1896
+ transparent: transparentObjects,
1897
+ opaque: opaqueObjects
1898
+ } = renderList;
1899
+
1900
+ if ( bundles.length > 0 ) this._renderBundles( bundles, sceneRef, lightsNode );
1901
+ if ( this.opaque === true && opaqueObjects.length > 0 ) this._renderObjects( opaqueObjects, camera, sceneRef, lightsNode );
1902
+ if ( this.transparent === true && transparentObjects.length > 0 ) this._renderTransparents( transparentObjects, transparentDoublePassObjects, camera, sceneRef, lightsNode );
1903
+
1904
+ // finish render pass
1905
+
1906
+ this.backend.finishRender( renderContext );
1907
+
1908
+ // restore render tree
1909
+
1910
+ nodeFrame.renderId = previousRenderId;
1911
+ this._currentRenderContext = previousRenderContext;
1912
+ this._currentRenderObjectFunction = previousRenderObjectFunction;
1913
+ this._handleObjectFunction = previousHandleObjectFunction;
1914
+
1915
+ this.lighting.finishRender( scene );
1916
+
1917
+ //
1918
+
1919
+ this._callDepth --;
1920
+
1921
+ if ( frameBufferTarget !== null ) {
1922
+
1923
+ this.setRenderTarget( outputRenderTarget, activeCubeFace, activeMipmapLevel );
1924
+
1925
+ this._renderOutput( renderTarget );
1926
+
1927
+ }
1928
+
1929
+ //
1930
+
1931
+ sceneRef.onAfterRender( this, scene, camera, renderTarget );
1932
+
1933
+ //
1934
+
1935
+ this.inspector.finishRender( this.backend.getTimestampUID( renderContext ) );
1936
+
1937
+ //
1938
+
1939
+ return renderContext;
1940
+
1941
+ }
1942
+
1943
+ _setXRLayerSize( width, height ) {
1944
+
1945
+ // TODO: Find a better solution to resize the canvas when in XR.
1946
+
1947
+ this._canvasTarget._width = width;
1948
+ this._canvasTarget._height = height;
1949
+
1950
+ this.setViewport( 0, 0, width, height );
1951
+
1952
+ }
1953
+
1954
+ /**
1955
+ * The output pass performs tone mapping and color space conversion.
1956
+ *
1957
+ * @private
1958
+ * @param {RenderTarget} renderTarget - The current render target.
1959
+ */
1960
+ _renderOutput( renderTarget ) {
1961
+
1962
+ const cacheKey = this._nodes.getOutputCacheKey();
1963
+
1964
+ let quadData = this._quadCache.get( renderTarget.texture );
1965
+ let quad;
1966
+
1967
+ if ( quadData === undefined ) {
1968
+
1969
+ quad = new QuadMesh( new NodeMaterial() );
1970
+ quad.name = 'Output Color Transform';
1971
+ quad.material.name = 'outputColorTransform';
1972
+
1973
+ quad.material.fragmentNode = this._nodes.getOutputNode( renderTarget.texture );
1974
+
1975
+ quadData = {
1976
+ quad,
1977
+ cacheKey
1978
+ };
1979
+
1980
+ this._quadCache.set( renderTarget.texture, quadData );
1981
+
1982
+ // dispose logic
1983
+
1984
+ const dispose = () => {
1985
+
1986
+ quad.material.dispose();
1987
+
1988
+ this._quadCache.delete( renderTarget.texture );
1989
+
1990
+ renderTarget.texture.removeEventListener( 'dispose', dispose );
1991
+
1992
+ };
1993
+
1994
+ renderTarget.texture.addEventListener( 'dispose', dispose );
1995
+
1996
+ } else {
1997
+
1998
+ quad = quadData.quad;
1999
+
2000
+ if ( quadData.cacheKey !== cacheKey ) {
2001
+
2002
+ quad.material.fragmentNode = this._nodes.getOutputNode( renderTarget.texture );
2003
+ quad.material.needsUpdate = true;
2004
+
2005
+ quadData.cacheKey = cacheKey;
2006
+
2007
+ }
2008
+
2009
+ }
2010
+
2011
+ // a clear operation clears the intermediate renderTarget texture, but should not update the screen canvas.
2012
+
2013
+ const currentAutoClear = this.autoClear;
2014
+ const currentXR = this.xr.enabled;
2015
+
2016
+ this.autoClear = false;
2017
+ this.xr.enabled = false;
2018
+ this._renderOutputLayers( quad, renderTarget );
2019
+
2020
+ this.autoClear = currentAutoClear;
2021
+ this.xr.enabled = currentXR;
2022
+
2023
+
2024
+ }
2025
+
2026
+ /**
2027
+ * Returns the maximum available anisotropy for texture filtering.
2028
+ *
2029
+ * @return {number} The maximum available anisotropy.
2030
+ */
2031
+ getMaxAnisotropy() {
2032
+
2033
+ return this.backend.capabilities.getMaxAnisotropy();
2034
+
2035
+ }
2036
+
2037
+ /**
2038
+ * Returns the active cube face.
2039
+ *
2040
+ * @return {number} The active cube face.
2041
+ */
2042
+ getActiveCubeFace() {
2043
+
2044
+ return this._activeCubeFace;
2045
+
2046
+ }
2047
+
2048
+ /**
2049
+ * Returns the active mipmap level.
2050
+ *
2051
+ * @return {number} The active mipmap level.
2052
+ */
2053
+ getActiveMipmapLevel() {
2054
+
2055
+ return this._activeMipmapLevel;
2056
+
2057
+ }
2058
+
2059
+ /**
2060
+ * Applications are advised to always define the animation loop
2061
+ * with this method and not manually with `requestAnimationFrame()`
2062
+ * for best compatibility.
2063
+ *
2064
+ * @async
2065
+ * @param {?onAnimationCallback} callback - The application's animation loop.
2066
+ * @return {Promise} A Promise that resolves when the set has been executed.
2067
+ */
2068
+ async setAnimationLoop( callback ) {
2069
+
2070
+ if ( this._initialized === false ) await this.init();
2071
+
2072
+ this._animation.setAnimationLoop( callback );
2073
+
2074
+ }
2075
+
2076
+ /**
2077
+ * Returns the current animation loop callback.
2078
+ *
2079
+ * @return {?Function} The current animation loop callback.
2080
+ */
2081
+ getAnimationLoop() {
2082
+
2083
+ return this._animation.getAnimationLoop();
2084
+
2085
+ }
2086
+
2087
+ /**
2088
+ * Can be used to transfer buffer data from a storage buffer attribute
2089
+ * from the GPU to the CPU in context of compute shaders.
2090
+ *
2091
+ * @async
2092
+ * @param {BufferAttribute} attribute - The storage buffer attribute to read frm.
2093
+ * @param {ReadbackBuffer|ArrayBuffer} target - The storage buffer attribute.
2094
+ * @param {number} offset - The storage buffer attribute.
2095
+ * @param {number} count - The offset from which to start reading the
2096
+ * @return {Promise<ArrayBuffer|ReadbackBuffer>} A promise that resolves with the buffer data when the data are ready.
2097
+ */
2098
+ async getArrayBufferAsync( attribute, target = null, offset = 0, count = - 1 ) {
2099
+
2100
+ // tally the memory for this readback buffer
2101
+ if ( target !== null && target.isReadbackBuffer ) {
2102
+
2103
+ if ( this.info.memoryMap.has( target ) === false ) {
2104
+
2105
+ this.info.createReadbackBuffer( target );
2106
+
2107
+ const disposeInfo = () => {
2108
+
2109
+ target.removeEventListener( 'dispose', disposeInfo );
2110
+
2111
+ this.info.destroyReadbackBuffer( target );
2112
+
2113
+ };
2114
+
2115
+ target.addEventListener( 'dispose', disposeInfo );
2116
+
2117
+ }
2118
+
2119
+ }
2120
+
2121
+ if ( offset % 4 !== 0 || ( count > 0 && count % 4 !== 0 ) ) {
2122
+
2123
+ throw new Error( 'THREE.Renderer: "getArrayBufferAsync()" offset and count must be a multiple of 4.' );
2124
+
2125
+ }
2126
+
2127
+ return await this.backend.getArrayBufferAsync( attribute, target, offset, count );
2128
+
2129
+ }
2130
+
2131
+ /**
2132
+ * Returns the rendering context.
2133
+ *
2134
+ * @return {GPUCanvasContext|WebGL2RenderingContext} The rendering context.
2135
+ */
2136
+ getContext() {
2137
+
2138
+ return this.backend.getContext();
2139
+
2140
+ }
2141
+
2142
+ /**
2143
+ * Returns the pixel ratio.
2144
+ *
2145
+ * @return {number} The pixel ratio.
2146
+ */
2147
+ getPixelRatio() {
2148
+
2149
+ return this._canvasTarget.getPixelRatio();
2150
+
2151
+ }
2152
+
2153
+ /**
2154
+ * Returns the drawing buffer size in physical pixels. This method honors the pixel ratio.
2155
+ *
2156
+ * @param {Vector2} target - The method writes the result in this target object.
2157
+ * @return {Vector2} The drawing buffer size.
2158
+ */
2159
+ getDrawingBufferSize( target ) {
2160
+
2161
+ return this._canvasTarget.getDrawingBufferSize( target );
2162
+
2163
+ }
2164
+
2165
+ /**
2166
+ * Returns the renderer's size in logical pixels. This method does not honor the pixel ratio.
2167
+ *
2168
+ * @param {Vector2} target - The method writes the result in this target object.
2169
+ * @return {Vector2} The renderer's size in logical pixels.
2170
+ */
2171
+ getSize( target ) {
2172
+
2173
+ return this._canvasTarget.getSize( target );
2174
+
2175
+ }
2176
+
2177
+ /**
2178
+ * Sets the given pixel ratio and resizes the canvas if necessary.
2179
+ *
2180
+ * @param {number} [value=1] - The pixel ratio.
2181
+ */
2182
+ setPixelRatio( value = 1 ) {
2183
+
2184
+ this._canvasTarget.setPixelRatio( value );
2185
+
2186
+ }
2187
+
2188
+ /**
2189
+ * This method allows to define the drawing buffer size by specifying
2190
+ * width, height and pixel ratio all at once. The size of the drawing
2191
+ * buffer is computed with this formula:
2192
+ * ```js
2193
+ * size.x = width * pixelRatio;
2194
+ * size.y = height * pixelRatio;
2195
+ * ```
2196
+ *
2197
+ * @param {number} width - The width in logical pixels.
2198
+ * @param {number} height - The height in logical pixels.
2199
+ * @param {number} pixelRatio - The pixel ratio.
2200
+ */
2201
+ setDrawingBufferSize( width, height, pixelRatio ) {
2202
+
2203
+ // Renderer can't be resized while presenting in XR.
2204
+ if ( this.xr && this.xr.isPresenting ) return;
2205
+
2206
+ this._canvasTarget.setDrawingBufferSize( width, height, pixelRatio );
2207
+
2208
+ }
2209
+
2210
+ /**
2211
+ * Sets the size of the renderer.
2212
+ *
2213
+ * @param {number} width - The width in logical pixels.
2214
+ * @param {number} height - The height in logical pixels.
2215
+ * @param {boolean} [updateStyle=true] - Whether to update the `style` attribute of the canvas or not.
2216
+ */
2217
+ setSize( width, height, updateStyle = true ) {
2218
+
2219
+ // Renderer can't be resized while presenting in XR.
2220
+ if ( this.xr && this.xr.isPresenting ) return;
2221
+
2222
+ this._canvasTarget.setSize( width, height, updateStyle );
2223
+
2224
+ }
2225
+
2226
+ /**
2227
+ * Defines a manual sort function for the opaque render list.
2228
+ * Pass `null` to use the default sort.
2229
+ *
2230
+ * @param {Function} method - The sort function.
2231
+ */
2232
+ setOpaqueSort( method ) {
2233
+
2234
+ this._opaqueSort = method;
2235
+
2236
+ }
2237
+
2238
+ /**
2239
+ * Defines a manual sort function for the transparent render list.
2240
+ * Pass `null` to use the default sort.
2241
+ *
2242
+ * @param {Function} method - The sort function.
2243
+ */
2244
+ setTransparentSort( method ) {
2245
+
2246
+ this._transparentSort = method;
2247
+
2248
+ }
2249
+
2250
+ /**
2251
+ * Returns the scissor rectangle.
2252
+ *
2253
+ * @param {Vector4} target - The method writes the result in this target object.
2254
+ * @return {Vector4} The scissor rectangle.
2255
+ */
2256
+ getScissor( target ) {
2257
+
2258
+ return this._canvasTarget.getScissor( target );
2259
+
2260
+ }
2261
+
2262
+ /**
2263
+ * Defines the scissor rectangle.
2264
+ *
2265
+ * @param {number | Vector4} x - The horizontal coordinate for the upper left corner of the box in logical pixel unit.
2266
+ * Instead of passing four arguments, the method also works with a single four-dimensional vector.
2267
+ * @param {number} y - The vertical coordinate for the upper left corner of the box in logical pixel unit.
2268
+ * @param {number} width - The width of the scissor box in logical pixel unit.
2269
+ * @param {number} height - The height of the scissor box in logical pixel unit.
2270
+ */
2271
+ setScissor( x, y, width, height ) {
2272
+
2273
+ this._canvasTarget.setScissor( x, y, width, height );
2274
+
2275
+ }
2276
+
2277
+ /**
2278
+ * Returns the scissor test value.
2279
+ *
2280
+ * @return {boolean} Whether the scissor test should be enabled or not.
2281
+ */
2282
+ getScissorTest() {
2283
+
2284
+ return this._canvasTarget.getScissorTest();
2285
+
2286
+ }
2287
+
2288
+ /**
2289
+ * Defines the scissor test.
2290
+ *
2291
+ * @param {boolean} boolean - Whether the scissor test should be enabled or not.
2292
+ */
2293
+ setScissorTest( boolean ) {
2294
+
2295
+ this._canvasTarget.setScissorTest( boolean );
2296
+
2297
+ // TODO: Move it to CanvasTarget event listener.
2298
+
2299
+ this.backend.setScissorTest( boolean );
2300
+
2301
+ }
2302
+
2303
+ /**
2304
+ * Resets the backend's internal state cache. Useful when the rendering context is shared with
2305
+ * other libraries that change the state. A no-op for the WebGPU backend.
2306
+ */
2307
+ resetState() {
2308
+
2309
+ if ( this._initialized === false ) {
2310
+
2311
+ throw new Error( 'THREE.Renderer: .resetState() called before the backend is initialized. Use "await renderer.init();" before using this method.' );
2312
+
2313
+ }
2314
+
2315
+ this.backend.resetState();
2316
+
2317
+ }
2318
+
2319
+ /**
2320
+ * Returns the viewport definition.
2321
+ *
2322
+ * @param {Vector4} target - The method writes the result in this target object.
2323
+ * @return {Vector4} The viewport definition.
2324
+ */
2325
+ getViewport( target ) {
2326
+
2327
+ return this._canvasTarget.getViewport( target );
2328
+
2329
+ }
2330
+
2331
+ /**
2332
+ * Defines the viewport.
2333
+ *
2334
+ * @param {number | Vector4} x - The horizontal coordinate for the upper left corner of the viewport origin in logical pixel unit.
2335
+ * @param {number} y - The vertical coordinate for the upper left corner of the viewport origin in logical pixel unit.
2336
+ * @param {number} width - The width of the viewport in logical pixel unit.
2337
+ * @param {number} height - The height of the viewport in logical pixel unit.
2338
+ * @param {number} minDepth - The minimum depth value of the viewport. WebGPU only.
2339
+ * @param {number} maxDepth - The maximum depth value of the viewport. WebGPU only.
2340
+ */
2341
+ setViewport( x, y, width, height, minDepth = 0, maxDepth = 1 ) {
2342
+
2343
+ this._canvasTarget.setViewport( x, y, width, height, minDepth, maxDepth );
2344
+
2345
+ }
2346
+
2347
+ /**
2348
+ * Returns the clear color.
2349
+ *
2350
+ * @param {Color} target - The method writes the result in this target object.
2351
+ * @return {Color} The clear color.
2352
+ */
2353
+ getClearColor( target ) {
2354
+
2355
+ return target.copy( this._clearColor );
2356
+
2357
+ }
2358
+
2359
+ /**
2360
+ * Defines the clear color and optionally the clear alpha.
2361
+ *
2362
+ * @param {Color} color - The clear color.
2363
+ * @param {number} [alpha=1] - The clear alpha.
2364
+ */
2365
+ setClearColor( color, alpha = 1 ) {
2366
+
2367
+ this._clearColor.set( color );
2368
+ this._clearColor.a = alpha;
2369
+
2370
+ }
2371
+
2372
+ /**
2373
+ * Returns the clear alpha.
2374
+ *
2375
+ * @return {number} The clear alpha.
2376
+ */
2377
+ getClearAlpha() {
2378
+
2379
+ return this._clearColor.a;
2380
+
2381
+ }
2382
+
2383
+ /**
2384
+ * Defines the clear alpha.
2385
+ *
2386
+ * @param {number} alpha - The clear alpha.
2387
+ */
2388
+ setClearAlpha( alpha ) {
2389
+
2390
+ this._clearColor.a = alpha;
2391
+
2392
+ }
2393
+
2394
+ /**
2395
+ * Returns the clear depth.
2396
+ *
2397
+ * @return {number} The clear depth.
2398
+ */
2399
+ getClearDepth() {
2400
+
2401
+ return ( this.reversedDepthBuffer === true ) ? 1 - this._clearDepth : this._clearDepth;
2402
+
2403
+ }
2404
+
2405
+ /**
2406
+ * Defines the clear depth.
2407
+ *
2408
+ * @param {number} depth - The clear depth.
2409
+ */
2410
+ setClearDepth( depth ) {
2411
+
2412
+ this._clearDepth = depth;
2413
+
2414
+ }
2415
+
2416
+ /**
2417
+ * Returns the clear stencil.
2418
+ *
2419
+ * @return {number} The clear stencil.
2420
+ */
2421
+ getClearStencil() {
2422
+
2423
+ return this._clearStencil;
2424
+
2425
+ }
2426
+
2427
+ /**
2428
+ * Defines the clear stencil.
2429
+ *
2430
+ * @param {number} stencil - The clear stencil.
2431
+ */
2432
+ setClearStencil( stencil ) {
2433
+
2434
+ this._clearStencil = stencil;
2435
+
2436
+ }
2437
+
2438
+ /**
2439
+ * This method performs an occlusion query for the given 3D object.
2440
+ * It returns `true` if the given 3D object is fully occluded by other
2441
+ * 3D objects in the scene.
2442
+ *
2443
+ * @param {Object3D} object - The 3D object to test.
2444
+ * @return {boolean} Whether the 3D object is fully occluded or not.
2445
+ */
2446
+ isOccluded( object ) {
2447
+
2448
+ const renderContext = this._currentRenderContext;
2449
+
2450
+ return renderContext && this.backend.isOccluded( renderContext, object );
2451
+
2452
+ }
2453
+
2454
+ /**
2455
+ * Performs a manual clear operation. This method ignores `autoClear` properties.
2456
+ *
2457
+ * @param {boolean} [color=true] - Whether the color buffer should be cleared or not.
2458
+ * @param {boolean} [depth=true] - Whether the depth buffer should be cleared or not.
2459
+ * @param {boolean} [stencil=true] - Whether the stencil buffer should be cleared or not.
2460
+ */
2461
+ clear( color = true, depth = true, stencil = true ) {
2462
+
2463
+ if ( this._initialized === false ) {
2464
+
2465
+ throw new Error( 'THREE.Renderer: .clear() called before the backend is initialized. Use "await renderer.init();" before using this method.' );
2466
+
2467
+ }
2468
+
2469
+ const renderTarget = this._renderTarget || this._getFrameBufferTarget();
2470
+
2471
+ let renderContext = null;
2472
+
2473
+ if ( renderTarget !== null ) {
2474
+
2475
+ this._textures.updateRenderTarget( renderTarget );
2476
+
2477
+ const renderTargetData = this._textures.get( renderTarget );
2478
+
2479
+ renderContext = this._renderContexts.get( renderTarget, null, - 1 ); // using - 1 for the call depth to get a render context for the clear operation
2480
+ renderContext.textures = renderTargetData.textures;
2481
+ renderContext.depthTexture = renderTargetData.depthTexture;
2482
+ renderContext.width = renderTargetData.width;
2483
+ renderContext.height = renderTargetData.height;
2484
+ renderContext.renderTarget = renderTarget;
2485
+ renderContext.depth = renderTarget.depthBuffer;
2486
+ renderContext.stencil = renderTarget.stencilBuffer;
2487
+ // #30329
2488
+ const color = this.backend.getClearColor();
2489
+ renderContext.clearColorValue.r = color.r;
2490
+ renderContext.clearColorValue.g = color.g;
2491
+ renderContext.clearColorValue.b = color.b;
2492
+ renderContext.clearColorValue.a = color.a;
2493
+ renderContext.clearDepthValue = this.getClearDepth();
2494
+ renderContext.clearStencilValue = this.getClearStencil();
2495
+ renderContext.activeCubeFace = this.getActiveCubeFace();
2496
+ renderContext.activeMipmapLevel = this.getActiveMipmapLevel();
2497
+
2498
+ if ( renderTarget.depthBuffer === true ) renderTargetData.depthInitialized = true;
2499
+
2500
+ }
2501
+
2502
+ this.backend.clear( color, depth, stencil, renderContext );
2503
+
2504
+ if ( renderTarget !== null && this._renderTarget === null ) {
2505
+
2506
+ this._renderOutput( renderTarget );
2507
+
2508
+ }
2509
+
2510
+ }
2511
+
2512
+ /**
2513
+ * Performs a manual clear operation of the color buffer. This method ignores `autoClear` properties.
2514
+ */
2515
+ clearColor() {
2516
+
2517
+ this.clear( true, false, false );
2518
+
2519
+ }
2520
+
2521
+ /**
2522
+ * Performs a manual clear operation of the depth buffer. This method ignores `autoClear` properties.
2523
+ */
2524
+ clearDepth() {
2525
+
2526
+ this.clear( false, true, false );
2527
+
2528
+ }
2529
+
2530
+ /**
2531
+ * Performs a manual clear operation of the stencil buffer. This method ignores `autoClear` properties.
2532
+ */
2533
+ clearStencil() {
2534
+
2535
+ this.clear( false, false, true );
2536
+
2537
+ }
2538
+
2539
+ /**
2540
+ * Async version of {@link Renderer#clear}.
2541
+ *
2542
+ * @async
2543
+ * @deprecated
2544
+ * @param {boolean} [color=true] - Whether the color buffer should be cleared or not.
2545
+ * @param {boolean} [depth=true] - Whether the depth buffer should be cleared or not.
2546
+ * @param {boolean} [stencil=true] - Whether the stencil buffer should be cleared or not.
2547
+ * @return {Promise} A Promise that resolves when the clear operation has been executed.
2548
+ */
2549
+ async clearAsync( color = true, depth = true, stencil = true ) {
2550
+
2551
+ warnOnce( 'Renderer: "clearAsync()" has been deprecated. Use "clear()" and "await renderer.init();" when creating the renderer.' ); // @deprecated r181
2552
+
2553
+ await this.init();
2554
+
2555
+ this.clear( color, depth, stencil );
2556
+
2557
+ }
2558
+
2559
+ /**
2560
+ * Async version of {@link Renderer#clearColor}.
2561
+ *
2562
+ * @async
2563
+ * @deprecated
2564
+ * @return {Promise} A Promise that resolves when the clear operation has been executed.
2565
+ */
2566
+ async clearColorAsync() {
2567
+
2568
+ warnOnce( 'Renderer: "clearColorAsync()" has been deprecated. Use "clearColor()" and "await renderer.init();" when creating the renderer.' ); // @deprecated r181
2569
+
2570
+ this.clear( true, false, false );
2571
+
2572
+ }
2573
+
2574
+ /**
2575
+ * Async version of {@link Renderer#clearDepth}.
2576
+ *
2577
+ * @async
2578
+ * @deprecated
2579
+ * @return {Promise} A Promise that resolves when the clear operation has been executed.
2580
+ */
2581
+ async clearDepthAsync() {
2582
+
2583
+ warnOnce( 'Renderer: "clearDepthAsync()" has been deprecated. Use "clearDepth()" and "await renderer.init();" when creating the renderer.' ); // @deprecated r181
2584
+
2585
+ this.clear( false, true, false );
2586
+
2587
+ }
2588
+
2589
+ /**
2590
+ * Async version of {@link Renderer#clearStencil}.
2591
+ *
2592
+ * @async
2593
+ * @deprecated
2594
+ * @return {Promise} A Promise that resolves when the clear operation has been executed.
2595
+ */
2596
+ async clearStencilAsync() {
2597
+
2598
+ warnOnce( 'Renderer: "clearStencilAsync()" has been deprecated. Use "clearStencil()" and "await renderer.init();" when creating the renderer.' ); // @deprecated r181
2599
+
2600
+ this.clear( false, false, true );
2601
+
2602
+ }
2603
+
2604
+ /**
2605
+ * Returns `true` if a framebuffer target is needed to perform tone mapping or color space conversion.
2606
+ * If this is the case, the renderer allocates an internal render target for that purpose.
2607
+ *
2608
+ * @type {boolean}
2609
+ */
2610
+ get needsFrameBufferTarget() {
2611
+
2612
+ const useToneMapping = this.currentToneMapping !== NoToneMapping;
2613
+ const useColorSpace = this.currentColorSpace !== ColorManagement.workingColorSpace;
2614
+
2615
+ return useToneMapping || useColorSpace;
2616
+
2617
+ }
2618
+
2619
+ /**
2620
+ * The number of samples used for multi-sample anti-aliasing (MSAA).
2621
+ *
2622
+ * @type {number}
2623
+ * @default 0
2624
+ */
2625
+ get samples() {
2626
+
2627
+ return this._samples;
2628
+
2629
+ }
2630
+
2631
+ /**
2632
+ * The current number of samples used for multi-sample anti-aliasing (MSAA).
2633
+ *
2634
+ * When rendering to a custom render target, the number of samples of that render target is used.
2635
+ * The number of samples is set to 0 when the renderer needs an internal framebuffer target for
2636
+ * tone mapping or color space conversion, or when rendering a fullscreen quad to screen.
2637
+ *
2638
+ * @type {number}
2639
+ */
2640
+ get currentSamples() {
2641
+
2642
+ let samples = this._samples;
2643
+
2644
+ if ( this._renderTarget !== null ) {
2645
+
2646
+ samples = this._renderTarget.samples;
2647
+
2648
+ } else if ( this.needsFrameBufferTarget || this._currentRenderContext?.fullscreenPass === true ) {
2649
+
2650
+ samples = 0;
2651
+
2652
+ }
2653
+
2654
+ return samples;
2655
+
2656
+ }
2657
+
2658
+ /**
2659
+ * The current tone mapping of the renderer. When not producing screen output,
2660
+ * the tone mapping is always `NoToneMapping`.
2661
+ *
2662
+ * @type {number}
2663
+ */
2664
+ get currentToneMapping() {
2665
+
2666
+ return this.isOutputTarget ? this.toneMapping : NoToneMapping;
2667
+
2668
+ }
2669
+
2670
+ /**
2671
+ * The current color space of the renderer. When not producing screen output,
2672
+ * the color space is always the working color space.
2673
+ *
2674
+ * @type {string}
2675
+ */
2676
+ get currentColorSpace() {
2677
+
2678
+ return this.isOutputTarget ? this.outputColorSpace : ColorManagement.workingColorSpace;
2679
+
2680
+ }
2681
+
2682
+ /**
2683
+ * Returns `true` if the rendering settings are set to screen output.
2684
+ *
2685
+ * @returns {boolean} True if the current render target is the same of output render target or `null`, otherwise false.
2686
+ */
2687
+ get isOutputTarget() {
2688
+
2689
+ return this._renderTarget === this._outputRenderTarget || this._renderTarget === null;
2690
+
2691
+ }
2692
+
2693
+ /**
2694
+ * Frees all internal resources of the renderer. Call this method if the renderer
2695
+ * is no longer in use by your app.
2696
+ */
2697
+ async dispose() {
2698
+
2699
+ if ( this._initialized === true ) {
2700
+
2701
+ this.info.dispose();
2702
+
2703
+ this._inspector.dispose();
2704
+ this._animation.dispose();
2705
+ this._objects.dispose();
2706
+ this._geometries.dispose();
2707
+ this._attributes.dispose();
2708
+ this._pipelines.dispose();
2709
+ this._nodes.dispose();
2710
+ this._bindings.dispose();
2711
+ this._renderLists.dispose();
2712
+ this._renderContexts.dispose();
2713
+ this._textures.dispose();
2714
+
2715
+ for ( const canvasTarget of this._frameBufferTargets.keys() ) {
2716
+
2717
+ canvasTarget.dispose();
2718
+
2719
+ }
2720
+
2721
+ await this.backend.dispose();
2722
+
2723
+ }
2724
+
2725
+ this.setRenderTarget( null );
2726
+ this.setAnimationLoop( null );
2727
+
2728
+ }
2729
+
2730
+ /**
2731
+ * Frees what the renderer keeps for an object and everything under it: their render objects
2732
+ * (with the pipelines, bindings and node state kept for them, in every pass, shadow passes
2733
+ * included) and the GPU buffers they were drawn with besides their geometries' own, such as an
2734
+ * instanced mesh's instance buffers and buffers their materials' nodes made. Buffers anything
2735
+ * else is still drawn with are kept. Geometries, materials and textures are left to their own
2736
+ * `dispose()`, since other objects may share them. An object released and then drawn again is
2737
+ * set up from scratch.
2738
+ *
2739
+ * @param {Object3D} object - The root of the objects to release.
2740
+ */
2741
+ releaseObject( object ) {
2742
+
2743
+ if ( this._initialized === false ) return;
2744
+
2745
+ const objects = new Set();
2746
+ object.traverse( ( child ) => objects.add( child ) );
2747
+
2748
+ const renderObjects = this._objects._renderObjects;
2749
+ const buffers = new Set();
2750
+
2751
+ for ( const renderObject of Array.from( renderObjects ) ) {
2752
+
2753
+ if ( objects.has( renderObject.object ) === false ) continue;
2754
+
2755
+ if ( renderObject._nodeBuilderState ) {
2756
+
2757
+ const geometry = renderObject.geometry;
2758
+ const own = new Set( Object.values( geometry.attributes ) );
2759
+
2760
+ for ( const attribute of renderObject.getAttributes() ) {
2761
+
2762
+ if ( own.has( attribute ) === false ) buffers.add( attribute );
2763
+
2764
+ }
2765
+
2766
+ }
2767
+
2768
+ renderObject.dispose();
2769
+
2770
+ }
2771
+
2772
+ if ( buffers.size === 0 ) return;
2773
+
2774
+ for ( const renderObject of renderObjects ) {
2775
+
2776
+ if ( ! renderObject._nodeBuilderState ) continue;
2777
+
2778
+ for ( const attribute of renderObject.getAttributes() ) buffers.delete( attribute );
2779
+
2780
+ }
2781
+
2782
+ for ( const attribute of buffers ) this._attributes.delete( attribute );
2783
+
2784
+ }
2785
+
2786
+ /**
2787
+ * Sets the given render target. Calling this method means the renderer does not
2788
+ * target the default framebuffer (meaning the canvas) anymore but a custom framebuffer.
2789
+ * Use `null` as the first argument to reset the state.
2790
+ *
2791
+ * @param {?RenderTarget} renderTarget - The render target to set.
2792
+ * @param {number} [activeCubeFace=0] - The active cube face.
2793
+ * @param {number} [activeMipmapLevel=0] - The active mipmap level.
2794
+ */
2795
+ setRenderTarget( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {
2796
+
2797
+ this._renderTarget = renderTarget;
2798
+ this._activeCubeFace = activeCubeFace;
2799
+ this._activeMipmapLevel = activeMipmapLevel;
2800
+
2801
+ }
2802
+
2803
+ /**
2804
+ * Returns the current render target.
2805
+ *
2806
+ * @return {?RenderTarget} The render target. Returns `null` if no render target is set.
2807
+ */
2808
+ getRenderTarget() {
2809
+
2810
+ return this._renderTarget;
2811
+
2812
+ }
2813
+
2814
+ /**
2815
+ * Sets the output render target for the renderer.
2816
+ *
2817
+ * @param {?RenderTarget} renderTarget - The render target to set as the output target.
2818
+ */
2819
+ setOutputRenderTarget( renderTarget ) {
2820
+
2821
+ this._outputRenderTarget = renderTarget;
2822
+
2823
+ }
2824
+
2825
+ /**
2826
+ * Returns the current output target.
2827
+ *
2828
+ * @return {?RenderTarget} The current output render target. Returns `null` if no output target is set.
2829
+ */
2830
+ getOutputRenderTarget() {
2831
+
2832
+ return this._outputRenderTarget;
2833
+
2834
+ }
2835
+
2836
+ /**
2837
+ * Sets the canvas target. The canvas target manages the HTML canvas
2838
+ * or the offscreen canvas the renderer draws into.
2839
+ *
2840
+ * @param {CanvasTarget} canvasTarget - The canvas target.
2841
+ */
2842
+ setCanvasTarget( canvasTarget ) {
2843
+
2844
+ this._canvasTarget.removeEventListener( 'resize', this._onCanvasTargetResize );
2845
+
2846
+ this._canvasTarget = canvasTarget;
2847
+ this._canvasTarget.addEventListener( 'resize', this._onCanvasTargetResize );
2848
+
2849
+ }
2850
+
2851
+ /**
2852
+ * Returns the current canvas target.
2853
+ *
2854
+ * @return {CanvasTarget} The current canvas target.
2855
+ */
2856
+ getCanvasTarget() {
2857
+
2858
+ return this._canvasTarget;
2859
+
2860
+ }
2861
+
2862
+ /**
2863
+ * Resets the renderer to the initial state before WebXR started.
2864
+ *
2865
+ * @private
2866
+ */
2867
+ _resetXRState() {
2868
+
2869
+ this.backend.setXRTarget( null );
2870
+ this.setOutputRenderTarget( null );
2871
+ this.setRenderTarget( null );
2872
+
2873
+ for ( const canvasTarget of this._frameBufferTargets.keys() ) {
2874
+
2875
+ canvasTarget.dispose();
2876
+
2877
+ }
2878
+
2879
+ }
2880
+
2881
+ /**
2882
+ * Callback for {@link Renderer#setRenderObjectFunction}.
2883
+ *
2884
+ * @callback renderObjectFunction
2885
+ * @param {Object3D} object - The 3D object.
2886
+ * @param {Scene} scene - The scene the 3D object belongs to.
2887
+ * @param {Camera} camera - The camera the object should be rendered with.
2888
+ * @param {BufferGeometry} geometry - The object's geometry.
2889
+ * @param {Material} material - The object's material.
2890
+ * @param {?Object} group - Only relevant for objects using multiple materials. This represents a group entry from the respective `BufferGeometry`.
2891
+ * @param {LightsNode} lightsNode - The current lights node.
2892
+ * @param {ClippingContext} clippingContext - The clipping context.
2893
+ * @param {?string} [passId=null] - An optional ID for identifying the pass.
2894
+ */
2895
+
2896
+ /**
2897
+ * Sets the given render object function. Calling this method overwrites the default implementation
2898
+ * which is {@link Renderer#renderObject}. Defining a custom function can be useful
2899
+ * if you want to modify the way objects are rendered. For example you can define things like "every
2900
+ * object that has material of a certain type should perform a pre-pass with a special overwrite material".
2901
+ * The custom function must always call `renderObject()` in its implementation.
2902
+ *
2903
+ * Use `null` as the first argument to reset the state.
2904
+ *
2905
+ * @param {?renderObjectFunction} renderObjectFunction - The render object function.
2906
+ */
2907
+ setRenderObjectFunction( renderObjectFunction ) {
2908
+
2909
+ this._renderObjectFunction = renderObjectFunction;
2910
+
2911
+ }
2912
+
2913
+ /**
2914
+ * Returns the current render object function.
2915
+ *
2916
+ * @return {?Function} The current render object function. Returns `null` if no function is set.
2917
+ */
2918
+ getRenderObjectFunction() {
2919
+
2920
+ return this._renderObjectFunction;
2921
+
2922
+ }
2923
+
2924
+ /**
2925
+ * Execute a single or an array of compute nodes. This method can only be called
2926
+ * if the renderer has been initialized.
2927
+ *
2928
+ * @param {Node|Array<Node>} computeNodes - The compute node(s).
2929
+ * @param {number|Array<number>|IndirectStorageBufferAttribute} [dispatchSize=null]
2930
+ * - A single number representing count, or
2931
+ * - An array [x, y, z] representing dispatch size, or
2932
+ * - A IndirectStorageBufferAttribute for indirect dispatch size.
2933
+ * @return {Promise|undefined} A Promise that resolve when the compute has finished. Only returned when the renderer has not been initialized.
2934
+ */
2935
+ compute( computeNodes, dispatchSize = null ) {
2936
+
2937
+ if ( this._isDeviceLost === true ) return;
2938
+
2939
+ if ( this._initialized === false ) {
2940
+
2941
+ warn( 'Renderer: ".compute()" called before the backend is initialized. Try using ".computeAsync()" instead.' );
2942
+
2943
+ return this.computeAsync( computeNodes, dispatchSize );
2944
+
2945
+ }
2946
+
2947
+ //
2948
+
2949
+ const nodeFrame = this._nodes.nodeFrame;
2950
+
2951
+ const previousRenderId = nodeFrame.renderId;
2952
+
2953
+ //
2954
+
2955
+ this.info.calls ++;
2956
+ this.info.compute.calls ++;
2957
+ this.info.compute.frameCalls ++;
2958
+
2959
+ nodeFrame.renderId = this.info.calls;
2960
+
2961
+ //
2962
+
2963
+ this.backend.updateTimeStampUID( computeNodes );
2964
+
2965
+ this.inspector.beginCompute( this.backend.getTimestampUID( computeNodes ), computeNodes );
2966
+
2967
+ //
2968
+
2969
+ const backend = this.backend;
2970
+ const pipelines = this._pipelines;
2971
+ const bindings = this._bindings;
2972
+ const nodes = this._nodes;
2973
+
2974
+ const computeList = Array.isArray( computeNodes ) ? computeNodes : [ computeNodes ];
2975
+
2976
+ if ( computeList[ 0 ] === undefined || computeList[ 0 ].isComputeNode !== true ) {
2977
+
2978
+ throw new Error( 'THREE.Renderer: .compute() expects a ComputeNode.' );
2979
+
2980
+ }
2981
+
2982
+ backend.beginCompute( computeNodes );
2983
+
2984
+ for ( const computeNode of computeList ) {
2985
+
2986
+ // onInit
2987
+
2988
+ if ( pipelines.has( computeNode ) === false ) {
2989
+
2990
+ const dispose = () => {
2991
+
2992
+ computeNode.removeEventListener( 'dispose', dispose );
2993
+
2994
+ pipelines.delete( computeNode );
2995
+ bindings.deleteForCompute( computeNode );
2996
+ nodes.delete( computeNode );
2997
+
2998
+ };
2999
+
3000
+ computeNode.addEventListener( 'dispose', dispose );
3001
+
3002
+ //
3003
+
3004
+ const onInitFn = computeNode.onInitFunction;
3005
+
3006
+ if ( onInitFn !== null ) {
3007
+
3008
+ onInitFn.call( computeNode, { renderer: this } );
3009
+
3010
+ }
3011
+
3012
+ }
3013
+
3014
+ nodes.updateBeforeForCompute( computeNode );
3015
+ nodes.updateForCompute( computeNode );
3016
+ bindings.updateForCompute( computeNode );
3017
+
3018
+ const computeBindings = bindings.getForCompute( computeNode );
3019
+ const computePipeline = pipelines.getForCompute( computeNode, computeBindings );
3020
+
3021
+ backend.compute( computeNodes, computeNode, computeBindings, computePipeline, dispatchSize );
3022
+
3023
+ nodes.updateAfterForCompute( computeNode );
3024
+
3025
+ }
3026
+
3027
+ backend.finishCompute( computeNodes );
3028
+
3029
+ //
3030
+
3031
+ nodeFrame.renderId = previousRenderId;
3032
+
3033
+ //
3034
+
3035
+ this.inspector.finishCompute( this.backend.getTimestampUID( computeNodes ) );
3036
+
3037
+ }
3038
+
3039
+ /**
3040
+ * Execute a single or an array of compute nodes.
3041
+ *
3042
+ * @async
3043
+ * @param {Node|Array<Node>} computeNodes - The compute node(s).
3044
+ * @param {number|Array<number>|IndirectStorageBufferAttribute} [dispatchSize=null]
3045
+ * - A single number representing count, or
3046
+ * - An array [x, y, z] representing dispatch size, or
3047
+ * - A IndirectStorageBufferAttribute for indirect dispatch size.
3048
+ * @return {Promise} A Promise that resolve when the compute has finished.
3049
+ */
3050
+ async computeAsync( computeNodes, dispatchSize = null ) {
3051
+
3052
+ if ( this._initialized === false ) await this.init();
3053
+
3054
+ this.compute( computeNodes, dispatchSize );
3055
+
3056
+ }
3057
+
3058
+ /**
3059
+ * Checks if the given feature is supported by the selected backend.
3060
+ *
3061
+ * @async
3062
+ * @deprecated
3063
+ * @param {string} name - The feature's name.
3064
+ * @return {Promise<boolean>} A Promise that resolves with a bool that indicates whether the feature is supported or not.
3065
+ */
3066
+ async hasFeatureAsync( name ) {
3067
+
3068
+ warnOnce( 'Renderer: "hasFeatureAsync()" has been deprecated. Use "hasFeature()" and "await renderer.init();" when creating the renderer.' ); // @deprecated r181
3069
+
3070
+ await this.init();
3071
+
3072
+ return this.hasFeature( name );
3073
+
3074
+ }
3075
+
3076
+ async resolveTimestampsAsync( type = 'render' ) {
3077
+
3078
+ if ( this._initialized === false ) await this.init();
3079
+
3080
+ return this.backend.resolveTimestampsAsync( type );
3081
+
3082
+ }
3083
+
3084
+ /**
3085
+ * What the GPU can do, read once when the renderer starts: the capability tier (`webgpu-full`,
3086
+ * `webgpu-core` or `webgl2`), the device's features and limits, the WGSL language features,
3087
+ * subgroup sizes, the adapter's vendor and architecture, and which newer parts of the WebGPU API exist. `null` until `init()`.
3088
+ *
3089
+ * @type {?{tier: string, features: Array<string>, adapterFeatures: Array<string>, wgslLanguageFeatures: Array<string>, limits: Object<string, number>, subgroupSizes: ?Array<number>, adapterInfo: ?Object, compatibilityMode: boolean, api: {multiDrawIndirect: boolean, transientAttachments: boolean, immediates: boolean}}}
3090
+ */
3091
+ get capabilities() {
3092
+
3093
+ return this._initialized === true ? this.backend.capabilities : null;
3094
+
3095
+ }
3096
+
3097
+ /**
3098
+ * The GPU timings of the last frame resolved: every render and compute pass with its start and
3099
+ * end (relative to the frame's first pass), its duration, the sum of the durations and their
3100
+ * union, the time the GPU was busy. Passes overlap on tile-based GPUs, so use the union for the
3101
+ * frame's GPU time there. Passes whose end the GPU never wrote (a pass that draws nothing, on
3102
+ * Apple GPUs) are counted in `unwritten` and left out. Times are in milliseconds; WebGL 2 knows
3103
+ * only durations, so its starts, ends and union are `null`. Needs `trackTimestamp: true`; call
3104
+ * `resolveTimestampsAsync()` (or `resolveGPUTimingsAsync()`) first.
3105
+ *
3106
+ * @return {?{frame: number, passes: Array<{type: string, uid: string, start: ?number, end: ?number, duration: number}>, unwritten: number, sum: number, union: ?number}} The timings, or `null` before any were resolved.
3107
+ */
3108
+ getGPUTimings() {
3109
+
3110
+ if ( this._initialized === false ) return null;
3111
+
3112
+ const passes = [];
3113
+
3114
+ for ( const [ type, pool ] of Object.entries( this.backend.timestampQueryPool ) ) {
3115
+
3116
+ if ( pool && pool.passes ) for ( const pass of pool.passes ) passes.push( { ...pass, type } );
3117
+
3118
+ }
3119
+
3120
+ const renderFrames = this.backend.getTimestampFrames( 'render' );
3121
+ const frame = renderFrames.length > 0 ? renderFrames[ renderFrames.length - 1 ] : passes.reduce( ( last, pass ) => Math.max( last, pass.frame ), - 1 );
3122
+
3123
+ return frame < 0 ? null : frameTimings( frame, passes );
3124
+
3125
+ }
3126
+
3127
+ /**
3128
+ * Resolves the render and compute timestamp queries, then returns `getGPUTimings()`.
3129
+ *
3130
+ * @async
3131
+ * @return {Promise<?Object>} The timings of the last frame resolved.
3132
+ */
3133
+ async resolveGPUTimingsAsync() {
3134
+
3135
+ if ( this._initialized === false || this.backend.trackTimestamp !== true ) return null;
3136
+
3137
+ await Promise.all( [ this.resolveTimestampsAsync( 'render' ), this.resolveTimestampsAsync( 'compute' ) ] );
3138
+
3139
+ return this.getGPUTimings();
3140
+
3141
+ }
3142
+
3143
+ /**
3144
+ * Checks if the given feature is supported by the selected backend. If the
3145
+ * renderer has not been initialized, this method always returns `false`.
3146
+ *
3147
+ * @param {string} name - The feature's name.
3148
+ * @return {boolean} Whether the feature is supported or not.
3149
+ */
3150
+ hasFeature( name ) {
3151
+
3152
+ if ( this._initialized === false ) {
3153
+
3154
+ throw new Error( 'THREE.Renderer: .hasFeature() called before the backend is initialized. Use "await renderer.init();" before using this method.' );
3155
+
3156
+ }
3157
+
3158
+ return this.backend.hasFeature( name );
3159
+
3160
+ }
3161
+
3162
+ /**
3163
+ * Returns `true` when the renderer has been initialized.
3164
+ *
3165
+ * @return {boolean} Whether the renderer has been initialized or not.
3166
+ */
3167
+ hasInitialized() {
3168
+
3169
+ return this._initialized;
3170
+
3171
+ }
3172
+
3173
+ /**
3174
+ * Initializes the given textures. Useful for preloading a texture rather than waiting until first render
3175
+ * (which can cause noticeable lags due to decode and GPU upload overhead).
3176
+ *
3177
+ * @async
3178
+ * @deprecated
3179
+ * @param {Texture} texture - The texture.
3180
+ * @return {Promise} A Promise that resolves when the texture has been initialized.
3181
+ */
3182
+ async initTextureAsync( texture ) {
3183
+
3184
+ warnOnce( 'Renderer: "initTextureAsync()" has been deprecated. Use "initTexture()" and "await renderer.init();" when creating the renderer.' ); // @deprecated r181
3185
+
3186
+ await this.init();
3187
+
3188
+ this.initTexture( texture );
3189
+
3190
+ }
3191
+
3192
+ /**
3193
+ * Initializes the given texture. Useful for preloading a texture rather than waiting until first render
3194
+ * (which can cause noticeable lags due to decode and GPU upload overhead).
3195
+ *
3196
+ * This method can only be used if the renderer has been initialized.
3197
+ *
3198
+ * @param {Texture} texture - The texture.
3199
+ */
3200
+ initTexture( texture ) {
3201
+
3202
+ if ( this._initialized === false ) {
3203
+
3204
+ throw new Error( 'THREE.Renderer: .initTexture() called before the backend is initialized. Use "await renderer.init();" before using this method.' );
3205
+
3206
+ }
3207
+
3208
+ this._textures.updateTexture( texture );
3209
+
3210
+ }
3211
+
3212
+ /**
3213
+ * Initializes the given render target.
3214
+ *
3215
+ * @param {RenderTarget} renderTarget - The render target to intialize.
3216
+ */
3217
+ initRenderTarget( renderTarget ) {
3218
+
3219
+ if ( this._initialized === false ) {
3220
+
3221
+ throw new Error( 'THREE.Renderer: .initRenderTarget() called before the backend is initialized. Use "await renderer.init();" before using this method.' );
3222
+
3223
+ }
3224
+
3225
+ this._textures.updateRenderTarget( renderTarget );
3226
+
3227
+ const renderTargetData = this._textures.get( renderTarget );
3228
+
3229
+ const renderContext = this._renderContexts.get( renderTarget );
3230
+
3231
+ renderContext.textures = renderTargetData.textures;
3232
+ renderContext.depthTexture = renderTargetData.depthTexture;
3233
+ renderContext.width = renderTargetData.width;
3234
+ renderContext.height = renderTargetData.height;
3235
+ renderContext.renderTarget = renderTarget;
3236
+ renderContext.depth = renderTarget.depthBuffer;
3237
+ renderContext.stencil = renderTarget.stencilBuffer;
3238
+
3239
+ this.backend.initRenderTarget( renderContext );
3240
+
3241
+ }
3242
+
3243
+ /**
3244
+ * Copies the current bound framebuffer into the given texture.
3245
+ *
3246
+ * @param {FramebufferTexture} framebufferTexture - The texture.
3247
+ * @param {?(Vector2|Vector4)} [rectangle=null] - A two or four dimensional vector that defines the rectangular portion of the framebuffer that should be copied.
3248
+ */
3249
+ copyFramebufferToTexture( framebufferTexture, rectangle = null ) {
3250
+
3251
+ if ( rectangle !== null ) {
3252
+
3253
+ if ( rectangle.isVector2 ) {
3254
+
3255
+ rectangle = _vector4.set( rectangle.x, rectangle.y, framebufferTexture.image.width, framebufferTexture.image.height ).floor();
3256
+
3257
+ } else if ( rectangle.isVector4 ) {
3258
+
3259
+ rectangle = _vector4.copy( rectangle ).floor();
3260
+
3261
+ } else {
3262
+
3263
+ error( 'Renderer.copyFramebufferToTexture: Invalid rectangle.' );
3264
+
3265
+ return;
3266
+
3267
+ }
3268
+
3269
+ } else {
3270
+
3271
+ rectangle = _vector4.set( 0, 0, framebufferTexture.image.width, framebufferTexture.image.height );
3272
+
3273
+ }
3274
+
3275
+ //
3276
+
3277
+ let renderContext = this._currentRenderContext;
3278
+ let renderTarget;
3279
+
3280
+ if ( renderContext !== null ) {
3281
+
3282
+ renderTarget = renderContext.renderTarget;
3283
+
3284
+ } else {
3285
+
3286
+ renderTarget = this._renderTarget || this._getFrameBufferTarget();
3287
+
3288
+ if ( renderTarget !== null ) {
3289
+
3290
+ this._textures.updateRenderTarget( renderTarget );
3291
+
3292
+ renderContext = this._textures.get( renderTarget );
3293
+
3294
+ }
3295
+
3296
+ }
3297
+
3298
+ //
3299
+
3300
+ this._textures.updateTexture( framebufferTexture, { renderTarget } );
3301
+
3302
+ this.backend.copyFramebufferToTexture( framebufferTexture, renderContext, rectangle );
3303
+
3304
+ this._inspector.copyFramebufferToTexture( framebufferTexture );
3305
+
3306
+ }
3307
+
3308
+ /**
3309
+ * Copies data of the given source texture into a destination texture.
3310
+ *
3311
+ * @param {Texture} srcTexture - The source texture.
3312
+ * @param {Texture} dstTexture - The destination texture.
3313
+ * @param {Box2|Box3} [srcRegion=null] - A bounding box which describes the source region. Can be two or three-dimensional.
3314
+ * @param {Vector2|Vector3} [dstPosition=null] - A vector that represents the origin of the destination region. Can be two or three-dimensional.
3315
+ * @param {number} [srcLevel=0] - The source mip level to copy from.
3316
+ * @param {number} [dstLevel=0] - The destination mip level to copy to.
3317
+ */
3318
+ copyTextureToTexture( srcTexture, dstTexture, srcRegion = null, dstPosition = null, srcLevel = 0, dstLevel = 0 ) {
3319
+
3320
+ this._textures.updateTexture( srcTexture );
3321
+ this._textures.updateTexture( dstTexture );
3322
+
3323
+ this.backend.copyTextureToTexture( srcTexture, dstTexture, srcRegion, dstPosition, srcLevel, dstLevel );
3324
+
3325
+ this._inspector.copyTextureToTexture( srcTexture, dstTexture );
3326
+
3327
+ }
3328
+
3329
+ /**
3330
+ * Reads pixel data from the given render target.
3331
+ *
3332
+ * @async
3333
+ * @param {RenderTarget} renderTarget - The render target to read from.
3334
+ * @param {number} x - The `x` coordinate of the copy region's origin.
3335
+ * @param {number} y - The `y` coordinate of the copy region's origin.
3336
+ * @param {number} width - The width of the copy region.
3337
+ * @param {number} height - The height of the copy region.
3338
+ * @param {number} [textureIndex=0] - The texture index of a MRT render target.
3339
+ * @param {number} [faceIndex=0] - The cube face, depth slice or array layer index.
3340
+ * @return {Promise<TypedArray>} A Promise that resolves when the read has been finished. The resolve provides the read data as a typed array.
3341
+ */
3342
+ async readRenderTargetPixelsAsync( renderTarget, x, y, width, height, textureIndex = 0, faceIndex = 0 ) {
3343
+
3344
+ return this.backend.copyTextureToBuffer( renderTarget.textures[ textureIndex ], x, y, width, height, faceIndex );
3345
+
3346
+ }
3347
+
3348
+ /**
3349
+ * Analyzes the given 3D object's hierarchy and builds render lists from the
3350
+ * processed hierarchy.
3351
+ *
3352
+ * @private
3353
+ * @param {Object3D} object - The 3D object to process (usually a scene).
3354
+ * @param {Camera} camera - The camera the object is rendered with.
3355
+ * @param {number} groupOrder - The group order is derived from the `renderOrder` of groups and is used to group 3D objects within groups.
3356
+ * @param {RenderList} renderList - The current render list.
3357
+ * @param {ClippingContext} clippingContext - The current clipping context.
3358
+ */
3359
+ _projectObject( object, camera, groupOrder, renderList, clippingContext ) {
3360
+
3361
+ if ( object.visible === false ) return;
3362
+
3363
+ const visible = object.layers.test( camera.layers );
3364
+
3365
+ if ( visible ) {
3366
+
3367
+ if ( object.isGroup ) {
3368
+
3369
+ groupOrder = object.renderOrder;
3370
+
3371
+ if ( object.isClippingGroup && object.enabled ) clippingContext = clippingContext.getGroupContext( object );
3372
+
3373
+ } else if ( object.isLOD ) {
3374
+
3375
+ if ( object.autoUpdate === true ) object.update( camera );
3376
+
3377
+ } else if ( object.isLight ) {
3378
+
3379
+ renderList.pushLight( object );
3380
+
3381
+ } else if ( object.isSprite ) {
3382
+
3383
+ const frustum = camera.isArrayCamera ? _frustumArray : _frustum;
3384
+
3385
+ if ( ! object.frustumCulled || object.intersectsFrustum( frustum ) ) {
3386
+
3387
+ if ( this.sortObjects === true ) {
3388
+
3389
+ _vector4.setFromMatrixPosition( object.matrixWorld ).applyMatrix4( _projScreenMatrix );
3390
+
3391
+ }
3392
+
3393
+ const { geometry, material } = object;
3394
+
3395
+ if ( material.visible ) {
3396
+
3397
+ renderList.push( object, geometry, material, groupOrder, _vector4.z, null, clippingContext );
3398
+
3399
+ }
3400
+
3401
+ }
3402
+
3403
+ } else if ( object.isLineLoop ) {
3404
+
3405
+ error( 'Renderer: Objects of type THREE.LineLoop are not supported. Please use THREE.Line or THREE.LineSegments.' );
3406
+
3407
+ } else if ( object.isMesh || object.isLine || object.isPoints ) {
3408
+
3409
+ const frustum = camera.isArrayCamera ? _frustumArray : _frustum;
3410
+
3411
+ if ( ! object.frustumCulled || object.intersectsFrustum( frustum ) ) {
3412
+
3413
+ const { geometry, material } = object;
3414
+
3415
+ if ( this.sortObjects === true ) {
3416
+
3417
+ if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();
3418
+
3419
+ _vector4
3420
+ .copy( geometry.boundingSphere.center )
3421
+ .applyMatrix4( object.matrixWorld )
3422
+ .applyMatrix4( _projScreenMatrix );
3423
+
3424
+ }
3425
+
3426
+ if ( Array.isArray( material ) ) {
3427
+
3428
+ const groups = geometry.groups;
3429
+
3430
+ for ( let i = 0, l = groups.length; i < l; i ++ ) {
3431
+
3432
+ const group = groups[ i ];
3433
+ const groupMaterial = material[ group.materialIndex ];
3434
+
3435
+ if ( groupMaterial && groupMaterial.visible ) {
3436
+
3437
+ renderList.push( object, geometry, groupMaterial, groupOrder, _vector4.z, group, clippingContext );
3438
+
3439
+ }
3440
+
3441
+ }
3442
+
3443
+ } else if ( material.visible ) {
3444
+
3445
+ renderList.push( object, geometry, material, groupOrder, _vector4.z, null, clippingContext );
3446
+
3447
+ }
3448
+
3449
+ }
3450
+
3451
+ }
3452
+
3453
+ }
3454
+
3455
+ if ( object.isBundleGroup === true && this.backend.beginBundle !== undefined ) {
3456
+
3457
+ const baseRenderList = renderList;
3458
+
3459
+ // replace render list
3460
+
3461
+ renderList = this._renderLists.get( object, camera, this.lighting );
3462
+
3463
+ const renderBundle = this._bundles.get( object, camera, this._currentRenderContext );
3464
+ const renderBundleData = this.backend.get( renderBundle );
3465
+ const renderBundleNeedsUpdate = this._bundleNeedsUpdate( object, renderBundleData );
3466
+
3467
+ if ( renderBundleNeedsUpdate ) {
3468
+
3469
+ // update render list if necessary
3470
+
3471
+ renderList.begin();
3472
+
3473
+ if ( renderBundleData.renderObjects === undefined ) {
3474
+
3475
+ renderBundleData.renderObjects = [];
3476
+
3477
+ } else {
3478
+
3479
+ renderBundleData.renderObjects.length = 0;
3480
+
3481
+ }
3482
+
3483
+ const children = object.children;
3484
+
3485
+ for ( let i = 0, l = children.length; i < l; i ++ ) {
3486
+
3487
+ this._projectObject( children[ i ], camera, groupOrder, renderList, clippingContext );
3488
+
3489
+ }
3490
+
3491
+ renderList.finish();
3492
+
3493
+ }
3494
+
3495
+ baseRenderList.pushBundle( {
3496
+ bundleGroup: object,
3497
+ camera,
3498
+ renderList,
3499
+ } );
3500
+
3501
+ return;
3502
+
3503
+ }
3504
+
3505
+ //
3506
+
3507
+ const children = object.children;
3508
+
3509
+ for ( let i = 0, l = children.length; i < l; i ++ ) {
3510
+
3511
+ this._projectObject( children[ i ], camera, groupOrder, renderList, clippingContext );
3512
+
3513
+ }
3514
+
3515
+ }
3516
+
3517
+ /**
3518
+ * Renders the given render bundles.
3519
+ *
3520
+ * @private
3521
+ * @param {Array<Object>} bundles - Array with render bundle data.
3522
+ * @param {Scene} sceneRef - The scene the render bundles belong to.
3523
+ * @param {LightsNode} lightsNode - The current lights node.
3524
+ */
3525
+ _renderBundles( bundles, sceneRef, lightsNode ) {
3526
+
3527
+ for ( const bundle of bundles ) {
3528
+
3529
+ this._renderBundle( bundle, sceneRef, lightsNode );
3530
+
3531
+ }
3532
+
3533
+ }
3534
+
3535
+ /**
3536
+ * Renders the transparent objects from the given render lists.
3537
+ *
3538
+ * @private
3539
+ * @param {Array<Object>} renderList - The transparent render list.
3540
+ * @param {Array<Object>} doublePassList - The list of transparent objects which require a double pass (e.g. because of transmission).
3541
+ * @param {Camera} camera - The camera the render list should be rendered with.
3542
+ * @param {Scene} scene - The scene the render list belongs to.
3543
+ * @param {LightsNode} lightsNode - The current lights node.
3544
+ */
3545
+ _renderTransparents( renderList, doublePassList, camera, scene, lightsNode ) {
3546
+
3547
+ if ( doublePassList.length > 0 ) {
3548
+
3549
+ // render back side
3550
+
3551
+ for ( const { material } of doublePassList ) {
3552
+
3553
+ material.side = BackSide;
3554
+
3555
+ }
3556
+
3557
+ this._renderObjects( doublePassList, camera, scene, lightsNode, 'backSide' );
3558
+
3559
+ // render front side
3560
+
3561
+ for ( const { material } of doublePassList ) {
3562
+
3563
+ material.side = FrontSide;
3564
+
3565
+ }
3566
+
3567
+ this._renderObjects( renderList, camera, scene, lightsNode );
3568
+
3569
+ // restore
3570
+
3571
+ for ( const { material } of doublePassList ) {
3572
+
3573
+ material.side = DoubleSide;
3574
+
3575
+ }
3576
+
3577
+ } else {
3578
+
3579
+ this._renderObjects( renderList, camera, scene, lightsNode );
3580
+
3581
+ }
3582
+
3583
+ }
3584
+
3585
+ /**
3586
+ * Renders the objects from the given render list.
3587
+ *
3588
+ * @private
3589
+ * @param {Array<Object>} renderList - The render list.
3590
+ * @param {Camera} camera - The camera the render list should be rendered with.
3591
+ * @param {Scene} scene - The scene the render list belongs to.
3592
+ * @param {LightsNode} lightsNode - The current lights node.
3593
+ * @param {?string} [passId=null] - An optional ID for identifying the pass.
3594
+ */
3595
+ _renderObjects( renderList, camera, scene, lightsNode, passId = null ) {
3596
+
3597
+ for ( let i = 0, il = renderList.length; i < il; i ++ ) {
3598
+
3599
+ const { object, geometry, material, group, clippingContext } = renderList[ i ];
3600
+
3601
+ this._currentRenderObjectFunction( object, scene, camera, geometry, material, group, lightsNode, clippingContext, passId );
3602
+
3603
+ }
3604
+
3605
+ }
3606
+
3607
+ /**
3608
+ * Retrieves shadow nodes for the given material. This is used to setup shadow passes.
3609
+ * The result is cached per material and updated when the material's version changes.
3610
+ *
3611
+ * @private
3612
+ * @param {Material} material
3613
+ * @returns {Object} - The shadow nodes for the material.
3614
+ */
3615
+ _getShadowNodes( material ) {
3616
+
3617
+ const version = material.version;
3618
+
3619
+ let cache = this._cacheShadowNodes.get( material );
3620
+
3621
+ if ( cache === undefined || cache.version !== version ) {
3622
+
3623
+ const hasMap = material.map && material.map.isTexture;
3624
+ const hasColorNode = material.colorNode && material.colorNode.isNode;
3625
+ const hasCastShadowNode = material.castShadowNode && material.castShadowNode.isNode;
3626
+ const hasMaskNode = ( material.maskShadowNode && material.maskShadowNode.isNode ) || ( material.maskNode && material.maskNode.isNode );
3627
+
3628
+ let positionNode = null;
3629
+ let colorNode = null;
3630
+ let depthNode = null;
3631
+
3632
+ if ( hasMap || hasColorNode || hasCastShadowNode || hasMaskNode ) {
3633
+
3634
+ let shadowRGB;
3635
+ let shadowAlpha;
3636
+
3637
+ if ( hasCastShadowNode ) {
3638
+
3639
+ shadowRGB = material.castShadowNode.rgb;
3640
+ shadowAlpha = material.castShadowNode.a;
3641
+
3642
+ if ( this.shadowMap.transmitted !== true ) {
3643
+
3644
+ warnOnce( 'Renderer: `shadowMap.transmitted` needs to be set to `true` when using `material.castShadowNode`.' );
3645
+
3646
+ }
3647
+
3648
+ } else {
3649
+
3650
+ shadowRGB = vec3( 0 );
3651
+ shadowAlpha = float( 1 );
3652
+
3653
+ }
3654
+
3655
+ if ( hasMap ) {
3656
+
3657
+ shadowAlpha = shadowAlpha.mul( reference( 'map', 'texture', material ).a );
3658
+
3659
+ }
3660
+
3661
+ if ( hasColorNode ) {
3662
+
3663
+ shadowAlpha = shadowAlpha.mul( material.colorNode.a );
3664
+
3665
+ }
3666
+
3667
+ colorNode = vec4( shadowRGB, shadowAlpha );
3668
+
3669
+ if ( hasMaskNode ) {
3670
+
3671
+ const maskNode = material.maskShadowNode || material.maskNode;
3672
+
3673
+ colorNode = Fn( ( [ color ] ) => {
3674
+
3675
+ maskNode.not().discard();
3676
+
3677
+ return color;
3678
+
3679
+ } )( colorNode );
3680
+
3681
+ }
3682
+
3683
+ }
3684
+
3685
+ if ( material.depthNode && material.depthNode.isNode ) {
3686
+
3687
+ depthNode = material.depthNode;
3688
+
3689
+ }
3690
+
3691
+ if ( material.castShadowPositionNode && material.castShadowPositionNode.isNode ) {
3692
+
3693
+ positionNode = material.castShadowPositionNode;
3694
+
3695
+ } else if ( material.positionNode && material.positionNode.isNode ) {
3696
+
3697
+ positionNode = material.positionNode;
3698
+
3699
+ }
3700
+
3701
+ cache = {
3702
+ version,
3703
+ colorNode,
3704
+ depthNode,
3705
+ positionNode
3706
+ };
3707
+
3708
+ this._cacheShadowNodes.set( material, cache );
3709
+
3710
+ }
3711
+
3712
+ return cache;
3713
+
3714
+ }
3715
+
3716
+ /**
3717
+ * Updates the camera so it's prepared for rendering operations.
3718
+ *
3719
+ * @private
3720
+ * @param {Camera} camera - The camera to update.
3721
+ * @param {boolean} useXRCamera - Whether the XR camera should be used when presenting.
3722
+ * @return {Camera} The returned camera might be different depending on whether XR is used or not.
3723
+ */
3724
+ _updateCamera( camera, useXRCamera ) {
3725
+
3726
+ const xr = this.xr;
3727
+
3728
+ if ( xr.isPresenting === false || useXRCamera === false ) {
3729
+
3730
+ let projectionMatrixNeedsUpdate = false;
3731
+
3732
+ // reversed depth
3733
+
3734
+ if ( this.reversedDepthBuffer === true && camera.reversedDepth !== true ) {
3735
+
3736
+ camera._reversedDepth = true;
3737
+
3738
+ if ( camera.isArrayCamera ) {
3739
+
3740
+ for ( const subCamera of camera.cameras ) {
3741
+
3742
+ subCamera._reversedDepth = true;
3743
+
3744
+ }
3745
+
3746
+ }
3747
+
3748
+ projectionMatrixNeedsUpdate = true;
3749
+
3750
+ }
3751
+
3752
+ // WebGPU/WebGL coordinate system
3753
+
3754
+ const coordinateSystem = this.coordinateSystem;
3755
+
3756
+ if ( camera.coordinateSystem !== coordinateSystem ) {
3757
+
3758
+ camera.coordinateSystem = coordinateSystem;
3759
+
3760
+ if ( camera.isArrayCamera ) {
3761
+
3762
+ for ( const subCamera of camera.cameras ) {
3763
+
3764
+ subCamera.coordinateSystem = coordinateSystem;
3765
+
3766
+ }
3767
+
3768
+ }
3769
+
3770
+ projectionMatrixNeedsUpdate = true;
3771
+
3772
+ }
3773
+
3774
+ // camera update
3775
+
3776
+ if ( projectionMatrixNeedsUpdate === true ) {
3777
+
3778
+ camera.updateProjectionMatrix();
3779
+
3780
+ if ( camera.isArrayCamera ) {
3781
+
3782
+ for ( const subCamera of camera.cameras ) {
3783
+
3784
+ subCamera.updateProjectionMatrix();
3785
+
3786
+ }
3787
+
3788
+ }
3789
+
3790
+ }
3791
+
3792
+ }
3793
+
3794
+ if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
3795
+
3796
+ // handle XR
3797
+
3798
+ if ( useXRCamera === true && xr.enabled === true && xr.isPresenting === true ) {
3799
+
3800
+ if ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );
3801
+ camera = xr.getCamera(); // use XR camera for rendering
3802
+
3803
+ }
3804
+
3805
+ return camera;
3806
+
3807
+ }
3808
+
3809
+ /**
3810
+ * This method represents the default render object function that manages the render lifecycle
3811
+ * of the object.
3812
+ *
3813
+ * @param {Object3D} object - The 3D object.
3814
+ * @param {Scene} scene - The scene the 3D object belongs to.
3815
+ * @param {Camera} camera - The camera the object should be rendered with.
3816
+ * @param {BufferGeometry} geometry - The object's geometry.
3817
+ * @param {Material} material - The object's material.
3818
+ * @param {?Object} group - Only relevant for objects using multiple materials. This represents a group entry from the respective `BufferGeometry`.
3819
+ * @param {LightsNode} lightsNode - The current lights node.
3820
+ * @param {?ClippingContext} clippingContext - The clipping context.
3821
+ * @param {?string} [passId=null] - An optional ID for identifying the pass.
3822
+ */
3823
+ renderObject( object, scene, camera, geometry, material, group, lightsNode, clippingContext = null, passId = null ) {
3824
+
3825
+ let materialOverride = false;
3826
+ let materialColorNode;
3827
+ let materialDepthNode;
3828
+ let materialPositionNode;
3829
+ let materialSide;
3830
+ let materialDisplacementMap;
3831
+ let materialDisplacementScale;
3832
+ let materialDisplacementBias;
3833
+
3834
+ const previousSourceMaterial = this._currentSourceMaterial;
3835
+
3836
+ //
3837
+
3838
+ object.onBeforeRender( this, scene, camera, geometry, material, group );
3839
+
3840
+ //
3841
+
3842
+ if ( material.allowOverride === true && scene.overrideMaterial !== null ) {
3843
+
3844
+ this._currentSourceMaterial = material;
3845
+
3846
+ const overrideMaterial = scene.overrideMaterial;
3847
+
3848
+ materialOverride = true;
3849
+
3850
+ // store original nodes
3851
+ materialColorNode = ( overrideMaterial.isNodeMaterial ) ? overrideMaterial.colorNode : null;
3852
+ materialDepthNode = ( overrideMaterial.isNodeMaterial ) ? overrideMaterial.depthNode : null;
3853
+ materialPositionNode = ( overrideMaterial.isNodeMaterial ) ? overrideMaterial.positionNode : null;
3854
+ materialSide = scene.overrideMaterial.side;
3855
+ materialDisplacementMap = overrideMaterial.displacementMap;
3856
+ materialDisplacementScale = overrideMaterial.displacementScale;
3857
+ materialDisplacementBias = overrideMaterial.displacementBias;
3858
+
3859
+ if ( material.positionNode && material.positionNode.isNode ) {
3860
+
3861
+ overrideMaterial.positionNode = material.positionNode;
3862
+
3863
+ }
3864
+
3865
+ overrideMaterial.alphaTest = material.alphaTest;
3866
+ overrideMaterial.alphaMap = material.alphaMap;
3867
+ overrideMaterial.displacementMap = material.displacementMap;
3868
+ overrideMaterial.displacementScale = material.displacementScale;
3869
+ overrideMaterial.displacementBias = material.displacementBias;
3870
+ overrideMaterial.transparent = material.transparent || material.transmission > 0 ||
3871
+ ( material.transmissionNode && material.transmissionNode.isNode ) ||
3872
+ ( material.backdropNode && material.backdropNode.isNode );
3873
+
3874
+ if ( overrideMaterial.isShadowPassMaterial ) {
3875
+
3876
+ const { colorNode, depthNode, positionNode } = this._getShadowNodes( material );
3877
+
3878
+ if ( this.shadowMap.type === VSMShadowMap ) {
3879
+
3880
+ overrideMaterial.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;
3881
+
3882
+ } else {
3883
+
3884
+ overrideMaterial.side = ( material.shadowSide !== null ) ? material.shadowSide : _shadowSide[ material.side ];
3885
+
3886
+ }
3887
+
3888
+ if ( colorNode !== null ) overrideMaterial.colorNode = colorNode;
3889
+ if ( depthNode !== null ) overrideMaterial.depthNode = depthNode;
3890
+ if ( positionNode !== null ) overrideMaterial.positionNode = positionNode;
3891
+
3892
+ }
3893
+
3894
+ material = overrideMaterial;
3895
+
3896
+ }
3897
+
3898
+ //
3899
+
3900
+ if ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {
3901
+
3902
+ material.side = BackSide;
3903
+ this._handleObjectFunction( object, material, scene, camera, lightsNode, group, clippingContext, 'backSide' ); // create backSide pass id
3904
+
3905
+ material.side = FrontSide;
3906
+ this._handleObjectFunction( object, material, scene, camera, lightsNode, group, clippingContext, passId ); // use default pass id
3907
+
3908
+ material.side = DoubleSide;
3909
+
3910
+ } else {
3911
+
3912
+ this._handleObjectFunction( object, material, scene, camera, lightsNode, group, clippingContext, passId );
3913
+
3914
+ }
3915
+
3916
+ //
3917
+
3918
+ if ( materialOverride ) {
3919
+
3920
+ scene.overrideMaterial.colorNode = materialColorNode;
3921
+ scene.overrideMaterial.depthNode = materialDepthNode;
3922
+ scene.overrideMaterial.positionNode = materialPositionNode;
3923
+ scene.overrideMaterial.side = materialSide;
3924
+ scene.overrideMaterial.displacementMap = materialDisplacementMap;
3925
+ scene.overrideMaterial.displacementScale = materialDisplacementScale;
3926
+ scene.overrideMaterial.displacementBias = materialDisplacementBias;
3927
+
3928
+ }
3929
+
3930
+ this._currentSourceMaterial = previousSourceMaterial;
3931
+
3932
+ //
3933
+
3934
+ object.onAfterRender( this, scene, camera, geometry, material, group );
3935
+
3936
+ }
3937
+
3938
+ /**
3939
+ * Checks if the given compatibility is supported by the selected backend.
3940
+ *
3941
+ * @param {string} name - The compatibility's name.
3942
+ * @return {boolean} Whether the compatibility is supported or not.
3943
+ */
3944
+ hasCompatibility( name ) {
3945
+
3946
+ if ( this._initialized === false ) {
3947
+
3948
+ throw new Error( 'THREE.Renderer: .hasCompatibility() called before the backend is initialized. Use "await renderer.init();" before using this method.' );
3949
+
3950
+ }
3951
+
3952
+ return this.backend.hasCompatibility( name );
3953
+
3954
+ }
3955
+
3956
+ /**
3957
+ * This method represents the default `_handleObjectFunction` implementation which creates
3958
+ * a render object from the given data and performs the draw command with the selected backend.
3959
+ *
3960
+ * @private
3961
+ * @param {Object3D} object - The 3D object.
3962
+ * @param {Material} material - The object's material.
3963
+ * @param {Scene} scene - The scene the 3D object belongs to.
3964
+ * @param {Camera} camera - The camera the object should be rendered with.
3965
+ * @param {LightsNode} lightsNode - The current lights node.
3966
+ * @param {?{start: number, count: number}} group - Only relevant for objects using multiple materials. This represents a group entry from the respective `BufferGeometry`.
3967
+ * @param {ClippingContext} clippingContext - The clipping context.
3968
+ * @param {string} [passId] - An optional ID for identifying the pass.
3969
+ */
3970
+ _renderObjectDirect( object, material, scene, camera, lightsNode, group, clippingContext, passId ) {
3971
+
3972
+ const renderObject = this._objects.get( object, material, scene, camera, lightsNode, this._currentRenderContext, clippingContext, passId );
3973
+ renderObject.drawRange = object.geometry.drawRange;
3974
+ renderObject.group = group;
3975
+
3976
+ if ( this._currentRenderBundle !== null ) {
3977
+
3978
+ const renderBundleData = this.backend.get( this._currentRenderBundle );
3979
+
3980
+ renderBundleData.renderObjects.push( renderObject );
3981
+
3982
+ renderObject.bundle = this._currentRenderBundle.bundleGroup;
3983
+
3984
+ }
3985
+
3986
+ //
3987
+
3988
+ const refreshType = this._nodes.needsRefresh( renderObject );
3989
+
3990
+ if ( refreshType === RenderObjectRefreshType.FULL ) {
3991
+
3992
+ this._nodes.updateBefore( renderObject );
3993
+
3994
+ this._geometries.updateForRender( renderObject );
3995
+
3996
+ this._nodes.updateForRender( renderObject );
3997
+ this._bindings.updateForRender( renderObject );
3998
+
3999
+ } else if ( refreshType === RenderObjectRefreshType.SHARED ) {
4000
+
4001
+ this._nodes.updateBefore( renderObject );
4002
+
4003
+ this._nodes.updateForRender( renderObject );
4004
+ this._bindings.updateSharedForRender( renderObject );
4005
+
4006
+ }
4007
+
4008
+ this._pipelines.updateForRender( renderObject );
4009
+
4010
+ //
4011
+
4012
+ if ( this._pipelines.isReady( renderObject ) ) {
4013
+
4014
+ this.backend.draw( renderObject, this.info );
4015
+
4016
+ if ( refreshType !== RenderObjectRefreshType.NONE ) this._nodes.updateAfter( renderObject );
4017
+
4018
+ }
4019
+
4020
+ }
4021
+
4022
+ /**
4023
+ * A different implementation for `_handleObjectFunction` which only makes sure the object is ready for rendering.
4024
+ * Used in `compileAsync()`.
4025
+ *
4026
+ * @private
4027
+ * @param {Object3D} object - The 3D object.
4028
+ * @param {Material} material - The object's material.
4029
+ * @param {Scene} scene - The scene the 3D object belongs to.
4030
+ * @param {Camera} camera - The camera the object should be rendered with.
4031
+ * @param {LightsNode} lightsNode - The current lights node.
4032
+ * @param {?{start: number, count: number}} group - Only relevant for objects using multiple materials. This represents a group entry from the respective `BufferGeometry`.
4033
+ * @param {ClippingContext} clippingContext - The clipping context.
4034
+ * @param {string} [passId] - An optional ID for identifying the pass.
4035
+ */
4036
+ _createObjectPipeline( object, material, scene, camera, lightsNode, group, clippingContext, passId ) {
4037
+
4038
+ // If in async compilation mode, queue the work for sequential execution
4039
+ if ( this._compilationPromises !== null ) {
4040
+
4041
+ // Store work items instead of promises - will be processed sequentially
4042
+ this._compilationPromises.push( {
4043
+ object,
4044
+ material,
4045
+ scene,
4046
+ camera,
4047
+ lightsNode,
4048
+ group,
4049
+ clippingContext,
4050
+ passId,
4051
+ renderContext: this._currentRenderContext
4052
+ } );
4053
+
4054
+ return;
4055
+
4056
+ }
4057
+
4058
+ // Sync path
4059
+ const renderObject = this._objects.get( object, material, scene, camera, lightsNode, this._currentRenderContext, clippingContext, passId );
4060
+ renderObject.drawRange = object.geometry.drawRange;
4061
+ renderObject.group = group;
4062
+
4063
+ //
4064
+
4065
+ this._nodes.updateBefore( renderObject );
4066
+
4067
+ this._geometries.updateForRender( renderObject );
4068
+
4069
+ this._nodes.updateForRender( renderObject );
4070
+ this._bindings.updateForRender( renderObject );
4071
+
4072
+ this._pipelines.getForRender( renderObject, this._compilationPromises );
4073
+
4074
+ this._nodes.updateAfter( renderObject );
4075
+
4076
+ }
4077
+
4078
+ /**
4079
+ * Callback when the canvas has been resized.
4080
+ *
4081
+ * @private
4082
+ */
4083
+ _onCanvasTargetResize() {
4084
+
4085
+ if ( this._initialized ) this.backend.updateSize();
4086
+
4087
+ }
4088
+
4089
+ /**
4090
+ * Alias for `compileAsync()`.
4091
+ *
4092
+ * @method
4093
+ * @param {Object3D} scene - The scene or 3D object to precompile.
4094
+ * @param {Camera} camera - The camera that is used to render the scene.
4095
+ * @param {Scene} targetScene - If the first argument is a 3D object, this parameter must represent the scene the 3D object is going to be added.
4096
+ * @param {onProgressCallback} [onProgress] - Executed while the compilation is in progress.
4097
+ * @return {function(Object3D, Camera, ?Scene, ?onProgressCallback): Promise|undefined} A Promise that resolves when the compile has been finished.
4098
+ */
4099
+ get compile() {
4100
+
4101
+ return this.compileAsync;
4102
+
4103
+ }
4104
+
4105
+ }
4106
+
4107
+ /**
4108
+ * Animation loop parameter of `renderer.setAnimationLoop()`.
4109
+ *
4110
+ * @callback onAnimationCallback
4111
+ * @param {DOMHighResTimeStamp} time - A timestamp indicating the end time of the previous frame's rendering.
4112
+ * @param {XRFrame} [frame] - A reference to the current XR frame. Only relevant when using XR rendering.
4113
+ */
4114
+
4115
+ export default Renderer;