@unikia/upe-renderer 0.0.0-stage → 0.187.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2248) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSE.types +21 -0
  3. package/README.md +35 -2
  4. package/README.three.md +85 -0
  5. package/UPSTREAM.md +11 -0
  6. package/build/three.cjs +17 -0
  7. package/build/three.core.d.ts +1 -0
  8. package/build/three.core.js +61178 -0
  9. package/build/three.d.cts +1 -0
  10. package/build/three.module.d.ts +1 -0
  11. package/build/three.module.js +19537 -0
  12. package/build/three.tsl.d.ts +1 -0
  13. package/build/three.tsl.js +41943 -0
  14. package/build/three.webgpu.d.ts +1 -0
  15. package/build/three.webgpu.js +54819 -0
  16. package/build/three.webgpu.nodes.d.ts +1 -0
  17. package/build/three.webgpu.nodes.js +96449 -0
  18. package/examples/jsm/Addons.d.ts +300 -0
  19. package/examples/jsm/Addons.js +303 -0
  20. package/examples/jsm/animation/AnimationClipCreator.d.ts +12 -0
  21. package/examples/jsm/animation/AnimationClipCreator.js +168 -0
  22. package/examples/jsm/animation/CCDIKSolver.d.ts +44 -0
  23. package/examples/jsm/animation/CCDIKSolver.js +607 -0
  24. package/examples/jsm/capabilities/WebGL.d.ts +6 -0
  25. package/examples/jsm/capabilities/WebGL.js +113 -0
  26. package/examples/jsm/capabilities/WebGPU.d.ts +7 -0
  27. package/examples/jsm/capabilities/WebGPU.js +59 -0
  28. package/examples/jsm/controls/ArcballControls.d.ts +208 -0
  29. package/examples/jsm/controls/ArcballControls.js +3543 -0
  30. package/examples/jsm/controls/DragControls.d.ts +81 -0
  31. package/examples/jsm/controls/DragControls.js +452 -0
  32. package/examples/jsm/controls/FirstPersonControls.d.ts +105 -0
  33. package/examples/jsm/controls/FirstPersonControls.js +512 -0
  34. package/examples/jsm/controls/FlyControls.d.ts +44 -0
  35. package/examples/jsm/controls/FlyControls.js +384 -0
  36. package/examples/jsm/controls/MapControls.d.ts +21 -0
  37. package/examples/jsm/controls/MapControls.js +116 -0
  38. package/examples/jsm/controls/OrbitControls.d.ts +295 -0
  39. package/examples/jsm/controls/OrbitControls.js +1985 -0
  40. package/examples/jsm/controls/PointerLockControls.d.ts +84 -0
  41. package/examples/jsm/controls/PointerLockControls.js +264 -0
  42. package/examples/jsm/controls/TrackballControls.d.ts +152 -0
  43. package/examples/jsm/controls/TrackballControls.js +1106 -0
  44. package/examples/jsm/controls/TransformControls.d.ts +363 -0
  45. package/examples/jsm/controls/TransformControls.js +2003 -0
  46. package/examples/jsm/csm/CSM.d.ts +55 -0
  47. package/examples/jsm/csm/CSM.js +598 -0
  48. package/examples/jsm/csm/CSMFrustum.d.ts +85 -0
  49. package/examples/jsm/csm/CSMFrustum.js +234 -0
  50. package/examples/jsm/csm/CSMHelper.d.ts +28 -0
  51. package/examples/jsm/csm/CSMHelper.js +243 -0
  52. package/examples/jsm/csm/CSMShader.d.ts +4 -0
  53. package/examples/jsm/csm/CSMShader.js +378 -0
  54. package/examples/jsm/csm/CSMShadowNode.d.ts +44 -0
  55. package/examples/jsm/csm/CSMShadowNode.js +619 -0
  56. package/examples/jsm/curves/CurveExtras.d.ts +68 -0
  57. package/examples/jsm/curves/CurveExtras.js +694 -0
  58. package/examples/jsm/curves/NURBSCurve.d.ts +28 -0
  59. package/examples/jsm/curves/NURBSCurve.js +169 -0
  60. package/examples/jsm/curves/NURBSSurface.d.ts +13 -0
  61. package/examples/jsm/curves/NURBSSurface.js +98 -0
  62. package/examples/jsm/curves/NURBSUtils.d.ts +146 -0
  63. package/examples/jsm/curves/NURBSUtils.js +532 -0
  64. package/examples/jsm/curves/NURBSVolume.d.ts +23 -0
  65. package/examples/jsm/curves/NURBSVolume.js +82 -0
  66. package/examples/jsm/effects/AnaglyphEffect.d.ts +21 -0
  67. package/examples/jsm/effects/AnaglyphEffect.js +274 -0
  68. package/examples/jsm/effects/AsciiEffect.d.ts +18 -0
  69. package/examples/jsm/effects/AsciiEffect.js +323 -0
  70. package/examples/jsm/effects/OutlineEffect.d.ts +28 -0
  71. package/examples/jsm/effects/OutlineEffect.js +489 -0
  72. package/examples/jsm/effects/ParallaxBarrierEffect.d.ts +11 -0
  73. package/examples/jsm/effects/ParallaxBarrierEffect.js +155 -0
  74. package/examples/jsm/effects/StereoEffect.d.ts +9 -0
  75. package/examples/jsm/effects/StereoEffect.js +91 -0
  76. package/examples/jsm/environments/ColorEnvironment.d.ts +9 -0
  77. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  78. package/examples/jsm/environments/DebugEnvironment.d.ts +5 -0
  79. package/examples/jsm/environments/DebugEnvironment.js +102 -0
  80. package/examples/jsm/environments/RoomEnvironment.d.ts +6 -0
  81. package/examples/jsm/environments/RoomEnvironment.js +185 -0
  82. package/examples/jsm/exporters/DRACOExporter.d.ts +17 -0
  83. package/examples/jsm/exporters/DRACOExporter.js +332 -0
  84. package/examples/jsm/exporters/EXRExporter.d.ts +27 -0
  85. package/examples/jsm/exporters/EXRExporter.js +1275 -0
  86. package/examples/jsm/exporters/GLTFExporter.d.ts +161 -0
  87. package/examples/jsm/exporters/GLTFExporter.js +3856 -0
  88. package/examples/jsm/exporters/KTX2Exporter.d.ts +7 -0
  89. package/examples/jsm/exporters/KTX2Exporter.js +347 -0
  90. package/examples/jsm/exporters/OBJExporter.d.ts +7 -0
  91. package/examples/jsm/exporters/OBJExporter.js +351 -0
  92. package/examples/jsm/exporters/PLYExporter.d.ts +31 -0
  93. package/examples/jsm/exporters/PLYExporter.js +786 -0
  94. package/examples/jsm/exporters/STLExporter.d.ts +21 -0
  95. package/examples/jsm/exporters/STLExporter.js +221 -0
  96. package/examples/jsm/exporters/USDZExporter.d.ts +30 -0
  97. package/examples/jsm/exporters/USDZExporter.js +1489 -0
  98. package/examples/jsm/generators/CityGenerator.d.ts +131 -0
  99. package/examples/jsm/generators/CityGenerator.js +679 -0
  100. package/examples/jsm/generators/ForestGenerator.d.ts +73 -0
  101. package/examples/jsm/generators/ForestGenerator.js +347 -0
  102. package/examples/jsm/generators/TerrainGenerator.d.ts +57 -0
  103. package/examples/jsm/generators/TerrainGenerator.js +516 -0
  104. package/examples/jsm/generators/TreeGenerator.d.ts +102 -0
  105. package/examples/jsm/generators/TreeGenerator.js +371 -0
  106. package/examples/jsm/generators/city/BenchGenerator.d.ts +29 -0
  107. package/examples/jsm/generators/city/BenchGenerator.js +127 -0
  108. package/examples/jsm/generators/city/CarGenerator.d.ts +43 -0
  109. package/examples/jsm/generators/city/CarGenerator.js +479 -0
  110. package/examples/jsm/generators/city/CityGeneratorUtils.js +31 -0
  111. package/examples/jsm/generators/city/HydrantGenerator.d.ts +27 -0
  112. package/examples/jsm/generators/city/HydrantGenerator.js +106 -0
  113. package/examples/jsm/generators/city/InstancedMeshGenerator.d.ts +29 -0
  114. package/examples/jsm/generators/city/InstancedMeshGenerator.js +86 -0
  115. package/examples/jsm/generators/city/PersonGenerator.d.ts +44 -0
  116. package/examples/jsm/generators/city/PersonGenerator.js +447 -0
  117. package/examples/jsm/generators/city/SidewalkGenerator.d.ts +40 -0
  118. package/examples/jsm/generators/city/SidewalkGenerator.js +248 -0
  119. package/examples/jsm/generators/city/SkyscraperGenerator.d.ts +83 -0
  120. package/examples/jsm/generators/city/SkyscraperGenerator.js +1799 -0
  121. package/examples/jsm/generators/city/StreetTreeGenerator.d.ts +30 -0
  122. package/examples/jsm/generators/city/StreetTreeGenerator.js +231 -0
  123. package/examples/jsm/generators/city/StreetlightGenerator.d.ts +28 -0
  124. package/examples/jsm/generators/city/StreetlightGenerator.js +100 -0
  125. package/examples/jsm/generators/city/TrafficlightGenerator.d.ts +29 -0
  126. package/examples/jsm/generators/city/TrafficlightGenerator.js +106 -0
  127. package/examples/jsm/generators/city/TrashcanGenerator.d.ts +24 -0
  128. package/examples/jsm/generators/city/TrashcanGenerator.js +100 -0
  129. package/examples/jsm/geometries/BoxLineGeometry.d.ts +12 -0
  130. package/examples/jsm/geometries/BoxLineGeometry.js +92 -0
  131. package/examples/jsm/geometries/ConvexGeometry.d.ts +5 -0
  132. package/examples/jsm/geometries/ConvexGeometry.js +72 -0
  133. package/examples/jsm/geometries/DecalGeometry.d.ts +16 -0
  134. package/examples/jsm/geometries/DecalGeometry.js +420 -0
  135. package/examples/jsm/geometries/LoftGeometry.d.ts +83 -0
  136. package/examples/jsm/geometries/LoftGeometry.js +355 -0
  137. package/examples/jsm/geometries/ParametricFunctions.d.ts +8 -0
  138. package/examples/jsm/geometries/ParametricFunctions.js +100 -0
  139. package/examples/jsm/geometries/ParametricGeometry.d.ts +18 -0
  140. package/examples/jsm/geometries/ParametricGeometry.js +172 -0
  141. package/examples/jsm/geometries/RoundedBoxGeometry.d.ts +5 -0
  142. package/examples/jsm/geometries/RoundedBoxGeometry.js +216 -0
  143. package/examples/jsm/geometries/TeapotGeometry.d.ts +37 -0
  144. package/examples/jsm/geometries/TeapotGeometry.js +689 -0
  145. package/examples/jsm/geometries/TextGeometry.d.ts +89 -0
  146. package/examples/jsm/geometries/TextGeometry.js +102 -0
  147. package/examples/jsm/gpgpu/BitonicSort.d.ts +21 -0
  148. package/examples/jsm/gpgpu/BitonicSort.js +722 -0
  149. package/examples/jsm/gpgpu/CountingSort.d.ts +31 -0
  150. package/examples/jsm/gpgpu/CountingSort.js +271 -0
  151. package/examples/jsm/helpers/AnimationPathHelper.d.ts +38 -0
  152. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  153. package/examples/jsm/helpers/LightProbeGridHelper.d.ts +12 -0
  154. package/examples/jsm/helpers/LightProbeGridHelper.js +166 -0
  155. package/examples/jsm/helpers/LightProbeGridHelperWebGL.d.ts +12 -0
  156. package/examples/jsm/helpers/LightProbeGridHelperWebGL.js +221 -0
  157. package/examples/jsm/helpers/LightProbeHelper.d.ts +12 -0
  158. package/examples/jsm/helpers/LightProbeHelper.js +166 -0
  159. package/examples/jsm/helpers/LightProbeHelperGPU.d.ts +12 -0
  160. package/examples/jsm/helpers/LightProbeHelperGPU.js +102 -0
  161. package/examples/jsm/helpers/OctreeHelper.d.ts +17 -0
  162. package/examples/jsm/helpers/OctreeHelper.js +109 -0
  163. package/examples/jsm/helpers/PositionalAudioHelper.d.ts +13 -0
  164. package/examples/jsm/helpers/PositionalAudioHelper.js +169 -0
  165. package/examples/jsm/helpers/RapierHelper.d.ts +13 -0
  166. package/examples/jsm/helpers/RapierHelper.js +59 -0
  167. package/examples/jsm/helpers/RectAreaLightHelper.d.ts +10 -0
  168. package/examples/jsm/helpers/RectAreaLightHelper.js +118 -0
  169. package/examples/jsm/helpers/TextureHelper.d.ts +10 -0
  170. package/examples/jsm/helpers/TextureHelper.js +265 -0
  171. package/examples/jsm/helpers/TextureHelperGPU.d.ts +10 -0
  172. package/examples/jsm/helpers/TextureHelperGPU.js +214 -0
  173. package/examples/jsm/helpers/VertexNormalsHelper.d.ts +14 -0
  174. package/examples/jsm/helpers/VertexNormalsHelper.js +155 -0
  175. package/examples/jsm/helpers/VertexTangentsHelper.d.ts +12 -0
  176. package/examples/jsm/helpers/VertexTangentsHelper.js +133 -0
  177. package/examples/jsm/helpers/ViewHelper.d.ts +20 -0
  178. package/examples/jsm/helpers/ViewHelper.js +529 -0
  179. package/examples/jsm/inspector/Extension.d.ts +22 -0
  180. package/examples/jsm/inspector/Extension.js +107 -0
  181. package/examples/jsm/inspector/Inspector.d.ts +54 -0
  182. package/examples/jsm/inspector/Inspector.js +644 -0
  183. package/examples/jsm/inspector/RendererInspector.d.ts +9 -0
  184. package/examples/jsm/inspector/RendererInspector.js +624 -0
  185. package/examples/jsm/inspector/Storage.js +49 -0
  186. package/examples/jsm/inspector/extensions/color-grading/ColorGrading.d.ts +34 -0
  187. package/examples/jsm/inspector/extensions/color-grading/ColorGrading.js +2614 -0
  188. package/examples/jsm/inspector/extensions/color-grading/ColorWheel.js +352 -0
  189. package/examples/jsm/inspector/extensions/color-grading/CurveEditor.js +599 -0
  190. package/examples/jsm/inspector/extensions/color-grading/LUT3DStyle.js +1201 -0
  191. package/examples/jsm/inspector/extensions/color-grading/LUTMath.js +788 -0
  192. package/examples/jsm/inspector/extensions/color-grading/modules/BrightnessModule.js +72 -0
  193. package/examples/jsm/inspector/extensions/color-grading/modules/ColorWheelModule.js +112 -0
  194. package/examples/jsm/inspector/extensions/color-grading/modules/ContrastModule.js +82 -0
  195. package/examples/jsm/inspector/extensions/color-grading/modules/CurvesModule.js +109 -0
  196. package/examples/jsm/inspector/extensions/color-grading/modules/ExposureHueModule.js +110 -0
  197. package/examples/jsm/inspector/extensions/color-grading/modules/ExposureModule.js +73 -0
  198. package/examples/jsm/inspector/extensions/color-grading/modules/HueModule.js +78 -0
  199. package/examples/jsm/inspector/extensions/color-grading/modules/ImportedCubeModule.js +89 -0
  200. package/examples/jsm/inspector/extensions/color-grading/modules/Module.js +285 -0
  201. package/examples/jsm/inspector/extensions/color-grading/modules/OutputModule.js +101 -0
  202. package/examples/jsm/inspector/extensions/color-grading/modules/RendererModule.js +225 -0
  203. package/examples/jsm/inspector/extensions/color-grading/modules/SatVibranceModule.js +102 -0
  204. package/examples/jsm/inspector/extensions/color-grading/modules/SaturationModule.js +76 -0
  205. package/examples/jsm/inspector/extensions/color-grading/modules/VibranceModule.js +76 -0
  206. package/examples/jsm/inspector/extensions/color-grading/modules/WhiteBalanceModule.js +86 -0
  207. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.d.ts +20 -0
  208. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +911 -0
  209. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.d.ts +11 -0
  210. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +282 -0
  211. package/examples/jsm/inspector/tabs/Console.js +420 -0
  212. package/examples/jsm/inspector/tabs/Memory.js +134 -0
  213. package/examples/jsm/inspector/tabs/Parameters.d.ts +122 -0
  214. package/examples/jsm/inspector/tabs/Parameters.js +444 -0
  215. package/examples/jsm/inspector/tabs/Performance.js +298 -0
  216. package/examples/jsm/inspector/tabs/Settings.js +310 -0
  217. package/examples/jsm/inspector/tabs/Timeline.js +1824 -0
  218. package/examples/jsm/inspector/tabs/Viewer.js +1389 -0
  219. package/examples/jsm/inspector/ui/Graph.js +232 -0
  220. package/examples/jsm/inspector/ui/Item.d.ts +5 -0
  221. package/examples/jsm/inspector/ui/Item.js +249 -0
  222. package/examples/jsm/inspector/ui/List.js +81 -0
  223. package/examples/jsm/inspector/ui/Profiler.js +2273 -0
  224. package/examples/jsm/inspector/ui/Style.js +2268 -0
  225. package/examples/jsm/inspector/ui/Tab.d.ts +9 -0
  226. package/examples/jsm/inspector/ui/Tab.js +269 -0
  227. package/examples/jsm/inspector/ui/Values.d.ts +103 -0
  228. package/examples/jsm/inspector/ui/Values.js +578 -0
  229. package/examples/jsm/inspector/ui/utils.js +189 -0
  230. package/examples/jsm/interaction/InteractionManager.d.ts +18 -0
  231. package/examples/jsm/interaction/InteractionManager.js +226 -0
  232. package/examples/jsm/interactive/HTMLMesh.d.ts +13 -0
  233. package/examples/jsm/interactive/HTMLMesh.js +617 -0
  234. package/examples/jsm/interactive/InteractiveGroup.d.ts +28 -0
  235. package/examples/jsm/interactive/InteractiveGroup.js +224 -0
  236. package/examples/jsm/interactive/SelectionBox.d.ts +16 -0
  237. package/examples/jsm/interactive/SelectionBox.js +324 -0
  238. package/examples/jsm/interactive/SelectionHelper.d.ts +17 -0
  239. package/examples/jsm/interactive/SelectionHelper.js +150 -0
  240. package/examples/jsm/libs/basis/README.md +45 -0
  241. package/examples/jsm/libs/basis/basis_transcoder.js +19 -0
  242. package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  243. package/examples/jsm/libs/chevrotain.module.min.js +141 -0
  244. package/examples/jsm/libs/demuxer_mp4.js +109 -0
  245. package/examples/jsm/libs/draco/README.md +31 -0
  246. package/examples/jsm/libs/draco/draco_decoder.js +34 -0
  247. package/examples/jsm/libs/draco/draco_decoder.wasm +0 -0
  248. package/examples/jsm/libs/draco/draco_wasm_wrapper.js +117 -0
  249. package/examples/jsm/libs/draco/gltf/draco_decoder.js +33 -0
  250. package/examples/jsm/libs/draco/gltf/draco_decoder.wasm +0 -0
  251. package/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -0
  252. package/examples/jsm/libs/fflate.module.d.ts +1 -0
  253. package/examples/jsm/libs/fflate.module.js +2699 -0
  254. package/examples/jsm/libs/ktx-parse.module.js +1 -0
  255. package/examples/jsm/libs/lil-gui.module.min.d.ts +608 -0
  256. package/examples/jsm/libs/lil-gui.module.min.js +8 -0
  257. package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
  258. package/examples/jsm/libs/meshopt_decoder.module.d.ts +1 -0
  259. package/examples/jsm/libs/meshopt_decoder.module.js +196 -0
  260. package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
  261. package/examples/jsm/libs/mikktspace.README.md +27 -0
  262. package/examples/jsm/libs/mikktspace.module.d.ts +19 -0
  263. package/examples/jsm/libs/mikktspace.module.js +765 -0
  264. package/examples/jsm/libs/motion-controllers.module.js +397 -0
  265. package/examples/jsm/libs/potpack.module.js +125 -0
  266. package/examples/jsm/libs/stats.module.d.ts +3 -0
  267. package/examples/jsm/libs/stats.module.js +167 -0
  268. package/examples/jsm/libs/tween.module.d.ts +2 -0
  269. package/examples/jsm/libs/tween.module.js +876 -0
  270. package/examples/jsm/libs/utif.module.js +1665 -0
  271. package/examples/jsm/libs/zstddec.module.d.ts +5 -0
  272. package/examples/jsm/libs/zstddec.module.js +1 -0
  273. package/examples/jsm/lighting/ClusteredLighting.d.ts +45 -0
  274. package/examples/jsm/lighting/ClusteredLighting.js +153 -0
  275. package/examples/jsm/lighting/DynamicLighting.d.ts +16 -0
  276. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  277. package/examples/jsm/lighting/LightMapper.js +295 -0
  278. package/examples/jsm/lighting/LightProbeGrid.d.ts +177 -0
  279. package/examples/jsm/lighting/LightProbeGrid.js +923 -0
  280. package/examples/jsm/lighting/LightProbeGridUtils.js +107 -0
  281. package/examples/jsm/lighting/LightProbeGridWebGL.d.ts +178 -0
  282. package/examples/jsm/lighting/LightProbeGridWebGL.js +846 -0
  283. package/examples/jsm/lighting/vxgi/VXGIConeTracer.js +243 -0
  284. package/examples/jsm/lighting/vxgi/VXGIIrradiance.js +43 -0
  285. package/examples/jsm/lighting/vxgi/VXGINode.d.ts +100 -0
  286. package/examples/jsm/lighting/vxgi/VXGINode.js +617 -0
  287. package/examples/jsm/lighting/vxgi/VXGISceneCollector.js +793 -0
  288. package/examples/jsm/lighting/vxgi/VXGIVolume.d.ts +245 -0
  289. package/examples/jsm/lighting/vxgi/VXGIVolume.js +1440 -0
  290. package/examples/jsm/lights/LightProbeGenerator.d.ts +16 -0
  291. package/examples/jsm/lights/LightProbeGenerator.js +337 -0
  292. package/examples/jsm/lights/RectAreaLightTexturesLib.d.ts +7 -0
  293. package/examples/jsm/lights/RectAreaLightTexturesLib.js +127 -0
  294. package/examples/jsm/lights/RectAreaLightUniformsLib.d.ts +5 -0
  295. package/examples/jsm/lights/RectAreaLightUniformsLib.js +40 -0
  296. package/examples/jsm/lights/SunLight.d.ts +53 -0
  297. package/examples/jsm/lights/SunLight.js +100 -0
  298. package/examples/jsm/lights/SunLightNode.d.ts +25 -0
  299. package/examples/jsm/lights/SunLightNode.js +56 -0
  300. package/examples/jsm/lights/SunLightShadow.d.ts +57 -0
  301. package/examples/jsm/lights/SunLightShadow.js +319 -0
  302. package/examples/jsm/lights/SunShadowNode.d.ts +53 -0
  303. package/examples/jsm/lights/SunShadowNode.js +312 -0
  304. package/examples/jsm/lines/Line2.d.ts +25 -0
  305. package/examples/jsm/lines/Line2.js +56 -0
  306. package/examples/jsm/lines/LineGeometry.d.ts +27 -0
  307. package/examples/jsm/lines/LineGeometry.js +157 -0
  308. package/examples/jsm/lines/LineMaterial.d.ts +82 -0
  309. package/examples/jsm/lines/LineMaterial.js +742 -0
  310. package/examples/jsm/lines/LineSegments2.d.ts +39 -0
  311. package/examples/jsm/lines/LineSegments2.js +434 -0
  312. package/examples/jsm/lines/LineSegmentsGeometry.d.ts +53 -0
  313. package/examples/jsm/lines/LineSegmentsGeometry.js +298 -0
  314. package/examples/jsm/lines/Wireframe.d.ts +14 -0
  315. package/examples/jsm/lines/Wireframe.js +108 -0
  316. package/examples/jsm/lines/WireframeGeometry2.d.ts +8 -0
  317. package/examples/jsm/lines/WireframeGeometry2.js +49 -0
  318. package/examples/jsm/lines/webgpu/Line2.d.ts +14 -0
  319. package/examples/jsm/lines/webgpu/Line2.js +46 -0
  320. package/examples/jsm/lines/webgpu/LineSegments2.d.ts +15 -0
  321. package/examples/jsm/lines/webgpu/LineSegments2.js +419 -0
  322. package/examples/jsm/lines/webgpu/Wireframe.d.ts +13 -0
  323. package/examples/jsm/lines/webgpu/Wireframe.js +86 -0
  324. package/examples/jsm/loaders/3DMLoader.d.ts +12 -0
  325. package/examples/jsm/loaders/3DMLoader.js +1946 -0
  326. package/examples/jsm/loaders/3MFLoader.d.ts +9 -0
  327. package/examples/jsm/loaders/3MFLoader.js +1826 -0
  328. package/examples/jsm/loaders/AMFLoader.d.ts +7 -0
  329. package/examples/jsm/loaders/AMFLoader.js +543 -0
  330. package/examples/jsm/loaders/BVHLoader.d.ts +14 -0
  331. package/examples/jsm/loaders/BVHLoader.js +486 -0
  332. package/examples/jsm/loaders/ColladaLoader.d.ts +35 -0
  333. package/examples/jsm/loaders/ColladaLoader.js +161 -0
  334. package/examples/jsm/loaders/DDSLoader.d.ts +22 -0
  335. package/examples/jsm/loaders/DDSLoader.js +385 -0
  336. package/examples/jsm/loaders/DRACOLoader.d.ts +39 -0
  337. package/examples/jsm/loaders/DRACOLoader.js +776 -0
  338. package/examples/jsm/loaders/EXRLoader.d.ts +24 -0
  339. package/examples/jsm/loaders/EXRLoader.js +3411 -0
  340. package/examples/jsm/loaders/FBXLoader.d.ts +8 -0
  341. package/examples/jsm/loaders/FBXLoader.js +4660 -0
  342. package/examples/jsm/loaders/FontLoader.d.ts +41 -0
  343. package/examples/jsm/loaders/FontLoader.js +262 -0
  344. package/examples/jsm/loaders/GCodeLoader.d.ts +8 -0
  345. package/examples/jsm/loaders/GCodeLoader.js +314 -0
  346. package/examples/jsm/loaders/GLTFGaussianSplatLoaderExtension.d.ts +14 -0
  347. package/examples/jsm/loaders/GLTFGaussianSplatLoaderExtension.js +330 -0
  348. package/examples/jsm/loaders/GLTFLoader.d.ts +153 -0
  349. package/examples/jsm/loaders/GLTFLoader.js +5006 -0
  350. package/examples/jsm/loaders/GaussianSplatPLYLoader.d.ts +9 -0
  351. package/examples/jsm/loaders/GaussianSplatPLYLoader.js +388 -0
  352. package/examples/jsm/loaders/HDRCubeTextureLoader.d.ts +18 -0
  353. package/examples/jsm/loaders/HDRCubeTextureLoader.js +167 -0
  354. package/examples/jsm/loaders/HDRLoader.d.ts +12 -0
  355. package/examples/jsm/loaders/HDRLoader.js +463 -0
  356. package/examples/jsm/loaders/IESLoader.d.ts +5 -0
  357. package/examples/jsm/loaders/IESLoader.js +413 -0
  358. package/examples/jsm/loaders/JXLLoader.js +159 -0
  359. package/examples/jsm/loaders/KMZLoader.d.ts +9 -0
  360. package/examples/jsm/loaders/KMZLoader.js +169 -0
  361. package/examples/jsm/loaders/KSPLATLoader.d.ts +9 -0
  362. package/examples/jsm/loaders/KSPLATLoader.js +465 -0
  363. package/examples/jsm/loaders/KTX2Loader.d.ts +58 -0
  364. package/examples/jsm/loaders/KTX2Loader.js +1321 -0
  365. package/examples/jsm/loaders/KTXLoader.d.ts +22 -0
  366. package/examples/jsm/loaders/KTXLoader.js +199 -0
  367. package/examples/jsm/loaders/LDrawLoader.d.ts +38 -0
  368. package/examples/jsm/loaders/LDrawLoader.js +2503 -0
  369. package/examples/jsm/loaders/LUT3dlLoader.d.ts +39 -0
  370. package/examples/jsm/loaders/LUT3dlLoader.js +209 -0
  371. package/examples/jsm/loaders/LUTCubeLoader.d.ts +42 -0
  372. package/examples/jsm/loaders/LUTCubeLoader.js +194 -0
  373. package/examples/jsm/loaders/LUTImageLoader.d.ts +18 -0
  374. package/examples/jsm/loaders/LUTImageLoader.js +192 -0
  375. package/examples/jsm/loaders/LWOLoader.d.ts +25 -0
  376. package/examples/jsm/loaders/LWOLoader.js +1057 -0
  377. package/examples/jsm/loaders/MD2Loader.d.ts +7 -0
  378. package/examples/jsm/loaders/MD2Loader.js +437 -0
  379. package/examples/jsm/loaders/MDDLoader.d.ts +12 -0
  380. package/examples/jsm/loaders/MDDLoader.js +151 -0
  381. package/examples/jsm/loaders/MTLLoader.d.ts +95 -0
  382. package/examples/jsm/loaders/MTLLoader.js +601 -0
  383. package/examples/jsm/loaders/MaterialXLoader.d.ts +70 -0
  384. package/examples/jsm/loaders/MaterialXLoader.js +279 -0
  385. package/examples/jsm/loaders/NRRDLoader.d.ts +15 -0
  386. package/examples/jsm/loaders/NRRDLoader.js +720 -0
  387. package/examples/jsm/loaders/OBJLoader.d.ts +10 -0
  388. package/examples/jsm/loaders/OBJLoader.js +961 -0
  389. package/examples/jsm/loaders/PCDLoader.d.ts +8 -0
  390. package/examples/jsm/loaders/PCDLoader.js +624 -0
  391. package/examples/jsm/loaders/PDBLoader.d.ts +15 -0
  392. package/examples/jsm/loaders/PDBLoader.js +274 -0
  393. package/examples/jsm/loaders/PLYLoader.d.ts +11 -0
  394. package/examples/jsm/loaders/PLYLoader.js +992 -0
  395. package/examples/jsm/loaders/PVRLoader.d.ts +16 -0
  396. package/examples/jsm/loaders/PVRLoader.js +270 -0
  397. package/examples/jsm/loaders/RGBELoader.d.ts +7 -0
  398. package/examples/jsm/loaders/RGBELoader.js +18 -0
  399. package/examples/jsm/loaders/SPLATLoader.d.ts +9 -0
  400. package/examples/jsm/loaders/SPLATLoader.js +141 -0
  401. package/examples/jsm/loaders/SPZLoader.d.ts +18 -0
  402. package/examples/jsm/loaders/SPZLoader.js +563 -0
  403. package/examples/jsm/loaders/STLLoader.d.ts +7 -0
  404. package/examples/jsm/loaders/STLLoader.js +423 -0
  405. package/examples/jsm/loaders/SVGLoader.d.ts +67 -0
  406. package/examples/jsm/loaders/SVGLoader.js +3297 -0
  407. package/examples/jsm/loaders/TDSLoader.d.ts +35 -0
  408. package/examples/jsm/loaders/TDSLoader.js +1146 -0
  409. package/examples/jsm/loaders/TGALoader.d.ts +7 -0
  410. package/examples/jsm/loaders/TGALoader.js +539 -0
  411. package/examples/jsm/loaders/TIFFLoader.d.ts +7 -0
  412. package/examples/jsm/loaders/TIFFLoader.js +59 -0
  413. package/examples/jsm/loaders/TTFLoader.d.ts +10 -0
  414. package/examples/jsm/loaders/TTFLoader.js +263 -0
  415. package/examples/jsm/loaders/USDLoader.d.ts +14 -0
  416. package/examples/jsm/loaders/USDLoader.js +317 -0
  417. package/examples/jsm/loaders/USDZLoader.d.ts +14 -0
  418. package/examples/jsm/loaders/USDZLoader.js +16 -0
  419. package/examples/jsm/loaders/UltraHDRLoader.d.ts +28 -0
  420. package/examples/jsm/loaders/UltraHDRLoader.js +757 -0
  421. package/examples/jsm/loaders/VOXLoader.d.ts +38 -0
  422. package/examples/jsm/loaders/VOXLoader.js +922 -0
  423. package/examples/jsm/loaders/VRMLLoader.d.ts +7 -0
  424. package/examples/jsm/loaders/VRMLLoader.js +3650 -0
  425. package/examples/jsm/loaders/VTKLoader.d.ts +13 -0
  426. package/examples/jsm/loaders/VTKLoader.js +1295 -0
  427. package/examples/jsm/loaders/XYZLoader.d.ts +7 -0
  428. package/examples/jsm/loaders/XYZLoader.js +145 -0
  429. package/examples/jsm/loaders/collada/ColladaComposer.js +3051 -0
  430. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  431. package/examples/jsm/loaders/lwo/IFFParser.js +1217 -0
  432. package/examples/jsm/loaders/lwo/LWO2Parser.js +414 -0
  433. package/examples/jsm/loaders/lwo/LWO3Parser.js +373 -0
  434. package/examples/jsm/loaders/materialx/MaterialXArchive.js +108 -0
  435. package/examples/jsm/loaders/materialx/MaterialXDocument.js +1350 -0
  436. package/examples/jsm/loaders/materialx/MaterialXHextile.d.ts +24 -0
  437. package/examples/jsm/loaders/materialx/MaterialXHextile.js +183 -0
  438. package/examples/jsm/loaders/materialx/MaterialXInterfaceValidation.d.ts +8 -0
  439. package/examples/jsm/loaders/materialx/MaterialXInterfaceValidation.js +293 -0
  440. package/examples/jsm/loaders/materialx/MaterialXLog.d.ts +33 -0
  441. package/examples/jsm/loaders/materialx/MaterialXLog.js +79 -0
  442. package/examples/jsm/loaders/materialx/MaterialXNodeDefs.js +99 -0
  443. package/examples/jsm/loaders/materialx/MaterialXNodeInterfaceRegistry.js +763 -0
  444. package/examples/jsm/loaders/materialx/MaterialXNodeLibrary.js +871 -0
  445. package/examples/jsm/loaders/materialx/MaterialXSurfaceMappings.js +565 -0
  446. package/examples/jsm/loaders/materialx/MaterialXUtils.js +82 -0
  447. package/examples/jsm/loaders/materialx/compile/MaterialXCompileRegistry.js +999 -0
  448. package/examples/jsm/loaders/materialx/parse/MaterialXParser.js +28 -0
  449. package/examples/jsm/loaders/usd/USDAParser.js +923 -0
  450. package/examples/jsm/loaders/usd/USDCParser.js +1875 -0
  451. package/examples/jsm/loaders/usd/USDComposer.js +4660 -0
  452. package/examples/jsm/materials/LDrawConditionalLineMaterial.d.ts +9 -0
  453. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +183 -0
  454. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.d.ts +9 -0
  455. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +154 -0
  456. package/examples/jsm/materials/WoodNodeMaterial.d.ts +75 -0
  457. package/examples/jsm/materials/WoodNodeMaterial.js +431 -0
  458. package/examples/jsm/math/Capsule.d.ts +26 -0
  459. package/examples/jsm/math/Capsule.js +159 -0
  460. package/examples/jsm/math/ColorConverter.d.ts +19 -0
  461. package/examples/jsm/math/ColorConverter.js +62 -0
  462. package/examples/jsm/math/ColorSpaces.d.ts +15 -0
  463. package/examples/jsm/math/ColorSpaces.js +147 -0
  464. package/examples/jsm/math/ConvexHull.d.ts +89 -0
  465. package/examples/jsm/math/ConvexHull.js +1695 -0
  466. package/examples/jsm/math/ImprovedNoise.d.ts +4 -0
  467. package/examples/jsm/math/ImprovedNoise.js +88 -0
  468. package/examples/jsm/math/Lut.d.ts +27 -0
  469. package/examples/jsm/math/Lut.js +317 -0
  470. package/examples/jsm/math/MeshSurfaceSampler.d.ts +21 -0
  471. package/examples/jsm/math/MeshSurfaceSampler.js +315 -0
  472. package/examples/jsm/math/OBB.d.ts +24 -0
  473. package/examples/jsm/math/OBB.js +535 -0
  474. package/examples/jsm/math/Octree.d.ts +54 -0
  475. package/examples/jsm/math/Octree.js +825 -0
  476. package/examples/jsm/math/SimplexNoise.d.ts +9 -0
  477. package/examples/jsm/math/SimplexNoise.js +470 -0
  478. package/examples/jsm/misc/ConvexObjectBreaker.d.ts +25 -0
  479. package/examples/jsm/misc/ConvexObjectBreaker.js +539 -0
  480. package/examples/jsm/misc/GPUComputationRenderer.d.ts +55 -0
  481. package/examples/jsm/misc/GPUComputationRenderer.js +508 -0
  482. package/examples/jsm/misc/Gyroscope.d.ts +5 -0
  483. package/examples/jsm/misc/Gyroscope.js +78 -0
  484. package/examples/jsm/misc/MD2Character.d.ts +33 -0
  485. package/examples/jsm/misc/MD2Character.js +391 -0
  486. package/examples/jsm/misc/MD2CharacterComplex.d.ts +55 -0
  487. package/examples/jsm/misc/MD2CharacterComplex.js +740 -0
  488. package/examples/jsm/misc/MorphAnimMesh.d.ts +13 -0
  489. package/examples/jsm/misc/MorphAnimMesh.js +119 -0
  490. package/examples/jsm/misc/MorphBlendMesh.d.ts +21 -0
  491. package/examples/jsm/misc/MorphBlendMesh.js +425 -0
  492. package/examples/jsm/misc/ProgressiveLightMap.d.ts +58 -0
  493. package/examples/jsm/misc/ProgressiveLightMap.js +370 -0
  494. package/examples/jsm/misc/ProgressiveLightMapGPU.d.ts +27 -0
  495. package/examples/jsm/misc/ProgressiveLightMapGPU.js +322 -0
  496. package/examples/jsm/misc/RollerCoaster.d.ts +26 -0
  497. package/examples/jsm/misc/RollerCoaster.js +661 -0
  498. package/examples/jsm/misc/SculptGL.LICENSE.txt +21 -0
  499. package/examples/jsm/misc/Sculptor.d.ts +259 -0
  500. package/examples/jsm/misc/Sculptor.js +1679 -0
  501. package/examples/jsm/misc/SculptorMesh.js +1504 -0
  502. package/examples/jsm/misc/SculptorTools.js +1180 -0
  503. package/examples/jsm/misc/SculptorUtils.js +345 -0
  504. package/examples/jsm/misc/TileCreasedNormalsPlugin.d.ts +49 -0
  505. package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
  506. package/examples/jsm/misc/TubePainter.d.ts +10 -0
  507. package/examples/jsm/misc/TubePainter.js +611 -0
  508. package/examples/jsm/misc/Volume.d.ts +37 -0
  509. package/examples/jsm/misc/Volume.js +520 -0
  510. package/examples/jsm/misc/VolumeSlice.d.ts +28 -0
  511. package/examples/jsm/misc/VolumeSlice.js +275 -0
  512. package/examples/jsm/modifiers/CurveModifier.d.ts +41 -0
  513. package/examples/jsm/modifiers/CurveModifier.js +374 -0
  514. package/examples/jsm/modifiers/CurveModifierGPU.d.ts +31 -0
  515. package/examples/jsm/modifiers/CurveModifierGPU.js +256 -0
  516. package/examples/jsm/modifiers/EdgeSplitModifier.d.ts +26 -0
  517. package/examples/jsm/modifiers/EdgeSplitModifier.js +299 -0
  518. package/examples/jsm/modifiers/SimplifyModifier.d.ts +6 -0
  519. package/examples/jsm/modifiers/SimplifyModifier.js +139 -0
  520. package/examples/jsm/modifiers/TessellateModifier.d.ts +9 -0
  521. package/examples/jsm/modifiers/TessellateModifier.js +340 -0
  522. package/examples/jsm/objects/GaussianSplat.d.ts +35 -0
  523. package/examples/jsm/objects/GaussianSplat.js +1040 -0
  524. package/examples/jsm/objects/GroundedSkybox.d.ts +5 -0
  525. package/examples/jsm/objects/GroundedSkybox.js +69 -0
  526. package/examples/jsm/objects/Lensflare.d.ts +21 -0
  527. package/examples/jsm/objects/Lensflare.js +489 -0
  528. package/examples/jsm/objects/LensflareMesh.d.ts +21 -0
  529. package/examples/jsm/objects/LensflareMesh.js +376 -0
  530. package/examples/jsm/objects/MarchingCubes.d.ts +76 -0
  531. package/examples/jsm/objects/MarchingCubes.js +1261 -0
  532. package/examples/jsm/objects/Reflector.d.ts +54 -0
  533. package/examples/jsm/objects/Reflector.js +390 -0
  534. package/examples/jsm/objects/ReflectorForSSRPass.d.ts +62 -0
  535. package/examples/jsm/objects/ReflectorForSSRPass.js +393 -0
  536. package/examples/jsm/objects/Refractor.d.ts +21 -0
  537. package/examples/jsm/objects/Refractor.js +389 -0
  538. package/examples/jsm/objects/ShadowMesh.d.ts +10 -0
  539. package/examples/jsm/objects/ShadowMesh.js +130 -0
  540. package/examples/jsm/objects/Sky.d.ts +28 -0
  541. package/examples/jsm/objects/Sky.js +342 -0
  542. package/examples/jsm/objects/SkyMesh.d.ts +26 -0
  543. package/examples/jsm/objects/SkyMesh.js +403 -0
  544. package/examples/jsm/objects/Water.d.ts +22 -0
  545. package/examples/jsm/objects/Water.js +374 -0
  546. package/examples/jsm/objects/Water2.d.ts +21 -0
  547. package/examples/jsm/objects/Water2.js +403 -0
  548. package/examples/jsm/objects/Water2Mesh.d.ts +53 -0
  549. package/examples/jsm/objects/Water2Mesh.js +199 -0
  550. package/examples/jsm/objects/WaterMesh.d.ts +40 -0
  551. package/examples/jsm/objects/WaterMesh.js +194 -0
  552. package/examples/jsm/offscreen/jank.js +45 -0
  553. package/examples/jsm/offscreen/offscreen.js +8 -0
  554. package/examples/jsm/offscreen/scene.js +86 -0
  555. package/examples/jsm/physics/AmmoPhysics.d.ts +9 -0
  556. package/examples/jsm/physics/AmmoPhysics.js +366 -0
  557. package/examples/jsm/physics/JoltPhysics.d.ts +10 -0
  558. package/examples/jsm/physics/JoltPhysics.js +334 -0
  559. package/examples/jsm/physics/RapierPhysics.d.ts +26 -0
  560. package/examples/jsm/physics/RapierPhysics.js +461 -0
  561. package/examples/jsm/pipelines/MeshletDrawingPipeline.js +5571 -0
  562. package/examples/jsm/pipelines/VisibilityBufferDrawingPipeline.js +954 -0
  563. package/examples/jsm/postprocessing/AfterimagePass.d.ts +17 -0
  564. package/examples/jsm/postprocessing/AfterimagePass.js +187 -0
  565. package/examples/jsm/postprocessing/BloomPass.d.ts +14 -0
  566. package/examples/jsm/postprocessing/BloomPass.js +274 -0
  567. package/examples/jsm/postprocessing/BokehPass.d.ts +23 -0
  568. package/examples/jsm/postprocessing/BokehPass.js +218 -0
  569. package/examples/jsm/postprocessing/ClearPass.d.ts +9 -0
  570. package/examples/jsm/postprocessing/ClearPass.js +97 -0
  571. package/examples/jsm/postprocessing/CubeTexturePass.d.ts +14 -0
  572. package/examples/jsm/postprocessing/CubeTexturePass.js +146 -0
  573. package/examples/jsm/postprocessing/DotScreenPass.d.ts +10 -0
  574. package/examples/jsm/postprocessing/DotScreenPass.js +114 -0
  575. package/examples/jsm/postprocessing/EffectComposer.d.ts +30 -0
  576. package/examples/jsm/postprocessing/EffectComposer.js +365 -0
  577. package/examples/jsm/postprocessing/FXAAPass.d.ts +7 -0
  578. package/examples/jsm/postprocessing/FXAAPass.js +40 -0
  579. package/examples/jsm/postprocessing/FilmPass.d.ts +10 -0
  580. package/examples/jsm/postprocessing/FilmPass.js +113 -0
  581. package/examples/jsm/postprocessing/GTAOPass.d.ts +121 -0
  582. package/examples/jsm/postprocessing/GTAOPass.js +735 -0
  583. package/examples/jsm/postprocessing/GlitchPass.d.ts +16 -0
  584. package/examples/jsm/postprocessing/GlitchPass.js +177 -0
  585. package/examples/jsm/postprocessing/HalftonePass.d.ts +37 -0
  586. package/examples/jsm/postprocessing/HalftonePass.js +134 -0
  587. package/examples/jsm/postprocessing/LUTPass.d.ts +13 -0
  588. package/examples/jsm/postprocessing/LUTPass.js +138 -0
  589. package/examples/jsm/postprocessing/MaskPass.d.ts +14 -0
  590. package/examples/jsm/postprocessing/MaskPass.js +195 -0
  591. package/examples/jsm/postprocessing/OutlinePass.d.ts +64 -0
  592. package/examples/jsm/postprocessing/OutlinePass.js +776 -0
  593. package/examples/jsm/postprocessing/OutputPass.d.ts +14 -0
  594. package/examples/jsm/postprocessing/OutputPass.js +148 -0
  595. package/examples/jsm/postprocessing/Pass.d.ts +31 -0
  596. package/examples/jsm/postprocessing/Pass.js +191 -0
  597. package/examples/jsm/postprocessing/RenderPass.d.ts +28 -0
  598. package/examples/jsm/postprocessing/RenderPass.js +193 -0
  599. package/examples/jsm/postprocessing/RenderPixelatedPass.d.ts +30 -0
  600. package/examples/jsm/postprocessing/RenderPixelatedPass.js +314 -0
  601. package/examples/jsm/postprocessing/RenderTransitionPass.d.ts +33 -0
  602. package/examples/jsm/postprocessing/RenderTransitionPass.js +267 -0
  603. package/examples/jsm/postprocessing/SAOPass.d.ts +70 -0
  604. package/examples/jsm/postprocessing/SAOPass.js +407 -0
  605. package/examples/jsm/postprocessing/SMAAPass.d.ts +21 -0
  606. package/examples/jsm/postprocessing/SMAAPass.js +230 -0
  607. package/examples/jsm/postprocessing/SSAARenderPass.d.ts +26 -0
  608. package/examples/jsm/postprocessing/SSAARenderPass.js +313 -0
  609. package/examples/jsm/postprocessing/SSAOPass.d.ts +68 -0
  610. package/examples/jsm/postprocessing/SSAOPass.js +527 -0
  611. package/examples/jsm/postprocessing/SSRPass.d.ts +99 -0
  612. package/examples/jsm/postprocessing/SSRPass.js +858 -0
  613. package/examples/jsm/postprocessing/SavePass.d.ts +12 -0
  614. package/examples/jsm/postprocessing/SavePass.js +132 -0
  615. package/examples/jsm/postprocessing/ShaderPass.d.ts +11 -0
  616. package/examples/jsm/postprocessing/ShaderPass.js +135 -0
  617. package/examples/jsm/postprocessing/TAARenderPass.d.ts +8 -0
  618. package/examples/jsm/postprocessing/TAARenderPass.js +243 -0
  619. package/examples/jsm/postprocessing/TexturePass.d.ts +12 -0
  620. package/examples/jsm/postprocessing/TexturePass.js +131 -0
  621. package/examples/jsm/postprocessing/UnrealBloomPass.d.ts +26 -0
  622. package/examples/jsm/postprocessing/UnrealBloomPass.js +541 -0
  623. package/examples/jsm/renderers/CSS2DRenderer.d.ts +29 -0
  624. package/examples/jsm/renderers/CSS2DRenderer.js +352 -0
  625. package/examples/jsm/renderers/CSS3DRenderer.d.ts +26 -0
  626. package/examples/jsm/renderers/CSS3DRenderer.js +454 -0
  627. package/examples/jsm/renderers/Projector.d.ts +60 -0
  628. package/examples/jsm/renderers/Projector.js +1154 -0
  629. package/examples/jsm/renderers/SVGRenderer.d.ts +26 -0
  630. package/examples/jsm/renderers/SVGRenderer.js +800 -0
  631. package/examples/jsm/shaders/ACESFilmicToneMappingShader.d.ts +11 -0
  632. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +96 -0
  633. package/examples/jsm/shaders/AfterimageShader.d.ts +12 -0
  634. package/examples/jsm/shaders/AfterimageShader.js +63 -0
  635. package/examples/jsm/shaders/BasicShader.d.ts +6 -0
  636. package/examples/jsm/shaders/BasicShader.js +36 -0
  637. package/examples/jsm/shaders/BleachBypassShader.d.ts +10 -0
  638. package/examples/jsm/shaders/BleachBypassShader.js +68 -0
  639. package/examples/jsm/shaders/BlendShader.d.ts +13 -0
  640. package/examples/jsm/shaders/BlendShader.js +56 -0
  641. package/examples/jsm/shaders/BokehShader.d.ts +21 -0
  642. package/examples/jsm/shaders/BokehShader.js +151 -0
  643. package/examples/jsm/shaders/BokehShader2.d.ts +44 -0
  644. package/examples/jsm/shaders/BokehShader2.js +404 -0
  645. package/examples/jsm/shaders/BrightnessContrastShader.d.ts +12 -0
  646. package/examples/jsm/shaders/BrightnessContrastShader.js +62 -0
  647. package/examples/jsm/shaders/ColorCorrectionShader.d.ts +13 -0
  648. package/examples/jsm/shaders/ColorCorrectionShader.js +59 -0
  649. package/examples/jsm/shaders/ColorifyShader.d.ts +10 -0
  650. package/examples/jsm/shaders/ColorifyShader.js +57 -0
  651. package/examples/jsm/shaders/ConvolutionShader.d.ts +17 -0
  652. package/examples/jsm/shaders/ConvolutionShader.js +74 -0
  653. package/examples/jsm/shaders/CopyShader.d.ts +10 -0
  654. package/examples/jsm/shaders/CopyShader.js +52 -0
  655. package/examples/jsm/shaders/DOFMipMapShader.d.ts +13 -0
  656. package/examples/jsm/shaders/DOFMipMapShader.js +63 -0
  657. package/examples/jsm/shaders/DepthLimitedBlurShader.d.ts +28 -0
  658. package/examples/jsm/shaders/DepthLimitedBlurShader.js +183 -0
  659. package/examples/jsm/shaders/DigitalGlitch.d.ts +19 -0
  660. package/examples/jsm/shaders/DigitalGlitch.js +104 -0
  661. package/examples/jsm/shaders/DotScreenShader.d.ts +13 -0
  662. package/examples/jsm/shaders/DotScreenShader.js +75 -0
  663. package/examples/jsm/shaders/ExposureShader.d.ts +11 -0
  664. package/examples/jsm/shaders/ExposureShader.js +51 -0
  665. package/examples/jsm/shaders/FXAAShader.d.ts +11 -0
  666. package/examples/jsm/shaders/FXAAShader.js +298 -0
  667. package/examples/jsm/shaders/FilmShader.d.ts +12 -0
  668. package/examples/jsm/shaders/FilmShader.js +73 -0
  669. package/examples/jsm/shaders/FocusShader.d.ts +14 -0
  670. package/examples/jsm/shaders/FocusShader.js +94 -0
  671. package/examples/jsm/shaders/FreiChenShader.d.ts +11 -0
  672. package/examples/jsm/shaders/FreiChenShader.js +103 -0
  673. package/examples/jsm/shaders/GTAOShader.d.ts +59 -0
  674. package/examples/jsm/shaders/GTAOShader.js +437 -0
  675. package/examples/jsm/shaders/GammaCorrectionShader.d.ts +9 -0
  676. package/examples/jsm/shaders/GammaCorrectionShader.js +52 -0
  677. package/examples/jsm/shaders/HalftoneShader.d.ts +22 -0
  678. package/examples/jsm/shaders/HalftoneShader.js +332 -0
  679. package/examples/jsm/shaders/HorizontalBlurShader.d.ts +10 -0
  680. package/examples/jsm/shaders/HorizontalBlurShader.js +68 -0
  681. package/examples/jsm/shaders/HorizontalTiltShiftShader.d.ts +12 -0
  682. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +70 -0
  683. package/examples/jsm/shaders/HueSaturationShader.d.ts +12 -0
  684. package/examples/jsm/shaders/HueSaturationShader.js +74 -0
  685. package/examples/jsm/shaders/KaleidoShader.d.ts +12 -0
  686. package/examples/jsm/shaders/KaleidoShader.js +65 -0
  687. package/examples/jsm/shaders/LuminosityHighPassShader.d.ts +15 -0
  688. package/examples/jsm/shaders/LuminosityHighPassShader.js +68 -0
  689. package/examples/jsm/shaders/LuminosityShader.d.ts +10 -0
  690. package/examples/jsm/shaders/LuminosityShader.js +54 -0
  691. package/examples/jsm/shaders/MirrorShader.d.ts +11 -0
  692. package/examples/jsm/shaders/MirrorShader.js +62 -0
  693. package/examples/jsm/shaders/NormalMapShader.d.ts +13 -0
  694. package/examples/jsm/shaders/NormalMapShader.js +60 -0
  695. package/examples/jsm/shaders/OutputShader.d.ts +11 -0
  696. package/examples/jsm/shaders/OutputShader.js +103 -0
  697. package/examples/jsm/shaders/PoissonDenoiseShader.d.ts +28 -0
  698. package/examples/jsm/shaders/PoissonDenoiseShader.js +230 -0
  699. package/examples/jsm/shaders/RGBShiftShader.d.ts +11 -0
  700. package/examples/jsm/shaders/RGBShiftShader.js +61 -0
  701. package/examples/jsm/shaders/SAOShader.d.ts +29 -0
  702. package/examples/jsm/shaders/SAOShader.js +201 -0
  703. package/examples/jsm/shaders/SMAAShader.d.ts +43 -0
  704. package/examples/jsm/shaders/SMAAShader.js +489 -0
  705. package/examples/jsm/shaders/SSAOShader.d.ts +49 -0
  706. package/examples/jsm/shaders/SSAOShader.js +331 -0
  707. package/examples/jsm/shaders/SSRShader.d.ts +62 -0
  708. package/examples/jsm/shaders/SSRShader.js +396 -0
  709. package/examples/jsm/shaders/SepiaShader.d.ts +10 -0
  710. package/examples/jsm/shaders/SepiaShader.js +57 -0
  711. package/examples/jsm/shaders/SobelOperatorShader.d.ts +11 -0
  712. package/examples/jsm/shaders/SobelOperatorShader.js +98 -0
  713. package/examples/jsm/shaders/SubsurfaceScatteringShader.d.ts +38 -0
  714. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +95 -0
  715. package/examples/jsm/shaders/TechnicolorShader.d.ts +10 -0
  716. package/examples/jsm/shaders/TechnicolorShader.js +51 -0
  717. package/examples/jsm/shaders/ToonShader.d.ts +54 -0
  718. package/examples/jsm/shaders/ToonShader.js +349 -0
  719. package/examples/jsm/shaders/TriangleBlurShader.d.ts +11 -0
  720. package/examples/jsm/shaders/TriangleBlurShader.js +79 -0
  721. package/examples/jsm/shaders/UnpackDepthRGBAShader.d.ts +11 -0
  722. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +60 -0
  723. package/examples/jsm/shaders/VelocityShader.d.ts +16 -0
  724. package/examples/jsm/shaders/VelocityShader.js +137 -0
  725. package/examples/jsm/shaders/VerticalBlurShader.d.ts +10 -0
  726. package/examples/jsm/shaders/VerticalBlurShader.js +66 -0
  727. package/examples/jsm/shaders/VerticalTiltShiftShader.d.ts +12 -0
  728. package/examples/jsm/shaders/VerticalTiltShiftShader.js +70 -0
  729. package/examples/jsm/shaders/VignetteShader.d.ts +11 -0
  730. package/examples/jsm/shaders/VignetteShader.js +56 -0
  731. package/examples/jsm/shaders/VolumeShader.d.ts +14 -0
  732. package/examples/jsm/shaders/VolumeShader.js +285 -0
  733. package/examples/jsm/shaders/WaterRefractionShader.d.ts +14 -0
  734. package/examples/jsm/shaders/WaterRefractionShader.js +106 -0
  735. package/examples/jsm/textures/FlakesTexture.d.ts +3 -0
  736. package/examples/jsm/textures/FlakesTexture.js +54 -0
  737. package/examples/jsm/transpiler/AST.d.ts +293 -0
  738. package/examples/jsm/transpiler/AST.js +694 -0
  739. package/examples/jsm/transpiler/GLSLDecoder.d.ts +7 -0
  740. package/examples/jsm/transpiler/GLSLDecoder.js +1718 -0
  741. package/examples/jsm/transpiler/Linker.js +327 -0
  742. package/examples/jsm/transpiler/ShaderToyDecoder.d.ts +3 -0
  743. package/examples/jsm/transpiler/ShaderToyDecoder.js +51 -0
  744. package/examples/jsm/transpiler/TSLEncoder.d.ts +51 -0
  745. package/examples/jsm/transpiler/TSLEncoder.js +1055 -0
  746. package/examples/jsm/transpiler/Transpiler.d.ts +5 -0
  747. package/examples/jsm/transpiler/Transpiler.js +67 -0
  748. package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  749. package/examples/jsm/transpiler/WGSLEncoder.js +868 -0
  750. package/examples/jsm/tsl/WebGLNodesHandler.d.ts +17 -0
  751. package/examples/jsm/tsl/WebGLNodesHandler.js +607 -0
  752. package/examples/jsm/tsl/display/AfterImageNode.d.ts +15 -0
  753. package/examples/jsm/tsl/display/AfterImageNode.js +256 -0
  754. package/examples/jsm/tsl/display/AnaglyphPassNode.d.ts +42 -0
  755. package/examples/jsm/tsl/display/AnaglyphPassNode.js +550 -0
  756. package/examples/jsm/tsl/display/BilateralBlurNode.d.ts +27 -0
  757. package/examples/jsm/tsl/display/BilateralBlurNode.js +377 -0
  758. package/examples/jsm/tsl/display/BleachBypass.d.ts +3 -0
  759. package/examples/jsm/tsl/display/BleachBypass.js +33 -0
  760. package/examples/jsm/tsl/display/BloomNode.d.ts +44 -0
  761. package/examples/jsm/tsl/display/BloomNode.js +599 -0
  762. package/examples/jsm/tsl/display/CRT.d.ts +22 -0
  763. package/examples/jsm/tsl/display/CRT.js +150 -0
  764. package/examples/jsm/tsl/display/ChromaticAberrationNode.d.ts +19 -0
  765. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +163 -0
  766. package/examples/jsm/tsl/display/DenoiseNode.d.ts +26 -0
  767. package/examples/jsm/tsl/display/DenoiseNode.js +354 -0
  768. package/examples/jsm/tsl/display/DepthOfFieldNode.d.ts +28 -0
  769. package/examples/jsm/tsl/display/DepthOfFieldNode.js +572 -0
  770. package/examples/jsm/tsl/display/DotScreenNode.d.ts +17 -0
  771. package/examples/jsm/tsl/display/DotScreenNode.js +104 -0
  772. package/examples/jsm/tsl/display/FSR1Node.d.ts +17 -0
  773. package/examples/jsm/tsl/display/FSR1Node.js +481 -0
  774. package/examples/jsm/tsl/display/FXAANode.d.ts +11 -0
  775. package/examples/jsm/tsl/display/FXAANode.js +357 -0
  776. package/examples/jsm/tsl/display/FilmNode.d.ts +17 -0
  777. package/examples/jsm/tsl/display/FilmNode.js +101 -0
  778. package/examples/jsm/tsl/display/GTAONode.d.ts +37 -0
  779. package/examples/jsm/tsl/display/GTAONode.js +727 -0
  780. package/examples/jsm/tsl/display/GaussianBlurNode.d.ts +56 -0
  781. package/examples/jsm/tsl/display/GaussianBlurNode.js +412 -0
  782. package/examples/jsm/tsl/display/GodraysNode.d.ts +20 -0
  783. package/examples/jsm/tsl/display/GodraysNode.js +604 -0
  784. package/examples/jsm/tsl/display/ImportanceSampledEnvironment.d.ts +84 -0
  785. package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +564 -0
  786. package/examples/jsm/tsl/display/LensflareNode.d.ts +34 -0
  787. package/examples/jsm/tsl/display/LensflareNode.js +282 -0
  788. package/examples/jsm/tsl/display/Lut3DNode.d.ts +19 -0
  789. package/examples/jsm/tsl/display/Lut3DNode.js +109 -0
  790. package/examples/jsm/tsl/display/MotionBlur.d.ts +7 -0
  791. package/examples/jsm/tsl/display/MotionBlur.js +33 -0
  792. package/examples/jsm/tsl/display/OITPassNode.d.ts +64 -0
  793. package/examples/jsm/tsl/display/OITPassNode.js +341 -0
  794. package/examples/jsm/tsl/display/OutlineNode.d.ts +31 -0
  795. package/examples/jsm/tsl/display/OutlineNode.js +916 -0
  796. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.d.ts +12 -0
  797. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +90 -0
  798. package/examples/jsm/tsl/display/PixelationPassNode.d.ts +27 -0
  799. package/examples/jsm/tsl/display/PixelationPassNode.js +227 -0
  800. package/examples/jsm/tsl/display/RGBShiftNode.d.ts +15 -0
  801. package/examples/jsm/tsl/display/RGBShiftNode.js +96 -0
  802. package/examples/jsm/tsl/display/RecurrentDenoiseNode.d.ts +89 -0
  803. package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +812 -0
  804. package/examples/jsm/tsl/display/RetroPassNode.d.ts +17 -0
  805. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  806. package/examples/jsm/tsl/display/SMAANode.d.ts +17 -0
  807. package/examples/jsm/tsl/display/SMAANode.js +729 -0
  808. package/examples/jsm/tsl/display/SSAAPassNode.d.ts +18 -0
  809. package/examples/jsm/tsl/display/SSAAPassNode.js +344 -0
  810. package/examples/jsm/tsl/display/SSAONode.d.ts +116 -0
  811. package/examples/jsm/tsl/display/SSAONode.js +422 -0
  812. package/examples/jsm/tsl/display/SSGINode.d.ts +33 -0
  813. package/examples/jsm/tsl/display/SSGINode.js +698 -0
  814. package/examples/jsm/tsl/display/SSRNode.d.ts +315 -0
  815. package/examples/jsm/tsl/display/SSRNode.js +1430 -0
  816. package/examples/jsm/tsl/display/SSSNode.d.ts +20 -0
  817. package/examples/jsm/tsl/display/SSSNode.js +479 -0
  818. package/examples/jsm/tsl/display/Sepia.d.ts +3 -0
  819. package/examples/jsm/tsl/display/Sepia.js +24 -0
  820. package/examples/jsm/tsl/display/Shape.d.ts +3 -0
  821. package/examples/jsm/tsl/display/Shape.js +29 -0
  822. package/examples/jsm/tsl/display/SharpenNode.d.ts +22 -0
  823. package/examples/jsm/tsl/display/SharpenNode.js +284 -0
  824. package/examples/jsm/tsl/display/SobelOperatorNode.d.ts +11 -0
  825. package/examples/jsm/tsl/display/SobelOperatorNode.js +168 -0
  826. package/examples/jsm/tsl/display/StereoCompositePassNode.d.ts +13 -0
  827. package/examples/jsm/tsl/display/StereoCompositePassNode.js +190 -0
  828. package/examples/jsm/tsl/display/StereoPassNode.d.ts +13 -0
  829. package/examples/jsm/tsl/display/StereoPassNode.js +117 -0
  830. package/examples/jsm/tsl/display/TAAUNode.d.ts +31 -0
  831. package/examples/jsm/tsl/display/TAAUNode.js +700 -0
  832. package/examples/jsm/tsl/display/TRAANode.d.ts +26 -0
  833. package/examples/jsm/tsl/display/TRAANode.js +609 -0
  834. package/examples/jsm/tsl/display/TemporalReprojectNode.d.ts +64 -0
  835. package/examples/jsm/tsl/display/TemporalReprojectNode.js +1024 -0
  836. package/examples/jsm/tsl/display/TransitionNode.d.ts +31 -0
  837. package/examples/jsm/tsl/display/TransitionNode.js +141 -0
  838. package/examples/jsm/tsl/display/boxBlur.d.ts +10 -0
  839. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  840. package/examples/jsm/tsl/display/depthAwareBlend.d.ts +15 -0
  841. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  842. package/examples/jsm/tsl/display/depthAwareBlur.d.ts +10 -0
  843. package/examples/jsm/tsl/display/depthAwareBlur.js +63 -0
  844. package/examples/jsm/tsl/display/hashBlur.d.ts +12 -0
  845. package/examples/jsm/tsl/display/hashBlur.js +55 -0
  846. package/examples/jsm/tsl/display/lensDirt.js +30 -0
  847. package/examples/jsm/tsl/display/radialBlur.d.ts +12 -0
  848. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  849. package/examples/jsm/tsl/lighting/ClusteredLightsNode.d.ts +54 -0
  850. package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +994 -0
  851. package/examples/jsm/tsl/lighting/DynamicLightsNode.d.ts +21 -0
  852. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +201 -0
  853. package/examples/jsm/tsl/lighting/LightProbeGridNode.js +183 -0
  854. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.d.ts +9 -0
  855. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +67 -0
  856. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.d.ts +9 -0
  857. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +117 -0
  858. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.d.ts +9 -0
  859. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +105 -0
  860. package/examples/jsm/tsl/lighting/data/PointLightDataNode.d.ts +9 -0
  861. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +140 -0
  862. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.d.ts +9 -0
  863. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +167 -0
  864. package/examples/jsm/tsl/math/Bayer.d.ts +5 -0
  865. package/examples/jsm/tsl/math/Bayer.js +84 -0
  866. package/examples/jsm/tsl/math/curlNoise.d.ts +38 -0
  867. package/examples/jsm/tsl/math/curlNoise.js +107 -0
  868. package/examples/jsm/tsl/math/voronoiNoise.d.ts +52 -0
  869. package/examples/jsm/tsl/math/voronoiNoise.js +112 -0
  870. package/examples/jsm/tsl/shadows/TileShadowNode.d.ts +14 -0
  871. package/examples/jsm/tsl/shadows/TileShadowNode.js +542 -0
  872. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.d.ts +14 -0
  873. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  874. package/examples/jsm/tsl/utils/GroundedSkybox.d.ts +17 -0
  875. package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
  876. package/examples/jsm/tsl/utils/RNoise.d.ts +12 -0
  877. package/examples/jsm/tsl/utils/RNoise.js +51 -0
  878. package/examples/jsm/tsl/utils/Raymarching.d.ts +8 -0
  879. package/examples/jsm/tsl/utils/Raymarching.js +70 -0
  880. package/examples/jsm/tsl/utils/SoftParticles.d.ts +21 -0
  881. package/examples/jsm/tsl/utils/SoftParticles.js +53 -0
  882. package/examples/jsm/tsl/utils/SpecularHelpers.d.ts +20 -0
  883. package/examples/jsm/tsl/utils/SpecularHelpers.js +302 -0
  884. package/examples/jsm/tsl/utils/TAAUtils.js +184 -0
  885. package/examples/jsm/utils/BufferGeometryUtils.d.ts +37 -0
  886. package/examples/jsm/utils/BufferGeometryUtils.js +1523 -0
  887. package/examples/jsm/utils/CameraUtils.d.ts +9 -0
  888. package/examples/jsm/utils/CameraUtils.js +82 -0
  889. package/examples/jsm/utils/ColorUtils.d.ts +5 -0
  890. package/examples/jsm/utils/ColorUtils.js +76 -0
  891. package/examples/jsm/utils/GaussianSplatUtils.d.ts +68 -0
  892. package/examples/jsm/utils/GaussianSplatUtils.js +229 -0
  893. package/examples/jsm/utils/GeometryCompressionUtils.d.ts +21 -0
  894. package/examples/jsm/utils/GeometryCompressionUtils.js +547 -0
  895. package/examples/jsm/utils/GeometryUtils.d.ts +25 -0
  896. package/examples/jsm/utils/GeometryUtils.js +226 -0
  897. package/examples/jsm/utils/LDrawUtils.d.ts +5 -0
  898. package/examples/jsm/utils/LDrawUtils.js +211 -0
  899. package/examples/jsm/utils/MeshletGeometryUtils.js +417 -0
  900. package/examples/jsm/utils/SceneOptimizer.d.ts +18 -0
  901. package/examples/jsm/utils/SceneOptimizer.js +459 -0
  902. package/examples/jsm/utils/SceneUtils.d.ts +57 -0
  903. package/examples/jsm/utils/SceneUtils.js +363 -0
  904. package/examples/jsm/utils/ShadowMapViewer.d.ts +26 -0
  905. package/examples/jsm/utils/ShadowMapViewer.js +244 -0
  906. package/examples/jsm/utils/ShadowMapViewerGPU.d.ts +26 -0
  907. package/examples/jsm/utils/ShadowMapViewerGPU.js +233 -0
  908. package/examples/jsm/utils/SkeletonUtils.d.ts +32 -0
  909. package/examples/jsm/utils/SkeletonUtils.js +496 -0
  910. package/examples/jsm/utils/SortUtils.d.ts +7 -0
  911. package/examples/jsm/utils/SortUtils.js +175 -0
  912. package/examples/jsm/utils/UVsDebug.d.ts +3 -0
  913. package/examples/jsm/utils/UVsDebug.js +173 -0
  914. package/examples/jsm/utils/WebGLTextureUtils.d.ts +3 -0
  915. package/examples/jsm/utils/WebGLTextureUtils.js +115 -0
  916. package/examples/jsm/utils/WebGPUTextureUtils.d.ts +3 -0
  917. package/examples/jsm/utils/WebGPUTextureUtils.js +81 -0
  918. package/examples/jsm/utils/WorkerPool.d.ts +26 -0
  919. package/examples/jsm/utils/WorkerPool.js +167 -0
  920. package/examples/jsm/utils/unwrapUVs.js +865 -0
  921. package/examples/jsm/webxr/ARButton.d.ts +9 -0
  922. package/examples/jsm/webxr/ARButton.js +251 -0
  923. package/examples/jsm/webxr/OculusHandModel.d.ts +23 -0
  924. package/examples/jsm/webxr/OculusHandModel.js +194 -0
  925. package/examples/jsm/webxr/OculusHandPointerModel.d.ts +67 -0
  926. package/examples/jsm/webxr/OculusHandPointerModel.js +539 -0
  927. package/examples/jsm/webxr/Text2D.d.ts +3 -0
  928. package/examples/jsm/webxr/Text2D.js +52 -0
  929. package/examples/jsm/webxr/VRButton.d.ts +7 -0
  930. package/examples/jsm/webxr/VRButton.js +264 -0
  931. package/examples/jsm/webxr/WebGLXRFallback.d.ts +14 -0
  932. package/examples/jsm/webxr/WebGLXRFallback.js +75 -0
  933. package/examples/jsm/webxr/XRButton.d.ts +7 -0
  934. package/examples/jsm/webxr/XRButton.js +246 -0
  935. package/examples/jsm/webxr/XRControllerModelFactory.d.ts +23 -0
  936. package/examples/jsm/webxr/XRControllerModelFactory.js +415 -0
  937. package/examples/jsm/webxr/XREstimatedLight.d.ts +69 -0
  938. package/examples/jsm/webxr/XREstimatedLight.js +261 -0
  939. package/examples/jsm/webxr/XRHandMeshModel.d.ts +20 -0
  940. package/examples/jsm/webxr/XRHandMeshModel.js +177 -0
  941. package/examples/jsm/webxr/XRHandModelFactory.d.ts +32 -0
  942. package/examples/jsm/webxr/XRHandModelFactory.js +198 -0
  943. package/examples/jsm/webxr/XRHandPrimitiveModel.d.ts +24 -0
  944. package/examples/jsm/webxr/XRHandPrimitiveModel.js +147 -0
  945. package/examples/jsm/webxr/XRPlanes.d.ts +5 -0
  946. package/examples/jsm/webxr/XRPlanes.js +118 -0
  947. package/index.d.ts +6 -0
  948. package/package.json +68 -4
  949. package/src/Three.Core.d.ts +176 -0
  950. package/src/Three.Core.js +189 -0
  951. package/src/Three.Legacy.js +0 -0
  952. package/src/Three.TSL.d.ts +686 -0
  953. package/src/Three.TSL.js +3 -0
  954. package/src/Three.WebGPU.Nodes.d.ts +36 -0
  955. package/src/Three.WebGPU.Nodes.js +34 -0
  956. package/src/Three.WebGPU.d.ts +44 -0
  957. package/src/Three.WebGPU.js +44 -0
  958. package/src/Three.d.ts +47 -0
  959. package/src/Three.js +10 -0
  960. package/src/animation/AnimationAction.d.ts +286 -0
  961. package/src/animation/AnimationAction.js +946 -0
  962. package/src/animation/AnimationClip.d.ts +168 -0
  963. package/src/animation/AnimationClip.js +502 -0
  964. package/src/animation/AnimationMixer.d.ts +175 -0
  965. package/src/animation/AnimationMixer.js +860 -0
  966. package/src/animation/AnimationObjectGroup.d.ts +58 -0
  967. package/src/animation/AnimationObjectGroup.js +423 -0
  968. package/src/animation/AnimationUtils.d.ts +182 -0
  969. package/src/animation/AnimationUtils.js +519 -0
  970. package/src/animation/KeyframeTrack.d.ts +197 -0
  971. package/src/animation/KeyframeTrack.js +692 -0
  972. package/src/animation/PropertyBinding.d.ts +101 -0
  973. package/src/animation/PropertyBinding.js +794 -0
  974. package/src/animation/PropertyMixer.d.ts +75 -0
  975. package/src/animation/PropertyMixer.js +385 -0
  976. package/src/animation/tracks/BooleanKeyframeTrack.d.ts +18 -0
  977. package/src/animation/tracks/BooleanKeyframeTrack.js +55 -0
  978. package/src/animation/tracks/ColorKeyframeTrack.d.ts +17 -0
  979. package/src/animation/tracks/ColorKeyframeTrack.js +36 -0
  980. package/src/animation/tracks/NumberKeyframeTrack.d.ts +17 -0
  981. package/src/animation/tracks/NumberKeyframeTrack.js +36 -0
  982. package/src/animation/tracks/QuaternionKeyframeTrack.d.ts +17 -0
  983. package/src/animation/tracks/QuaternionKeyframeTrack.js +51 -0
  984. package/src/animation/tracks/StringKeyframeTrack.d.ts +18 -0
  985. package/src/animation/tracks/StringKeyframeTrack.js +55 -0
  986. package/src/animation/tracks/VectorKeyframeTrack.d.ts +17 -0
  987. package/src/animation/tracks/VectorKeyframeTrack.js +36 -0
  988. package/src/audio/Audio.d.ts +340 -0
  989. package/src/audio/Audio.js +778 -0
  990. package/src/audio/AudioAnalyser.d.ts +63 -0
  991. package/src/audio/AudioAnalyser.js +97 -0
  992. package/src/audio/AudioContext.d.ts +19 -0
  993. package/src/audio/AudioContext.js +40 -0
  994. package/src/audio/AudioListener.d.ts +75 -0
  995. package/src/audio/AudioListener.js +218 -0
  996. package/src/audio/PositionalAudio.d.ts +108 -0
  997. package/src/audio/PositionalAudio.js +253 -0
  998. package/src/cameras/ArrayCamera.d.ts +35 -0
  999. package/src/cameras/ArrayCamera.js +66 -0
  1000. package/src/cameras/Camera.d.ts +42 -0
  1001. package/src/cameras/Camera.js +160 -0
  1002. package/src/cameras/CubeCamera.d.ts +89 -0
  1003. package/src/cameras/CubeCamera.js +259 -0
  1004. package/src/cameras/OrthographicCamera.d.ts +144 -0
  1005. package/src/cameras/OrthographicCamera.js +245 -0
  1006. package/src/cameras/PerspectiveCamera.d.ts +241 -0
  1007. package/src/cameras/PerspectiveCamera.js +407 -0
  1008. package/src/cameras/StereoCamera.d.ts +44 -0
  1009. package/src/cameras/StereoCamera.js +149 -0
  1010. package/src/constants.d.ts +976 -0
  1011. package/src/constants.js +1774 -0
  1012. package/src/core/BufferAttribute.d.ts +650 -0
  1013. package/src/core/BufferAttribute.js +1093 -0
  1014. package/src/core/BufferGeometry.d.ts +442 -0
  1015. package/src/core/BufferGeometry.js +1472 -0
  1016. package/src/core/Clock.d.ts +73 -0
  1017. package/src/core/Clock.js +135 -0
  1018. package/src/core/EventDispatcher.d.ts +82 -0
  1019. package/src/core/EventDispatcher.js +131 -0
  1020. package/src/core/GLBufferAttribute.d.ts +138 -0
  1021. package/src/core/GLBufferAttribute.js +171 -0
  1022. package/src/core/InstancedBufferAttribute.d.ts +32 -0
  1023. package/src/core/InstancedBufferAttribute.js +68 -0
  1024. package/src/core/InstancedBufferGeometry.d.ts +37 -0
  1025. package/src/core/InstancedBufferGeometry.js +60 -0
  1026. package/src/core/InstancedInterleavedBuffer.d.ts +22 -0
  1027. package/src/core/InstancedInterleavedBuffer.js +74 -0
  1028. package/src/core/InterleavedBuffer.d.ts +162 -0
  1029. package/src/core/InterleavedBuffer.js +305 -0
  1030. package/src/core/InterleavedBufferAttribute.d.ts +201 -0
  1031. package/src/core/InterleavedBufferAttribute.js +583 -0
  1032. package/src/core/Layers.d.ts +72 -0
  1033. package/src/core/Layers.js +121 -0
  1034. package/src/core/Object3D.d.ts +725 -0
  1035. package/src/core/Object3D.js +1719 -0
  1036. package/src/core/Raycaster.d.ts +212 -0
  1037. package/src/core/Raycaster.js +268 -0
  1038. package/src/core/RenderTarget.d.ts +153 -0
  1039. package/src/core/RenderTarget.js +501 -0
  1040. package/src/core/RenderTarget3D.d.ts +9 -0
  1041. package/src/core/RenderTarget3D.js +52 -0
  1042. package/src/core/Timer.d.ts +77 -0
  1043. package/src/core/Timer.js +184 -0
  1044. package/src/core/Uniform.d.ts +38 -0
  1045. package/src/core/Uniform.js +46 -0
  1046. package/src/core/UniformsGroup.d.ts +39 -0
  1047. package/src/core/UniformsGroup.js +184 -0
  1048. package/src/extras/Controls.d.ts +59 -0
  1049. package/src/extras/Controls.js +112 -0
  1050. package/src/extras/DataUtils.d.ts +22 -0
  1051. package/src/extras/DataUtils.js +217 -0
  1052. package/src/extras/Earcut.d.ts +17 -0
  1053. package/src/extras/Earcut.js +28 -0
  1054. package/src/extras/ImageUtils.d.ts +33 -0
  1055. package/src/extras/ImageUtils.js +137 -0
  1056. package/src/extras/PMREMGenerator.d.ts +95 -0
  1057. package/src/extras/PMREMGenerator.js +770 -0
  1058. package/src/extras/ShapeUtils.d.ts +25 -0
  1059. package/src/extras/ShapeUtils.js +114 -0
  1060. package/src/extras/TextureUtils.d.ts +42 -0
  1061. package/src/extras/TextureUtils.js +297 -0
  1062. package/src/extras/core/Curve.d.ts +162 -0
  1063. package/src/extras/core/Curve.js +521 -0
  1064. package/src/extras/core/CurvePath.d.ts +77 -0
  1065. package/src/extras/core/CurvePath.js +309 -0
  1066. package/src/extras/core/Interpolations.d.ts +36 -0
  1067. package/src/extras/core/Interpolations.js +111 -0
  1068. package/src/extras/core/Path.d.ts +166 -0
  1069. package/src/extras/core/Path.js +329 -0
  1070. package/src/extras/core/Shape.d.ts +86 -0
  1071. package/src/extras/core/Shape.js +165 -0
  1072. package/src/extras/core/ShapePath.d.ts +94 -0
  1073. package/src/extras/core/ShapePath.js +356 -0
  1074. package/src/extras/curves/ArcCurve.d.ts +41 -0
  1075. package/src/extras/curves/ArcCurve.js +39 -0
  1076. package/src/extras/curves/CatmullRomCurve3.d.ts +77 -0
  1077. package/src/extras/curves/CatmullRomCurve3.js +327 -0
  1078. package/src/extras/curves/CubicBezierCurve.d.ts +72 -0
  1079. package/src/extras/curves/CubicBezierCurve.js +145 -0
  1080. package/src/extras/curves/CubicBezierCurve3.d.ts +72 -0
  1081. package/src/extras/curves/CubicBezierCurve3.js +129 -0
  1082. package/src/extras/curves/Curves.d.ts +10 -0
  1083. package/src/extras/curves/Curves.js +10 -0
  1084. package/src/extras/curves/EllipseCurve.d.ts +115 -0
  1085. package/src/extras/curves/EllipseCurve.js +258 -0
  1086. package/src/extras/curves/LineCurve.d.ts +42 -0
  1087. package/src/extras/curves/LineCurve.js +128 -0
  1088. package/src/extras/curves/LineCurve3.d.ts +42 -0
  1089. package/src/extras/curves/LineCurve3.js +128 -0
  1090. package/src/extras/curves/QuadraticBezierCurve.d.ts +64 -0
  1091. package/src/extras/curves/QuadraticBezierCurve.js +133 -0
  1092. package/src/extras/curves/QuadraticBezierCurve3.d.ts +64 -0
  1093. package/src/extras/curves/QuadraticBezierCurve3.js +118 -0
  1094. package/src/extras/curves/SplineCurve.d.ts +52 -0
  1095. package/src/extras/curves/SplineCurve.js +145 -0
  1096. package/src/extras/lib/earcut.js +685 -0
  1097. package/src/geometries/BoxGeometry.d.ts +59 -0
  1098. package/src/geometries/BoxGeometry.js +219 -0
  1099. package/src/geometries/CapsuleGeometry.d.ts +56 -0
  1100. package/src/geometries/CapsuleGeometry.js +218 -0
  1101. package/src/geometries/CircleGeometry.d.ts +51 -0
  1102. package/src/geometries/CircleGeometry.js +142 -0
  1103. package/src/geometries/ConeGeometry.d.ts +64 -0
  1104. package/src/geometries/ConeGeometry.js +70 -0
  1105. package/src/geometries/CylinderGeometry.d.ts +64 -0
  1106. package/src/geometries/CylinderGeometry.js +333 -0
  1107. package/src/geometries/DodecahedronGeometry.d.ts +25 -0
  1108. package/src/geometries/DodecahedronGeometry.js +99 -0
  1109. package/src/geometries/EdgesGeometry.d.ts +41 -0
  1110. package/src/geometries/EdgesGeometry.js +182 -0
  1111. package/src/geometries/ExtrudeGeometry.d.ts +138 -0
  1112. package/src/geometries/ExtrudeGeometry.js +910 -0
  1113. package/src/geometries/Geometries.d.ts +21 -0
  1114. package/src/geometries/Geometries.js +21 -0
  1115. package/src/geometries/IcosahedronGeometry.d.ts +26 -0
  1116. package/src/geometries/IcosahedronGeometry.js +75 -0
  1117. package/src/geometries/LatheGeometry.d.ts +55 -0
  1118. package/src/geometries/LatheGeometry.js +232 -0
  1119. package/src/geometries/OctahedronGeometry.d.ts +25 -0
  1120. package/src/geometries/OctahedronGeometry.js +70 -0
  1121. package/src/geometries/PlaneGeometry.d.ts +48 -0
  1122. package/src/geometries/PlaneGeometry.js +133 -0
  1123. package/src/geometries/PolyhedronGeometry.d.ts +54 -0
  1124. package/src/geometries/PolyhedronGeometry.js +348 -0
  1125. package/src/geometries/RingGeometry.d.ts +59 -0
  1126. package/src/geometries/RingGeometry.js +165 -0
  1127. package/src/geometries/ShapeGeometry.d.ts +53 -0
  1128. package/src/geometries/ShapeGeometry.js +233 -0
  1129. package/src/geometries/SphereGeometry.d.ts +67 -0
  1130. package/src/geometries/SphereGeometry.js +180 -0
  1131. package/src/geometries/TetrahedronGeometry.d.ts +25 -0
  1132. package/src/geometries/TetrahedronGeometry.js +67 -0
  1133. package/src/geometries/TorusGeometry.d.ts +69 -0
  1134. package/src/geometries/TorusGeometry.js +161 -0
  1135. package/src/geometries/TorusKnotGeometry.d.ts +59 -0
  1136. package/src/geometries/TorusKnotGeometry.js +206 -0
  1137. package/src/geometries/TubeGeometry.d.ts +86 -0
  1138. package/src/geometries/TubeGeometry.js +253 -0
  1139. package/src/geometries/WireframeGeometry.d.ts +40 -0
  1140. package/src/geometries/WireframeGeometry.js +179 -0
  1141. package/src/helpers/ArrowHelper.d.ts +72 -0
  1142. package/src/helpers/ArrowHelper.js +173 -0
  1143. package/src/helpers/AxesHelper.d.ts +33 -0
  1144. package/src/helpers/AxesHelper.js +98 -0
  1145. package/src/helpers/Box3Helper.d.ts +28 -0
  1146. package/src/helpers/Box3Helper.js +85 -0
  1147. package/src/helpers/BoxHelper.d.ts +48 -0
  1148. package/src/helpers/BoxHelper.js +151 -0
  1149. package/src/helpers/CameraHelper.d.ts +54 -0
  1150. package/src/helpers/CameraHelper.js +347 -0
  1151. package/src/helpers/DirectionalLightHelper.d.ts +55 -0
  1152. package/src/helpers/DirectionalLightHelper.js +152 -0
  1153. package/src/helpers/GridHelper.d.ts +28 -0
  1154. package/src/helpers/GridHelper.js +84 -0
  1155. package/src/helpers/HemisphereLightHelper.d.ts +44 -0
  1156. package/src/helpers/HemisphereLightHelper.js +134 -0
  1157. package/src/helpers/PlaneHelper.d.ts +33 -0
  1158. package/src/helpers/PlaneHelper.js +98 -0
  1159. package/src/helpers/PointLightHelper.d.ts +43 -0
  1160. package/src/helpers/PointLightHelper.js +115 -0
  1161. package/src/helpers/PolarGridHelper.d.ts +37 -0
  1162. package/src/helpers/PolarGridHelper.js +128 -0
  1163. package/src/helpers/SkeletonHelper.d.ts +44 -0
  1164. package/src/helpers/SkeletonHelper.js +196 -0
  1165. package/src/helpers/SpotLightHelper.d.ts +45 -0
  1166. package/src/helpers/SpotLightHelper.js +156 -0
  1167. package/src/lights/AmbientLight.d.ts +28 -0
  1168. package/src/lights/AmbientLight.js +42 -0
  1169. package/src/lights/DirectionalLight.d.ts +68 -0
  1170. package/src/lights/DirectionalLight.js +113 -0
  1171. package/src/lights/DirectionalLightShadow.d.ts +18 -0
  1172. package/src/lights/DirectionalLightShadow.js +31 -0
  1173. package/src/lights/HemisphereLight.d.ts +41 -0
  1174. package/src/lights/HemisphereLight.js +76 -0
  1175. package/src/lights/Light.d.ts +39 -0
  1176. package/src/lights/Light.js +86 -0
  1177. package/src/lights/LightProbe.d.ts +46 -0
  1178. package/src/lights/LightProbe.js +77 -0
  1179. package/src/lights/LightShadow.d.ts +201 -0
  1180. package/src/lights/LightShadow.js +380 -0
  1181. package/src/lights/PointLight.d.ts +72 -0
  1182. package/src/lights/PointLight.js +131 -0
  1183. package/src/lights/PointLightShadow.d.ts +18 -0
  1184. package/src/lights/PointLightShadow.js +31 -0
  1185. package/src/lights/RectAreaLight.d.ts +62 -0
  1186. package/src/lights/RectAreaLight.js +115 -0
  1187. package/src/lights/SpotLight.d.ts +124 -0
  1188. package/src/lights/SpotLight.js +194 -0
  1189. package/src/lights/SpotLightShadow.d.ts +44 -0
  1190. package/src/lights/SpotLightShadow.js +98 -0
  1191. package/src/lights/webgpu/IESSpotLight.d.ts +18 -0
  1192. package/src/lights/webgpu/IESSpotLight.js +47 -0
  1193. package/src/lights/webgpu/ProjectorLight.d.ts +16 -0
  1194. package/src/lights/webgpu/ProjectorLight.js +46 -0
  1195. package/src/loaders/AnimationLoader.d.ts +9 -0
  1196. package/src/loaders/AnimationLoader.js +100 -0
  1197. package/src/loaders/AudioLoader.d.ts +6 -0
  1198. package/src/loaders/AudioLoader.js +110 -0
  1199. package/src/loaders/BufferGeometryLoader.d.ts +10 -0
  1200. package/src/loaders/BufferGeometryLoader.js +249 -0
  1201. package/src/loaders/Cache.d.ts +21 -0
  1202. package/src/loaders/Cache.js +115 -0
  1203. package/src/loaders/CompressedTextureLoader.d.ts +14 -0
  1204. package/src/loaders/CompressedTextureLoader.js +169 -0
  1205. package/src/loaders/CubeTextureLoader.d.ts +14 -0
  1206. package/src/loaders/CubeTextureLoader.js +105 -0
  1207. package/src/loaders/DataTextureLoader.d.ts +48 -0
  1208. package/src/loaders/DataTextureLoader.js +207 -0
  1209. package/src/loaders/FileLoader.d.ts +19 -0
  1210. package/src/loaders/FileLoader.js +369 -0
  1211. package/src/loaders/ImageBitmapLoader.d.ts +22 -0
  1212. package/src/loaders/ImageBitmapLoader.js +227 -0
  1213. package/src/loaders/ImageLoader.d.ts +17 -0
  1214. package/src/loaders/ImageLoader.js +169 -0
  1215. package/src/loaders/Loader.d.ts +51 -0
  1216. package/src/loaders/Loader.js +269 -0
  1217. package/src/loaders/LoaderUtils.d.ts +5 -0
  1218. package/src/loaders/LoaderUtils.js +59 -0
  1219. package/src/loaders/LoadingManager.d.ts +73 -0
  1220. package/src/loaders/LoadingManager.js +334 -0
  1221. package/src/loaders/MaterialLoader.d.ts +29 -0
  1222. package/src/loaders/MaterialLoader.js +211 -0
  1223. package/src/loaders/ObjectLoader.d.ts +35 -0
  1224. package/src/loaders/ObjectLoader.js +1328 -0
  1225. package/src/loaders/TextureLoader.d.ts +18 -0
  1226. package/src/loaders/TextureLoader.js +76 -0
  1227. package/src/loaders/nodes/NodeLoader.d.ts +21 -0
  1228. package/src/loaders/nodes/NodeLoader.js +196 -0
  1229. package/src/loaders/nodes/NodeMaterialLoader.d.ts +11 -0
  1230. package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
  1231. package/src/loaders/nodes/NodeObjectLoader.d.ts +22 -0
  1232. package/src/loaders/nodes/NodeObjectLoader.js +169 -0
  1233. package/src/materials/LineBasicMaterial.d.ts +93 -0
  1234. package/src/materials/LineBasicMaterial.js +126 -0
  1235. package/src/materials/LineDashedMaterial.d.ts +56 -0
  1236. package/src/materials/LineDashedMaterial.js +86 -0
  1237. package/src/materials/Material.d.ts +663 -0
  1238. package/src/materials/Material.js +1254 -0
  1239. package/src/materials/Materials.d.ts +18 -0
  1240. package/src/materials/Materials.js +39 -0
  1241. package/src/materials/MeshBasicMaterial.d.ts +204 -0
  1242. package/src/materials/MeshBasicMaterial.js +274 -0
  1243. package/src/materials/MeshDepthMaterial.d.ts +119 -0
  1244. package/src/materials/MeshDepthMaterial.js +158 -0
  1245. package/src/materials/MeshDistanceMaterial.d.ts +102 -0
  1246. package/src/materials/MeshDistanceMaterial.js +129 -0
  1247. package/src/materials/MeshLambertMaterial.d.ts +331 -0
  1248. package/src/materials/MeshLambertMaterial.js +441 -0
  1249. package/src/materials/MeshMatcapMaterial.d.ts +199 -0
  1250. package/src/materials/MeshMatcapMaterial.js +269 -0
  1251. package/src/materials/MeshNormalMaterial.d.ts +134 -0
  1252. package/src/materials/MeshNormalMaterial.js +183 -0
  1253. package/src/materials/MeshPhongMaterial.d.ts +343 -0
  1254. package/src/materials/MeshPhongMaterial.js +460 -0
  1255. package/src/materials/MeshPhysicalMaterial.d.ts +353 -0
  1256. package/src/materials/MeshPhysicalMaterial.js +685 -0
  1257. package/src/materials/MeshStandardMaterial.d.ts +352 -0
  1258. package/src/materials/MeshStandardMaterial.js +466 -0
  1259. package/src/materials/MeshToonMaterial.d.ts +265 -0
  1260. package/src/materials/MeshToonMaterial.js +354 -0
  1261. package/src/materials/PointsMaterial.d.ts +113 -0
  1262. package/src/materials/PointsMaterial.js +146 -0
  1263. package/src/materials/RawShaderMaterial.d.ts +17 -0
  1264. package/src/materials/RawShaderMaterial.js +42 -0
  1265. package/src/materials/ShaderMaterial.d.ts +268 -0
  1266. package/src/materials/ShaderMaterial.js +499 -0
  1267. package/src/materials/ShadowMaterial.d.ts +61 -0
  1268. package/src/materials/ShadowMaterial.js +91 -0
  1269. package/src/materials/SpriteMaterial.d.ts +100 -0
  1270. package/src/materials/SpriteMaterial.js +143 -0
  1271. package/src/materials/nodes/Line2NodeMaterial.d.ts +102 -0
  1272. package/src/materials/nodes/Line2NodeMaterial.js +656 -0
  1273. package/src/materials/nodes/LineBasicNodeMaterial.d.ts +38 -0
  1274. package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
  1275. package/src/materials/nodes/LineDashedNodeMaterial.d.ts +88 -0
  1276. package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
  1277. package/src/materials/nodes/MeshBasicNodeMaterial.d.ts +55 -0
  1278. package/src/materials/nodes/MeshBasicNodeMaterial.js +134 -0
  1279. package/src/materials/nodes/MeshLambertNodeMaterial.d.ts +55 -0
  1280. package/src/materials/nodes/MeshLambertNodeMaterial.js +95 -0
  1281. package/src/materials/nodes/MeshMatcapNodeMaterial.d.ts +45 -0
  1282. package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
  1283. package/src/materials/nodes/MeshNormalNodeMaterial.d.ts +41 -0
  1284. package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
  1285. package/src/materials/nodes/MeshPhongNodeMaterial.d.ts +77 -0
  1286. package/src/materials/nodes/MeshPhongNodeMaterial.js +145 -0
  1287. package/src/materials/nodes/MeshPhysicalNodeMaterial.d.ts +286 -0
  1288. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +563 -0
  1289. package/src/materials/nodes/MeshSSSNodeMaterial.d.ts +110 -0
  1290. package/src/materials/nodes/MeshSSSNodeMaterial.js +162 -0
  1291. package/src/materials/nodes/MeshStandardNodeMaterial.d.ts +93 -0
  1292. package/src/materials/nodes/MeshStandardNodeMaterial.js +176 -0
  1293. package/src/materials/nodes/MeshToonNodeMaterial.d.ts +45 -0
  1294. package/src/materials/nodes/MeshToonNodeMaterial.js +79 -0
  1295. package/src/materials/nodes/NodeMaterial.d.ts +503 -0
  1296. package/src/materials/nodes/NodeMaterial.js +1400 -0
  1297. package/src/materials/nodes/NodeMaterialInstance.js +193 -0
  1298. package/src/materials/nodes/NodeMaterials.d.ts +18 -0
  1299. package/src/materials/nodes/NodeMaterials.js +22 -0
  1300. package/src/materials/nodes/PointsNodeMaterial.d.ts +60 -0
  1301. package/src/materials/nodes/PointsNodeMaterial.js +212 -0
  1302. package/src/materials/nodes/ShadowNodeMaterial.d.ts +45 -0
  1303. package/src/materials/nodes/ShadowNodeMaterial.js +76 -0
  1304. package/src/materials/nodes/SpriteNodeMaterial.d.ts +74 -0
  1305. package/src/materials/nodes/SpriteNodeMaterial.js +176 -0
  1306. package/src/materials/nodes/VolumeNodeMaterial.d.ts +56 -0
  1307. package/src/materials/nodes/VolumeNodeMaterial.js +81 -0
  1308. package/src/materials/nodes/manager/NodeMaterialObserver.d.ts +58 -0
  1309. package/src/materials/nodes/manager/NodeMaterialObserver.js +1142 -0
  1310. package/src/math/Box2.d.ts +48 -0
  1311. package/src/math/Box2.js +381 -0
  1312. package/src/math/Box3.d.ts +310 -0
  1313. package/src/math/Box3.js +810 -0
  1314. package/src/math/Color.d.ts +376 -0
  1315. package/src/math/Color.js +967 -0
  1316. package/src/math/ColorManagement.d.ts +59 -0
  1317. package/src/math/ColorManagement.js +196 -0
  1318. package/src/math/Cylindrical.d.ts +26 -0
  1319. package/src/math/Cylindrical.js +120 -0
  1320. package/src/math/Euler.d.ts +50 -0
  1321. package/src/math/Euler.js +449 -0
  1322. package/src/math/Frustum.d.ts +30 -0
  1323. package/src/math/Frustum.js +294 -0
  1324. package/src/math/FrustumArray.d.ts +86 -0
  1325. package/src/math/FrustumArray.js +240 -0
  1326. package/src/math/Interpolant.d.ts +113 -0
  1327. package/src/math/Interpolant.js +320 -0
  1328. package/src/math/Line3.d.ts +30 -0
  1329. package/src/math/Line3.js +335 -0
  1330. package/src/math/MathUtils.d.ts +153 -0
  1331. package/src/math/MathUtils.js +740 -0
  1332. package/src/math/Matrix2.d.ts +53 -0
  1333. package/src/math/Matrix2.js +128 -0
  1334. package/src/math/Matrix3.d.ts +193 -0
  1335. package/src/math/Matrix3.js +628 -0
  1336. package/src/math/Matrix4.d.ts +506 -0
  1337. package/src/math/Matrix4.js +1332 -0
  1338. package/src/math/Plane.d.ts +55 -0
  1339. package/src/math/Plane.js +397 -0
  1340. package/src/math/Quaternion.d.ts +189 -0
  1341. package/src/math/Quaternion.js +908 -0
  1342. package/src/math/Ray.d.ts +60 -0
  1343. package/src/math/Ray.js +705 -0
  1344. package/src/math/Sphere.d.ts +55 -0
  1345. package/src/math/Sphere.js +420 -0
  1346. package/src/math/Spherical.d.ts +27 -0
  1347. package/src/math/Spherical.js +147 -0
  1348. package/src/math/SphericalHarmonics3.d.ts +50 -0
  1349. package/src/math/SphericalHarmonics3.js +341 -0
  1350. package/src/math/Triangle.d.ts +110 -0
  1351. package/src/math/Triangle.js +538 -0
  1352. package/src/math/Vector2.d.ts +321 -0
  1353. package/src/math/Vector2.js +870 -0
  1354. package/src/math/Vector3.d.ts +301 -0
  1355. package/src/math/Vector3.js +1263 -0
  1356. package/src/math/Vector4.d.ts +241 -0
  1357. package/src/math/Vector4.js +1063 -0
  1358. package/src/math/interpolants/BezierInterpolant.d.ts +23 -0
  1359. package/src/math/interpolants/BezierInterpolant.js +119 -0
  1360. package/src/math/interpolants/CubicInterpolant.d.ts +22 -0
  1361. package/src/math/interpolants/CubicInterpolant.js +159 -0
  1362. package/src/math/interpolants/DiscreteInterpolant.d.ts +12 -0
  1363. package/src/math/interpolants/DiscreteInterpolant.js +34 -0
  1364. package/src/math/interpolants/LinearInterpolant.d.ts +11 -0
  1365. package/src/math/interpolants/LinearInterpolant.js +51 -0
  1366. package/src/math/interpolants/QuaternionLinearInterpolant.d.ts +11 -0
  1367. package/src/math/interpolants/QuaternionLinearInterpolant.js +48 -0
  1368. package/src/nodes/Nodes.d.ts +170 -0
  1369. package/src/nodes/Nodes.js +166 -0
  1370. package/src/nodes/TSL.d.ts +183 -0
  1371. package/src/nodes/TSL.js +185 -0
  1372. package/src/nodes/accessors/AccessorsUtils.d.ts +8 -0
  1373. package/src/nodes/accessors/AccessorsUtils.js +53 -0
  1374. package/src/nodes/accessors/Arrays.d.ts +22 -0
  1375. package/src/nodes/accessors/Arrays.js +68 -0
  1376. package/src/nodes/accessors/Batch.d.ts +25 -0
  1377. package/src/nodes/accessors/Batch.js +186 -0
  1378. package/src/nodes/accessors/Bitangent.d.ts +6 -0
  1379. package/src/nodes/accessors/Bitangent.js +82 -0
  1380. package/src/nodes/accessors/BufferAttributeNode.d.ts +247 -0
  1381. package/src/nodes/accessors/BufferAttributeNode.js +472 -0
  1382. package/src/nodes/accessors/BufferNode.d.ts +33 -0
  1383. package/src/nodes/accessors/BufferNode.js +138 -0
  1384. package/src/nodes/accessors/BuiltinNode.d.ts +13 -0
  1385. package/src/nodes/accessors/BuiltinNode.js +69 -0
  1386. package/src/nodes/accessors/Camera.d.ts +16 -0
  1387. package/src/nodes/accessors/Camera.js +410 -0
  1388. package/src/nodes/accessors/ClippingNode.d.ts +19 -0
  1389. package/src/nodes/accessors/ClippingNode.js +266 -0
  1390. package/src/nodes/accessors/CubeTextureNode.d.ts +38 -0
  1391. package/src/nodes/accessors/CubeTextureNode.js +203 -0
  1392. package/src/nodes/accessors/Instance.d.ts +32 -0
  1393. package/src/nodes/accessors/Instance.js +387 -0
  1394. package/src/nodes/accessors/Lights.d.ts +17 -0
  1395. package/src/nodes/accessors/Lights.js +152 -0
  1396. package/src/nodes/accessors/MaterialNode.d.ts +134 -0
  1397. package/src/nodes/accessors/MaterialNode.js +837 -0
  1398. package/src/nodes/accessors/MaterialProperties.d.ts +8 -0
  1399. package/src/nodes/accessors/MaterialProperties.js +57 -0
  1400. package/src/nodes/accessors/MaterialReferenceNode.d.ts +15 -0
  1401. package/src/nodes/accessors/MaterialReferenceNode.js +84 -0
  1402. package/src/nodes/accessors/ModelNode.d.ts +49 -0
  1403. package/src/nodes/accessors/ModelNode.js +260 -0
  1404. package/src/nodes/accessors/ModelViewProjectionNode.d.ts +3 -0
  1405. package/src/nodes/accessors/ModelViewProjectionNode.js +13 -0
  1406. package/src/nodes/accessors/Morph.d.ts +11 -0
  1407. package/src/nodes/accessors/Morph.js +356 -0
  1408. package/src/nodes/accessors/Normal.d.ts +36 -0
  1409. package/src/nodes/accessors/Normal.js +201 -0
  1410. package/src/nodes/accessors/Object3DNode.d.ts +42 -0
  1411. package/src/nodes/accessors/Object3DNode.js +274 -0
  1412. package/src/nodes/accessors/PointUVNode.d.ts +9 -0
  1413. package/src/nodes/accessors/PointUVNode.js +61 -0
  1414. package/src/nodes/accessors/Position.d.ts +11 -0
  1415. package/src/nodes/accessors/Position.js +126 -0
  1416. package/src/nodes/accessors/ReferenceAttributeNode.js +279 -0
  1417. package/src/nodes/accessors/ReferenceBaseNode.d.ts +26 -0
  1418. package/src/nodes/accessors/ReferenceBaseNode.js +294 -0
  1419. package/src/nodes/accessors/ReferenceElementNode.d.ts +15 -0
  1420. package/src/nodes/accessors/ReferenceElementNode.js +72 -0
  1421. package/src/nodes/accessors/ReferenceNode.d.ts +37 -0
  1422. package/src/nodes/accessors/ReferenceNode.js +362 -0
  1423. package/src/nodes/accessors/ReflectVector.d.ts +7 -0
  1424. package/src/nodes/accessors/ReflectVector.js +36 -0
  1425. package/src/nodes/accessors/RendererReferenceNode.d.ts +14 -0
  1426. package/src/nodes/accessors/RendererReferenceNode.js +78 -0
  1427. package/src/nodes/accessors/SceneProperties.d.ts +5 -0
  1428. package/src/nodes/accessors/SceneProperties.js +47 -0
  1429. package/src/nodes/accessors/Skinning.d.ts +23 -0
  1430. package/src/nodes/accessors/Skinning.js +380 -0
  1431. package/src/nodes/accessors/StorageBufferNode.d.ts +82 -0
  1432. package/src/nodes/accessors/StorageBufferNode.js +396 -0
  1433. package/src/nodes/accessors/StorageTexture3DNode.d.ts +17 -0
  1434. package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
  1435. package/src/nodes/accessors/StorageTextureNode.d.ts +47 -0
  1436. package/src/nodes/accessors/StorageTextureNode.js +331 -0
  1437. package/src/nodes/accessors/Tangent.d.ts +6 -0
  1438. package/src/nodes/accessors/Tangent.js +60 -0
  1439. package/src/nodes/accessors/TangentUtils.d.ts +21 -0
  1440. package/src/nodes/accessors/TangentUtils.js +46 -0
  1441. package/src/nodes/accessors/Texture3DNode.d.ts +29 -0
  1442. package/src/nodes/accessors/Texture3DNode.js +196 -0
  1443. package/src/nodes/accessors/TextureBicubic.d.ts +6 -0
  1444. package/src/nodes/accessors/TextureBicubic.js +95 -0
  1445. package/src/nodes/accessors/TextureNode.d.ts +104 -0
  1446. package/src/nodes/accessors/TextureNode.js +1142 -0
  1447. package/src/nodes/accessors/TextureSizeNode.d.ts +17 -0
  1448. package/src/nodes/accessors/TextureSizeNode.js +85 -0
  1449. package/src/nodes/accessors/UV.d.ts +3 -0
  1450. package/src/nodes/accessors/UV.js +11 -0
  1451. package/src/nodes/accessors/UniformArrayNode.d.ts +29 -0
  1452. package/src/nodes/accessors/UniformArrayNode.js +368 -0
  1453. package/src/nodes/accessors/UserDataNode.d.ts +14 -0
  1454. package/src/nodes/accessors/UserDataNode.js +76 -0
  1455. package/src/nodes/accessors/VelocityNode.d.ts +19 -0
  1456. package/src/nodes/accessors/VelocityNode.js +229 -0
  1457. package/src/nodes/accessors/VertexColorNode.d.ts +11 -0
  1458. package/src/nodes/accessors/VertexColorNode.js +109 -0
  1459. package/src/nodes/code/CodeNode.d.ts +22 -0
  1460. package/src/nodes/code/CodeNode.js +187 -0
  1461. package/src/nodes/code/ExpressionNode.d.ts +9 -0
  1462. package/src/nodes/code/ExpressionNode.js +74 -0
  1463. package/src/nodes/code/FunctionCallNode.d.ts +27 -0
  1464. package/src/nodes/code/FunctionCallNode.js +187 -0
  1465. package/src/nodes/code/FunctionNode.d.ts +40 -0
  1466. package/src/nodes/code/FunctionNode.js +180 -0
  1467. package/src/nodes/core/ArrayNode.d.ts +33 -0
  1468. package/src/nodes/core/ArrayNode.js +174 -0
  1469. package/src/nodes/core/AssignNode.d.ts +15 -0
  1470. package/src/nodes/core/AssignNode.js +203 -0
  1471. package/src/nodes/core/AttributeNode.d.ts +21 -0
  1472. package/src/nodes/core/AttributeNode.js +207 -0
  1473. package/src/nodes/core/BypassNode.d.ts +17 -0
  1474. package/src/nodes/core/BypassNode.js +99 -0
  1475. package/src/nodes/core/ConstNode.d.ts +16 -0
  1476. package/src/nodes/core/ConstNode.js +97 -0
  1477. package/src/nodes/core/ContextNode.d.ts +65 -0
  1478. package/src/nodes/core/ContextNode.js +341 -0
  1479. package/src/nodes/core/IndexNode.d.ts +33 -0
  1480. package/src/nodes/core/IndexNode.js +236 -0
  1481. package/src/nodes/core/InputNode.d.ts +23 -0
  1482. package/src/nodes/core/InputNode.js +142 -0
  1483. package/src/nodes/core/InspectorNode.d.ts +15 -0
  1484. package/src/nodes/core/InspectorNode.js +114 -0
  1485. package/src/nodes/core/IsolateNode.d.ts +31 -0
  1486. package/src/nodes/core/IsolateNode.js +141 -0
  1487. package/src/nodes/core/LightingModel.d.ts +33 -0
  1488. package/src/nodes/core/LightingModel.js +77 -0
  1489. package/src/nodes/core/MRTNode.d.ts +38 -0
  1490. package/src/nodes/core/MRTNode.js +243 -0
  1491. package/src/nodes/core/Node.d.ts +622 -0
  1492. package/src/nodes/core/Node.js +1520 -0
  1493. package/src/nodes/core/NodeAttribute.d.ts +47 -0
  1494. package/src/nodes/core/NodeAttribute.js +53 -0
  1495. package/src/nodes/core/NodeBuilder.d.ts +25 -0
  1496. package/src/nodes/core/NodeBuilder.js +3918 -0
  1497. package/src/nodes/core/NodeCache.d.ts +50 -0
  1498. package/src/nodes/core/NodeCache.js +75 -0
  1499. package/src/nodes/core/NodeCode.d.ts +4 -0
  1500. package/src/nodes/core/NodeCode.js +46 -0
  1501. package/src/nodes/core/NodeError.d.ts +9 -0
  1502. package/src/nodes/core/NodeError.js +28 -0
  1503. package/src/nodes/core/NodeFrame.d.ts +36 -0
  1504. package/src/nodes/core/NodeFrame.js +322 -0
  1505. package/src/nodes/core/NodeFunction.d.ts +13 -0
  1506. package/src/nodes/core/NodeFunction.js +69 -0
  1507. package/src/nodes/core/NodeFunctionInput.d.ts +7 -0
  1508. package/src/nodes/core/NodeFunctionInput.js +61 -0
  1509. package/src/nodes/core/NodeParser.d.ts +18 -0
  1510. package/src/nodes/core/NodeParser.js +23 -0
  1511. package/src/nodes/core/NodeUniform.d.ts +66 -0
  1512. package/src/nodes/core/NodeUniform.js +91 -0
  1513. package/src/nodes/core/NodeUtils.d.ts +26 -0
  1514. package/src/nodes/core/NodeUtils.js +521 -0
  1515. package/src/nodes/core/NodeVar.d.ts +51 -0
  1516. package/src/nodes/core/NodeVar.js +69 -0
  1517. package/src/nodes/core/NodeVarying.d.ts +59 -0
  1518. package/src/nodes/core/NodeVarying.js +63 -0
  1519. package/src/nodes/core/OutputStructNode.d.ts +11 -0
  1520. package/src/nodes/core/OutputStructNode.js +111 -0
  1521. package/src/nodes/core/OverrideContextNode.d.ts +92 -0
  1522. package/src/nodes/core/OverrideContextNode.js +154 -0
  1523. package/src/nodes/core/ParameterNode.d.ts +18 -0
  1524. package/src/nodes/core/ParameterNode.js +94 -0
  1525. package/src/nodes/core/PropertyNode.d.ts +66 -0
  1526. package/src/nodes/core/PropertyNode.js +435 -0
  1527. package/src/nodes/core/StackNode.d.ts +25 -0
  1528. package/src/nodes/core/StackNode.js +459 -0
  1529. package/src/nodes/core/StackTrace.d.ts +9 -0
  1530. package/src/nodes/core/StackTrace.js +139 -0
  1531. package/src/nodes/core/StructNode.d.ts +37 -0
  1532. package/src/nodes/core/StructNode.js +139 -0
  1533. package/src/nodes/core/StructType.d.ts +10 -0
  1534. package/src/nodes/core/StructType.js +13 -0
  1535. package/src/nodes/core/StructTypeNode.d.ts +57 -0
  1536. package/src/nodes/core/StructTypeNode.js +154 -0
  1537. package/src/nodes/core/SubBuildNode.d.ts +14 -0
  1538. package/src/nodes/core/SubBuildNode.js +97 -0
  1539. package/src/nodes/core/TempNode.d.ts +16 -0
  1540. package/src/nodes/core/TempNode.js +63 -0
  1541. package/src/nodes/core/UniformGroupNode.d.ts +22 -0
  1542. package/src/nodes/core/UniformGroupNode.js +174 -0
  1543. package/src/nodes/core/UniformNode.d.ts +162 -0
  1544. package/src/nodes/core/UniformNode.js +273 -0
  1545. package/src/nodes/core/VarNode.d.ts +45 -0
  1546. package/src/nodes/core/VarNode.js +282 -0
  1547. package/src/nodes/core/VaryingNode.d.ts +36 -0
  1548. package/src/nodes/core/VaryingNode.js +251 -0
  1549. package/src/nodes/core/constants.d.ts +72 -0
  1550. package/src/nodes/core/constants.js +68 -0
  1551. package/src/nodes/display/BlendModes.d.ts +76 -0
  1552. package/src/nodes/display/BlendModes.js +96 -0
  1553. package/src/nodes/display/BumpMapNode.d.ts +16 -0
  1554. package/src/nodes/display/BumpMapNode.js +132 -0
  1555. package/src/nodes/display/ColorAdjustment.d.ts +54 -0
  1556. package/src/nodes/display/ColorAdjustment.js +171 -0
  1557. package/src/nodes/display/ColorSpaceFunctions.d.ts +5 -0
  1558. package/src/nodes/display/ColorSpaceFunctions.js +42 -0
  1559. package/src/nodes/display/ColorSpaceNode.d.ts +54 -0
  1560. package/src/nodes/display/ColorSpaceNode.js +164 -0
  1561. package/src/nodes/display/FrontFacingNode.d.ts +71 -0
  1562. package/src/nodes/display/FrontFacingNode.js +137 -0
  1563. package/src/nodes/display/NormalMapNode.d.ts +18 -0
  1564. package/src/nodes/display/NormalMapNode.js +153 -0
  1565. package/src/nodes/display/PassNode.d.ts +124 -0
  1566. package/src/nodes/display/PassNode.js +1167 -0
  1567. package/src/nodes/display/PremultiplyAlphaFunctions.d.ts +37 -0
  1568. package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
  1569. package/src/nodes/display/RenderOutputNode.d.ts +29 -0
  1570. package/src/nodes/display/RenderOutputNode.js +176 -0
  1571. package/src/nodes/display/ScreenNode.d.ts +44 -0
  1572. package/src/nodes/display/ScreenNode.js +255 -0
  1573. package/src/nodes/display/ToneMappingFunctions.d.ts +13 -0
  1574. package/src/nodes/display/ToneMappingFunctions.js +200 -0
  1575. package/src/nodes/display/ToneMappingNode.d.ts +29 -0
  1576. package/src/nodes/display/ToneMappingNode.js +147 -0
  1577. package/src/nodes/display/ToonOutlinePassNode.d.ts +23 -0
  1578. package/src/nodes/display/ToonOutlinePassNode.js +255 -0
  1579. package/src/nodes/display/ViewportDepthNode.d.ts +41 -0
  1580. package/src/nodes/display/ViewportDepthNode.js +372 -0
  1581. package/src/nodes/display/ViewportDepthTextureNode.d.ts +14 -0
  1582. package/src/nodes/display/ViewportDepthTextureNode.js +63 -0
  1583. package/src/nodes/display/ViewportSharedTextureNode.d.ts +16 -0
  1584. package/src/nodes/display/ViewportSharedTextureNode.js +73 -0
  1585. package/src/nodes/display/ViewportTextureNode.d.ts +33 -0
  1586. package/src/nodes/display/ViewportTextureNode.js +256 -0
  1587. package/src/nodes/fog/Fog.d.ts +27 -0
  1588. package/src/nodes/fog/Fog.js +97 -0
  1589. package/src/nodes/functions/BSDF/BRDF_EON.js +65 -0
  1590. package/src/nodes/functions/BSDF/BRDF_GGX.d.ts +15 -0
  1591. package/src/nodes/functions/BSDF/BRDF_GGX.js +57 -0
  1592. package/src/nodes/functions/BSDF/BRDF_Lambert.d.ts +6 -0
  1593. package/src/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
  1594. package/src/nodes/functions/BSDF/BRDF_Sheen.d.ts +6 -0
  1595. package/src/nodes/functions/BSDF/BRDF_Sheen.js +43 -0
  1596. package/src/nodes/functions/BSDF/DFGLUT.d.ts +13 -0
  1597. package/src/nodes/functions/BSDF/DFGLUT.js +57 -0
  1598. package/src/nodes/functions/BSDF/D_GGX.d.ts +9 -0
  1599. package/src/nodes/functions/BSDF/D_GGX.js +16 -0
  1600. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.d.ts +9 -0
  1601. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +25 -0
  1602. package/src/nodes/functions/BSDF/EnvironmentBRDF.d.ts +8 -0
  1603. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +13 -0
  1604. package/src/nodes/functions/BSDF/F_Schlick.d.ts +6 -0
  1605. package/src/nodes/functions/BSDF/F_Schlick.js +16 -0
  1606. package/src/nodes/functions/BSDF/LTC.d.ts +13 -0
  1607. package/src/nodes/functions/BSDF/LTC.js +148 -0
  1608. package/src/nodes/functions/BSDF/Schlick_to_F0.d.ts +9 -0
  1609. package/src/nodes/functions/BSDF/Schlick_to_F0.js +13 -0
  1610. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.d.ts +10 -0
  1611. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +18 -0
  1612. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.d.ts +15 -0
  1613. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +26 -0
  1614. package/src/nodes/functions/BasicLightingModel.d.ts +7 -0
  1615. package/src/nodes/functions/BasicLightingModel.js +100 -0
  1616. package/src/nodes/functions/PhongLightingModel.d.ts +7 -0
  1617. package/src/nodes/functions/PhongLightingModel.js +99 -0
  1618. package/src/nodes/functions/PhysicalLightingModel.d.ts +40 -0
  1619. package/src/nodes/functions/PhysicalLightingModel.js +969 -0
  1620. package/src/nodes/functions/ShadowMaskModel.d.ts +8 -0
  1621. package/src/nodes/functions/ShadowMaskModel.js +58 -0
  1622. package/src/nodes/functions/ToonLightingModel.d.ts +4 -0
  1623. package/src/nodes/functions/ToonLightingModel.js +70 -0
  1624. package/src/nodes/functions/VolumetricLightingModel.d.ts +6 -0
  1625. package/src/nodes/functions/VolumetricLightingModel.js +216 -0
  1626. package/src/nodes/functions/material/getAlphaHashThreshold.d.ts +5 -0
  1627. package/src/nodes/functions/material/getAlphaHashThreshold.js +62 -0
  1628. package/src/nodes/functions/material/getGeometryRoughness.d.ts +5 -0
  1629. package/src/nodes/functions/material/getGeometryRoughness.js +19 -0
  1630. package/src/nodes/functions/material/getParallaxCorrectNormal.d.ts +9 -0
  1631. package/src/nodes/functions/material/getParallaxCorrectNormal.js +36 -0
  1632. package/src/nodes/functions/material/getRoughness.d.ts +6 -0
  1633. package/src/nodes/functions/material/getRoughness.js +20 -0
  1634. package/src/nodes/functions/material/getShIrradianceAt.d.ts +5 -0
  1635. package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  1636. package/src/nodes/geometry/RangeNode.d.ts +62 -0
  1637. package/src/nodes/geometry/RangeNode.js +193 -0
  1638. package/src/nodes/gpgpu/AtomicFunctionNode.d.ts +91 -0
  1639. package/src/nodes/gpgpu/AtomicFunctionNode.js +330 -0
  1640. package/src/nodes/gpgpu/BarrierNode.d.ts +15 -0
  1641. package/src/nodes/gpgpu/BarrierNode.js +113 -0
  1642. package/src/nodes/gpgpu/ComputeBuiltinNode.d.ts +22 -0
  1643. package/src/nodes/gpgpu/ComputeBuiltinNode.js +233 -0
  1644. package/src/nodes/gpgpu/ComputeNode.d.ts +50 -0
  1645. package/src/nodes/gpgpu/ComputeNode.js +319 -0
  1646. package/src/nodes/gpgpu/SubgroupFunctionNode.d.ts +99 -0
  1647. package/src/nodes/gpgpu/SubgroupFunctionNode.js +592 -0
  1648. package/src/nodes/gpgpu/WorkgroupInfoNode.d.ts +24 -0
  1649. package/src/nodes/gpgpu/WorkgroupInfoNode.js +278 -0
  1650. package/src/nodes/lighting/AONode.d.ts +8 -0
  1651. package/src/nodes/lighting/AONode.js +45 -0
  1652. package/src/nodes/lighting/AmbientLightNode.d.ts +8 -0
  1653. package/src/nodes/lighting/AmbientLightNode.js +35 -0
  1654. package/src/nodes/lighting/AnalyticLightNode.d.ts +32 -0
  1655. package/src/nodes/lighting/AnalyticLightNode.js +302 -0
  1656. package/src/nodes/lighting/BasicEnvironmentNode.d.ts +10 -0
  1657. package/src/nodes/lighting/BasicEnvironmentNode.js +53 -0
  1658. package/src/nodes/lighting/BasicLightMapNode.d.ts +8 -0
  1659. package/src/nodes/lighting/BasicLightMapNode.js +49 -0
  1660. package/src/nodes/lighting/DirectionalLightNode.d.ts +8 -0
  1661. package/src/nodes/lighting/DirectionalLightNode.js +39 -0
  1662. package/src/nodes/lighting/EnvironmentNode.d.ts +8 -0
  1663. package/src/nodes/lighting/EnvironmentNode.js +264 -0
  1664. package/src/nodes/lighting/HemisphereLightNode.d.ts +14 -0
  1665. package/src/nodes/lighting/HemisphereLightNode.js +87 -0
  1666. package/src/nodes/lighting/IESSpotLightNode.d.ts +5 -0
  1667. package/src/nodes/lighting/IESSpotLightNode.js +102 -0
  1668. package/src/nodes/lighting/IrradianceNode.d.ts +8 -0
  1669. package/src/nodes/lighting/IrradianceNode.js +44 -0
  1670. package/src/nodes/lighting/LightProbeNode.d.ts +11 -0
  1671. package/src/nodes/lighting/LightProbeNode.js +74 -0
  1672. package/src/nodes/lighting/LightUtils.d.ts +8 -0
  1673. package/src/nodes/lighting/LightUtils.js +25 -0
  1674. package/src/nodes/lighting/LightingContextNode.d.ts +41 -0
  1675. package/src/nodes/lighting/LightingContextNode.js +123 -0
  1676. package/src/nodes/lighting/LightingNode.d.ts +7 -0
  1677. package/src/nodes/lighting/LightingNode.js +42 -0
  1678. package/src/nodes/lighting/LightsNode.d.ts +48 -0
  1679. package/src/nodes/lighting/LightsNode.js +495 -0
  1680. package/src/nodes/lighting/PointLightNode.d.ts +23 -0
  1681. package/src/nodes/lighting/PointLightNode.js +102 -0
  1682. package/src/nodes/lighting/PointShadowNode.d.ts +25 -0
  1683. package/src/nodes/lighting/PointShadowNode.js +374 -0
  1684. package/src/nodes/lighting/ProjectorLightNode.d.ts +5 -0
  1685. package/src/nodes/lighting/ProjectorLightNode.js +91 -0
  1686. package/src/nodes/lighting/RectAreaLightNode.d.ts +21 -0
  1687. package/src/nodes/lighting/RectAreaLightNode.js +132 -0
  1688. package/src/nodes/lighting/ShadowBaseNode.d.ts +47 -0
  1689. package/src/nodes/lighting/ShadowBaseNode.js +230 -0
  1690. package/src/nodes/lighting/ShadowFilterNode.d.ts +17 -0
  1691. package/src/nodes/lighting/ShadowFilterNode.js +152 -0
  1692. package/src/nodes/lighting/ShadowNode.d.ts +11 -0
  1693. package/src/nodes/lighting/ShadowNode.js +843 -0
  1694. package/src/nodes/lighting/SpotLightNode.d.ts +22 -0
  1695. package/src/nodes/lighting/SpotLightNode.js +168 -0
  1696. package/src/nodes/materialx/DISCLAIMER.md +199 -0
  1697. package/src/nodes/materialx/MaterialXColor.d.ts +5 -0
  1698. package/src/nodes/materialx/MaterialXColor.js +112 -0
  1699. package/src/nodes/materialx/MaterialXColorTransform.d.ts +3 -0
  1700. package/src/nodes/materialx/MaterialXColorTransform.js +14 -0
  1701. package/src/nodes/materialx/MaterialXCore.d.ts +5 -0
  1702. package/src/nodes/materialx/MaterialXCore.js +37 -0
  1703. package/src/nodes/materialx/MaterialXNodes.d.ts +206 -0
  1704. package/src/nodes/materialx/MaterialXNodes.js +186 -0
  1705. package/src/nodes/materialx/MaterialXNoise.d.ts +415 -0
  1706. package/src/nodes/materialx/MaterialXNoise.js +1461 -0
  1707. package/src/nodes/math/BitcastNode.d.ts +24 -0
  1708. package/src/nodes/math/BitcastNode.js +156 -0
  1709. package/src/nodes/math/BitcountNode.d.ts +23 -0
  1710. package/src/nodes/math/BitcountNode.js +425 -0
  1711. package/src/nodes/math/ConditionalNode.d.ts +51 -0
  1712. package/src/nodes/math/ConditionalNode.js +315 -0
  1713. package/src/nodes/math/Hash.d.ts +3 -0
  1714. package/src/nodes/math/Hash.js +21 -0
  1715. package/src/nodes/math/MathNode.d.ts +895 -0
  1716. package/src/nodes/math/MathNode.js +1252 -0
  1717. package/src/nodes/math/MathUtils.d.ts +10 -0
  1718. package/src/nodes/math/MathUtils.js +65 -0
  1719. package/src/nodes/math/OperatorNode.d.ts +709 -0
  1720. package/src/nodes/math/OperatorNode.js +735 -0
  1721. package/src/nodes/math/PackFloatNode.d.ts +24 -0
  1722. package/src/nodes/math/PackFloatNode.js +126 -0
  1723. package/src/nodes/math/Packed4x8IntegerNode.d.ts +49 -0
  1724. package/src/nodes/math/Packed4x8IntegerNode.js +401 -0
  1725. package/src/nodes/math/TriNoise3D.d.ts +11 -0
  1726. package/src/nodes/math/TriNoise3D.js +51 -0
  1727. package/src/nodes/math/UnpackFloatNode.d.ts +21 -0
  1728. package/src/nodes/math/UnpackFloatNode.js +124 -0
  1729. package/src/nodes/parsers/GLSLNodeFunction.d.ts +9 -0
  1730. package/src/nodes/parsers/GLSLNodeFunction.js +168 -0
  1731. package/src/nodes/parsers/GLSLNodeParser.d.ts +8 -0
  1732. package/src/nodes/parsers/GLSLNodeParser.js +25 -0
  1733. package/src/nodes/pmrem/PMREMNode.d.ts +21 -0
  1734. package/src/nodes/pmrem/PMREMNode.js +391 -0
  1735. package/src/nodes/pmrem/PMREMUtils.d.ts +21 -0
  1736. package/src/nodes/pmrem/PMREMUtils.js +190 -0
  1737. package/src/nodes/procedural/Checker.d.ts +3 -0
  1738. package/src/nodes/procedural/Checker.js +22 -0
  1739. package/src/nodes/shapes/Shapes.d.ts +3 -0
  1740. package/src/nodes/shapes/Shapes.js +33 -0
  1741. package/src/nodes/tsl/TSLBase.d.ts +30 -0
  1742. package/src/nodes/tsl/TSLBase.js +36 -0
  1743. package/src/nodes/tsl/TSLCore.d.ts +2420 -0
  1744. package/src/nodes/tsl/TSLCore.js +1390 -0
  1745. package/src/nodes/utils/ArrayElementNode.d.ts +15 -0
  1746. package/src/nodes/utils/ArrayElementNode.js +108 -0
  1747. package/src/nodes/utils/ConvertNode.d.ts +14 -0
  1748. package/src/nodes/utils/ConvertNode.js +100 -0
  1749. package/src/nodes/utils/CubeMapNode.d.ts +12 -0
  1750. package/src/nodes/utils/CubeMapNode.js +237 -0
  1751. package/src/nodes/utils/DebugNode.d.ts +22 -0
  1752. package/src/nodes/utils/DebugNode.js +83 -0
  1753. package/src/nodes/utils/Discard.d.ts +10 -0
  1754. package/src/nodes/utils/Discard.js +24 -0
  1755. package/src/nodes/utils/EquirectUV.d.ts +33 -0
  1756. package/src/nodes/utils/EquirectUV.js +52 -0
  1757. package/src/nodes/utils/EventNode.d.ts +41 -0
  1758. package/src/nodes/utils/EventNode.js +229 -0
  1759. package/src/nodes/utils/FlipNode.d.ts +11 -0
  1760. package/src/nodes/utils/FlipNode.js +106 -0
  1761. package/src/nodes/utils/FunctionOverloadingNode.d.ts +12 -0
  1762. package/src/nodes/utils/FunctionOverloadingNode.js +176 -0
  1763. package/src/nodes/utils/JoinNode.d.ts +14 -0
  1764. package/src/nodes/utils/JoinNode.js +117 -0
  1765. package/src/nodes/utils/LoopNode.d.ts +43 -0
  1766. package/src/nodes/utils/LoopNode.js +395 -0
  1767. package/src/nodes/utils/MatcapUV.d.ts +3 -0
  1768. package/src/nodes/utils/MatcapUV.js +22 -0
  1769. package/src/nodes/utils/MaxMipLevelNode.d.ts +13 -0
  1770. package/src/nodes/utils/MaxMipLevelNode.js +103 -0
  1771. package/src/nodes/utils/MemberNode.d.ts +11 -0
  1772. package/src/nodes/utils/MemberNode.js +138 -0
  1773. package/src/nodes/utils/Oscillators.d.ts +6 -0
  1774. package/src/nodes/utils/Oscillators.js +41 -0
  1775. package/src/nodes/utils/Packing.d.ts +52 -0
  1776. package/src/nodes/utils/Packing.js +64 -0
  1777. package/src/nodes/utils/PostProcessingUtils.d.ts +56 -0
  1778. package/src/nodes/utils/PostProcessingUtils.js +170 -0
  1779. package/src/nodes/utils/RTTNode.d.ts +46 -0
  1780. package/src/nodes/utils/RTTNode.js +372 -0
  1781. package/src/nodes/utils/ReflectorNode.d.ts +61 -0
  1782. package/src/nodes/utils/ReflectorNode.js +658 -0
  1783. package/src/nodes/utils/Remap.d.ts +223 -0
  1784. package/src/nodes/utils/Remap.js +48 -0
  1785. package/src/nodes/utils/RotateNode.d.ts +26 -0
  1786. package/src/nodes/utils/RotateNode.js +180 -0
  1787. package/src/nodes/utils/SampleNode.d.ts +26 -0
  1788. package/src/nodes/utils/SampleNode.js +97 -0
  1789. package/src/nodes/utils/SetNode.d.ts +11 -0
  1790. package/src/nodes/utils/SetNode.js +108 -0
  1791. package/src/nodes/utils/SplitNode.d.ts +14 -0
  1792. package/src/nodes/utils/SplitNode.js +185 -0
  1793. package/src/nodes/utils/SpriteSheetUV.d.ts +7 -0
  1794. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  1795. package/src/nodes/utils/SpriteUtils.d.ts +5 -0
  1796. package/src/nodes/utils/SpriteUtils.js +98 -0
  1797. package/src/nodes/utils/StorageArrayElementNode.d.ts +28 -0
  1798. package/src/nodes/utils/StorageArrayElementNode.js +143 -0
  1799. package/src/nodes/utils/Timer.d.ts +5 -0
  1800. package/src/nodes/utils/Timer.js +26 -0
  1801. package/src/nodes/utils/TriplanarTextures.d.ts +19 -0
  1802. package/src/nodes/utils/TriplanarTextures.js +65 -0
  1803. package/src/nodes/utils/UVUtils.d.ts +19 -0
  1804. package/src/nodes/utils/UVUtils.js +67 -0
  1805. package/src/nodes/utils/ViewportUtils.d.ts +3 -0
  1806. package/src/nodes/utils/ViewportUtils.js +26 -0
  1807. package/src/objects/BatchedMesh.d.ts +280 -0
  1808. package/src/objects/BatchedMesh.js +1827 -0
  1809. package/src/objects/Bone.d.ts +36 -0
  1810. package/src/objects/Bone.js +41 -0
  1811. package/src/objects/ClippingGroup.d.ts +41 -0
  1812. package/src/objects/ClippingGroup.js +68 -0
  1813. package/src/objects/Group.d.ts +37 -0
  1814. package/src/objects/Group.js +41 -0
  1815. package/src/objects/InstancedMesh.d.ts +175 -0
  1816. package/src/objects/InstancedMesh.js +419 -0
  1817. package/src/objects/LOD.d.ts +112 -0
  1818. package/src/objects/LOD.js +329 -0
  1819. package/src/objects/Line.d.ts +96 -0
  1820. package/src/objects/Line.js +361 -0
  1821. package/src/objects/LineLoop.d.ts +40 -0
  1822. package/src/objects/LineLoop.js +37 -0
  1823. package/src/objects/LineSegments.d.ts +41 -0
  1824. package/src/objects/LineSegments.js +74 -0
  1825. package/src/objects/Mesh.d.ts +111 -0
  1826. package/src/objects/Mesh.js +516 -0
  1827. package/src/objects/Points.d.ts +75 -0
  1828. package/src/objects/Points.js +260 -0
  1829. package/src/objects/Skeleton.d.ts +120 -0
  1830. package/src/objects/Skeleton.js +409 -0
  1831. package/src/objects/SkinnedMesh.d.ts +163 -0
  1832. package/src/objects/SkinnedMesh.js +370 -0
  1833. package/src/objects/Sprite.d.ts +82 -0
  1834. package/src/objects/Sprite.js +267 -0
  1835. package/src/renderers/WebGL3DRenderTarget.d.ts +29 -0
  1836. package/src/renderers/WebGL3DRenderTarget.js +48 -0
  1837. package/src/renderers/WebGLArrayRenderTarget.d.ts +29 -0
  1838. package/src/renderers/WebGLArrayRenderTarget.js +48 -0
  1839. package/src/renderers/WebGLCubeRenderTarget.d.ts +18 -0
  1840. package/src/renderers/WebGLCubeRenderTarget.js +182 -0
  1841. package/src/renderers/WebGLRenderTarget.d.ts +8 -0
  1842. package/src/renderers/WebGLRenderTarget.js +34 -0
  1843. package/src/renderers/WebGLRenderer.d.ts +489 -0
  1844. package/src/renderers/WebGLRenderer.js +3803 -0
  1845. package/src/renderers/common/Animation.js +173 -0
  1846. package/src/renderers/common/Attributes.js +197 -0
  1847. package/src/renderers/common/Backend.d.ts +29 -0
  1848. package/src/renderers/common/Backend.js +916 -0
  1849. package/src/renderers/common/Background.js +225 -0
  1850. package/src/renderers/common/BindGroup.js +56 -0
  1851. package/src/renderers/common/Binding.js +60 -0
  1852. package/src/renderers/common/Bindings.js +641 -0
  1853. package/src/renderers/common/BlendMode.d.ts +22 -0
  1854. package/src/renderers/common/BlendMode.js +143 -0
  1855. package/src/renderers/common/Buffer.js +136 -0
  1856. package/src/renderers/common/BufferUtils.d.ts +28 -0
  1857. package/src/renderers/common/BufferUtils.js +58 -0
  1858. package/src/renderers/common/BundleGroup.d.ts +46 -0
  1859. package/src/renderers/common/BundleGroup.js +87 -0
  1860. package/src/renderers/common/CanvasTarget.d.ts +158 -0
  1861. package/src/renderers/common/CanvasTarget.js +341 -0
  1862. package/src/renderers/common/CapabilityTier.js +18 -0
  1863. package/src/renderers/common/ChainMap.js +122 -0
  1864. package/src/renderers/common/ClippingContext.d.ts +134 -0
  1865. package/src/renderers/common/ClippingContext.js +291 -0
  1866. package/src/renderers/common/Color4.d.ts +53 -0
  1867. package/src/renderers/common/Color4.js +86 -0
  1868. package/src/renderers/common/ComputePipeline.js +57 -0
  1869. package/src/renderers/common/Constants.d.ts +9 -0
  1870. package/src/renderers/common/Constants.js +10 -0
  1871. package/src/renderers/common/CubeRenderTarget.d.ts +47 -0
  1872. package/src/renderers/common/CubeRenderTarget.js +147 -0
  1873. package/src/renderers/common/DataMap.js +90 -0
  1874. package/src/renderers/common/DirectRenderPipeline.d.ts +20 -0
  1875. package/src/renderers/common/DirectRenderPipeline.js +237 -0
  1876. package/src/renderers/common/GPUInstanceCuller.d.ts +43 -0
  1877. package/src/renderers/common/GPUInstanceCuller.js +372 -0
  1878. package/src/renderers/common/GPUTimings.js +66 -0
  1879. package/src/renderers/common/Geometries.js +523 -0
  1880. package/src/renderers/common/IndirectStorageBufferAttribute.d.ts +10 -0
  1881. package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
  1882. package/src/renderers/common/Info.d.ts +194 -0
  1883. package/src/renderers/common/Info.js +542 -0
  1884. package/src/renderers/common/InspectorBase.d.ts +129 -0
  1885. package/src/renderers/common/InspectorBase.js +180 -0
  1886. package/src/renderers/common/Lighting.d.ts +55 -0
  1887. package/src/renderers/common/Lighting.js +171 -0
  1888. package/src/renderers/common/Pipeline.js +35 -0
  1889. package/src/renderers/common/Pipelines.js +514 -0
  1890. package/src/renderers/common/PostProcessing.d.ts +21 -0
  1891. package/src/renderers/common/PostProcessing.js +28 -0
  1892. package/src/renderers/common/ProgrammableStage.js +62 -0
  1893. package/src/renderers/common/QuadMesh.d.ts +19 -0
  1894. package/src/renderers/common/QuadMesh.js +126 -0
  1895. package/src/renderers/common/ReadbackBuffer.d.ts +63 -0
  1896. package/src/renderers/common/ReadbackBuffer.js +78 -0
  1897. package/src/renderers/common/RenderBundle.js +26 -0
  1898. package/src/renderers/common/RenderBundles.js +71 -0
  1899. package/src/renderers/common/RenderContext.js +310 -0
  1900. package/src/renderers/common/RenderContexts.js +109 -0
  1901. package/src/renderers/common/RenderList.js +475 -0
  1902. package/src/renderers/common/RenderLists.js +125 -0
  1903. package/src/renderers/common/RenderObject.js +1065 -0
  1904. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  1905. package/src/renderers/common/RenderObjects.js +263 -0
  1906. package/src/renderers/common/RenderPipeline.d.ts +26 -0
  1907. package/src/renderers/common/RenderPipeline.js +263 -0
  1908. package/src/renderers/common/Renderer.d.ts +1209 -0
  1909. package/src/renderers/common/Renderer.js +4357 -0
  1910. package/src/renderers/common/RendererUtils.d.ts +77 -0
  1911. package/src/renderers/common/RendererUtils.js +215 -0
  1912. package/src/renderers/common/SampledTexture.js +152 -0
  1913. package/src/renderers/common/Sampler.js +133 -0
  1914. package/src/renderers/common/StandardDrawingPipeline.js +343 -0
  1915. package/src/renderers/common/Storage3DTexture.d.ts +42 -0
  1916. package/src/renderers/common/Storage3DTexture.js +127 -0
  1917. package/src/renderers/common/StorageArrayTexture.d.ts +31 -0
  1918. package/src/renderers/common/StorageArrayTexture.js +94 -0
  1919. package/src/renderers/common/StorageBuffer.js +53 -0
  1920. package/src/renderers/common/StorageBufferAttribute.d.ts +7 -0
  1921. package/src/renderers/common/StorageBufferAttribute.js +46 -0
  1922. package/src/renderers/common/StorageInstancedBufferAttribute.d.ts +8 -0
  1923. package/src/renderers/common/StorageInstancedBufferAttribute.js +46 -0
  1924. package/src/renderers/common/StorageTexture.d.ts +7 -0
  1925. package/src/renderers/common/StorageTexture.js +77 -0
  1926. package/src/renderers/common/Textures.js +763 -0
  1927. package/src/renderers/common/TimestampQueryPool.d.ts +120 -0
  1928. package/src/renderers/common/TimestampQueryPool.js +173 -0
  1929. package/src/renderers/common/Uniform.js +375 -0
  1930. package/src/renderers/common/UniformBuffer.js +34 -0
  1931. package/src/renderers/common/UniformsGroup.js +589 -0
  1932. package/src/renderers/common/XRManager.d.ts +293 -0
  1933. package/src/renderers/common/XRManager.js +1928 -0
  1934. package/src/renderers/common/XRRenderTarget.js +91 -0
  1935. package/src/renderers/common/extras/PMREMGenerator.d.ts +52 -0
  1936. package/src/renderers/common/extras/PMREMGenerator.js +673 -0
  1937. package/src/renderers/common/nodes/NodeBuilderState.js +162 -0
  1938. package/src/renderers/common/nodes/NodeLibrary.d.ts +129 -0
  1939. package/src/renderers/common/nodes/NodeLibrary.js +172 -0
  1940. package/src/renderers/common/nodes/NodeManager.js +1219 -0
  1941. package/src/renderers/common/nodes/NodeSampledTexture.js +154 -0
  1942. package/src/renderers/common/nodes/NodeSampler.js +76 -0
  1943. package/src/renderers/common/nodes/NodeStorageBuffer.js +74 -0
  1944. package/src/renderers/common/nodes/NodeUniform.js +418 -0
  1945. package/src/renderers/common/nodes/NodeUniformBuffer.js +107 -0
  1946. package/src/renderers/common/nodes/NodeUniformsGroup.js +51 -0
  1947. package/src/renderers/shaders/DFGLUTData.js +50 -0
  1948. package/src/renderers/shaders/ShaderChunk/alphahash_fragment.glsl.js +7 -0
  1949. package/src/renderers/shaders/ShaderChunk/alphahash_pars_fragment.glsl.js +68 -0
  1950. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +7 -0
  1951. package/src/renderers/shaders/ShaderChunk/alphamap_pars_fragment.glsl.js +7 -0
  1952. package/src/renderers/shaders/ShaderChunk/alphatest_fragment.glsl.js +16 -0
  1953. package/src/renderers/shaders/ShaderChunk/alphatest_pars_fragment.glsl.js +5 -0
  1954. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +26 -0
  1955. package/src/renderers/shaders/ShaderChunk/aomap_pars_fragment.glsl.js +8 -0
  1956. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +49 -0
  1957. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +5 -0
  1958. package/src/renderers/shaders/ShaderChunk/begin_vertex.glsl.js +9 -0
  1959. package/src/renderers/shaders/ShaderChunk/beginnormal_vertex.glsl.js +9 -0
  1960. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +33 -0
  1961. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +43 -0
  1962. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_begin.glsl.js +7 -0
  1963. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +10 -0
  1964. package/src/renderers/shaders/ShaderChunk/clearcoat_pars_fragment.glsl.js +21 -0
  1965. package/src/renderers/shaders/ShaderChunk/clipping_planes_fragment.glsl.js +78 -0
  1966. package/src/renderers/shaders/ShaderChunk/clipping_planes_pars_fragment.glsl.js +9 -0
  1967. package/src/renderers/shaders/ShaderChunk/clipping_planes_pars_vertex.glsl.js +7 -0
  1968. package/src/renderers/shaders/ShaderChunk/clipping_planes_vertex.glsl.js +7 -0
  1969. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +7 -0
  1970. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +7 -0
  1971. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +7 -0
  1972. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +29 -0
  1973. package/src/renderers/shaders/ShaderChunk/colorspace_fragment.glsl.js +3 -0
  1974. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +15 -0
  1975. package/src/renderers/shaders/ShaderChunk/common.glsl.js +134 -0
  1976. package/src/renderers/shaders/ShaderChunk/default_fragment.glsl.js +5 -0
  1977. package/src/renderers/shaders/ShaderChunk/default_vertex.glsl.js +5 -0
  1978. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +59 -0
  1979. package/src/renderers/shaders/ShaderChunk/displacementmap_pars_vertex.glsl.js +9 -0
  1980. package/src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl.js +7 -0
  1981. package/src/renderers/shaders/ShaderChunk/dithering_fragment.glsl.js +7 -0
  1982. package/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +20 -0
  1983. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +17 -0
  1984. package/src/renderers/shaders/ShaderChunk/emissivemap_pars_fragment.glsl.js +7 -0
  1985. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +23 -0
  1986. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +58 -0
  1987. package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +21 -0
  1988. package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +22 -0
  1989. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +117 -0
  1990. package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +37 -0
  1991. package/src/renderers/shaders/ShaderChunk/fog_fragment.glsl.js +17 -0
  1992. package/src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl.js +19 -0
  1993. package/src/renderers/shaders/ShaderChunk/fog_pars_vertex.glsl.js +7 -0
  1994. package/src/renderers/shaders/ShaderChunk/fog_vertex.glsl.js +7 -0
  1995. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +27 -0
  1996. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +120 -0
  1997. package/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -0
  1998. package/src/renderers/shaders/ShaderChunk/lightmap_pars_fragment.glsl.js +8 -0
  1999. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +92 -0
  2000. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +281 -0
  2001. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +19 -0
  2002. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +62 -0
  2003. package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
  2004. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +28 -0
  2005. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +236 -0
  2006. package/src/renderers/shaders/ShaderChunk/lights_phong_fragment.glsl.js +7 -0
  2007. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +32 -0
  2008. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +183 -0
  2009. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +757 -0
  2010. package/src/renderers/shaders/ShaderChunk/lights_toon_fragment.glsl.js +4 -0
  2011. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +26 -0
  2012. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +9 -0
  2013. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +9 -0
  2014. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +8 -0
  2015. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +8 -0
  2016. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +17 -0
  2017. package/src/renderers/shaders/ShaderChunk/map_pars_fragment.glsl.js +7 -0
  2018. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +27 -0
  2019. package/src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl.js +27 -0
  2020. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +12 -0
  2021. package/src/renderers/shaders/ShaderChunk/metalnessmap_pars_fragment.glsl.js +7 -0
  2022. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +33 -0
  2023. package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +14 -0
  2024. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +16 -0
  2025. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +26 -0
  2026. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +16 -0
  2027. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +76 -0
  2028. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +40 -0
  2029. package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +14 -0
  2030. package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +14 -0
  2031. package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +20 -0
  2032. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +43 -0
  2033. package/src/renderers/shaders/ShaderChunk/opaque_fragment.glsl.js +11 -0
  2034. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +116 -0
  2035. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +7 -0
  2036. package/src/renderers/shaders/ShaderChunk/project_vertex.glsl.js +19 -0
  2037. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -0
  2038. package/src/renderers/shaders/ShaderChunk/roughnessmap_pars_fragment.glsl.js +7 -0
  2039. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +474 -0
  2040. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +80 -0
  2041. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +85 -0
  2042. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +81 -0
  2043. package/src/renderers/shaders/ShaderChunk/skinbase_vertex.glsl.js +10 -0
  2044. package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +25 -0
  2045. package/src/renderers/shaders/ShaderChunk/skinning_vertex.glsl.js +15 -0
  2046. package/src/renderers/shaders/ShaderChunk/skinnormal_vertex.glsl.js +20 -0
  2047. package/src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl.js +14 -0
  2048. package/src/renderers/shaders/ShaderChunk/specularmap_pars_fragment.glsl.js +7 -0
  2049. package/src/renderers/shaders/ShaderChunk/tonemapping_fragment.glsl.js +7 -0
  2050. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +200 -0
  2051. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +36 -0
  2052. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +235 -0
  2053. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +124 -0
  2054. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +151 -0
  2055. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +127 -0
  2056. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +21 -0
  2057. package/src/renderers/shaders/ShaderChunk.d.ts +144 -0
  2058. package/src/renderers/shaders/ShaderChunk.js +270 -0
  2059. package/src/renderers/shaders/ShaderLib/background.glsl.js +40 -0
  2060. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +48 -0
  2061. package/src/renderers/shaders/ShaderLib/cube.glsl.js +36 -0
  2062. package/src/renderers/shaders/ShaderLib/depth.glsl.js +117 -0
  2063. package/src/renderers/shaders/ShaderLib/distance.glsl.js +77 -0
  2064. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +35 -0
  2065. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +76 -0
  2066. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +116 -0
  2067. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +125 -0
  2068. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +112 -0
  2069. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +86 -0
  2070. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +127 -0
  2071. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +235 -0
  2072. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +118 -0
  2073. package/src/renderers/shaders/ShaderLib/points.glsl.js +87 -0
  2074. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +58 -0
  2075. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +79 -0
  2076. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +51 -0
  2077. package/src/renderers/shaders/ShaderLib.d.ts +29 -0
  2078. package/src/renderers/shaders/ShaderLib.js +366 -0
  2079. package/src/renderers/shaders/UniformsLib.d.ts +209 -0
  2080. package/src/renderers/shaders/UniformsLib.js +249 -0
  2081. package/src/renderers/shaders/UniformsUtils.d.ts +14 -0
  2082. package/src/renderers/shaders/UniformsUtils.js +154 -0
  2083. package/src/renderers/webgl/WebGLAnimation.js +54 -0
  2084. package/src/renderers/webgl/WebGLAttributes.d.ts +23 -0
  2085. package/src/renderers/webgl/WebGLAttributes.js +237 -0
  2086. package/src/renderers/webgl/WebGLBackground.js +303 -0
  2087. package/src/renderers/webgl/WebGLBindingStates.d.ts +26 -0
  2088. package/src/renderers/webgl/WebGLBindingStates.js +668 -0
  2089. package/src/renderers/webgl/WebGLBufferRenderer.d.ts +15 -0
  2090. package/src/renderers/webgl/WebGLBufferRenderer.js +57 -0
  2091. package/src/renderers/webgl/WebGLCapabilities.d.ts +48 -0
  2092. package/src/renderers/webgl/WebGLCapabilities.js +156 -0
  2093. package/src/renderers/webgl/WebGLClipping.d.ts +26 -0
  2094. package/src/renderers/webgl/WebGLClipping.js +171 -0
  2095. package/src/renderers/webgl/WebGLEnvironments.d.ts +8 -0
  2096. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  2097. package/src/renderers/webgl/WebGLExtensions.d.ts +7 -0
  2098. package/src/renderers/webgl/WebGLExtensions.js +61 -0
  2099. package/src/renderers/webgl/WebGLGeometries.d.ts +13 -0
  2100. package/src/renderers/webgl/WebGLGeometries.js +214 -0
  2101. package/src/renderers/webgl/WebGLIndexedBufferRenderer.d.ts +13 -0
  2102. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +68 -0
  2103. package/src/renderers/webgl/WebGLInfo.d.ts +39 -0
  2104. package/src/renderers/webgl/WebGLInfo.js +73 -0
  2105. package/src/renderers/webgl/WebGLLights.d.ts +57 -0
  2106. package/src/renderers/webgl/WebGLLights.js +654 -0
  2107. package/src/renderers/webgl/WebGLMaterials.js +621 -0
  2108. package/src/renderers/webgl/WebGLMorphtargets.js +168 -0
  2109. package/src/renderers/webgl/WebGLObjects.d.ts +19 -0
  2110. package/src/renderers/webgl/WebGLObjects.js +94 -0
  2111. package/src/renderers/webgl/WebGLOutput.js +319 -0
  2112. package/src/renderers/webgl/WebGLProgram.d.ts +22 -0
  2113. package/src/renderers/webgl/WebGLProgram.js +994 -0
  2114. package/src/renderers/webgl/WebGLPrograms.d.ts +242 -0
  2115. package/src/renderers/webgl/WebGLPrograms.js +708 -0
  2116. package/src/renderers/webgl/WebGLProperties.d.ts +9 -0
  2117. package/src/renderers/webgl/WebGLProperties.js +55 -0
  2118. package/src/renderers/webgl/WebGLRenderLists.d.ts +68 -0
  2119. package/src/renderers/webgl/WebGLRenderLists.js +257 -0
  2120. package/src/renderers/webgl/WebGLRenderStates.js +127 -0
  2121. package/src/renderers/webgl/WebGLShader.d.ts +1 -0
  2122. package/src/renderers/webgl/WebGLShader.js +12 -0
  2123. package/src/renderers/webgl/WebGLShaderCache.js +118 -0
  2124. package/src/renderers/webgl/WebGLShadowMap.d.ts +33 -0
  2125. package/src/renderers/webgl/WebGLShadowMap.js +613 -0
  2126. package/src/renderers/webgl/WebGLState.d.ts +399 -0
  2127. package/src/renderers/webgl/WebGLState.js +1374 -0
  2128. package/src/renderers/webgl/WebGLTextures.d.ts +31 -0
  2129. package/src/renderers/webgl/WebGLTextures.js +2571 -0
  2130. package/src/renderers/webgl/WebGLUniforms.d.ts +5 -0
  2131. package/src/renderers/webgl/WebGLUniforms.js +1241 -0
  2132. package/src/renderers/webgl/WebGLUniformsGroups.d.ts +17 -0
  2133. package/src/renderers/webgl/WebGLUniformsGroups.js +447 -0
  2134. package/src/renderers/webgl/WebGLUtils.d.ts +11 -0
  2135. package/src/renderers/webgl/WebGLUtils.js +217 -0
  2136. package/src/renderers/webgl-fallback/WebGLBackend.d.ts +16 -0
  2137. package/src/renderers/webgl-fallback/WebGLBackend.js +2878 -0
  2138. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +99 -0
  2139. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.d.ts +9 -0
  2140. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +1994 -0
  2141. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +362 -0
  2142. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.d.ts +51 -0
  2143. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +105 -0
  2144. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +13 -0
  2145. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +83 -0
  2146. package/src/renderers/webgl-fallback/utils/WebGLState.js +1532 -0
  2147. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1461 -0
  2148. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +406 -0
  2149. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +319 -0
  2150. package/src/renderers/webgl-fallback/utils/WebGLVertexArrayUtils.js +346 -0
  2151. package/src/renderers/webgpu/WebGPUBackend.d.ts +32 -0
  2152. package/src/renderers/webgpu/WebGPUBackend.js +3379 -0
  2153. package/src/renderers/webgpu/WebGPURenderer.Nodes.d.ts +12 -0
  2154. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +69 -0
  2155. package/src/renderers/webgpu/WebGPURenderer.d.ts +17 -0
  2156. package/src/renderers/webgpu/WebGPURenderer.js +107 -0
  2157. package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
  2158. package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
  2159. package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
  2160. package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
  2161. package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
  2162. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
  2163. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
  2164. package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
  2165. package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
  2166. package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
  2167. package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
  2168. package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
  2169. package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
  2170. package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
  2171. package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
  2172. package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
  2173. package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
  2174. package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
  2175. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
  2176. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
  2177. package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
  2178. package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
  2179. package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
  2180. package/src/renderers/webgpu/nodes/BasicNodeLibrary.d.ts +13 -0
  2181. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +66 -0
  2182. package/src/renderers/webgpu/nodes/StandardNodeLibrary.d.ts +91 -0
  2183. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +99 -0
  2184. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.d.ts +9 -0
  2185. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +2834 -0
  2186. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +188 -0
  2187. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +25 -0
  2188. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +646 -0
  2189. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +683 -0
  2190. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +149 -0
  2191. package/src/renderers/webgpu/utils/WebGPUConstants.d.ts +348 -0
  2192. package/src/renderers/webgpu/utils/WebGPUConstants.js +354 -0
  2193. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +1010 -0
  2194. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +452 -0
  2195. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1920 -0
  2196. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +337 -0
  2197. package/src/renderers/webgpu/utils/WebGPUUniformArena.js +240 -0
  2198. package/src/renderers/webgpu/utils/WebGPUUtils.js +359 -0
  2199. package/src/renderers/webxr/WebXRController.d.ts +67 -0
  2200. package/src/renderers/webxr/WebXRController.js +440 -0
  2201. package/src/renderers/webxr/WebXRDepthSensing.d.ts +21 -0
  2202. package/src/renderers/webxr/WebXRDepthSensing.js +155 -0
  2203. package/src/renderers/webxr/WebXRManager.d.ts +89 -0
  2204. package/src/renderers/webxr/WebXRManager.js +1041 -0
  2205. package/src/scenes/Fog.d.ts +71 -0
  2206. package/src/scenes/Fog.js +98 -0
  2207. package/src/scenes/FogExp2.d.ts +61 -0
  2208. package/src/scenes/FogExp2.js +86 -0
  2209. package/src/scenes/Scene.d.ts +104 -0
  2210. package/src/scenes/Scene.js +165 -0
  2211. package/src/textures/CanvasTexture.d.ts +51 -0
  2212. package/src/textures/CanvasTexture.js +45 -0
  2213. package/src/textures/CompressedArrayTexture.d.ts +65 -0
  2214. package/src/textures/CompressedArrayTexture.js +105 -0
  2215. package/src/textures/CompressedCubeTexture.d.ts +13 -0
  2216. package/src/textures/CompressedCubeTexture.js +48 -0
  2217. package/src/textures/CompressedTexture.d.ts +92 -0
  2218. package/src/textures/CompressedTexture.js +86 -0
  2219. package/src/textures/CubeDepthTexture.d.ts +40 -0
  2220. package/src/textures/CubeDepthTexture.js +76 -0
  2221. package/src/textures/CubeTexture.d.ts +82 -0
  2222. package/src/textures/CubeTexture.js +81 -0
  2223. package/src/textures/Data3DTexture.d.ts +94 -0
  2224. package/src/textures/Data3DTexture.js +128 -0
  2225. package/src/textures/DataArrayTexture.d.ts +123 -0
  2226. package/src/textures/DataArrayTexture.js +150 -0
  2227. package/src/textures/DataTexture.d.ts +112 -0
  2228. package/src/textures/DataTexture.js +87 -0
  2229. package/src/textures/DepthTexture.d.ts +105 -0
  2230. package/src/textures/DepthTexture.js +104 -0
  2231. package/src/textures/ExternalTexture.d.ts +14 -0
  2232. package/src/textures/ExternalTexture.js +53 -0
  2233. package/src/textures/FramebufferTexture.d.ts +67 -0
  2234. package/src/textures/FramebufferTexture.js +96 -0
  2235. package/src/textures/HTMLTexture.d.ts +27 -0
  2236. package/src/textures/HTMLTexture.js +74 -0
  2237. package/src/textures/Texture.d.ts +565 -0
  2238. package/src/textures/Texture.js +840 -0
  2239. package/src/textures/TextureSource.d.ts +99 -0
  2240. package/src/textures/TextureSource.js +261 -0
  2241. package/src/textures/VideoFrameTexture.d.ts +27 -0
  2242. package/src/textures/VideoFrameTexture.js +72 -0
  2243. package/src/textures/VideoTexture.d.ts +90 -0
  2244. package/src/textures/VideoTexture.js +127 -0
  2245. package/src/upe.d.ts +5 -0
  2246. package/src/upe.js +17 -0
  2247. package/src/utils.d.ts +36 -0
  2248. package/src/utils.js +493 -0
@@ -0,0 +1,3803 @@
1
+ import {
2
+ REVISION,
3
+ BackSide,
4
+ FrontSide,
5
+ DoubleSide,
6
+ HalfFloatType,
7
+ UnsignedByteType,
8
+ NoToneMapping,
9
+ LinearMipmapLinearFilter,
10
+ SRGBColorSpace,
11
+ RGBAIntegerFormat,
12
+ RGIntegerFormat,
13
+ RedIntegerFormat,
14
+ UnsignedIntType,
15
+ UnsignedShortType,
16
+ UnsignedInt248Type,
17
+ UnsignedShort4444Type,
18
+ UnsignedShort5551Type,
19
+ WebGLCoordinateSystem
20
+ } from '../constants.js';
21
+ import { Color } from '../math/Color.js';
22
+ import { Frustum } from '../math/Frustum.js';
23
+ import { FrustumArray } from '../math/FrustumArray.js';
24
+ import { Matrix4 } from '../math/Matrix4.js';
25
+ import { Vector3 } from '../math/Vector3.js';
26
+ import { Vector4 } from '../math/Vector4.js';
27
+ import { WebGLAnimation } from './webgl/WebGLAnimation.js';
28
+ import { WebGLAttributes } from './webgl/WebGLAttributes.js';
29
+ import { WebGLBackground } from './webgl/WebGLBackground.js';
30
+ import { WebGLBindingStates } from './webgl/WebGLBindingStates.js';
31
+ import { WebGLBufferRenderer } from './webgl/WebGLBufferRenderer.js';
32
+ import { WebGLCapabilities } from './webgl/WebGLCapabilities.js';
33
+ import { WebGLClipping } from './webgl/WebGLClipping.js';
34
+ import { WebGLEnvironments } from './webgl/WebGLEnvironments.js';
35
+ import { WebGLExtensions } from './webgl/WebGLExtensions.js';
36
+ import { WebGLGeometries } from './webgl/WebGLGeometries.js';
37
+ import { WebGLIndexedBufferRenderer } from './webgl/WebGLIndexedBufferRenderer.js';
38
+ import { WebGLInfo } from './webgl/WebGLInfo.js';
39
+ import { WebGLMorphtargets } from './webgl/WebGLMorphtargets.js';
40
+ import { WebGLObjects } from './webgl/WebGLObjects.js';
41
+ import { WebGLOutput } from './webgl/WebGLOutput.js';
42
+ import { WebGLPrograms } from './webgl/WebGLPrograms.js';
43
+ import { WebGLProperties } from './webgl/WebGLProperties.js';
44
+ import { WebGLRenderLists } from './webgl/WebGLRenderLists.js';
45
+ import { WebGLRenderStates } from './webgl/WebGLRenderStates.js';
46
+ import { WebGLRenderTarget } from './WebGLRenderTarget.js';
47
+ import { WebGLShadowMap } from './webgl/WebGLShadowMap.js';
48
+ import { WebGLState } from './webgl/WebGLState.js';
49
+ import { WebGLTextures } from './webgl/WebGLTextures.js';
50
+ import { WebGLUniforms } from './webgl/WebGLUniforms.js';
51
+ import { WebGLUtils } from './webgl/WebGLUtils.js';
52
+ import { WebXRManager } from './webxr/WebXRManager.js';
53
+ import { WebGLMaterials } from './webgl/WebGLMaterials.js';
54
+ import { WebGLUniformsGroups } from './webgl/WebGLUniformsGroups.js';
55
+ import { createCanvasElement, probeAsync, error, warn, log } from '../utils.js';
56
+ import { ColorManagement } from '../math/ColorManagement.js';
57
+ import { getDFGLUT } from './shaders/DFGLUTData.js';
58
+
59
+ /**
60
+ * This renderer uses WebGL 2 to display scenes.
61
+ *
62
+ * WebGL 1 is not supported since `r163`.
63
+ */
64
+ class WebGLRenderer {
65
+
66
+ /**
67
+ * Constructs a new WebGL renderer.
68
+ *
69
+ * @param {WebGLRenderer~Options} [parameters] - The configuration parameter.
70
+ */
71
+ constructor( parameters = {} ) {
72
+
73
+ const {
74
+ canvas = createCanvasElement(),
75
+ context = null,
76
+ depth = true,
77
+ stencil = false,
78
+ alpha = false,
79
+ antialias = false,
80
+ premultipliedAlpha = true,
81
+ preserveDrawingBuffer = false,
82
+ powerPreference = 'default',
83
+ failIfMajorPerformanceCaveat = false,
84
+ reversedDepthBuffer = false,
85
+ outputBufferType = UnsignedByteType,
86
+ } = parameters;
87
+
88
+ /**
89
+ * This flag can be used for type testing.
90
+ *
91
+ * @type {boolean}
92
+ * @readonly
93
+ * @default true
94
+ */
95
+ this.isWebGLRenderer = true;
96
+
97
+ let _alpha;
98
+
99
+ if ( context !== null ) {
100
+
101
+ if ( typeof WebGLRenderingContext !== 'undefined' && context instanceof WebGLRenderingContext ) {
102
+
103
+ throw new Error( 'THREE.WebGLRenderer: WebGL 1 is not supported since r163.' );
104
+
105
+ }
106
+
107
+ _alpha = context.getContextAttributes().alpha;
108
+
109
+ } else {
110
+
111
+ _alpha = alpha;
112
+
113
+ }
114
+
115
+ const _outputBufferType = outputBufferType;
116
+
117
+ const INTEGER_FORMATS = new Set( [
118
+ RGBAIntegerFormat,
119
+ RGIntegerFormat,
120
+ RedIntegerFormat
121
+ ] );
122
+
123
+ const UNSIGNED_TYPES = new Set( [
124
+ UnsignedByteType,
125
+ UnsignedIntType,
126
+ UnsignedShortType,
127
+ UnsignedInt248Type,
128
+ UnsignedShort4444Type,
129
+ UnsignedShort5551Type
130
+ ] );
131
+
132
+ const uintClearColor = new Uint32Array( 4 );
133
+ const intClearColor = new Int32Array( 4 );
134
+ const lightProbeGridUniforms = { textures: [], min: [], max: [], resolution: [] };
135
+
136
+ let currentRenderList = null;
137
+ let currentRenderState = null;
138
+
139
+ // render() can be called from within a callback triggered by another render.
140
+ // We track this so that the nested render call gets its list and state isolated from the parent render call.
141
+
142
+ const renderListStack = [];
143
+ const renderStateStack = [];
144
+
145
+ // internal render target for non-UnsignedByteType color buffer
146
+
147
+ let output = null;
148
+
149
+ // public properties
150
+
151
+ /**
152
+ * A canvas where the renderer draws its output. This is automatically created by the renderer
153
+ * in the constructor (if not provided already); you just need to add it to your page like so:
154
+ * ```js
155
+ * document.body.appendChild( renderer.domElement );
156
+ * ```
157
+ *
158
+ * @type {HTMLCanvasElement|OffscreenCanvas}
159
+ */
160
+ this.domElement = canvas;
161
+
162
+ /**
163
+ * A object with debug configuration settings.
164
+ *
165
+ * - `checkShaderErrors`: If it is `true`, defines whether material shader programs are
166
+ * checked for errors during compilation and linkage process. It may be useful to disable
167
+ * this check in production for performance gain. It is strongly recommended to keep these
168
+ * checks enabled during development. If the shader does not compile and link, it will not
169
+ * work and associated material will not render.
170
+ * - `onShaderError(gl, program, glVertexShader,glFragmentShader)`: A callback function that
171
+ * can be used for custom error reporting. The callback receives the WebGL context, an instance
172
+ * of WebGLProgram as well two instances of WebGLShader representing the vertex and fragment shader.
173
+ * Assigning a custom function disables the default error reporting.
174
+ *
175
+ * @type {Object}
176
+ */
177
+ this.debug = {
178
+
179
+ /**
180
+ * Enables error checking and reporting when shader programs are being compiled.
181
+ * @type {boolean}
182
+ */
183
+ checkShaderErrors: true,
184
+ /**
185
+ * Diagnostics configuration for the shader generation. Only relevant for TSL.
186
+ * @type {Object}
187
+ * @property {boolean} keywords - Whether declaration names that collide with reserved keywords of the shading language should be renamed or not.
188
+ */
189
+ diagnostics: {
190
+ keywords: false
191
+ },
192
+ /**
193
+ * Callback for custom error reporting.
194
+ * @type {?Function}
195
+ */
196
+ onShaderError: null
197
+ };
198
+
199
+ // clearing
200
+
201
+ /**
202
+ * Whether the renderer should automatically clear its output before rendering a frame or not.
203
+ *
204
+ * @type {boolean}
205
+ * @default true
206
+ */
207
+ this.autoClear = true;
208
+
209
+ /**
210
+ * If {@link WebGLRenderer#autoClear} set to `true`, whether the renderer should clear
211
+ * the color buffer or not.
212
+ *
213
+ * @type {boolean}
214
+ * @default true
215
+ */
216
+ this.autoClearColor = true;
217
+
218
+ /**
219
+ * If {@link WebGLRenderer#autoClear} set to `true`, whether the renderer should clear
220
+ * the depth buffer or not.
221
+ *
222
+ * @type {boolean}
223
+ * @default true
224
+ */
225
+ this.autoClearDepth = true;
226
+
227
+ /**
228
+ * If {@link WebGLRenderer#autoClear} set to `true`, whether the renderer should clear
229
+ * the stencil buffer or not.
230
+ *
231
+ * @type {boolean}
232
+ * @default true
233
+ */
234
+ this.autoClearStencil = true;
235
+
236
+ // scene graph
237
+
238
+ /**
239
+ * Whether the renderer should sort objects or not.
240
+ *
241
+ * Note: Sorting is used to attempt to properly render objects that have some
242
+ * degree of transparency. By definition, sorting objects may not work in all
243
+ * cases. Depending on the needs of application, it may be necessary to turn
244
+ * off sorting and use other methods to deal with transparency rendering e.g.
245
+ * manually determining each object's rendering order.
246
+ *
247
+ * @type {boolean}
248
+ * @default true
249
+ */
250
+ this.sortObjects = true;
251
+
252
+ // user-defined clipping
253
+
254
+ /**
255
+ * User-defined clipping planes specified in world space. These planes apply globally.
256
+ * Points in space whose dot product with the plane is negative are cut away.
257
+ *
258
+ * @type {Array<Plane>}
259
+ */
260
+ this.clippingPlanes = [];
261
+
262
+ /**
263
+ * Whether the renderer respects object-level clipping planes or not.
264
+ *
265
+ * @type {boolean}
266
+ * @default false
267
+ */
268
+ this.localClippingEnabled = false;
269
+
270
+ // tone mapping
271
+
272
+ /**
273
+ * The tone mapping technique of the renderer.
274
+ *
275
+ * @type {(NoToneMapping|LinearToneMapping|ReinhardToneMapping|CineonToneMapping|ACESFilmicToneMapping|CustomToneMapping|AgXToneMapping|NeutralToneMapping)}
276
+ * @default NoToneMapping
277
+ */
278
+ this.toneMapping = NoToneMapping;
279
+
280
+ /**
281
+ * Exposure level of tone mapping.
282
+ *
283
+ * @type {number}
284
+ * @default 1
285
+ */
286
+ this.toneMappingExposure = 1.0;
287
+
288
+ // transmission
289
+
290
+ /**
291
+ * The normalized resolution scale for the transmission render target, measured in percentage
292
+ * of viewport dimensions. Lowering this value can result in significant performance improvements
293
+ * when using {@link MeshPhysicalMaterial#transmission}.
294
+ *
295
+ * @type {number}
296
+ * @default 1
297
+ */
298
+ this.transmissionResolutionScale = 1.0;
299
+
300
+ // internal properties
301
+
302
+ const _this = this;
303
+
304
+ let _isContextLost = false;
305
+ let _nodesHandler = null;
306
+
307
+ let _scratchFramebuffer = null;
308
+ let _srcFramebuffer = null;
309
+ let _dstFramebuffer = null;
310
+
311
+ // internal state cache
312
+
313
+ this._outputColorSpace = SRGBColorSpace;
314
+
315
+ let _currentActiveCubeFace = 0;
316
+ let _currentActiveMipmapLevel = 0;
317
+ let _currentRenderTarget = null;
318
+ let _currentMaterialId = - 1;
319
+
320
+ let _currentCamera = null;
321
+
322
+ const _currentViewport = new Vector4();
323
+ const _currentScissor = new Vector4();
324
+ let _currentScissorTest = null;
325
+
326
+ const _currentClearColor = new Color( 0x000000 );
327
+ let _currentClearAlpha = 0;
328
+
329
+ //
330
+
331
+ let _width = canvas.width;
332
+ let _height = canvas.height;
333
+
334
+ let _pixelRatio = 1;
335
+ let _opaqueSort = null;
336
+ let _transparentSort = null;
337
+
338
+ const _viewport = new Vector4( 0, 0, _width, _height );
339
+ const _scissor = new Vector4( 0, 0, _width, _height );
340
+ let _scissorTest = false;
341
+
342
+ // frustum
343
+
344
+ const _frustum = new Frustum();
345
+ const _frustumArray = new FrustumArray();
346
+
347
+ // clipping
348
+
349
+ let _clippingEnabled = false;
350
+ let _localClippingEnabled = false;
351
+
352
+ // camera matrices cache
353
+
354
+ const _projScreenMatrix = new Matrix4();
355
+
356
+ const _vector3 = new Vector3();
357
+
358
+ const _vector4 = new Vector4();
359
+
360
+ const _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };
361
+
362
+ let _renderBackground = false;
363
+
364
+ function getTargetPixelRatio() {
365
+
366
+ return _currentRenderTarget === null ? _pixelRatio : 1;
367
+
368
+ }
369
+
370
+ // initialize
371
+
372
+ let _gl = context;
373
+
374
+ function getContext( contextName, contextAttributes ) {
375
+
376
+ return canvas.getContext( contextName, contextAttributes );
377
+
378
+ }
379
+
380
+ let extensions, capabilities, state, info;
381
+ let properties, textures, environments, attributes, geometries, objects;
382
+ let programCache, materials, renderLists, renderStates, clipping, shadowMap;
383
+
384
+ let background, morphtargets, bufferRenderer, indexedBufferRenderer;
385
+
386
+ let utils, bindingStates, uniformsGroups;
387
+
388
+ try {
389
+
390
+ const contextAttributes = {
391
+ alpha: true,
392
+ depth,
393
+ stencil,
394
+ antialias,
395
+ premultipliedAlpha,
396
+ preserveDrawingBuffer,
397
+ powerPreference,
398
+ failIfMajorPerformanceCaveat,
399
+ };
400
+
401
+ // OffscreenCanvas does not have setAttribute, see #22811
402
+ if ( 'setAttribute' in canvas ) canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );
403
+
404
+ // event listeners must be registered before WebGL context is created, see #12753
405
+ canvas.addEventListener( 'webglcontextlost', onContextLost, false );
406
+ canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );
407
+ canvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );
408
+
409
+ if ( _gl === null ) {
410
+
411
+ const contextName = 'webgl2';
412
+
413
+ _gl = getContext( contextName, contextAttributes );
414
+
415
+ if ( _gl === null ) {
416
+
417
+ if ( getContext( contextName ) ) {
418
+
419
+ throw new Error( 'THREE.WebGLRenderer: Error creating WebGL context with your selected attributes.' );
420
+
421
+ } else {
422
+
423
+ throw new Error( 'THREE.WebGLRenderer: Error creating WebGL context.' );
424
+
425
+ }
426
+
427
+ }
428
+
429
+ }
430
+
431
+ initGLContext();
432
+
433
+ } catch ( e ) {
434
+
435
+ canvas.removeEventListener( 'webglcontextlost', onContextLost, false );
436
+ canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );
437
+ canvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );
438
+
439
+ error( 'WebGLRenderer: ' + e.message );
440
+ throw e;
441
+
442
+ }
443
+
444
+ function initGLContext() {
445
+
446
+ extensions = new WebGLExtensions( _gl );
447
+ extensions.init();
448
+
449
+ utils = new WebGLUtils( _gl, extensions );
450
+
451
+ capabilities = new WebGLCapabilities( _gl, extensions, parameters, utils );
452
+
453
+ state = new WebGLState( _gl, extensions );
454
+
455
+ if ( capabilities.reversedDepthBuffer && reversedDepthBuffer ) {
456
+
457
+ state.buffers.depth.setReversed( true );
458
+
459
+ }
460
+
461
+ _scratchFramebuffer = _gl.createFramebuffer();
462
+ _srcFramebuffer = _gl.createFramebuffer();
463
+ _dstFramebuffer = _gl.createFramebuffer();
464
+
465
+ info = new WebGLInfo( _gl );
466
+ properties = new WebGLProperties();
467
+ textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );
468
+ environments = new WebGLEnvironments( _this );
469
+ attributes = new WebGLAttributes( _gl );
470
+ bindingStates = new WebGLBindingStates( _gl, attributes );
471
+ geometries = new WebGLGeometries( _gl, attributes, info, bindingStates );
472
+ objects = new WebGLObjects( _gl, geometries, attributes, bindingStates, info );
473
+ morphtargets = new WebGLMorphtargets( _gl, capabilities, textures );
474
+ clipping = new WebGLClipping( properties );
475
+ programCache = new WebGLPrograms( _this, environments, extensions, capabilities, bindingStates, clipping );
476
+ materials = new WebGLMaterials( _this, properties );
477
+ renderLists = new WebGLRenderLists();
478
+ renderStates = new WebGLRenderStates( extensions );
479
+ background = new WebGLBackground( _this, environments, state, objects, _alpha, premultipliedAlpha );
480
+ shadowMap = new WebGLShadowMap( _this, objects, capabilities );
481
+ uniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );
482
+
483
+ bufferRenderer = new WebGLBufferRenderer( _gl, extensions, info );
484
+ indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info );
485
+
486
+ info.programs = programCache.programs;
487
+
488
+ /**
489
+ * Holds details about the capabilities of the current rendering context.
490
+ *
491
+ * @name WebGLRenderer#capabilities
492
+ * @type {WebGLRenderer~Capabilities}
493
+ */
494
+ _this.capabilities = capabilities;
495
+
496
+ /**
497
+ * Provides methods for retrieving and testing WebGL extensions.
498
+ *
499
+ * - `get(extensionName:string)`: Used to check whether a WebGL extension is supported
500
+ * and return the extension object if available.
501
+ * - `has(extensionName:string)`: returns `true` if the extension is supported.
502
+ *
503
+ * @name WebGLRenderer#extensions
504
+ * @type {Object}
505
+ */
506
+ _this.extensions = extensions;
507
+
508
+ /**
509
+ * Used to track properties of other objects like native WebGL objects.
510
+ *
511
+ * @name WebGLRenderer#properties
512
+ * @type {Object}
513
+ */
514
+ _this.properties = properties;
515
+
516
+ /**
517
+ * Manages the render lists of the renderer.
518
+ *
519
+ * @name WebGLRenderer#renderLists
520
+ * @type {Object}
521
+ */
522
+ _this.renderLists = renderLists;
523
+
524
+
525
+
526
+ /**
527
+ * Interface for managing shadows.
528
+ *
529
+ * @name WebGLRenderer#shadowMap
530
+ * @type {WebGLRenderer~ShadowMap}
531
+ */
532
+ _this.shadowMap = shadowMap;
533
+
534
+ /**
535
+ * Interface for managing the WebGL state.
536
+ *
537
+ * @name WebGLRenderer#state
538
+ * @type {Object}
539
+ */
540
+ _this.state = state;
541
+
542
+ /**
543
+ * Holds a series of statistical information about the GPU memory
544
+ * and the rendering process. Useful for debugging and monitoring.
545
+ *
546
+ * By default these data are reset at each render call but when having
547
+ * multiple render passes per frame (e.g. when using post processing) it can
548
+ * be preferred to reset with a custom pattern. First, set `autoReset` to
549
+ * `false`.
550
+ * ```js
551
+ * renderer.info.autoReset = false;
552
+ * ```
553
+ * Call `reset()` whenever you have finished to render a single frame.
554
+ * ```js
555
+ * renderer.info.reset();
556
+ * ```
557
+ *
558
+ * @name WebGLRenderer#info
559
+ * @type {WebGLRenderer~Info}
560
+ */
561
+ _this.info = info;
562
+
563
+ }
564
+
565
+ // initialize internal render target for non-UnsignedByteType color buffer
566
+
567
+ if ( _outputBufferType !== UnsignedByteType ) {
568
+
569
+ output = new WebGLOutput( _outputBufferType, canvas.width, canvas.height, antialias, depth, stencil );
570
+
571
+ }
572
+
573
+ // xr
574
+
575
+ const xr = new WebXRManager( _this, _gl );
576
+
577
+ /**
578
+ * A reference to the XR manager.
579
+ *
580
+ * @type {WebXRManager}
581
+ */
582
+ this.xr = xr;
583
+
584
+ /**
585
+ * Returns the rendering context.
586
+ *
587
+ * @return {WebGL2RenderingContext} The rendering context.
588
+ */
589
+ this.getContext = function () {
590
+
591
+ return _gl;
592
+
593
+ };
594
+
595
+ /**
596
+ * Returns the rendering context attributes.
597
+ *
598
+ * @return {WebGLContextAttributes} The rendering context attributes.
599
+ */
600
+ this.getContextAttributes = function () {
601
+
602
+ return _gl.getContextAttributes();
603
+
604
+ };
605
+
606
+ /**
607
+ * Simulates a loss of the WebGL context. This requires support for the `WEBGL_lose_context` extension.
608
+ */
609
+ this.forceContextLoss = function () {
610
+
611
+ const extension = extensions.get( 'WEBGL_lose_context' );
612
+ if ( extension ) extension.loseContext();
613
+
614
+ };
615
+
616
+ /**
617
+ * Simulates a restore of the WebGL context. This requires support for the `WEBGL_lose_context` extension.
618
+ */
619
+ this.forceContextRestore = function () {
620
+
621
+ const extension = extensions.get( 'WEBGL_lose_context' );
622
+ if ( extension ) extension.restoreContext();
623
+
624
+ };
625
+
626
+ /**
627
+ * Returns the pixel ratio.
628
+ *
629
+ * @return {number} The pixel ratio.
630
+ */
631
+ this.getPixelRatio = function () {
632
+
633
+ return _pixelRatio;
634
+
635
+ };
636
+
637
+ /**
638
+ * Sets the given pixel ratio and resizes the canvas if necessary.
639
+ *
640
+ * @param {number} value - The pixel ratio.
641
+ */
642
+ this.setPixelRatio = function ( value ) {
643
+
644
+ if ( value === undefined ) return;
645
+
646
+ _pixelRatio = value;
647
+
648
+ this.setSize( _width, _height, false );
649
+
650
+ };
651
+
652
+ /**
653
+ * Returns the renderer's size in logical pixels. This method does not honor the pixel ratio.
654
+ *
655
+ * @param {Vector2} target - The method writes the result in this target object.
656
+ * @return {Vector2} The renderer's size in logical pixels.
657
+ */
658
+ this.getSize = function ( target ) {
659
+
660
+ return target.set( _width, _height );
661
+
662
+ };
663
+
664
+ /**
665
+ * Resizes the output canvas to (width, height) with device pixel ratio taken
666
+ * into account, and also sets the viewport to fit that size, starting in (0,
667
+ * 0). Setting `updateStyle` to false prevents any style changes to the output canvas.
668
+ *
669
+ * @param {number} width - The width in logical pixels.
670
+ * @param {number} height - The height in logical pixels.
671
+ * @param {boolean} [updateStyle=true] - Whether to update the `style` attribute of the canvas or not.
672
+ */
673
+ this.setSize = function ( width, height, updateStyle = true ) {
674
+
675
+ if ( xr.isPresenting ) {
676
+
677
+ warn( 'WebGLRenderer: Can\'t change size while VR device is presenting.' );
678
+ return;
679
+
680
+ }
681
+
682
+ _width = width;
683
+ _height = height;
684
+
685
+ canvas.width = Math.floor( width * _pixelRatio );
686
+ canvas.height = Math.floor( height * _pixelRatio );
687
+
688
+ if ( updateStyle === true ) {
689
+
690
+ canvas.style.width = width + 'px';
691
+ canvas.style.height = height + 'px';
692
+
693
+ }
694
+
695
+ if ( output !== null ) {
696
+
697
+ output.setSize( canvas.width, canvas.height );
698
+
699
+ }
700
+
701
+ this.setViewport( 0, 0, width, height );
702
+
703
+ };
704
+
705
+ /**
706
+ * Returns the drawing buffer size in physical pixels. This method honors the pixel ratio.
707
+ *
708
+ * @param {Vector2} target - The method writes the result in this target object.
709
+ * @return {Vector2} The drawing buffer size.
710
+ */
711
+ this.getDrawingBufferSize = function ( target ) {
712
+
713
+ return target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();
714
+
715
+ };
716
+
717
+ /**
718
+ * This method allows to define the drawing buffer size by specifying
719
+ * width, height and pixel ratio all at once. The size of the drawing
720
+ * buffer is computed with this formula:
721
+ * ```js
722
+ * size.x = width * pixelRatio;
723
+ * size.y = height * pixelRatio;
724
+ * ```
725
+ *
726
+ * @param {number} width - The width in logical pixels.
727
+ * @param {number} height - The height in logical pixels.
728
+ * @param {number} pixelRatio - The pixel ratio.
729
+ */
730
+ this.setDrawingBufferSize = function ( width, height, pixelRatio ) {
731
+
732
+ _width = width;
733
+ _height = height;
734
+
735
+ _pixelRatio = pixelRatio;
736
+
737
+ canvas.width = Math.floor( width * pixelRatio );
738
+ canvas.height = Math.floor( height * pixelRatio );
739
+
740
+ this.setViewport( 0, 0, width, height );
741
+
742
+ };
743
+
744
+ /**
745
+ * Sets the post-processing effects to be applied after rendering.
746
+ *
747
+ * @param {Array} effects - An array of post-processing effects.
748
+ */
749
+ this.setEffects = function ( effects ) {
750
+
751
+ if ( _outputBufferType === UnsignedByteType ) {
752
+
753
+ error( 'WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.' );
754
+ return;
755
+
756
+ }
757
+
758
+ if ( effects ) {
759
+
760
+ for ( let i = 0; i < effects.length; i ++ ) {
761
+
762
+ if ( effects[ i ].isOutputPass === true ) {
763
+
764
+ warn( 'WebGLRenderer: OutputPass is not needed in setEffects(). Tone mapping and color space conversion are applied automatically.' );
765
+ break;
766
+
767
+ }
768
+
769
+ }
770
+
771
+ }
772
+
773
+ output.setEffects( effects || [] );
774
+
775
+ };
776
+
777
+ /**
778
+ * Returns the current viewport definition.
779
+ *
780
+ * @param {Vector2} target - The method writes the result in this target object.
781
+ * @return {Vector2} The current viewport definition.
782
+ */
783
+ this.getCurrentViewport = function ( target ) {
784
+
785
+ return target.copy( _currentViewport );
786
+
787
+ };
788
+
789
+ /**
790
+ * Returns the viewport definition.
791
+ *
792
+ * @param {Vector4} target - The method writes the result in this target object.
793
+ * @return {Vector4} The viewport definition.
794
+ */
795
+ this.getViewport = function ( target ) {
796
+
797
+ return target.copy( _viewport );
798
+
799
+ };
800
+
801
+ /**
802
+ * Sets the viewport to render from `(x, y)` to `(x + width, y + height)`.
803
+ *
804
+ * @param {number | Vector4} x - The horizontal coordinate for the lower left corner of the viewport origin in logical pixel unit.
805
+ * Or alternatively a four-component vector specifying all the parameters of the viewport.
806
+ * @param {number} y - The vertical coordinate for the lower left corner of the viewport origin in logical pixel unit.
807
+ * @param {number} width - The width of the viewport in logical pixel unit.
808
+ * @param {number} height - The height of the viewport in logical pixel unit.
809
+ */
810
+ this.setViewport = function ( x, y, width, height ) {
811
+
812
+ if ( x.isVector4 ) {
813
+
814
+ _viewport.set( x.x, x.y, x.z, x.w );
815
+
816
+ } else {
817
+
818
+ _viewport.set( x, y, width, height );
819
+
820
+ }
821
+
822
+ state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( getTargetPixelRatio() ).round() );
823
+
824
+ };
825
+
826
+ /**
827
+ * Returns the scissor region.
828
+ *
829
+ * @param {Vector4} target - The method writes the result in this target object.
830
+ * @return {Vector4} The scissor region.
831
+ */
832
+ this.getScissor = function ( target ) {
833
+
834
+ return target.copy( _scissor );
835
+
836
+ };
837
+
838
+ /**
839
+ * Sets the scissor region to render from `(x, y)` to `(x + width, y + height)`.
840
+ *
841
+ * @param {number | Vector4} x - The horizontal coordinate for the lower left corner of the scissor region origin in logical pixel unit.
842
+ * Or alternatively a four-component vector specifying all the parameters of the scissor region.
843
+ * @param {number} y - The vertical coordinate for the lower left corner of the scissor region origin in logical pixel unit.
844
+ * @param {number} width - The width of the scissor region in logical pixel unit.
845
+ * @param {number} height - The height of the scissor region in logical pixel unit.
846
+ */
847
+ this.setScissor = function ( x, y, width, height ) {
848
+
849
+ if ( x.isVector4 ) {
850
+
851
+ _scissor.set( x.x, x.y, x.z, x.w );
852
+
853
+ } else {
854
+
855
+ _scissor.set( x, y, width, height );
856
+
857
+ }
858
+
859
+ state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( getTargetPixelRatio() ).round() );
860
+
861
+ };
862
+
863
+ /**
864
+ * Returns `true` if the scissor test is enabled.
865
+ *
866
+ * @return {boolean} Whether the scissor test is enabled or not.
867
+ */
868
+ this.getScissorTest = function () {
869
+
870
+ return _scissorTest;
871
+
872
+ };
873
+
874
+ /**
875
+ * Enable or disable the scissor test. When this is enabled, only the pixels
876
+ * within the defined scissor area will be affected by further renderer
877
+ * actions.
878
+ *
879
+ * @param {boolean} boolean - Whether the scissor test is enabled or not.
880
+ */
881
+ this.setScissorTest = function ( boolean ) {
882
+
883
+ state.setScissorTest( _scissorTest = boolean );
884
+
885
+ };
886
+
887
+ /**
888
+ * Sets a custom opaque sort function for the render lists. Pass `null`
889
+ * to use the default `painterSortStable` function.
890
+ *
891
+ * @param {?Function} method - The opaque sort function.
892
+ */
893
+ this.setOpaqueSort = function ( method ) {
894
+
895
+ _opaqueSort = method;
896
+
897
+ };
898
+
899
+ /**
900
+ * Sets a custom transparent sort function for the render lists. Pass `null`
901
+ * to use the default `reversePainterSortStable` function.
902
+ *
903
+ * @param {?Function} method - The opaque sort function.
904
+ */
905
+ this.setTransparentSort = function ( method ) {
906
+
907
+ _transparentSort = method;
908
+
909
+ };
910
+
911
+ // Clearing
912
+
913
+ /**
914
+ * Returns the clear color.
915
+ *
916
+ * @param {Color} target - The method writes the result in this target object.
917
+ * @return {Color} The clear color.
918
+ */
919
+ this.getClearColor = function ( target ) {
920
+
921
+ return target.copy( background.getClearColor() );
922
+
923
+ };
924
+
925
+ /**
926
+ * Sets the clear color and alpha.
927
+ *
928
+ * @param {Color} color - The clear color.
929
+ * @param {number} [alpha=1] - The clear alpha.
930
+ */
931
+ this.setClearColor = function () {
932
+
933
+ background.setClearColor( ...arguments );
934
+
935
+ };
936
+
937
+ /**
938
+ * Returns the clear alpha. Ranges within `[0,1]`.
939
+ *
940
+ * @return {number} The clear alpha.
941
+ */
942
+ this.getClearAlpha = function () {
943
+
944
+ return background.getClearAlpha();
945
+
946
+ };
947
+
948
+ /**
949
+ * Sets the clear alpha.
950
+ *
951
+ * @param {number} alpha - The clear alpha.
952
+ */
953
+ this.setClearAlpha = function () {
954
+
955
+ background.setClearAlpha( ...arguments );
956
+
957
+ };
958
+
959
+ /**
960
+ * Tells the renderer to clear its color, depth or stencil drawing buffer(s).
961
+ * This method initializes the buffers to the current clear color values.
962
+ *
963
+ * @param {boolean} [color=true] - Whether the color buffer should be cleared or not.
964
+ * @param {boolean} [depth=true] - Whether the depth buffer should be cleared or not.
965
+ * @param {boolean} [stencil=true] - Whether the stencil buffer should be cleared or not.
966
+ */
967
+ this.clear = function ( color = true, depth = true, stencil = true ) {
968
+
969
+ let bits = 0;
970
+
971
+ if ( color ) {
972
+
973
+ // check if we're trying to clear an integer target
974
+ let isIntegerFormat = false;
975
+ if ( _currentRenderTarget !== null ) {
976
+
977
+ const targetFormat = _currentRenderTarget.texture.format;
978
+ isIntegerFormat = INTEGER_FORMATS.has( targetFormat );
979
+
980
+ }
981
+
982
+ // use the appropriate clear functions to clear the target if it's a signed
983
+ // or unsigned integer target
984
+ if ( isIntegerFormat ) {
985
+
986
+ const targetType = _currentRenderTarget.texture.type;
987
+ const isUnsignedType = UNSIGNED_TYPES.has( targetType );
988
+
989
+ const clearColor = background.getClearColor();
990
+ const a = background.getClearAlpha();
991
+ const r = clearColor.r;
992
+ const g = clearColor.g;
993
+ const b = clearColor.b;
994
+
995
+ if ( isUnsignedType ) {
996
+
997
+ uintClearColor[ 0 ] = r;
998
+ uintClearColor[ 1 ] = g;
999
+ uintClearColor[ 2 ] = b;
1000
+ uintClearColor[ 3 ] = a;
1001
+ _gl.clearBufferuiv( _gl.COLOR, 0, uintClearColor );
1002
+
1003
+ } else {
1004
+
1005
+ intClearColor[ 0 ] = r;
1006
+ intClearColor[ 1 ] = g;
1007
+ intClearColor[ 2 ] = b;
1008
+ intClearColor[ 3 ] = a;
1009
+ _gl.clearBufferiv( _gl.COLOR, 0, intClearColor );
1010
+
1011
+ }
1012
+
1013
+ } else {
1014
+
1015
+ bits |= _gl.COLOR_BUFFER_BIT;
1016
+
1017
+ }
1018
+
1019
+ }
1020
+
1021
+ if ( depth ) {
1022
+
1023
+ bits |= _gl.DEPTH_BUFFER_BIT;
1024
+ this.state.buffers.depth.setMask( true );
1025
+
1026
+ }
1027
+
1028
+ if ( stencil ) {
1029
+
1030
+ bits |= _gl.STENCIL_BUFFER_BIT;
1031
+ this.state.buffers.stencil.setMask( 0xffffffff );
1032
+
1033
+ }
1034
+
1035
+ if ( bits !== 0 ) {
1036
+
1037
+ _gl.clear( bits );
1038
+
1039
+ }
1040
+
1041
+ };
1042
+
1043
+ /**
1044
+ * Clears the color buffer. Equivalent to calling `renderer.clear( true, false, false )`.
1045
+ */
1046
+ this.clearColor = function () {
1047
+
1048
+ this.clear( true, false, false );
1049
+
1050
+ };
1051
+
1052
+ /**
1053
+ * Clears the depth buffer. Equivalent to calling `renderer.clear( false, true, false )`.
1054
+ */
1055
+ this.clearDepth = function () {
1056
+
1057
+ this.clear( false, true, false );
1058
+
1059
+ };
1060
+
1061
+ /**
1062
+ * Clears the stencil buffer. Equivalent to calling `renderer.clear( false, false, true )`.
1063
+ */
1064
+ this.clearStencil = function () {
1065
+
1066
+ this.clear( false, false, true );
1067
+
1068
+ };
1069
+
1070
+ /**
1071
+ * Sets a compatibility node builder for rendering node materials with WebGLRenderer.
1072
+ * This enables using TSL (Three.js Shading Language) node materials to prepare
1073
+ * for migration to WebGPURenderer.
1074
+ *
1075
+ * @param {WebGLNodesHandler} nodesHandler - The node builder instance.
1076
+ */
1077
+ this.setNodesHandler = function ( nodesHandler ) {
1078
+
1079
+ nodesHandler.setRenderer( this );
1080
+ _nodesHandler = nodesHandler;
1081
+
1082
+ };
1083
+
1084
+ /**
1085
+ * Frees the GPU-related resources allocated by this instance. Call this
1086
+ * method whenever this instance is no longer used in your app.
1087
+ */
1088
+ this.dispose = function () {
1089
+
1090
+ canvas.removeEventListener( 'webglcontextlost', onContextLost, false );
1091
+ canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );
1092
+ canvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );
1093
+
1094
+ background.dispose();
1095
+ renderLists.dispose();
1096
+ renderStates.dispose();
1097
+ textures.dispose();
1098
+ properties.dispose();
1099
+ environments.dispose();
1100
+ objects.dispose();
1101
+ geometries.dispose();
1102
+ bindingStates.dispose();
1103
+ uniformsGroups.dispose();
1104
+ programCache.dispose();
1105
+
1106
+ xr.dispose();
1107
+
1108
+ xr.removeEventListener( 'sessionstart', onXRSessionStart );
1109
+ xr.removeEventListener( 'sessionend', onXRSessionEnd );
1110
+
1111
+ animation.stop();
1112
+
1113
+ };
1114
+
1115
+ // Events
1116
+
1117
+ function onContextLost( event ) {
1118
+
1119
+ event.preventDefault();
1120
+
1121
+ log( 'WebGLRenderer: Context Lost.' );
1122
+
1123
+ _isContextLost = true;
1124
+
1125
+ }
1126
+
1127
+ function onContextRestore( /* event */ ) {
1128
+
1129
+ log( 'WebGLRenderer: Context Restored.' );
1130
+
1131
+ _isContextLost = false;
1132
+
1133
+ const infoAutoReset = info.autoReset;
1134
+ const shadowMapEnabled = shadowMap.enabled;
1135
+ const shadowMapAutoUpdate = shadowMap.autoUpdate;
1136
+ const shadowMapNeedsUpdate = shadowMap.needsUpdate;
1137
+ const shadowMapType = shadowMap.type;
1138
+
1139
+ initGLContext();
1140
+
1141
+ info.autoReset = infoAutoReset;
1142
+ shadowMap.enabled = shadowMapEnabled;
1143
+ shadowMap.autoUpdate = shadowMapAutoUpdate;
1144
+ shadowMap.needsUpdate = shadowMapNeedsUpdate;
1145
+ shadowMap.type = shadowMapType;
1146
+
1147
+ }
1148
+
1149
+ function onContextCreationError( event ) {
1150
+
1151
+ error( 'WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );
1152
+
1153
+ }
1154
+
1155
+ function onMaterialDispose( event ) {
1156
+
1157
+ const material = event.target;
1158
+
1159
+ material.removeEventListener( 'dispose', onMaterialDispose );
1160
+
1161
+ deallocateMaterial( material );
1162
+
1163
+ }
1164
+
1165
+ // Buffer deallocation
1166
+
1167
+ function deallocateMaterial( material ) {
1168
+
1169
+ releaseMaterialProgramReferences( material );
1170
+
1171
+ properties.remove( material );
1172
+
1173
+ }
1174
+
1175
+
1176
+ function releaseMaterialProgramReferences( material ) {
1177
+
1178
+ const programs = properties.get( material ).programs;
1179
+
1180
+ if ( programs !== undefined ) {
1181
+
1182
+ programs.forEach( function ( program ) {
1183
+
1184
+ programCache.releaseProgram( program );
1185
+
1186
+ } );
1187
+
1188
+ if ( material.isShaderMaterial ) {
1189
+
1190
+ programCache.releaseShaderCache( material );
1191
+
1192
+ }
1193
+
1194
+ }
1195
+
1196
+ }
1197
+
1198
+ // Buffer rendering
1199
+
1200
+ this.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {
1201
+
1202
+ if ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)
1203
+
1204
+ const frontFaceCW = ( object.isMesh && object.matrixWorld.determinantAffine() < 0 );
1205
+
1206
+ const program = setProgram( camera, scene, geometry, material, object );
1207
+
1208
+ state.setMaterial( material, frontFaceCW );
1209
+
1210
+ //
1211
+
1212
+ let index = geometry.index;
1213
+ let rangeFactor = 1;
1214
+
1215
+ if ( material.wireframe === true ) {
1216
+
1217
+ index = geometries.getWireframeAttribute( geometry );
1218
+
1219
+ if ( index === undefined ) return;
1220
+
1221
+ rangeFactor = 2;
1222
+
1223
+ }
1224
+
1225
+ //
1226
+
1227
+ const drawRange = geometry.drawRange;
1228
+ const position = geometry.attributes.position;
1229
+
1230
+ let drawStart = drawRange.start * rangeFactor;
1231
+ let drawEnd = ( drawRange.start + drawRange.count ) * rangeFactor;
1232
+
1233
+ if ( group !== null ) {
1234
+
1235
+ drawStart = Math.max( drawStart, group.start * rangeFactor );
1236
+ drawEnd = Math.min( drawEnd, ( group.start + group.count ) * rangeFactor );
1237
+
1238
+ }
1239
+
1240
+ if ( index !== null ) {
1241
+
1242
+ drawStart = Math.max( drawStart, 0 );
1243
+ drawEnd = Math.min( drawEnd, index.count );
1244
+
1245
+ } else if ( position !== undefined && position !== null ) {
1246
+
1247
+ drawStart = Math.max( drawStart, 0 );
1248
+ drawEnd = Math.min( drawEnd, position.count );
1249
+
1250
+ }
1251
+
1252
+ const drawCount = drawEnd - drawStart;
1253
+
1254
+ if ( drawCount < 0 || drawCount === Infinity ) return;
1255
+
1256
+ //
1257
+
1258
+ bindingStates.setup( object, material, program, geometry, index );
1259
+
1260
+ let attribute;
1261
+ let renderer = bufferRenderer;
1262
+
1263
+ if ( index !== null ) {
1264
+
1265
+ attribute = attributes.get( index );
1266
+
1267
+ renderer = indexedBufferRenderer;
1268
+ renderer.setIndex( attribute );
1269
+
1270
+ }
1271
+
1272
+ //
1273
+
1274
+ if ( object.isMesh ) {
1275
+
1276
+ if ( material.wireframe === true ) {
1277
+
1278
+ state.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );
1279
+ renderer.setMode( _gl.LINES );
1280
+
1281
+ } else {
1282
+
1283
+ renderer.setMode( _gl.TRIANGLES );
1284
+
1285
+ }
1286
+
1287
+ } else if ( object.isLine ) {
1288
+
1289
+ let lineWidth = material.linewidth;
1290
+
1291
+ if ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material
1292
+
1293
+ state.setLineWidth( lineWidth * getTargetPixelRatio() );
1294
+
1295
+ if ( object.isLineSegments ) {
1296
+
1297
+ renderer.setMode( _gl.LINES );
1298
+
1299
+ } else if ( object.isLineLoop ) {
1300
+
1301
+ renderer.setMode( _gl.LINE_LOOP );
1302
+
1303
+ } else {
1304
+
1305
+ renderer.setMode( _gl.LINE_STRIP );
1306
+
1307
+ }
1308
+
1309
+ } else if ( object.isPoints ) {
1310
+
1311
+ renderer.setMode( _gl.POINTS );
1312
+
1313
+ } else if ( object.isSprite ) {
1314
+
1315
+ renderer.setMode( _gl.TRIANGLES );
1316
+
1317
+ }
1318
+
1319
+ if ( object.isBatchedMesh ) {
1320
+
1321
+ if ( ! extensions.get( 'WEBGL_multi_draw' ) ) {
1322
+
1323
+ const starts = object._multiDrawStarts;
1324
+ const counts = object._multiDrawCounts;
1325
+ const drawCount = object._multiDrawCount;
1326
+ const bytesPerElement = index ? attributes.get( index ).bytesPerElement : 1;
1327
+ const uniforms = properties.get( material ).currentProgram.getUniforms();
1328
+ for ( let i = 0; i < drawCount; i ++ ) {
1329
+
1330
+ uniforms.setValue( _gl, '_gl_DrawID', i );
1331
+ renderer.render( starts[ i ] / bytesPerElement, counts[ i ] );
1332
+
1333
+ }
1334
+
1335
+ } else {
1336
+
1337
+ renderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );
1338
+
1339
+ }
1340
+
1341
+ } else if ( object.isInstancedMesh ) {
1342
+
1343
+ renderer.renderInstances( drawStart, drawCount, object.count );
1344
+
1345
+ } else if ( geometry.isInstancedBufferGeometry ) {
1346
+
1347
+ const maxInstanceCount = geometry._maxInstanceCount !== undefined ? geometry._maxInstanceCount : Infinity;
1348
+ const instanceCount = Math.min( geometry.instanceCount, maxInstanceCount );
1349
+
1350
+ renderer.renderInstances( drawStart, drawCount, instanceCount );
1351
+
1352
+ } else {
1353
+
1354
+ renderer.render( drawStart, drawCount );
1355
+
1356
+ }
1357
+
1358
+ };
1359
+
1360
+ // Compile
1361
+
1362
+ function prepareMaterial( material, scene, camera, object ) {
1363
+
1364
+ if ( _nodesHandler !== null && material.isNodeMaterial ) _nodesHandler.setObject( object, material );
1365
+
1366
+ if ( _clippingEnabled === true ) clipping.setState( material, camera, false );
1367
+
1368
+ if ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {
1369
+
1370
+ material.side = BackSide;
1371
+ material.needsUpdate = true;
1372
+ getProgram( material, scene, object );
1373
+
1374
+ material.side = FrontSide;
1375
+ material.needsUpdate = true;
1376
+ getProgram( material, scene, object );
1377
+
1378
+ material.side = DoubleSide;
1379
+
1380
+ } else {
1381
+
1382
+ getProgram( material, scene, object );
1383
+
1384
+ }
1385
+
1386
+ }
1387
+
1388
+ /**
1389
+ * Compiles all materials in the scene with the camera. This is useful to precompile shaders
1390
+ * before the first rendering. If you want to add a 3D object to an existing scene, use the third
1391
+ * optional parameter for applying the target scene.
1392
+ *
1393
+ * Note that the (target) scene's lighting and environment must be configured before calling this method.
1394
+ *
1395
+ * @param {Object3D} scene - The scene or another type of 3D object to precompile.
1396
+ * @param {Camera} camera - The camera.
1397
+ * @param {?Scene} [targetScene=null] - The target scene.
1398
+ * @return {Set<Material>} The precompiled materials.
1399
+ */
1400
+ this.compile = function ( scene, camera, targetScene = null ) {
1401
+
1402
+ if ( targetScene === null ) targetScene = scene;
1403
+ if ( _nodesHandler !== null ) _nodesHandler.renderStart( scene, camera, targetScene );
1404
+
1405
+ currentRenderState = renderStates.get( targetScene );
1406
+ currentRenderState.init( camera );
1407
+
1408
+ renderStateStack.push( currentRenderState );
1409
+
1410
+ // gather lights from both the target scene and the new object that will be added to the scene.
1411
+
1412
+ targetScene.traverseVisible( function ( object ) {
1413
+
1414
+ if ( object.isLight && object.layers.test( camera.layers ) ) {
1415
+
1416
+ currentRenderState.pushLight( object );
1417
+
1418
+ if ( object.castShadow ) {
1419
+
1420
+ currentRenderState.pushShadow( object );
1421
+
1422
+ }
1423
+
1424
+ }
1425
+
1426
+ } );
1427
+
1428
+ if ( scene !== targetScene ) {
1429
+
1430
+ scene.traverseVisible( function ( object ) {
1431
+
1432
+ if ( object.isLight && object.layers.test( camera.layers ) ) {
1433
+
1434
+ currentRenderState.pushLight( object );
1435
+
1436
+ if ( object.castShadow ) {
1437
+
1438
+ currentRenderState.pushShadow( object );
1439
+
1440
+ }
1441
+
1442
+ }
1443
+
1444
+ } );
1445
+
1446
+ }
1447
+
1448
+ currentRenderState.setupLights();
1449
+ if ( _nodesHandler !== null ) _nodesHandler.updateLights( currentRenderState.state.lightsArray );
1450
+
1451
+ _localClippingEnabled = this.localClippingEnabled;
1452
+ _clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled );
1453
+
1454
+ if ( _clippingEnabled === true ) clipping.setGlobalState( this.clippingPlanes, camera );
1455
+
1456
+ // node materials reference the shadow map when they are built, so it must exist by now
1457
+
1458
+ if ( _nodesHandler !== null ) shadowMap.render( currentRenderState.state.shadowsArray, targetScene, camera );
1459
+
1460
+ // Only initialize materials in the new scene, not the targetScene.
1461
+
1462
+ const materials = new Set();
1463
+
1464
+ scene.traverse( function ( object ) {
1465
+
1466
+ if ( ! ( object.isMesh || object.isPoints || object.isLine || object.isSprite ) ) {
1467
+
1468
+ return;
1469
+
1470
+ }
1471
+
1472
+ const material = object.material;
1473
+
1474
+ if ( material ) {
1475
+
1476
+ if ( Array.isArray( material ) ) {
1477
+
1478
+ for ( let i = 0; i < material.length; i ++ ) {
1479
+
1480
+ const material2 = material[ i ];
1481
+
1482
+ prepareMaterial( material2, targetScene, camera, object );
1483
+ materials.add( material2 );
1484
+
1485
+ }
1486
+
1487
+ } else {
1488
+
1489
+ prepareMaterial( material, targetScene, camera, object );
1490
+ materials.add( material );
1491
+
1492
+ }
1493
+
1494
+ }
1495
+
1496
+ } );
1497
+
1498
+ currentRenderState = renderStateStack.pop();
1499
+ if ( _nodesHandler !== null ) _nodesHandler.renderEnd();
1500
+
1501
+ return materials;
1502
+
1503
+ };
1504
+
1505
+ // compileAsync
1506
+
1507
+ /**
1508
+ * Asynchronous version of {@link WebGLRenderer#compile}.
1509
+ *
1510
+ * This method makes use of the `KHR_parallel_shader_compile` WebGL extension. Hence,
1511
+ * it is recommended to use this version of `compile()` whenever possible.
1512
+ *
1513
+ * @async
1514
+ * @param {Object3D} scene - The scene or another type of 3D object to precompile.
1515
+ * @param {Camera} camera - The camera.
1516
+ * @param {?Scene} [targetScene=null] - The target scene.
1517
+ * @return {Promise} A Promise that resolves when the given scene can be rendered without unnecessary stalling due to shader compilation.
1518
+ */
1519
+ this.compileAsync = function ( scene, camera, targetScene = null ) {
1520
+
1521
+ const materials = this.compile( scene, camera, targetScene );
1522
+
1523
+ // Wait for all the materials in the new object to indicate that they're
1524
+ // ready to be used before resolving the promise.
1525
+
1526
+ return new Promise( ( resolve ) => {
1527
+
1528
+ function checkMaterialsReady() {
1529
+
1530
+ materials.forEach( function ( material ) {
1531
+
1532
+ const materialProperties = properties.get( material );
1533
+ const program = materialProperties.currentProgram;
1534
+
1535
+ if ( program === undefined || program.isReady() ) {
1536
+
1537
+ // stop waiting for materials that are ready to use or have been disposed
1538
+ materials.delete( material );
1539
+
1540
+ }
1541
+
1542
+ } );
1543
+
1544
+ // once the list of compiling materials is empty, call the callback
1545
+
1546
+ if ( materials.size === 0 ) {
1547
+
1548
+ resolve( scene );
1549
+ return;
1550
+
1551
+ }
1552
+
1553
+ // if some materials are still not ready, wait a bit and check again
1554
+
1555
+ setTimeout( checkMaterialsReady, 10 );
1556
+
1557
+ }
1558
+
1559
+ if ( extensions.get( 'KHR_parallel_shader_compile' ) !== null ) {
1560
+
1561
+ // If we can check the compilation status of the materials without
1562
+ // blocking then do so right away.
1563
+
1564
+ checkMaterialsReady();
1565
+
1566
+ } else {
1567
+
1568
+ // Otherwise start by waiting a bit to give the materials we just
1569
+ // initialized a chance to finish.
1570
+
1571
+ setTimeout( checkMaterialsReady, 10 );
1572
+
1573
+ }
1574
+
1575
+ } );
1576
+
1577
+ };
1578
+
1579
+ // Animation Loop
1580
+
1581
+ let onAnimationFrameCallback = null;
1582
+
1583
+ function onAnimationFrame( time ) {
1584
+
1585
+ if ( onAnimationFrameCallback ) onAnimationFrameCallback( time );
1586
+
1587
+ }
1588
+
1589
+ function onXRSessionStart() {
1590
+
1591
+ animation.stop();
1592
+
1593
+ }
1594
+
1595
+ function onXRSessionEnd() {
1596
+
1597
+ animation.start();
1598
+
1599
+ }
1600
+
1601
+ const animation = new WebGLAnimation();
1602
+ animation.setAnimationLoop( onAnimationFrame );
1603
+
1604
+ if ( typeof self !== 'undefined' ) animation.setContext( self );
1605
+
1606
+ /**
1607
+ * Applications are advised to always define the animation loop
1608
+ * with this method and not manually with `requestAnimationFrame()`
1609
+ * for best compatibility.
1610
+ *
1611
+ * @param {?onAnimationCallback} callback - The application's animation loop.
1612
+ */
1613
+ this.setAnimationLoop = function ( callback ) {
1614
+
1615
+ onAnimationFrameCallback = callback;
1616
+ xr.setAnimationLoop( callback );
1617
+
1618
+ ( callback === null ) ? animation.stop() : animation.start();
1619
+
1620
+ };
1621
+
1622
+ xr.addEventListener( 'sessionstart', onXRSessionStart );
1623
+ xr.addEventListener( 'sessionend', onXRSessionEnd );
1624
+
1625
+ // Rendering
1626
+
1627
+ /**
1628
+ * Renders the given scene (or other type of 3D object) using the given camera.
1629
+ *
1630
+ * The render is done to a previously specified render target set by calling {@link WebGLRenderer#setRenderTarget}
1631
+ * or to the canvas as usual.
1632
+ *
1633
+ * By default render buffers are cleared before rendering but you can prevent
1634
+ * this by setting the property `autoClear` to `false`. If you want to prevent
1635
+ * only certain buffers being cleared you can `autoClearColor`, `autoClearDepth`
1636
+ * or `autoClearStencil` to `false`. To force a clear, use {@link WebGLRenderer#clear}.
1637
+ *
1638
+ * @param {Object3D} scene - The scene to render.
1639
+ * @param {Camera} camera - The camera.
1640
+ */
1641
+ this.render = function ( scene, camera ) {
1642
+
1643
+ if ( camera !== undefined && camera.isCamera !== true ) {
1644
+
1645
+ error( 'WebGLRenderer.render: camera is not an instance of THREE.Camera.' );
1646
+ return;
1647
+
1648
+ }
1649
+
1650
+ if ( _isContextLost === true ) return;
1651
+
1652
+ // update node builder if available
1653
+ if ( _nodesHandler !== null ) {
1654
+
1655
+ _nodesHandler.renderStart( scene, camera );
1656
+
1657
+ }
1658
+
1659
+ // use internal render target for HalfFloatType color buffer (only when tone mapping is enabled)
1660
+
1661
+ const isXRPresenting = xr.enabled === true && xr.isPresenting === true;
1662
+
1663
+ const useOutput = output !== null && ( _currentRenderTarget === null || isXRPresenting ) && output.begin( _this, _currentRenderTarget );
1664
+
1665
+ // update scene graph
1666
+
1667
+ if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
1668
+
1669
+ // update camera matrices and frustum
1670
+
1671
+ if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
1672
+
1673
+ if ( xr.enabled === true && xr.isPresenting === true && ( output === null || output.isCompositing() === false ) ) {
1674
+
1675
+ if ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );
1676
+
1677
+ camera = xr.getCamera(); // use XR camera for rendering
1678
+
1679
+ }
1680
+
1681
+ //
1682
+ if ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );
1683
+
1684
+ currentRenderState = renderStates.get( scene, renderStateStack.length );
1685
+ currentRenderState.init( camera );
1686
+
1687
+ currentRenderState.state.textureUnits = textures.getTextureUnits();
1688
+ renderStateStack.push( currentRenderState );
1689
+
1690
+ _projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );
1691
+
1692
+ if ( camera.isArrayCamera ) {
1693
+
1694
+ _frustumArray.setFromArrayCamera( camera );
1695
+
1696
+ } else {
1697
+
1698
+ _frustum.setFromProjectionMatrix( _projScreenMatrix, WebGLCoordinateSystem, camera.reversedDepth );
1699
+
1700
+ }
1701
+
1702
+ _localClippingEnabled = this.localClippingEnabled;
1703
+ _clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled );
1704
+
1705
+ currentRenderList = renderLists.get( scene, renderListStack.length );
1706
+ currentRenderList.init();
1707
+
1708
+ renderListStack.push( currentRenderList );
1709
+
1710
+ this.info.render.frame ++; // increment before projectObject(), see #35099
1711
+
1712
+ if ( xr.enabled === true && xr.isPresenting === true ) {
1713
+
1714
+ const depthSensingMesh = _this.xr.getDepthSensingMesh();
1715
+
1716
+ if ( depthSensingMesh !== null ) {
1717
+
1718
+ projectObject( depthSensingMesh, camera, - Infinity, _this.sortObjects );
1719
+
1720
+ }
1721
+
1722
+ }
1723
+
1724
+ projectObject( scene, camera, 0, _this.sortObjects );
1725
+
1726
+ currentRenderList.finish();
1727
+ if ( _nodesHandler !== null ) _nodesHandler.updateLights( currentRenderState.state.lightsArray );
1728
+
1729
+ if ( _this.sortObjects === true ) {
1730
+
1731
+ currentRenderList.sort( _opaqueSort, _transparentSort );
1732
+
1733
+ }
1734
+
1735
+ _renderBackground = xr.enabled === false || xr.isPresenting === false || xr.hasDepthSensing() === false;
1736
+ if ( _renderBackground ) {
1737
+
1738
+ background.addToRenderList( currentRenderList, scene );
1739
+
1740
+ }
1741
+
1742
+ //
1743
+
1744
+ if ( this.info.autoReset === true ) this.info.reset();
1745
+
1746
+ if ( _clippingEnabled === true ) clipping.beginShadows();
1747
+
1748
+ const shadowsArray = currentRenderState.state.shadowsArray;
1749
+
1750
+ shadowMap.render( shadowsArray, scene, camera );
1751
+
1752
+ if ( _clippingEnabled === true ) clipping.endShadows();
1753
+
1754
+ //
1755
+
1756
+ // render scene (skip if first effect is a render pass - it will render the scene itself)
1757
+
1758
+ const skipSceneRender = useOutput && output.hasRenderPass();
1759
+
1760
+ if ( skipSceneRender === false ) {
1761
+
1762
+ const opaqueObjects = currentRenderList.opaque;
1763
+ const transmissiveObjects = currentRenderList.transmissive;
1764
+
1765
+ currentRenderState.setupLights();
1766
+
1767
+ if ( camera.isArrayCamera ) {
1768
+
1769
+ const cameras = camera.cameras;
1770
+
1771
+ if ( transmissiveObjects.length > 0 ) {
1772
+
1773
+ for ( let i = 0, l = cameras.length; i < l; i ++ ) {
1774
+
1775
+ const camera2 = cameras[ i ];
1776
+
1777
+ renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera2 );
1778
+
1779
+ }
1780
+
1781
+ }
1782
+
1783
+ if ( _renderBackground ) background.render( scene );
1784
+
1785
+ for ( let i = 0, l = cameras.length; i < l; i ++ ) {
1786
+
1787
+ const camera2 = cameras[ i ];
1788
+
1789
+ renderScene( currentRenderList, scene, camera2, camera2.viewport );
1790
+
1791
+ }
1792
+
1793
+ } else {
1794
+
1795
+ if ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera );
1796
+
1797
+ if ( _renderBackground ) background.render( scene );
1798
+
1799
+ renderScene( currentRenderList, scene, camera );
1800
+
1801
+ }
1802
+
1803
+ }
1804
+
1805
+ //
1806
+
1807
+ if ( _currentRenderTarget !== null && _currentActiveMipmapLevel === 0 ) {
1808
+
1809
+ // resolve multisample renderbuffers to a single-sample texture if necessary
1810
+
1811
+ textures.updateMultisampleRenderTarget( _currentRenderTarget );
1812
+
1813
+ // Generate mipmap if we're using any kind of mipmap filtering
1814
+
1815
+ textures.updateRenderTargetMipmap( _currentRenderTarget );
1816
+
1817
+ }
1818
+
1819
+ // copy from internal render target to canvas using fullscreen quad
1820
+
1821
+ if ( useOutput ) {
1822
+
1823
+ output.end( _this );
1824
+
1825
+ }
1826
+
1827
+ //
1828
+
1829
+ if ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );
1830
+
1831
+ // _gl.finish();
1832
+
1833
+ bindingStates.resetDefaultState();
1834
+ _currentMaterialId = - 1;
1835
+ _currentCamera = null;
1836
+
1837
+ renderStateStack.pop();
1838
+
1839
+ if ( renderStateStack.length > 0 ) {
1840
+
1841
+ currentRenderState = renderStateStack[ renderStateStack.length - 1 ];
1842
+
1843
+ textures.setTextureUnits( currentRenderState.state.textureUnits );
1844
+
1845
+ if ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, currentRenderState.state.camera );
1846
+
1847
+ } else {
1848
+
1849
+ currentRenderState = null;
1850
+
1851
+ }
1852
+
1853
+ renderListStack.pop();
1854
+
1855
+ if ( renderListStack.length > 0 ) {
1856
+
1857
+ currentRenderList = renderListStack[ renderListStack.length - 1 ];
1858
+
1859
+ } else {
1860
+
1861
+ currentRenderList = null;
1862
+
1863
+ }
1864
+
1865
+ if ( _nodesHandler !== null ) {
1866
+
1867
+ _nodesHandler.renderEnd();
1868
+
1869
+ }
1870
+
1871
+ };
1872
+
1873
+ function projectObject( object, camera, groupOrder, sortObjects ) {
1874
+
1875
+ if ( object.visible === false ) return;
1876
+
1877
+ const visible = object.layers.test( camera.layers );
1878
+
1879
+ if ( visible ) {
1880
+
1881
+ if ( object.isGroup ) {
1882
+
1883
+ groupOrder = object.renderOrder;
1884
+
1885
+ } else if ( object.isLOD ) {
1886
+
1887
+ if ( object.autoUpdate === true ) object.update( camera );
1888
+
1889
+ } else if ( object.isLight ) {
1890
+
1891
+ currentRenderState.pushLight( object );
1892
+
1893
+ if ( object.castShadow ) {
1894
+
1895
+ currentRenderState.pushShadow( object );
1896
+
1897
+ }
1898
+
1899
+ } else if ( object.isSprite ) {
1900
+
1901
+ const frustum = camera.isArrayCamera ? _frustumArray : _frustum;
1902
+
1903
+ if ( ! object.frustumCulled || object.intersectsFrustum( frustum ) ) {
1904
+
1905
+ if ( sortObjects ) {
1906
+
1907
+ _vector4.setFromMatrixPosition( object.matrixWorld )
1908
+ .applyMatrix4( _projScreenMatrix );
1909
+
1910
+ }
1911
+
1912
+ const geometry = objects.update( object );
1913
+ const material = object.material;
1914
+
1915
+ if ( material.visible ) {
1916
+
1917
+ currentRenderList.push( object, geometry, material, groupOrder, _vector4.z, null, camera );
1918
+
1919
+ }
1920
+
1921
+ }
1922
+
1923
+ } else if ( object.isMesh || object.isLine || object.isPoints ) {
1924
+
1925
+ const frustum = camera.isArrayCamera ? _frustumArray : _frustum;
1926
+
1927
+ if ( ! object.frustumCulled || object.intersectsFrustum( frustum ) ) {
1928
+
1929
+ const geometry = objects.update( object );
1930
+ const material = object.material;
1931
+
1932
+ if ( sortObjects ) {
1933
+
1934
+ if ( object.boundingSphere !== undefined ) {
1935
+
1936
+ if ( object.boundingSphere === null ) object.computeBoundingSphere();
1937
+ _vector4.copy( object.boundingSphere.center );
1938
+
1939
+ } else {
1940
+
1941
+ if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();
1942
+ _vector4.copy( geometry.boundingSphere.center );
1943
+
1944
+ }
1945
+
1946
+ _vector4
1947
+ .applyMatrix4( object.matrixWorld )
1948
+ .applyMatrix4( _projScreenMatrix );
1949
+
1950
+ }
1951
+
1952
+ if ( Array.isArray( material ) ) {
1953
+
1954
+ const groups = geometry.groups;
1955
+
1956
+ for ( let i = 0, l = groups.length; i < l; i ++ ) {
1957
+
1958
+ const group = groups[ i ];
1959
+ const groupMaterial = material[ group.materialIndex ];
1960
+
1961
+ if ( groupMaterial && groupMaterial.visible ) {
1962
+
1963
+ currentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector4.z, group, camera );
1964
+
1965
+ }
1966
+
1967
+ }
1968
+
1969
+ } else if ( material.visible ) {
1970
+
1971
+ currentRenderList.push( object, geometry, material, groupOrder, _vector4.z, null, camera );
1972
+
1973
+ }
1974
+
1975
+ }
1976
+
1977
+ }
1978
+
1979
+ }
1980
+
1981
+ const children = object.children;
1982
+
1983
+ for ( let i = 0, l = children.length; i < l; i ++ ) {
1984
+
1985
+ projectObject( children[ i ], camera, groupOrder, sortObjects );
1986
+
1987
+ }
1988
+
1989
+ }
1990
+
1991
+ function renderScene( currentRenderList, scene, camera, viewport ) {
1992
+
1993
+ const { opaque: opaqueObjects, transmissive: transmissiveObjects, transparent: transparentObjects } = currentRenderList;
1994
+
1995
+ currentRenderState.setupLightsView( camera );
1996
+
1997
+ if ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );
1998
+
1999
+ if ( viewport ) state.viewport( _currentViewport.copy( viewport ) );
2000
+
2001
+ if ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );
2002
+ if ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );
2003
+ if ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );
2004
+
2005
+ // Ensure depth buffer writing is enabled so it can be cleared on next render
2006
+
2007
+ state.buffers.depth.setTest( true );
2008
+ state.buffers.depth.setMask( true );
2009
+ state.buffers.color.setMask( true );
2010
+
2011
+ state.setPolygonOffset( false );
2012
+
2013
+ }
2014
+
2015
+ function renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera ) {
2016
+
2017
+ const overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;
2018
+
2019
+ if ( overrideMaterial !== null ) {
2020
+
2021
+ return;
2022
+
2023
+ }
2024
+
2025
+ if ( currentRenderState.state.transmissionRenderTarget[ camera.id ] === undefined ) {
2026
+
2027
+ const hasHalfFloatSupport = extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' );
2028
+
2029
+ currentRenderState.state.transmissionRenderTarget[ camera.id ] = new WebGLRenderTarget( 1, 1, {
2030
+ generateMipmaps: true,
2031
+ type: hasHalfFloatSupport ? HalfFloatType : UnsignedByteType,
2032
+ minFilter: LinearMipmapLinearFilter,
2033
+ samples: Math.max( 4, capabilities.samples ), // to avoid feedback loops, the transmission render target requires a resolve, see #26177
2034
+ stencilBuffer: stencil,
2035
+ resolveDepthBuffer: false,
2036
+ resolveStencilBuffer: false,
2037
+ storeMultisampledDepthBuffer: false,
2038
+ storeMultisampledStencilBuffer: false,
2039
+ colorSpace: ColorManagement.workingColorSpace,
2040
+ } );
2041
+
2042
+ // debug
2043
+
2044
+ /*
2045
+ const geometry = new PlaneGeometry();
2046
+ const material = new MeshBasicMaterial( { map: _transmissionRenderTarget.texture } );
2047
+
2048
+ const mesh = new Mesh( geometry, material );
2049
+ scene.add( mesh );
2050
+ */
2051
+
2052
+ }
2053
+
2054
+ const transmissionRenderTarget = currentRenderState.state.transmissionRenderTarget[ camera.id ];
2055
+
2056
+ const activeViewport = camera.viewport || _currentViewport;
2057
+ transmissionRenderTarget.setSize( activeViewport.z * _this.transmissionResolutionScale, activeViewport.w * _this.transmissionResolutionScale );
2058
+
2059
+ //
2060
+
2061
+ const currentRenderTarget = _this.getRenderTarget();
2062
+ const currentActiveCubeFace = _this.getActiveCubeFace();
2063
+ const currentActiveMipmapLevel = _this.getActiveMipmapLevel();
2064
+
2065
+ _this.setRenderTarget( transmissionRenderTarget );
2066
+
2067
+ _this.getClearColor( _currentClearColor );
2068
+ _currentClearAlpha = _this.getClearAlpha();
2069
+ if ( _currentClearAlpha < 1 ) _this.setClearColor( 0xffffff, 0.5 );
2070
+
2071
+ _this.clear();
2072
+
2073
+ if ( _renderBackground ) background.render( scene );
2074
+
2075
+ // Turn off the features which can affect the frag color for opaque objects pass.
2076
+ // Otherwise they are applied twice in opaque objects pass and transmission objects pass.
2077
+ const currentToneMapping = _this.toneMapping;
2078
+ _this.toneMapping = NoToneMapping;
2079
+
2080
+ // Remove viewport from camera to avoid nested render calls resetting viewport to it (e.g Reflector).
2081
+ // Transmission render pass requires viewport to match the transmissionRenderTarget.
2082
+ const currentCameraViewport = camera.viewport;
2083
+ if ( camera.viewport !== undefined ) camera.viewport = undefined;
2084
+
2085
+ currentRenderState.setupLightsView( camera );
2086
+
2087
+ if ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );
2088
+
2089
+ renderObjects( opaqueObjects, scene, camera );
2090
+
2091
+ textures.updateMultisampleRenderTarget( transmissionRenderTarget );
2092
+ textures.updateRenderTargetMipmap( transmissionRenderTarget );
2093
+
2094
+ if ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === false ) { // see #28131
2095
+
2096
+ let renderTargetNeedsUpdate = false;
2097
+
2098
+ for ( let i = 0, l = transmissiveObjects.length; i < l; i ++ ) {
2099
+
2100
+ const renderItem = transmissiveObjects[ i ];
2101
+
2102
+ const { object, geometry, material, group } = renderItem;
2103
+
2104
+ if ( material.side === DoubleSide && object.layers.test( camera.layers ) ) {
2105
+
2106
+ const currentSide = material.side;
2107
+
2108
+ material.side = BackSide;
2109
+ material.needsUpdate = true;
2110
+
2111
+ renderObject( object, scene, camera, geometry, material, group );
2112
+
2113
+ material.side = currentSide;
2114
+ material.needsUpdate = true;
2115
+
2116
+ renderTargetNeedsUpdate = true;
2117
+
2118
+ }
2119
+
2120
+ }
2121
+
2122
+ if ( renderTargetNeedsUpdate === true ) {
2123
+
2124
+ textures.updateMultisampleRenderTarget( transmissionRenderTarget );
2125
+ textures.updateRenderTargetMipmap( transmissionRenderTarget );
2126
+
2127
+ }
2128
+
2129
+ }
2130
+
2131
+ _this.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );
2132
+
2133
+ _this.setClearColor( _currentClearColor, _currentClearAlpha );
2134
+
2135
+ if ( currentCameraViewport !== undefined ) camera.viewport = currentCameraViewport;
2136
+
2137
+ _this.toneMapping = currentToneMapping;
2138
+
2139
+ }
2140
+
2141
+ function renderObjects( renderList, scene, camera ) {
2142
+
2143
+ const overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;
2144
+
2145
+ for ( let i = 0, l = renderList.length; i < l; i ++ ) {
2146
+
2147
+ const renderItem = renderList[ i ];
2148
+
2149
+ const { object, geometry, group } = renderItem;
2150
+ let material = renderItem.material;
2151
+
2152
+ if ( material.allowOverride === true && overrideMaterial !== null ) {
2153
+
2154
+ material = overrideMaterial;
2155
+
2156
+ }
2157
+
2158
+ if ( object.layers.test( camera.layers ) ) {
2159
+
2160
+ renderObject( object, scene, camera, geometry, material, group );
2161
+
2162
+ }
2163
+
2164
+ }
2165
+
2166
+ }
2167
+
2168
+ function renderObject( object, scene, camera, geometry, material, group ) {
2169
+
2170
+ if ( _nodesHandler !== null && material.isNodeMaterial ) _nodesHandler.setObject( object, material );
2171
+ object.onBeforeRender( _this, scene, camera, geometry, material, group );
2172
+
2173
+ object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );
2174
+ object.normalMatrix.getNormalMatrix( object.modelViewMatrix );
2175
+
2176
+ material.onBeforeRender( _this, scene, camera, geometry, object, group );
2177
+
2178
+ if ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {
2179
+
2180
+ material.side = BackSide;
2181
+ material.needsUpdate = true;
2182
+ _this.renderBufferDirect( camera, scene, geometry, material, object, group );
2183
+
2184
+ material.side = FrontSide;
2185
+ material.needsUpdate = true;
2186
+ _this.renderBufferDirect( camera, scene, geometry, material, object, group );
2187
+
2188
+ material.side = DoubleSide;
2189
+
2190
+ } else {
2191
+
2192
+ _this.renderBufferDirect( camera, scene, geometry, material, object, group );
2193
+
2194
+ }
2195
+
2196
+ object.onAfterRender( _this, scene, camera, geometry, material, group );
2197
+
2198
+ }
2199
+
2200
+ function countLightProbeGrids( grids ) {
2201
+
2202
+ let count = 0;
2203
+
2204
+ for ( const grid of grids ) if ( grid.texture !== null ) count ++;
2205
+
2206
+ return count;
2207
+
2208
+ }
2209
+
2210
+ function getProgram( material, scene, object ) {
2211
+
2212
+ if ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...
2213
+
2214
+ const materialProperties = properties.get( material );
2215
+
2216
+ const lights = currentRenderState.state.lights;
2217
+ const shadowsArray = currentRenderState.state.shadowsArray;
2218
+
2219
+ const lightsStateVersion = lights.state.version;
2220
+
2221
+ const parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object, currentRenderState.state.lightProbeGridArray );
2222
+ const programCacheKey = programCache.getProgramCacheKey( parameters );
2223
+
2224
+ let programs = materialProperties.programs;
2225
+
2226
+ // always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change
2227
+
2228
+ materialProperties.environment = ( material.isMeshStandardMaterial || material.isMeshLambertMaterial || material.isMeshPhongMaterial ) ? scene.environment : null;
2229
+ materialProperties.fog = scene.fog;
2230
+
2231
+ const usePMREM = material.isMeshStandardMaterial || ( material.isMeshLambertMaterial && ! material.envMap ) || ( material.isMeshPhongMaterial && ! material.envMap );
2232
+ materialProperties.envMap = environments.get( material.envMap || materialProperties.environment, usePMREM );
2233
+ materialProperties.envMapRotation = ( materialProperties.environment !== null && material.envMap === null ) ? scene.environmentRotation : material.envMapRotation;
2234
+
2235
+ if ( programs === undefined ) {
2236
+
2237
+ // new material
2238
+
2239
+ material.addEventListener( 'dispose', onMaterialDispose );
2240
+
2241
+ programs = new Map();
2242
+ materialProperties.programs = programs;
2243
+ materialProperties.programVariants = new Map();
2244
+
2245
+ }
2246
+
2247
+ let program = programs.get( programCacheKey );
2248
+
2249
+ if ( program !== undefined ) {
2250
+
2251
+ // early out if program and light state is identical
2252
+
2253
+ if ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {
2254
+
2255
+ updateCommonMaterialProperties( material, parameters );
2256
+
2257
+ return program;
2258
+
2259
+ }
2260
+
2261
+ } else {
2262
+
2263
+ parameters.uniforms = programCache.getUniforms( material );
2264
+
2265
+ // Use node builder for node materials if available
2266
+ if ( _nodesHandler !== null && material.isNodeMaterial ) {
2267
+
2268
+ _nodesHandler.build( material, object, parameters );
2269
+
2270
+ }
2271
+
2272
+ material.onBeforeCompile( parameters, _this );
2273
+
2274
+ program = programCache.acquireProgram( parameters, programCacheKey );
2275
+ programs.set( programCacheKey, program );
2276
+
2277
+ materialProperties.uniforms = parameters.uniforms;
2278
+
2279
+ }
2280
+
2281
+ const uniforms = materialProperties.uniforms;
2282
+
2283
+ if ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {
2284
+
2285
+ uniforms.clippingPlanes = clipping.uniform;
2286
+
2287
+ }
2288
+
2289
+ updateCommonMaterialProperties( material, parameters );
2290
+
2291
+ // store the light setup it was created for
2292
+
2293
+ materialProperties.needsLights = materialNeedsLights( material );
2294
+ materialProperties.lightsStateVersion = lightsStateVersion;
2295
+
2296
+ if ( materialProperties.needsLights ) {
2297
+
2298
+ // wire up the material to this renderer's lighting state
2299
+
2300
+ uniforms.ambientLightColor.value = lights.state.ambient;
2301
+ uniforms.lightProbe.value = lights.state.probe;
2302
+ uniforms.sunLights.value = lights.state.sun;
2303
+ uniforms.sunLightShadows.value = lights.state.sunShadow;
2304
+ uniforms.directionalLights.value = lights.state.directional;
2305
+ uniforms.directionalLightShadows.value = lights.state.directionalShadow;
2306
+ uniforms.spotLights.value = lights.state.spot;
2307
+ uniforms.spotLightShadows.value = lights.state.spotShadow;
2308
+ uniforms.rectAreaLights.value = lights.state.rectArea;
2309
+ uniforms.ltc_1.value = lights.state.rectAreaLTC1;
2310
+ uniforms.ltc_2.value = lights.state.rectAreaLTC2;
2311
+ uniforms.pointLights.value = lights.state.point;
2312
+ uniforms.pointLightShadows.value = lights.state.pointShadow;
2313
+ uniforms.hemisphereLights.value = lights.state.hemi;
2314
+
2315
+ uniforms.sunShadowMatrix.value = lights.state.sunShadowMatrix;
2316
+ uniforms.sunShadowCascade.value = lights.state.sunShadowCascade;
2317
+ uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;
2318
+ uniforms.spotLightMatrix.value = lights.state.spotLightMatrix;
2319
+ uniforms.spotLightMap.value = lights.state.spotLightMap;
2320
+ uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;
2321
+ // TODO (abelnation): add area lights shadow info to uniforms
2322
+
2323
+ }
2324
+
2325
+ materialProperties.numLightProbeGrids = countLightProbeGrids( currentRenderState.state.lightProbeGridArray );
2326
+
2327
+ materialProperties.currentProgram = program;
2328
+ materialProperties.uniformsList = null;
2329
+
2330
+ return program;
2331
+
2332
+ }
2333
+
2334
+ function getProgramVariant( material, scene, object, colorSpace, toneMapping ) {
2335
+
2336
+ const materialProperties = properties.get( material );
2337
+
2338
+ const programVariantKey = materialProperties.currentProgram.id + ',' + colorSpace + ',' + toneMapping;
2339
+
2340
+ let program = materialProperties.programVariants.get( programVariantKey );
2341
+
2342
+ if ( program === undefined ) {
2343
+
2344
+ program = getProgram( material, scene, object );
2345
+
2346
+ materialProperties.programVariants.set( programVariantKey, program );
2347
+
2348
+ } else {
2349
+
2350
+ materialProperties.currentProgram = program;
2351
+ materialProperties.uniformsList = null;
2352
+ materialProperties.outputColorSpace = colorSpace;
2353
+ materialProperties.toneMapping = toneMapping;
2354
+
2355
+ }
2356
+
2357
+ return program;
2358
+
2359
+ }
2360
+
2361
+ function getUniformList( materialProperties ) {
2362
+
2363
+ if ( materialProperties.uniformsList === null ) {
2364
+
2365
+ const progUniforms = materialProperties.currentProgram.getUniforms();
2366
+ materialProperties.uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, materialProperties.uniforms );
2367
+
2368
+ }
2369
+
2370
+ return materialProperties.uniformsList;
2371
+
2372
+ }
2373
+
2374
+ function updateCommonMaterialProperties( material, parameters ) {
2375
+
2376
+ const materialProperties = properties.get( material );
2377
+
2378
+ materialProperties.outputColorSpace = parameters.outputColorSpace;
2379
+ materialProperties.batching = parameters.batching;
2380
+ materialProperties.batchingColor = parameters.batchingColor;
2381
+ materialProperties.instancing = parameters.instancing;
2382
+ materialProperties.instancingColor = parameters.instancingColor;
2383
+ materialProperties.instancingMorph = parameters.instancingMorph;
2384
+ materialProperties.skinning = parameters.skinning;
2385
+ materialProperties.morphTargets = parameters.morphTargets;
2386
+ materialProperties.morphNormals = parameters.morphNormals;
2387
+ materialProperties.morphColors = parameters.morphColors;
2388
+ materialProperties.morphTargetsCount = parameters.morphTargetsCount;
2389
+ materialProperties.numClippingPlanes = parameters.numClippingPlanes;
2390
+ materialProperties.numIntersection = parameters.numClipIntersection;
2391
+ materialProperties.vertexAlphas = parameters.vertexAlphas;
2392
+ materialProperties.vertexTangents = parameters.vertexTangents;
2393
+ materialProperties.toneMapping = parameters.toneMapping;
2394
+
2395
+ }
2396
+
2397
+ function setProgram( camera, scene, geometry, material, object ) {
2398
+
2399
+ if ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...
2400
+
2401
+ textures.resetTextureUnits();
2402
+
2403
+ const fog = scene.fog;
2404
+ const environment = ( material.isMeshStandardMaterial || material.isMeshLambertMaterial || material.isMeshPhongMaterial ) ? scene.environment : null;
2405
+ const colorSpace = ( _currentRenderTarget === null ) ? _this.outputColorSpace : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : ColorManagement.workingColorSpace );
2406
+ const usePMREM = material.isMeshStandardMaterial || ( material.isMeshLambertMaterial && ! material.envMap ) || ( material.isMeshPhongMaterial && ! material.envMap );
2407
+ const envMap = environments.get( material.envMap || environment, usePMREM );
2408
+ const vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;
2409
+ const vertexTangents = !! geometry.attributes.tangent && ( !! material.normalMap || material.anisotropy > 0 );
2410
+ const morphTargets = !! geometry.morphAttributes.position;
2411
+ const morphNormals = !! geometry.morphAttributes.normal;
2412
+ const morphColors = !! geometry.morphAttributes.color;
2413
+
2414
+ let toneMapping = NoToneMapping;
2415
+
2416
+ if ( material.toneMapped ) {
2417
+
2418
+ if ( _currentRenderTarget === null || _currentRenderTarget.isXRRenderTarget === true ) {
2419
+
2420
+ toneMapping = _this.toneMapping;
2421
+
2422
+ }
2423
+
2424
+ }
2425
+
2426
+ const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;
2427
+ const morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;
2428
+
2429
+ const materialProperties = properties.get( material );
2430
+ const lights = currentRenderState.state.lights;
2431
+
2432
+ if ( _clippingEnabled === true ) {
2433
+
2434
+ if ( _localClippingEnabled === true || camera !== _currentCamera ) {
2435
+
2436
+ const useCache =
2437
+ camera === _currentCamera &&
2438
+ material.id === _currentMaterialId;
2439
+
2440
+ // we might want to call this function with some ClippingGroup
2441
+ // object instead of the material, once it becomes feasible
2442
+ // (#8465, #8379)
2443
+ clipping.setState( material, camera, useCache );
2444
+
2445
+ }
2446
+
2447
+ }
2448
+
2449
+ //
2450
+
2451
+ let needsProgramChange = false;
2452
+ let needsProgramVariant = false;
2453
+
2454
+ if ( material.version === materialProperties.__version ) {
2455
+
2456
+ if ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {
2457
+
2458
+ needsProgramChange = true;
2459
+
2460
+ } else if ( object.isBatchedMesh && materialProperties.batching === false ) {
2461
+
2462
+ needsProgramChange = true;
2463
+
2464
+ } else if ( ! object.isBatchedMesh && materialProperties.batching === true ) {
2465
+
2466
+ needsProgramChange = true;
2467
+
2468
+ } else if ( object.isBatchedMesh && materialProperties.batchingColor === true && object._colorsTexture === null ) {
2469
+
2470
+ needsProgramChange = true;
2471
+
2472
+ } else if ( object.isBatchedMesh && materialProperties.batchingColor === false && object._colorsTexture !== null ) {
2473
+
2474
+ needsProgramChange = true;
2475
+
2476
+ } else if ( object.isInstancedMesh && materialProperties.instancing === false ) {
2477
+
2478
+ needsProgramChange = true;
2479
+
2480
+ } else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {
2481
+
2482
+ needsProgramChange = true;
2483
+
2484
+ } else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {
2485
+
2486
+ needsProgramChange = true;
2487
+
2488
+ } else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {
2489
+
2490
+ needsProgramChange = true;
2491
+
2492
+ } else if ( object.isInstancedMesh && materialProperties.instancingColor === true && object.instanceColor === null ) {
2493
+
2494
+ needsProgramChange = true;
2495
+
2496
+ } else if ( object.isInstancedMesh && materialProperties.instancingColor === false && object.instanceColor !== null ) {
2497
+
2498
+ needsProgramChange = true;
2499
+
2500
+ } else if ( object.isInstancedMesh && materialProperties.instancingMorph === true && object.morphTexture === null ) {
2501
+
2502
+ needsProgramChange = true;
2503
+
2504
+ } else if ( object.isInstancedMesh && materialProperties.instancingMorph === false && object.morphTexture !== null ) {
2505
+
2506
+ needsProgramChange = true;
2507
+
2508
+ } else if ( materialProperties.envMap !== envMap ) {
2509
+
2510
+ needsProgramChange = true;
2511
+
2512
+ } else if ( material.fog === true && materialProperties.fog !== fog ) {
2513
+
2514
+ needsProgramChange = true;
2515
+
2516
+ } else if ( materialProperties.numClippingPlanes !== undefined &&
2517
+ ( materialProperties.numClippingPlanes !== clipping.numPlanes ||
2518
+ materialProperties.numIntersection !== clipping.numIntersection ) ) {
2519
+
2520
+ needsProgramChange = true;
2521
+
2522
+ } else if ( materialProperties.vertexAlphas !== vertexAlphas ) {
2523
+
2524
+ needsProgramChange = true;
2525
+
2526
+ } else if ( materialProperties.vertexTangents !== vertexTangents ) {
2527
+
2528
+ needsProgramChange = true;
2529
+
2530
+ } else if ( materialProperties.morphTargets !== morphTargets ) {
2531
+
2532
+ needsProgramChange = true;
2533
+
2534
+ } else if ( materialProperties.morphNormals !== morphNormals ) {
2535
+
2536
+ needsProgramChange = true;
2537
+
2538
+ } else if ( materialProperties.morphColors !== morphColors ) {
2539
+
2540
+ needsProgramChange = true;
2541
+
2542
+ } else if ( materialProperties.morphTargetsCount !== morphTargetsCount ) {
2543
+
2544
+ needsProgramChange = true;
2545
+
2546
+ } else if ( materialProperties.numLightProbeGrids !== countLightProbeGrids( currentRenderState.state.lightProbeGridArray ) ) {
2547
+
2548
+ needsProgramChange = true;
2549
+
2550
+ } else if ( materialProperties.outputColorSpace !== colorSpace || materialProperties.toneMapping !== toneMapping ) {
2551
+
2552
+ needsProgramVariant = true;
2553
+
2554
+ }
2555
+
2556
+ } else {
2557
+
2558
+ needsProgramChange = true;
2559
+ materialProperties.__version = material.version;
2560
+
2561
+ }
2562
+
2563
+ //
2564
+
2565
+ let program = materialProperties.currentProgram;
2566
+
2567
+ if ( needsProgramChange === true || needsProgramVariant === true ) {
2568
+
2569
+ program = ( needsProgramVariant === true ) ? getProgramVariant( material, scene, object, colorSpace, toneMapping ) : getProgram( material, scene, object );
2570
+
2571
+ // notify the node builder that the program has changed so uniforms and update nodes can
2572
+ // be cached and triggered.
2573
+ if ( _nodesHandler && material.isNodeMaterial ) {
2574
+
2575
+ _nodesHandler.onUpdateProgram( material, program, materialProperties );
2576
+
2577
+ }
2578
+
2579
+ }
2580
+
2581
+ let refreshProgram = false;
2582
+ let refreshMaterial = false;
2583
+ let refreshLights = false;
2584
+
2585
+ const p_uniforms = program.getUniforms(),
2586
+ m_uniforms = materialProperties.uniforms;
2587
+
2588
+ if ( state.useProgram( program.program ) ) {
2589
+
2590
+ refreshProgram = true;
2591
+ refreshMaterial = true;
2592
+ refreshLights = true;
2593
+
2594
+ }
2595
+
2596
+ if ( material.id !== _currentMaterialId ) {
2597
+
2598
+ _currentMaterialId = material.id;
2599
+
2600
+ refreshMaterial = true;
2601
+
2602
+ }
2603
+
2604
+ if ( refreshProgram || _currentCamera !== camera ) {
2605
+
2606
+ // common camera uniforms
2607
+
2608
+ const reversedDepthBuffer = state.buffers.depth.getReversed();
2609
+
2610
+ if ( reversedDepthBuffer && camera.reversedDepth !== true ) {
2611
+
2612
+ camera._reversedDepth = true;
2613
+ camera.updateProjectionMatrix();
2614
+
2615
+ }
2616
+
2617
+ p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );
2618
+
2619
+ p_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );
2620
+
2621
+ const uCamPos = p_uniforms.map.cameraPosition;
2622
+
2623
+ if ( uCamPos !== undefined ) {
2624
+
2625
+ uCamPos.setValue( _gl, _vector3.setFromMatrixPosition( camera.matrixWorld ) );
2626
+
2627
+ }
2628
+
2629
+ if ( capabilities.logarithmicDepthBuffer ) {
2630
+
2631
+ p_uniforms.setValue( _gl, 'logDepthBufFC',
2632
+ 2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );
2633
+
2634
+ }
2635
+
2636
+ // consider moving isOrthographic to UniformLib and WebGLMaterials, see https://github.com/mrdoob/three.js/pull/26467#issuecomment-1645185067
2637
+
2638
+ if ( material.isMeshPhongMaterial ||
2639
+ material.isMeshToonMaterial ||
2640
+ material.isMeshLambertMaterial ||
2641
+ material.isMeshBasicMaterial ||
2642
+ material.isMeshStandardMaterial ||
2643
+ material.isShaderMaterial ) {
2644
+
2645
+ p_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );
2646
+
2647
+ }
2648
+
2649
+ if ( _currentCamera !== camera ) {
2650
+
2651
+ _currentCamera = camera;
2652
+
2653
+ // lighting uniforms depend on the camera so enforce an update
2654
+ // now, in case this material supports lights - or later, when
2655
+ // the next material that does gets activated:
2656
+
2657
+ refreshMaterial = true; // set to true on material change
2658
+ refreshLights = true; // remains set until update done
2659
+
2660
+ }
2661
+
2662
+ }
2663
+
2664
+ // Pre-allocate texture units for shadow samplers before setting data textures
2665
+ if ( materialProperties.needsLights ) {
2666
+
2667
+ // Set shadow map uniforms first to ensure they get the first texture units
2668
+ if ( lights.state.sunShadowMap.length > 0 ) {
2669
+
2670
+ p_uniforms.setValue( _gl, 'sunShadowMap', lights.state.sunShadowMap, textures );
2671
+
2672
+ }
2673
+
2674
+ if ( lights.state.directionalShadowMap.length > 0 ) {
2675
+
2676
+ p_uniforms.setValue( _gl, 'directionalShadowMap', lights.state.directionalShadowMap, textures );
2677
+
2678
+ }
2679
+
2680
+ if ( lights.state.spotShadowMap.length > 0 ) {
2681
+
2682
+ p_uniforms.setValue( _gl, 'spotShadowMap', lights.state.spotShadowMap, textures );
2683
+
2684
+ }
2685
+
2686
+ if ( lights.state.pointShadowMap.length > 0 ) {
2687
+
2688
+ p_uniforms.setValue( _gl, 'pointShadowMap', lights.state.pointShadowMap, textures );
2689
+
2690
+ }
2691
+
2692
+ }
2693
+
2694
+ // skinning and morph target uniforms must be set even if material didn't change
2695
+ // auto-setting of texture unit for bone and morph texture must go before other textures
2696
+ // otherwise textures used for skinning and morphing can take over texture units reserved for other material textures
2697
+
2698
+ if ( object.isSkinnedMesh ) {
2699
+
2700
+ p_uniforms.setOptional( _gl, object, 'bindMatrix' );
2701
+ p_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );
2702
+
2703
+ const skeleton = object.skeleton;
2704
+
2705
+ if ( skeleton ) {
2706
+
2707
+ if ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();
2708
+
2709
+ p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );
2710
+
2711
+ }
2712
+
2713
+ }
2714
+
2715
+ if ( object.isBatchedMesh ) {
2716
+
2717
+ p_uniforms.setOptional( _gl, object, 'batchingTexture' );
2718
+ p_uniforms.setValue( _gl, 'batchingTexture', object._matricesTexture, textures );
2719
+
2720
+ p_uniforms.setOptional( _gl, object, 'batchingIdTexture' );
2721
+ p_uniforms.setValue( _gl, 'batchingIdTexture', object._indirectTexture, textures );
2722
+
2723
+ p_uniforms.setOptional( _gl, object, 'batchingColorTexture' );
2724
+ if ( object._colorsTexture !== null ) {
2725
+
2726
+ p_uniforms.setValue( _gl, 'batchingColorTexture', object._colorsTexture, textures );
2727
+
2728
+ }
2729
+
2730
+ }
2731
+
2732
+ const morphAttributes = geometry.morphAttributes;
2733
+
2734
+ if ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined ) ) {
2735
+
2736
+ morphtargets.update( object, geometry, program );
2737
+
2738
+ }
2739
+
2740
+ if ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {
2741
+
2742
+ materialProperties.receiveShadow = object.receiveShadow;
2743
+ p_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );
2744
+
2745
+ }
2746
+
2747
+ if ( ( material.isMeshStandardMaterial || material.isMeshLambertMaterial || material.isMeshPhongMaterial ) && material.envMap === null && scene.environment !== null ) {
2748
+
2749
+ m_uniforms.envMapIntensity.value = scene.environmentIntensity;
2750
+
2751
+ }
2752
+
2753
+ // Set DFG LUT for physically-based materials
2754
+ if ( m_uniforms.dfgLUT !== undefined ) {
2755
+
2756
+ m_uniforms.dfgLUT.value = getDFGLUT();
2757
+
2758
+ }
2759
+
2760
+ if ( refreshMaterial ) {
2761
+
2762
+ p_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );
2763
+
2764
+ if ( materialProperties.needsLights ) {
2765
+
2766
+ // the current material requires lighting info
2767
+
2768
+ // note: all lighting uniforms are always set correctly
2769
+ // they simply reference the renderer's state for their
2770
+ // values
2771
+ //
2772
+ // use the current material's .needsUpdate flags to set
2773
+ // the GL state when required
2774
+
2775
+ markUniformsLightsNeedsUpdate( m_uniforms, refreshLights );
2776
+
2777
+ }
2778
+
2779
+ // refresh uniforms common to several materials
2780
+
2781
+ if ( fog && material.fog === true ) {
2782
+
2783
+ materials.refreshFogUniforms( m_uniforms, fog );
2784
+
2785
+ }
2786
+
2787
+ materials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, currentRenderState.state.transmissionRenderTarget[ camera.id ] );
2788
+
2789
+ // light probe volume
2790
+
2791
+ if ( materialProperties.needsLights && materialProperties.numLightProbeGrids > 0 ) {
2792
+
2793
+ const grids = lightProbeGridUniforms;
2794
+ let count = 0;
2795
+
2796
+ for ( const grid of currentRenderState.state.lightProbeGridArray ) {
2797
+
2798
+ if ( grid.texture === null ) continue;
2799
+
2800
+ grids.textures[ count ] = grid.texture;
2801
+ grids.min[ count ] = grid.boundingBox.min;
2802
+ grids.max[ count ] = grid.boundingBox.max;
2803
+ grids.resolution[ count ] = grid.resolution;
2804
+ count ++;
2805
+
2806
+ }
2807
+
2808
+ for ( const key in grids ) grids[ key ].length = count;
2809
+
2810
+ m_uniforms.probesSH.value = grids.textures;
2811
+ m_uniforms.probesMin.value = grids.min;
2812
+ m_uniforms.probesMax.value = grids.max;
2813
+ m_uniforms.probesResolution.value = grids.resolution;
2814
+
2815
+ }
2816
+
2817
+ WebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );
2818
+
2819
+ }
2820
+
2821
+ if ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {
2822
+
2823
+ WebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );
2824
+ material.uniformsNeedUpdate = false;
2825
+
2826
+ }
2827
+
2828
+ if ( material.isSpriteMaterial ) {
2829
+
2830
+ p_uniforms.setValue( _gl, 'center', object.center );
2831
+
2832
+ }
2833
+
2834
+ // common matrices
2835
+
2836
+ p_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );
2837
+ p_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );
2838
+ p_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );
2839
+
2840
+ // UBOs
2841
+
2842
+ if ( material.uniformsGroups !== undefined ) {
2843
+
2844
+ const groups = material.uniformsGroups;
2845
+
2846
+ for ( let i = 0, l = groups.length; i < l; i ++ ) {
2847
+
2848
+ const group = groups[ i ];
2849
+
2850
+ uniformsGroups.update( group, program );
2851
+ uniformsGroups.bind( group, program );
2852
+
2853
+ }
2854
+
2855
+ }
2856
+
2857
+ return program;
2858
+
2859
+ }
2860
+
2861
+ // If uniforms are marked as clean, they don't need to be loaded to the GPU.
2862
+
2863
+ function markUniformsLightsNeedsUpdate( uniforms, value ) {
2864
+
2865
+ uniforms.ambientLightColor.needsUpdate = value;
2866
+ uniforms.lightProbe.needsUpdate = value;
2867
+
2868
+ uniforms.sunLights.needsUpdate = value;
2869
+ uniforms.sunLightShadows.needsUpdate = value;
2870
+ uniforms.directionalLights.needsUpdate = value;
2871
+ uniforms.directionalLightShadows.needsUpdate = value;
2872
+ uniforms.pointLights.needsUpdate = value;
2873
+ uniforms.pointLightShadows.needsUpdate = value;
2874
+ uniforms.spotLights.needsUpdate = value;
2875
+ uniforms.spotLightShadows.needsUpdate = value;
2876
+ uniforms.rectAreaLights.needsUpdate = value;
2877
+ uniforms.hemisphereLights.needsUpdate = value;
2878
+
2879
+ }
2880
+
2881
+ function materialNeedsLights( material ) {
2882
+
2883
+ return material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||
2884
+ material.isMeshStandardMaterial || material.isShadowMaterial ||
2885
+ ( material.isShaderMaterial && material.lights === true );
2886
+
2887
+ }
2888
+
2889
+ /**
2890
+ * Returns the active cube face.
2891
+ *
2892
+ * @return {number} The active cube face.
2893
+ */
2894
+ this.getActiveCubeFace = function () {
2895
+
2896
+ return _currentActiveCubeFace;
2897
+
2898
+ };
2899
+
2900
+ /**
2901
+ * Returns the active mipmap level.
2902
+ *
2903
+ * @return {number} The active mipmap level.
2904
+ */
2905
+ this.getActiveMipmapLevel = function () {
2906
+
2907
+ return _currentActiveMipmapLevel;
2908
+
2909
+ };
2910
+
2911
+ /**
2912
+ * Returns the active render target.
2913
+ *
2914
+ * @return {?WebGLRenderTarget} The active render target. Returns `null` if no render target
2915
+ * is currently set.
2916
+ */
2917
+ this.getRenderTarget = function () {
2918
+
2919
+ return _currentRenderTarget;
2920
+
2921
+ };
2922
+
2923
+ this.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {
2924
+
2925
+ const renderTargetProperties = properties.get( renderTarget );
2926
+
2927
+ renderTargetProperties.__autoAllocateDepthBuffer = renderTarget.resolveDepthBuffer === false;
2928
+ if ( renderTargetProperties.__autoAllocateDepthBuffer === false ) {
2929
+
2930
+ // The multisample_render_to_texture extension doesn't work properly if there
2931
+ // are midframe flushes and an external depth buffer. Disable use of the extension.
2932
+ renderTargetProperties.__useRenderToTexture = false;
2933
+
2934
+ }
2935
+
2936
+ properties.get( renderTarget.texture ).__webglTexture = colorTexture;
2937
+ properties.get( renderTarget.depthTexture ).__webglTexture = renderTargetProperties.__autoAllocateDepthBuffer ? undefined : depthTexture;
2938
+
2939
+ renderTargetProperties.__hasExternalTextures = true;
2940
+
2941
+ };
2942
+
2943
+ this.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {
2944
+
2945
+ const renderTargetProperties = properties.get( renderTarget );
2946
+ renderTargetProperties.__webglFramebuffer = defaultFramebuffer;
2947
+ renderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;
2948
+
2949
+ };
2950
+
2951
+ /**
2952
+ * Sets the active rendertarget.
2953
+ *
2954
+ * @param {?WebGLRenderTarget} renderTarget - The render target to set. When `null` is given,
2955
+ * the canvas is set as the active render target instead.
2956
+ * @param {number} [activeCubeFace=0] - The active cube face when using a cube render target.
2957
+ * Indicates the z layer to render in to when using 3D or array render targets.
2958
+ * @param {number} [activeMipmapLevel=0] - The active mipmap level.
2959
+ */
2960
+ this.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {
2961
+
2962
+ _currentRenderTarget = renderTarget;
2963
+ _currentActiveCubeFace = activeCubeFace;
2964
+ _currentActiveMipmapLevel = activeMipmapLevel;
2965
+
2966
+ let framebuffer = null;
2967
+ let isCube = false;
2968
+ let isRenderTarget3D = false;
2969
+
2970
+ if ( renderTarget ) {
2971
+
2972
+ const renderTargetProperties = properties.get( renderTarget );
2973
+
2974
+ if ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {
2975
+
2976
+ // Externally-managed framebuffer (e.g. XR)
2977
+ // Bind to the stored framebuffer (may be null for default, or a WebGLFramebuffer)
2978
+ state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );
2979
+
2980
+ _currentViewport.copy( renderTarget.viewport );
2981
+ _currentScissor.copy( renderTarget.scissor );
2982
+ _currentScissorTest = renderTarget.scissorTest;
2983
+
2984
+ state.viewport( _currentViewport );
2985
+ state.scissor( _currentScissor );
2986
+ state.setScissorTest( _currentScissorTest );
2987
+
2988
+ _currentMaterialId = - 1;
2989
+
2990
+ return;
2991
+
2992
+ } else if ( renderTargetProperties.__webglFramebuffer === undefined ) {
2993
+
2994
+ textures.setupRenderTarget( renderTarget );
2995
+
2996
+ } else if ( renderTargetProperties.__hasExternalTextures ) {
2997
+
2998
+ // Color and depth texture must be rebound in order for the swapchain to update.
2999
+ textures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );
3000
+
3001
+ } else if ( renderTarget.depthBuffer ) {
3002
+
3003
+ // check if the depth texture is already bound to the frame buffer and that it's been initialized
3004
+ const depthTexture = renderTarget.depthTexture;
3005
+ if ( renderTargetProperties.__boundDepthTexture !== depthTexture ) {
3006
+
3007
+ // check if the depth texture is compatible
3008
+ if (
3009
+ depthTexture !== null &&
3010
+ properties.has( depthTexture ) &&
3011
+ ( renderTarget.width !== depthTexture.image.width || renderTarget.height !== depthTexture.image.height )
3012
+ ) {
3013
+
3014
+ throw new Error( 'THREE.WebGLRenderer: Attached DepthTexture is initialized to the incorrect size.' );
3015
+
3016
+ }
3017
+
3018
+ // Swap the depth buffer to the currently attached one
3019
+ textures.setupDepthRenderbuffer( renderTarget );
3020
+
3021
+ }
3022
+
3023
+ }
3024
+
3025
+ const texture = renderTarget.texture;
3026
+
3027
+ if ( texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {
3028
+
3029
+ isRenderTarget3D = true;
3030
+
3031
+ }
3032
+
3033
+ const __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;
3034
+
3035
+ if ( renderTarget.isWebGLCubeRenderTarget ) {
3036
+
3037
+ if ( Array.isArray( __webglFramebuffer[ activeCubeFace ] ) ) {
3038
+
3039
+ framebuffer = __webglFramebuffer[ activeCubeFace ][ activeMipmapLevel ];
3040
+
3041
+ } else {
3042
+
3043
+ framebuffer = __webglFramebuffer[ activeCubeFace ];
3044
+
3045
+ }
3046
+
3047
+ isCube = true;
3048
+
3049
+ } else if ( ( renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {
3050
+
3051
+ framebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;
3052
+
3053
+ } else {
3054
+
3055
+ if ( Array.isArray( __webglFramebuffer ) ) {
3056
+
3057
+ framebuffer = __webglFramebuffer[ activeMipmapLevel ];
3058
+
3059
+ } else {
3060
+
3061
+ framebuffer = __webglFramebuffer;
3062
+
3063
+ }
3064
+
3065
+ }
3066
+
3067
+ _currentViewport.copy( renderTarget.viewport );
3068
+ _currentScissor.copy( renderTarget.scissor );
3069
+ _currentScissorTest = renderTarget.scissorTest;
3070
+
3071
+ } else {
3072
+
3073
+ _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();
3074
+ _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();
3075
+ _currentScissorTest = _scissorTest;
3076
+
3077
+ }
3078
+
3079
+ // Use a scratch frame buffer if rendering to a mip level to avoid depth buffers
3080
+ // being bound that are different sizes.
3081
+ if ( activeMipmapLevel !== 0 ) {
3082
+
3083
+ framebuffer = _scratchFramebuffer;
3084
+
3085
+ }
3086
+
3087
+ const framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
3088
+
3089
+ if ( framebufferBound ) {
3090
+
3091
+ state.drawBuffers( renderTarget, framebuffer );
3092
+
3093
+ }
3094
+
3095
+ state.viewport( _currentViewport );
3096
+ state.scissor( _currentScissor );
3097
+ state.setScissorTest( _currentScissorTest );
3098
+
3099
+ if ( isCube ) {
3100
+
3101
+ const textureProperties = properties.get( renderTarget.texture );
3102
+ _gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );
3103
+
3104
+ } else if ( isRenderTarget3D ) {
3105
+
3106
+ const layer = activeCubeFace;
3107
+
3108
+ for ( let i = 0; i < renderTarget.textures.length; i ++ ) {
3109
+
3110
+ const textureProperties = properties.get( renderTarget.textures[ i ] );
3111
+
3112
+ _gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, textureProperties.__webglTexture, activeMipmapLevel, layer );
3113
+
3114
+ }
3115
+
3116
+ } else if ( renderTarget !== null && activeMipmapLevel !== 0 ) {
3117
+
3118
+ // Only bind the frame buffer if we are using a scratch frame buffer to render to a mipmap.
3119
+ // If we rebind the texture when using a multi sample buffer then an error about inconsistent samples will be thrown.
3120
+ const textureProperties = properties.get( renderTarget.texture );
3121
+ _gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, textureProperties.__webglTexture, activeMipmapLevel );
3122
+
3123
+ }
3124
+
3125
+ _currentMaterialId = - 1; // reset current material to ensure correct uniform bindings
3126
+
3127
+ };
3128
+
3129
+ function getReadableState( texture ) {
3130
+
3131
+ const textureProperties = properties.get( texture );
3132
+
3133
+ if ( textureProperties.__readFormat !== texture.format || textureProperties.__readType !== texture.type ) {
3134
+
3135
+ textureProperties.__readFormat = texture.format;
3136
+ textureProperties.__readType = texture.type;
3137
+ textureProperties.__formatReadable = capabilities.textureFormatReadable( texture.format );
3138
+ textureProperties.__typeReadable = capabilities.textureTypeReadable( texture.type );
3139
+
3140
+ }
3141
+
3142
+ return textureProperties;
3143
+
3144
+ }
3145
+
3146
+ /**
3147
+ * Reads the pixel data from the given render target into the given buffer.
3148
+ *
3149
+ * @param {WebGLRenderTarget} renderTarget - The render target to read from.
3150
+ * @param {number} x - The `x` coordinate of the copy region's origin.
3151
+ * @param {number} y - The `y` coordinate of the copy region's origin.
3152
+ * @param {number} width - The width of the copy region.
3153
+ * @param {number} height - The height of the copy region.
3154
+ * @param {TypedArray} buffer - The result buffer.
3155
+ * @param {number} [activeCubeFaceIndex] - The active cube face index.
3156
+ * @param {number} [textureIndex=0] - The texture index of an MRT render target.
3157
+ */
3158
+ this.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex, textureIndex = 0 ) {
3159
+
3160
+ if ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {
3161
+
3162
+ error( 'WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );
3163
+ return;
3164
+
3165
+ }
3166
+
3167
+ let framebuffer = properties.get( renderTarget ).__webglFramebuffer;
3168
+
3169
+ if ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {
3170
+
3171
+ framebuffer = framebuffer[ activeCubeFaceIndex ];
3172
+
3173
+ // Custom mip chains store one framebuffer per level; read level 0.
3174
+ if ( Array.isArray( framebuffer ) ) framebuffer = framebuffer[ 0 ];
3175
+
3176
+ }
3177
+
3178
+ if ( framebuffer ) {
3179
+
3180
+ state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
3181
+
3182
+ try {
3183
+
3184
+ const texture = renderTarget.textures[ textureIndex ];
3185
+ const textureFormat = texture.format;
3186
+ const textureType = texture.type;
3187
+
3188
+ // when using MRT, select the correct color buffer for the subsequent read command
3189
+
3190
+ if ( renderTarget.textures.length > 1 ) _gl.readBuffer( _gl.COLOR_ATTACHMENT0 + textureIndex );
3191
+
3192
+ const readableState = getReadableState( texture );
3193
+
3194
+ if ( readableState.__formatReadable === false ) {
3195
+
3196
+ error( 'WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );
3197
+ return;
3198
+
3199
+ }
3200
+
3201
+ if ( readableState.__typeReadable === false ) {
3202
+
3203
+ error( 'WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );
3204
+ return;
3205
+
3206
+ }
3207
+
3208
+ // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)
3209
+
3210
+ if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {
3211
+
3212
+ _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );
3213
+
3214
+ }
3215
+
3216
+ } finally {
3217
+
3218
+ // restore framebuffer of current render target if necessary
3219
+
3220
+ const framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;
3221
+ state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
3222
+
3223
+ }
3224
+
3225
+ }
3226
+
3227
+ };
3228
+
3229
+ /**
3230
+ * Asynchronous, non-blocking version of {@link WebGLRenderer#readRenderTargetPixels}.
3231
+ *
3232
+ * It is recommended to use this version of `readRenderTargetPixels()` whenever possible.
3233
+ *
3234
+ * @async
3235
+ * @param {WebGLRenderTarget} renderTarget - The render target to read from.
3236
+ * @param {number} x - The `x` coordinate of the copy region's origin.
3237
+ * @param {number} y - The `y` coordinate of the copy region's origin.
3238
+ * @param {number} width - The width of the copy region.
3239
+ * @param {number} height - The height of the copy region.
3240
+ * @param {TypedArray} buffer - The result buffer.
3241
+ * @param {number} [activeCubeFaceIndex] - The active cube face index.
3242
+ * @param {number} [textureIndex=0] - The texture index of an MRT render target.
3243
+ * @return {Promise<TypedArray>} A Promise that resolves when the read has been finished. The resolve provides the read data as a typed array.
3244
+ */
3245
+ this.readRenderTargetPixelsAsync = async function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex, textureIndex = 0 ) {
3246
+
3247
+ if ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {
3248
+
3249
+ throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );
3250
+
3251
+ }
3252
+
3253
+ let framebuffer = properties.get( renderTarget ).__webglFramebuffer;
3254
+ if ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {
3255
+
3256
+ framebuffer = framebuffer[ activeCubeFaceIndex ];
3257
+
3258
+ // Custom mip chains store one framebuffer per level; read level 0.
3259
+ if ( Array.isArray( framebuffer ) ) framebuffer = framebuffer[ 0 ];
3260
+
3261
+ }
3262
+
3263
+ if ( framebuffer ) {
3264
+
3265
+ // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)
3266
+ if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {
3267
+
3268
+ // set the active frame buffer to the one we want to read
3269
+ state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
3270
+
3271
+ const texture = renderTarget.textures[ textureIndex ];
3272
+ const textureFormat = texture.format;
3273
+ const textureType = texture.type;
3274
+
3275
+ // when using MRT, select the correct color buffer for the subsequent read command
3276
+
3277
+ if ( renderTarget.textures.length > 1 ) _gl.readBuffer( _gl.COLOR_ATTACHMENT0 + textureIndex );
3278
+
3279
+ const readableState = getReadableState( texture );
3280
+
3281
+ if ( readableState.__formatReadable === false ) {
3282
+
3283
+ throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.' );
3284
+
3285
+ }
3286
+
3287
+ if ( readableState.__typeReadable === false ) {
3288
+
3289
+ throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.' );
3290
+
3291
+ }
3292
+
3293
+ const glBuffer = _gl.createBuffer();
3294
+ _gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer );
3295
+ _gl.bufferData( _gl.PIXEL_PACK_BUFFER, buffer.byteLength, _gl.STREAM_READ );
3296
+
3297
+ _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), 0 );
3298
+ _gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, null );
3299
+
3300
+ // reset the frame buffer to the currently set buffer before waiting
3301
+ const currFramebuffer = _currentRenderTarget !== null ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;
3302
+ state.bindFramebuffer( _gl.FRAMEBUFFER, currFramebuffer );
3303
+
3304
+ // check if the commands have finished every 8 ms
3305
+ const sync = _gl.fenceSync( _gl.SYNC_GPU_COMMANDS_COMPLETE, 0 );
3306
+
3307
+ _gl.flush();
3308
+
3309
+ await probeAsync( _gl, sync, 4 );
3310
+
3311
+ // read the data and delete the buffer
3312
+ _gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer );
3313
+ _gl.getBufferSubData( _gl.PIXEL_PACK_BUFFER, 0, buffer );
3314
+ _gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, null );
3315
+ _gl.deleteBuffer( glBuffer );
3316
+ _gl.deleteSync( sync );
3317
+
3318
+ return buffer;
3319
+
3320
+ } else {
3321
+
3322
+ throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.' );
3323
+
3324
+ }
3325
+
3326
+ }
3327
+
3328
+ };
3329
+
3330
+ /**
3331
+ * Copies pixels from the current bound framebuffer into the given texture.
3332
+ *
3333
+ * @param {FramebufferTexture} texture - The texture.
3334
+ * @param {?Vector2} [position=null] - The start position of the copy operation.
3335
+ * @param {number} [level=0] - The mip level. The default represents the base mip.
3336
+ */
3337
+ this.copyFramebufferToTexture = function ( texture, position = null, level = 0 ) {
3338
+
3339
+ const levelScale = Math.pow( 2, - level );
3340
+ const width = Math.floor( texture.image.width * levelScale );
3341
+ const height = Math.floor( texture.image.height * levelScale );
3342
+
3343
+ const x = position !== null ? position.x : 0;
3344
+ const y = position !== null ? position.y : 0;
3345
+
3346
+ textures.setTexture2D( texture, 0 );
3347
+
3348
+ _gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, x, y, width, height );
3349
+
3350
+ state.unbindTexture();
3351
+
3352
+ };
3353
+
3354
+
3355
+ /**
3356
+ * Copies data of the given source texture into a destination texture.
3357
+ *
3358
+ * When using render target textures as `srcTexture` and `dstTexture`, you must make sure both render targets are initialized
3359
+ * {@link WebGLRenderer#initRenderTarget}.
3360
+ *
3361
+ * @param {Texture} srcTexture - The source texture.
3362
+ * @param {Texture} dstTexture - The destination texture.
3363
+ * @param {?(Box2|Box3)} [srcRegion=null] - A bounding box which describes the source region. Can be two or three-dimensional.
3364
+ * @param {?(Vector2|Vector3)} [dstPosition=null] - A vector that represents the origin of the destination region. Can be two or three-dimensional.
3365
+ * @param {number} [srcLevel=0] - The source mipmap level to copy.
3366
+ * @param {?number} [dstLevel=0] - The destination mipmap level.
3367
+ */
3368
+ this.copyTextureToTexture = function ( srcTexture, dstTexture, srcRegion = null, dstPosition = null, srcLevel = 0, dstLevel = 0 ) {
3369
+
3370
+ // gather the necessary dimensions to copy
3371
+ let width, height, depth, minX, minY, minZ;
3372
+ let dstX, dstY, dstZ;
3373
+ const image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ dstLevel ] : srcTexture.image;
3374
+ if ( srcRegion !== null ) {
3375
+
3376
+ width = srcRegion.max.x - srcRegion.min.x;
3377
+ height = srcRegion.max.y - srcRegion.min.y;
3378
+ depth = srcRegion.isBox3 ? srcRegion.max.z - srcRegion.min.z : 1;
3379
+ minX = srcRegion.min.x;
3380
+ minY = srcRegion.min.y;
3381
+ minZ = srcRegion.isBox3 ? srcRegion.min.z : 0;
3382
+
3383
+ } else {
3384
+
3385
+ const levelScale = Math.pow( 2, - srcLevel );
3386
+ width = Math.floor( image.width * levelScale );
3387
+ height = Math.floor( image.height * levelScale );
3388
+ if ( srcTexture.isDataArrayTexture ) {
3389
+
3390
+ depth = image.depth;
3391
+
3392
+ } else if ( srcTexture.isData3DTexture ) {
3393
+
3394
+ depth = Math.floor( image.depth * levelScale );
3395
+
3396
+ } else {
3397
+
3398
+ depth = 1;
3399
+
3400
+ }
3401
+
3402
+ minX = 0;
3403
+ minY = 0;
3404
+ minZ = 0;
3405
+
3406
+ }
3407
+
3408
+ if ( dstPosition !== null ) {
3409
+
3410
+ dstX = dstPosition.x;
3411
+ dstY = dstPosition.y;
3412
+ dstZ = dstPosition.z;
3413
+
3414
+ } else {
3415
+
3416
+ dstX = 0;
3417
+ dstY = 0;
3418
+ dstZ = 0;
3419
+
3420
+ }
3421
+
3422
+ // Set up the destination target
3423
+ const glFormat = utils.convert( dstTexture.format );
3424
+ const glType = utils.convert( dstTexture.type );
3425
+ let glTarget;
3426
+
3427
+ if ( dstTexture.isData3DTexture ) {
3428
+
3429
+ textures.setTexture3D( dstTexture, 0 );
3430
+ glTarget = _gl.TEXTURE_3D;
3431
+
3432
+ } else if ( dstTexture.isDataArrayTexture || dstTexture.isCompressedArrayTexture ) {
3433
+
3434
+ textures.setTexture2DArray( dstTexture, 0 );
3435
+ glTarget = _gl.TEXTURE_2D_ARRAY;
3436
+
3437
+ } else {
3438
+
3439
+ textures.setTexture2D( dstTexture, 0 );
3440
+ glTarget = _gl.TEXTURE_2D;
3441
+
3442
+ }
3443
+
3444
+ state.activeTexture( _gl.TEXTURE0 ); // see #33153
3445
+
3446
+ state.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );
3447
+ state.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );
3448
+ state.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );
3449
+
3450
+ // used for copying data from cpu
3451
+ const currentUnpackRowLen = state.getParameter( _gl.UNPACK_ROW_LENGTH );
3452
+ const currentUnpackImageHeight = state.getParameter( _gl.UNPACK_IMAGE_HEIGHT );
3453
+ const currentUnpackSkipPixels = state.getParameter( _gl.UNPACK_SKIP_PIXELS );
3454
+ const currentUnpackSkipRows = state.getParameter( _gl.UNPACK_SKIP_ROWS );
3455
+ const currentUnpackSkipImages = state.getParameter( _gl.UNPACK_SKIP_IMAGES );
3456
+
3457
+ state.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width );
3458
+ state.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, image.height );
3459
+ state.pixelStorei( _gl.UNPACK_SKIP_PIXELS, minX );
3460
+ state.pixelStorei( _gl.UNPACK_SKIP_ROWS, minY );
3461
+ state.pixelStorei( _gl.UNPACK_SKIP_IMAGES, minZ );
3462
+
3463
+ // set up the src texture
3464
+ const isSrc3D = srcTexture.isDataArrayTexture || srcTexture.isData3DTexture;
3465
+ const isDst3D = dstTexture.isDataArrayTexture || dstTexture.isData3DTexture;
3466
+ if ( srcTexture.isDepthTexture ) {
3467
+
3468
+ const srcTextureProperties = properties.get( srcTexture );
3469
+ const dstTextureProperties = properties.get( dstTexture );
3470
+ const srcRenderTargetProperties = properties.get( srcTextureProperties.__renderTarget );
3471
+ const dstRenderTargetProperties = properties.get( dstTextureProperties.__renderTarget );
3472
+ state.bindFramebuffer( _gl.READ_FRAMEBUFFER, srcRenderTargetProperties.__webglFramebuffer );
3473
+ state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, dstRenderTargetProperties.__webglFramebuffer );
3474
+
3475
+ for ( let i = 0; i < depth; i ++ ) {
3476
+
3477
+ // if the source or destination are a 3d target then a layer needs to be bound
3478
+ if ( isSrc3D ) {
3479
+
3480
+ _gl.framebufferTextureLayer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, properties.get( srcTexture ).__webglTexture, srcLevel, minZ + i );
3481
+ _gl.framebufferTextureLayer( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, properties.get( dstTexture ).__webglTexture, dstLevel, dstZ + i );
3482
+
3483
+ }
3484
+
3485
+ _gl.blitFramebuffer( minX, minY, minX + width, minY + height, dstX, dstY, dstX + width, dstY + height, _gl.DEPTH_BUFFER_BIT, _gl.NEAREST );
3486
+
3487
+ }
3488
+
3489
+ state.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );
3490
+ state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );
3491
+
3492
+ } else if ( srcLevel !== 0 || srcTexture.isRenderTargetTexture || properties.has( srcTexture ) ) {
3493
+
3494
+ // get the appropriate frame buffers
3495
+ const srcTextureProperties = properties.get( srcTexture );
3496
+ const dstTextureProperties = properties.get( dstTexture );
3497
+
3498
+ // bind the frame buffer targets
3499
+ state.bindFramebuffer( _gl.READ_FRAMEBUFFER, _srcFramebuffer );
3500
+ state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, _dstFramebuffer );
3501
+
3502
+ for ( let i = 0; i < depth; i ++ ) {
3503
+
3504
+ // assign the correct layers and mip maps to the frame buffers
3505
+ if ( isSrc3D ) {
3506
+
3507
+ _gl.framebufferTextureLayer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, srcTextureProperties.__webglTexture, srcLevel, minZ + i );
3508
+
3509
+ } else {
3510
+
3511
+ _gl.framebufferTexture2D( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, srcTextureProperties.__webglTexture, srcLevel );
3512
+
3513
+ }
3514
+
3515
+ if ( isDst3D ) {
3516
+
3517
+ _gl.framebufferTextureLayer( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, dstTextureProperties.__webglTexture, dstLevel, dstZ + i );
3518
+
3519
+ } else {
3520
+
3521
+ _gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, dstTextureProperties.__webglTexture, dstLevel );
3522
+
3523
+ }
3524
+
3525
+ // copy the data using the fastest function that can achieve the copy
3526
+ if ( srcLevel !== 0 ) {
3527
+
3528
+ _gl.blitFramebuffer( minX, minY, minX + width, minY + height, dstX, dstY, dstX + width, dstY + height, _gl.COLOR_BUFFER_BIT, _gl.NEAREST );
3529
+
3530
+ } else if ( isDst3D ) {
3531
+
3532
+ _gl.copyTexSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ + i, minX, minY, width, height );
3533
+
3534
+ } else {
3535
+
3536
+ _gl.copyTexSubImage2D( glTarget, dstLevel, dstX, dstY, minX, minY, width, height );
3537
+
3538
+ }
3539
+
3540
+ }
3541
+
3542
+ // unbind read, draw buffers
3543
+ state.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );
3544
+ state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );
3545
+
3546
+ } else {
3547
+
3548
+ if ( isDst3D ) {
3549
+
3550
+ // copy data into the 3d texture
3551
+ if ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {
3552
+
3553
+ _gl.texSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ, width, height, depth, glFormat, glType, image.data );
3554
+
3555
+ } else if ( dstTexture.isCompressedArrayTexture ) {
3556
+
3557
+ _gl.compressedTexSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ, width, height, depth, glFormat, image.data );
3558
+
3559
+ } else {
3560
+
3561
+ _gl.texSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ, width, height, depth, glFormat, glType, image );
3562
+
3563
+ }
3564
+
3565
+ } else {
3566
+
3567
+ // copy data into the 2d texture
3568
+ if ( srcTexture.isDataTexture ) {
3569
+
3570
+ _gl.texSubImage2D( _gl.TEXTURE_2D, dstLevel, dstX, dstY, width, height, glFormat, glType, image.data );
3571
+
3572
+ } else if ( srcTexture.isCompressedTexture ) {
3573
+
3574
+ _gl.compressedTexSubImage2D( _gl.TEXTURE_2D, dstLevel, dstX, dstY, image.width, image.height, glFormat, image.data );
3575
+
3576
+ } else {
3577
+
3578
+ _gl.texSubImage2D( _gl.TEXTURE_2D, dstLevel, dstX, dstY, width, height, glFormat, glType, image );
3579
+
3580
+ }
3581
+
3582
+ }
3583
+
3584
+ }
3585
+
3586
+ // reset values
3587
+ state.pixelStorei( _gl.UNPACK_ROW_LENGTH, currentUnpackRowLen );
3588
+ state.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, currentUnpackImageHeight );
3589
+ state.pixelStorei( _gl.UNPACK_SKIP_PIXELS, currentUnpackSkipPixels );
3590
+ state.pixelStorei( _gl.UNPACK_SKIP_ROWS, currentUnpackSkipRows );
3591
+ state.pixelStorei( _gl.UNPACK_SKIP_IMAGES, currentUnpackSkipImages );
3592
+
3593
+ // Generate mipmaps only when copying level 0
3594
+ if ( dstLevel === 0 && dstTexture.generateMipmaps === true && dstTexture.mipmapsAutoUpdate === true ) {
3595
+
3596
+ _gl.generateMipmap( glTarget );
3597
+
3598
+ }
3599
+
3600
+ state.unbindTexture();
3601
+
3602
+ };
3603
+
3604
+ /**
3605
+ * Initializes the given WebGLRenderTarget memory. Useful for initializing a render target so data
3606
+ * can be copied into it using {@link WebGLRenderer#copyTextureToTexture} before it has been
3607
+ * rendered to.
3608
+ *
3609
+ * @param {WebGLRenderTarget} target - The render target.
3610
+ */
3611
+ this.initRenderTarget = function ( target ) {
3612
+
3613
+ if ( properties.get( target ).__webglFramebuffer === undefined ) {
3614
+
3615
+ textures.setupRenderTarget( target );
3616
+
3617
+ }
3618
+
3619
+ };
3620
+
3621
+ /**
3622
+ * Initializes the given texture. Useful for preloading a texture rather than waiting until first
3623
+ * render (which can cause noticeable lags due to decode and GPU upload overhead).
3624
+ *
3625
+ * @param {Texture} texture - The texture.
3626
+ */
3627
+ this.initTexture = function ( texture ) {
3628
+
3629
+ if ( texture.isCubeTexture ) {
3630
+
3631
+ textures.setTextureCube( texture, 0 );
3632
+
3633
+ } else if ( texture.isData3DTexture ) {
3634
+
3635
+ textures.setTexture3D( texture, 0 );
3636
+
3637
+ } else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {
3638
+
3639
+ textures.setTexture2DArray( texture, 0 );
3640
+
3641
+ } else {
3642
+
3643
+ textures.setTexture2D( texture, 0 );
3644
+
3645
+ }
3646
+
3647
+ state.unbindTexture();
3648
+
3649
+ };
3650
+
3651
+ /**
3652
+ * Can be used to reset the internal WebGL state. This method is mostly
3653
+ * relevant for applications which share a single WebGL context across
3654
+ * multiple WebGL libraries.
3655
+ */
3656
+ this.resetState = function () {
3657
+
3658
+ _currentActiveCubeFace = 0;
3659
+ _currentActiveMipmapLevel = 0;
3660
+ _currentRenderTarget = null;
3661
+
3662
+ state.reset();
3663
+ bindingStates.reset();
3664
+
3665
+ };
3666
+
3667
+ if ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {
3668
+
3669
+ __THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );
3670
+
3671
+ }
3672
+
3673
+ }
3674
+
3675
+ /**
3676
+ * Defines the coordinate system of the renderer.
3677
+ *
3678
+ * In `WebGLRenderer`, the value is always `WebGLCoordinateSystem`.
3679
+ *
3680
+ * @type {WebGLCoordinateSystem|WebGPUCoordinateSystem}
3681
+ * @default WebGLCoordinateSystem
3682
+ * @readonly
3683
+ */
3684
+ get coordinateSystem() {
3685
+
3686
+ return WebGLCoordinateSystem;
3687
+
3688
+ }
3689
+
3690
+ /**
3691
+ * Defines the output color space of the renderer.
3692
+ *
3693
+ * @type {SRGBColorSpace|LinearSRGBColorSpace}
3694
+ * @default SRGBColorSpace
3695
+ */
3696
+ get outputColorSpace() {
3697
+
3698
+ return this._outputColorSpace;
3699
+
3700
+ }
3701
+
3702
+ set outputColorSpace( colorSpace ) {
3703
+
3704
+ this._outputColorSpace = colorSpace;
3705
+
3706
+ const gl = this.getContext();
3707
+ gl.drawingBufferColorSpace = ColorManagement._getDrawingBufferColorSpace( colorSpace );
3708
+ gl.unpackColorSpace = ColorManagement._getUnpackColorSpace();
3709
+
3710
+ }
3711
+
3712
+ }
3713
+
3714
+ // JSDoc
3715
+
3716
+ /**
3717
+ * WebGLRenderer options.
3718
+ *
3719
+ * @typedef {Object} WebGLRenderer~Options
3720
+ * @property {HTMLCanvasElement|OffscreenCanvas} [canvas=null] - A canvas element where the renderer draws its output. If not passed in here, a new canvas element will be created by the renderer.
3721
+ * @property {WebGL2RenderingContext} [context=null] - Can be used to attach an existing rendering context to this renderer.
3722
+ * @property {('highp'|'mediump'|'lowp')} [precision='highp'] - The default shader precision. Uses `highp` if supported by the device.
3723
+ * @property {boolean} [alpha=false] - Controls the default clear alpha value. When set to`true`, the value is `0`. Otherwise it's `1`.
3724
+ * @property {boolean} [premultipliedAlpha=true] Whether the renderer will assume colors have premultiplied alpha or not.
3725
+ * @property {boolean} [antialias=false] Whether to use the default MSAA or not.
3726
+ * @property {boolean} [stencil=false] Whether the drawing buffer has a stencil buffer of at least 8 bits or not.
3727
+ * @property {boolean} [preserveDrawingBuffer=false] Whether to preserve the buffer until manually cleared or overwritten.
3728
+ * @property {('default'|'low-power'|'high-performance')} [powerPreference='default'] Provides a hint to the user agent indicating what configuration of GPU is suitable for this WebGL context.
3729
+ * @property {boolean} [failIfMajorPerformanceCaveat=false] Whether the renderer creation will fail upon low performance is detected.
3730
+ * @property {boolean} [depth=true] Whether the drawing buffer has a depth buffer of at least 16 bits.
3731
+ * @property {boolean} [logarithmicDepthBuffer=false] Whether to use a logarithmic depth buffer. It may be necessary to use this if dealing with huge differences in scale in a single scene.
3732
+ * Note that this setting uses `gl_FragDepth` if available which disables the Early Fragment Test optimization and can cause a decrease in performance.
3733
+ * It is ignored when a reversed depth buffer is in use.
3734
+ * @property {boolean} [reversedDepthBuffer=false] Whether to use a reverse depth buffer. Requires the `EXT_clip_control` extension.
3735
+ * This is a more faster and accurate version than logarithmic depth buffer.
3736
+ * @property {number} [outputBufferType=UnsignedByteType] Defines the type of the output buffer. Use `HalfFloatType` for HDR rendering with tone mapping and post-processing support.
3737
+ **/
3738
+
3739
+ /**
3740
+ * WebGLRenderer Capabilities.
3741
+ *
3742
+ * @typedef {Object} WebGLRenderer~Capabilities
3743
+ * @property {Function} getMaxAnisotropy - Returns the maximum available anisotropy.
3744
+ * @property {Function} getMaxPrecision - Returns the maximum available precision for vertex and fragment shaders.
3745
+ * @property {boolean} logarithmicDepthBuffer - `true` if `logarithmicDepthBuffer` was set to `true` in the constructor
3746
+ * and no reversed depth buffer is in use.
3747
+ * @property {number} maxAttributes - The number of shader attributes that can be used by the vertex shader.
3748
+ * @property {number} maxCubemapSize - Maximum height * width of cube map textures that a shader can use.
3749
+ * @property {number} maxFragmentUniforms - The number of uniforms that can be used by a fragment shader.
3750
+ * @property {number} maxSamples - Maximum number of samples in context of Multisample anti-aliasing (MSAA).
3751
+ * @property {number} maxTextures - The maximum number of textures that can be used by a shader.
3752
+ * @property {number} maxTextureSize - Maximum height * width of a texture that a shader use.
3753
+ * @property {number} maxVaryings - The number of varying vectors that can used by shaders.
3754
+ * @property {number} maxVertexTextures - The number of textures that can be used in a vertex shader.
3755
+ * @property {number} maxVertexUniforms - The maximum number of uniforms that can be used in a vertex shader.
3756
+ * @property {string} precision - The shader precision currently being used by the renderer.
3757
+ * @property {boolean} reversedDepthBuffer - `true` if `reversedDepthBuffer` was set to `true` in the constructor
3758
+ * and the rendering context supports `EXT_clip_control`.
3759
+ **/
3760
+
3761
+ /**
3762
+ * WebGLRenderer Info Memory
3763
+ *
3764
+ * @typedef {Object} WebGLRenderer~InfoMemory
3765
+ * @property {number} geometries - The number of active geometries.
3766
+ * @property {number} textures - The number of active textures.
3767
+ **/
3768
+
3769
+ /**
3770
+ * WebGLRenderer Info Render
3771
+ *
3772
+ * @typedef {Object} WebGLRenderer~InfoRender
3773
+ * @property {number} frame - The frame ID.
3774
+ * @property {number} calls - The number of draw calls per frame.
3775
+ * @property {number} triangles - The number of rendered triangles primitives per frame.
3776
+ * @property {number} points - The number of rendered points primitives per frame.
3777
+ * @property {number} lines - The number of rendered lines primitives per frame.
3778
+ **/
3779
+
3780
+ /**
3781
+ * WebGLRenderer Info
3782
+ *
3783
+ * @typedef {Object} WebGLRenderer~Info
3784
+ * @property {boolean} [autoReset=true] - Whether to automatically reset the info by the renderer or not.
3785
+ * @property {WebGLRenderer~InfoMemory} memory - Information about allocated objects.
3786
+ * @property {WebGLRenderer~InfoRender} render - Information about rendered objects.
3787
+ * @property {?Array<WebGLProgram>} programs - An array `WebGLProgram`s used for rendering.
3788
+ * @property {Function} reset - Resets the info object for the next frame.
3789
+ **/
3790
+
3791
+ /**
3792
+ * WebGLRenderer Shadow Map.
3793
+ *
3794
+ * @typedef {Object} WebGLRenderer~ShadowMap
3795
+ * @property {boolean} [enabled=false] - If set to `true`, use shadow maps in the scene.
3796
+ * @property {boolean} [autoUpdate=true] - Enables automatic updates to the shadows in the scene.
3797
+ * If you do not require dynamic lighting / shadows, you may set this to `false`.
3798
+ * @property {boolean} [needsUpdate=false] - When set to `true`, shadow maps in the scene
3799
+ * will be updated in the next `render` call.
3800
+ * @property {(BasicShadowMap|PCFShadowMap|VSMShadowMap)} [type=PCFShadowMap] - Defines the shadow map type.
3801
+ **/
3802
+
3803
+ export { WebGLRenderer };