@playdrop/playdrop-cli 0.3.5-build.1 → 0.3.8-build.2

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 (1288) hide show
  1. package/config/client-meta.json +5 -5
  2. package/dist/apps/upload.js +1 -0
  3. package/dist/catalogue.d.ts +7 -0
  4. package/dist/catalogue.js +70 -33
  5. package/dist/commands/create.js +129 -70
  6. package/dist/commands/createRemixContent.d.ts +3 -0
  7. package/dist/commands/createRemixContent.js +310 -0
  8. package/dist/commands/generation.d.ts +0 -1
  9. package/dist/commands/generation.js +0 -18
  10. package/dist/commands/init.js +3 -3
  11. package/dist/commands/upload.js +11 -0
  12. package/dist/index.js +17 -4
  13. package/node_modules/@playdrop/ai-client/dist/index.d.ts +1 -1
  14. package/node_modules/@playdrop/ai-client/dist/index.d.ts.map +1 -1
  15. package/node_modules/@playdrop/ai-client/dist/index.js +1 -1
  16. package/node_modules/@playdrop/api-client/dist/client.d.ts +8 -2
  17. package/node_modules/@playdrop/api-client/dist/client.d.ts.map +1 -1
  18. package/node_modules/@playdrop/api-client/dist/client.js +2 -0
  19. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts +3 -2
  20. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts.map +1 -1
  21. package/node_modules/@playdrop/api-client/dist/domains/apps.js +24 -2
  22. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts +3 -1
  23. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts.map +1 -1
  24. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.js +19 -1
  25. package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts +3 -1
  26. package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts.map +1 -1
  27. package/node_modules/@playdrop/api-client/dist/domains/assets.js +19 -1
  28. package/node_modules/@playdrop/api-client/dist/index.d.ts +3 -0
  29. package/node_modules/@playdrop/api-client/dist/index.d.ts.map +1 -1
  30. package/node_modules/@playdrop/api-client/dist/index.js +9 -0
  31. package/node_modules/@playdrop/config/client-meta.json +5 -5
  32. package/node_modules/@playdrop/types/dist/api.d.ts +22 -1
  33. package/node_modules/@playdrop/types/dist/api.d.ts.map +1 -1
  34. package/node_modules/@playdrop/types/dist/asset-pack.d.ts +1 -0
  35. package/node_modules/@playdrop/types/dist/asset-pack.d.ts.map +1 -1
  36. package/node_modules/@playdrop/types/dist/asset.d.ts +27 -0
  37. package/node_modules/@playdrop/types/dist/asset.d.ts.map +1 -1
  38. package/node_modules/@playdrop/types/dist/graph.d.ts +21 -0
  39. package/node_modules/@playdrop/types/dist/graph.d.ts.map +1 -1
  40. package/node_modules/@playdrop/types/dist/graph.js +66 -0
  41. package/node_modules/@playdrop/types/dist/version.d.ts +1 -0
  42. package/node_modules/@playdrop/types/dist/version.d.ts.map +1 -1
  43. package/node_modules/@playdrop/vox-three/dist/src/index.d.ts +1 -0
  44. package/node_modules/@playdrop/vox-three/dist/src/index.js +18 -0
  45. package/node_modules/@playdrop/vox-three/dist/src/index.js.map +1 -0
  46. package/node_modules/@playdrop/vox-three/dist/src/vox.d.ts +25 -0
  47. package/node_modules/@playdrop/vox-three/dist/src/vox.js +425 -0
  48. package/node_modules/@playdrop/vox-three/dist/src/vox.js.map +1 -0
  49. package/node_modules/@playdrop/vox-three/dist/test/vox.test.d.ts +1 -0
  50. package/node_modules/@playdrop/vox-three/dist/test/vox.test.js +79 -0
  51. package/node_modules/@playdrop/vox-three/dist/test/vox.test.js.map +1 -0
  52. package/node_modules/@playdrop/vox-three/package.json +25 -0
  53. package/node_modules/three/LICENSE +1 -1
  54. package/node_modules/three/README.md +7 -7
  55. package/node_modules/three/build/three.cjs +49655 -25499
  56. package/node_modules/three/build/three.core.js +58952 -0
  57. package/node_modules/three/build/three.core.min.js +6 -0
  58. package/node_modules/three/build/three.module.js +11162 -45962
  59. package/node_modules/three/build/three.module.min.js +2 -2
  60. package/node_modules/three/build/three.tsl.js +640 -0
  61. package/node_modules/three/build/three.tsl.min.js +6 -0
  62. package/node_modules/three/build/three.webgpu.js +79685 -0
  63. package/node_modules/three/build/three.webgpu.min.js +6 -0
  64. package/node_modules/three/build/three.webgpu.nodes.js +79456 -0
  65. package/node_modules/three/build/three.webgpu.nodes.min.js +6 -0
  66. package/node_modules/three/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  67. package/node_modules/three/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  68. package/node_modules/three/examples/jsm/Addons.js +8 -18
  69. package/node_modules/three/examples/jsm/animation/AnimationClipCreator.js +59 -7
  70. package/node_modules/three/examples/jsm/animation/CCDIKSolver.js +154 -45
  71. package/node_modules/three/examples/jsm/capabilities/WebGL.js +28 -23
  72. package/node_modules/three/examples/jsm/capabilities/WebGPU.js +19 -17
  73. package/node_modules/three/examples/jsm/controls/ArcballControls.js +636 -324
  74. package/node_modules/three/examples/jsm/controls/DragControls.js +332 -101
  75. package/node_modules/three/examples/jsm/controls/FirstPersonControls.js +291 -169
  76. package/node_modules/three/examples/jsm/controls/FlyControls.js +245 -191
  77. package/node_modules/three/examples/jsm/controls/MapControls.js +43 -9
  78. package/node_modules/three/examples/jsm/controls/OrbitControls.js +1156 -802
  79. package/node_modules/three/examples/jsm/controls/PointerLockControls.js +137 -35
  80. package/node_modules/three/examples/jsm/controls/TrackballControls.js +629 -456
  81. package/node_modules/three/examples/jsm/controls/TransformControls.js +442 -97
  82. package/node_modules/three/examples/jsm/csm/CSM.js +230 -17
  83. package/node_modules/three/examples/jsm/csm/CSMFrustum.js +61 -4
  84. package/node_modules/three/examples/jsm/csm/CSMHelper.js +50 -0
  85. package/node_modules/three/examples/jsm/csm/CSMShader.js +17 -5
  86. package/node_modules/three/examples/jsm/csm/CSMShadowNode.js +599 -0
  87. package/node_modules/three/examples/jsm/curves/CurveExtras.js +303 -31
  88. package/node_modules/three/examples/jsm/curves/NURBSCurve.js +91 -16
  89. package/node_modules/three/examples/jsm/curves/NURBSSurface.js +52 -6
  90. package/node_modules/three/examples/jsm/curves/NURBSUtils.js +102 -112
  91. package/node_modules/three/examples/jsm/curves/NURBSVolume.js +24 -4
  92. package/node_modules/three/examples/jsm/effects/AnaglyphEffect.js +39 -14
  93. package/node_modules/three/examples/jsm/effects/AsciiEffect.js +69 -22
  94. package/node_modules/three/examples/jsm/effects/OutlineEffect.js +61 -111
  95. package/node_modules/three/examples/jsm/effects/ParallaxBarrierEffect.js +48 -12
  96. package/node_modules/three/examples/jsm/effects/StereoEffect.js +37 -1
  97. package/node_modules/three/examples/jsm/environments/DebugEnvironment.js +50 -0
  98. package/node_modules/three/examples/jsm/environments/RoomEnvironment.js +82 -48
  99. package/node_modules/three/examples/jsm/exporters/DRACOExporter.js +59 -15
  100. package/node_modules/three/examples/jsm/exporters/EXRExporter.js +58 -19
  101. package/node_modules/three/examples/jsm/exporters/GLTFExporter.js +460 -174
  102. package/node_modules/three/examples/jsm/exporters/KTX2Exporter.js +80 -25
  103. package/node_modules/three/examples/jsm/exporters/OBJExporter.js +25 -1
  104. package/node_modules/three/examples/jsm/exporters/PLYExporter.js +51 -17
  105. package/node_modules/three/examples/jsm/exporters/STLExporter.js +27 -5
  106. package/node_modules/three/examples/jsm/exporters/USDZExporter.js +783 -268
  107. package/node_modules/three/examples/jsm/geometries/BoxLineGeometry.js +23 -0
  108. package/node_modules/three/examples/jsm/geometries/ConvexGeometry.js +19 -0
  109. package/node_modules/three/examples/jsm/geometries/DecalGeometry.js +94 -30
  110. package/node_modules/three/examples/jsm/geometries/ParametricFunctions.js +100 -0
  111. package/node_modules/three/examples/jsm/geometries/ParametricGeometry.js +38 -5
  112. package/node_modules/three/examples/jsm/geometries/RoundedBoxGeometry.js +68 -7
  113. package/node_modules/three/examples/jsm/geometries/TeapotGeometry.js +23 -38
  114. package/node_modules/three/examples/jsm/geometries/TextGeometry.js +48 -21
  115. package/node_modules/three/examples/jsm/gpgpu/BitonicSort.js +715 -0
  116. package/node_modules/three/examples/jsm/helpers/LightProbeHelper.js +79 -44
  117. package/node_modules/three/examples/jsm/helpers/LightProbeHelperGPU.js +102 -0
  118. package/node_modules/three/examples/jsm/helpers/OctreeHelper.js +36 -0
  119. package/node_modules/three/examples/jsm/helpers/PositionalAudioHelper.js +60 -0
  120. package/node_modules/three/examples/jsm/helpers/RapierHelper.js +59 -0
  121. package/node_modules/three/examples/jsm/helpers/RectAreaLightHelper.js +36 -3
  122. package/node_modules/three/examples/jsm/helpers/TextureHelper.js +28 -0
  123. package/node_modules/three/examples/jsm/helpers/TextureHelperGPU.js +214 -0
  124. package/node_modules/three/examples/jsm/helpers/VertexNormalsHelper.js +61 -2
  125. package/node_modules/three/examples/jsm/helpers/VertexTangentsHelper.js +47 -2
  126. package/node_modules/three/examples/jsm/helpers/ViewHelper.js +192 -65
  127. package/node_modules/three/examples/jsm/inspector/Inspector.js +427 -0
  128. package/node_modules/three/examples/jsm/inspector/RendererInspector.js +415 -0
  129. package/node_modules/three/examples/jsm/inspector/tabs/Console.js +204 -0
  130. package/node_modules/three/examples/jsm/inspector/tabs/Parameters.js +332 -0
  131. package/node_modules/three/examples/jsm/inspector/tabs/Performance.js +268 -0
  132. package/node_modules/three/examples/jsm/inspector/tabs/Viewer.js +166 -0
  133. package/node_modules/three/examples/jsm/inspector/ui/Graph.js +95 -0
  134. package/node_modules/three/examples/jsm/inspector/ui/Item.js +170 -0
  135. package/node_modules/three/examples/jsm/inspector/ui/List.js +75 -0
  136. package/node_modules/three/examples/jsm/inspector/ui/Profiler.js +170 -0
  137. package/node_modules/three/examples/jsm/inspector/ui/Style.js +654 -0
  138. package/node_modules/three/examples/jsm/inspector/ui/Tab.js +46 -0
  139. package/node_modules/three/examples/jsm/inspector/ui/Values.js +423 -0
  140. package/node_modules/three/examples/jsm/inspector/ui/utils.js +56 -0
  141. package/node_modules/three/examples/jsm/interactive/HTMLMesh.js +50 -21
  142. package/node_modules/three/examples/jsm/interactive/InteractiveGroup.js +170 -62
  143. package/node_modules/three/examples/jsm/interactive/SelectionBox.js +106 -9
  144. package/node_modules/three/examples/jsm/interactive/SelectionHelper.js +76 -30
  145. package/node_modules/three/examples/jsm/libs/basis/basis_transcoder.js +8 -10
  146. package/node_modules/three/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  147. package/node_modules/three/examples/jsm/libs/demuxer_mp4.js +109 -0
  148. package/node_modules/three/examples/jsm/libs/draco/README.md +2 -2
  149. package/node_modules/three/examples/jsm/libs/fflate.module.js +694 -496
  150. package/node_modules/three/examples/jsm/libs/ktx-parse.module.js +1 -1
  151. package/node_modules/three/examples/jsm/libs/meshopt_decoder.module.js +75 -58
  152. package/node_modules/three/examples/jsm/libs/motion-controllers.module.js +1 -1
  153. package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.js +1 -8723
  154. package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.module.js +1 -8734
  155. package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  156. package/node_modules/three/examples/jsm/libs/tween.module.js +32 -14
  157. package/node_modules/three/examples/jsm/lighting/TiledLighting.js +42 -0
  158. package/node_modules/three/examples/jsm/lights/LightProbeGenerator.js +65 -14
  159. package/node_modules/three/examples/jsm/lights/RectAreaLightTexturesLib.js +127 -0
  160. package/node_modules/three/examples/jsm/lights/RectAreaLightUniformsLib.js +20 -59
  161. package/node_modules/three/examples/jsm/lines/Line2.js +41 -4
  162. package/node_modules/three/examples/jsm/lines/LineGeometry.js +80 -2
  163. package/node_modules/three/examples/jsm/lines/LineMaterial.js +100 -22
  164. package/node_modules/three/examples/jsm/lines/LineSegments2.js +69 -4
  165. package/node_modules/three/examples/jsm/lines/LineSegmentsGeometry.js +65 -8
  166. package/node_modules/three/examples/jsm/lines/Wireframe.js +58 -6
  167. package/node_modules/three/examples/jsm/lines/WireframeGeometry2.js +27 -2
  168. package/node_modules/three/examples/jsm/lines/webgpu/Line2.js +46 -0
  169. package/node_modules/three/examples/jsm/lines/webgpu/LineSegments2.js +411 -0
  170. package/node_modules/three/examples/jsm/lines/webgpu/Wireframe.js +86 -0
  171. package/node_modules/three/examples/jsm/loaders/3DMLoader.js +86 -23
  172. package/node_modules/three/examples/jsm/loaders/3MFLoader.js +148 -5
  173. package/node_modules/three/examples/jsm/loaders/AMFLoader.js +32 -12
  174. package/node_modules/three/examples/jsm/loaders/BVHLoader.js +59 -12
  175. package/node_modules/three/examples/jsm/loaders/ColladaLoader.js +51 -12
  176. package/node_modules/three/examples/jsm/loaders/DDSLoader.js +68 -1
  177. package/node_modules/three/examples/jsm/loaders/DRACOLoader.js +149 -23
  178. package/node_modules/three/examples/jsm/loaders/EXRLoader.js +584 -109
  179. package/node_modules/three/examples/jsm/loaders/FBXLoader.js +165 -97
  180. package/node_modules/three/examples/jsm/loaders/FontLoader.js +83 -6
  181. package/node_modules/three/examples/jsm/loaders/GCodeLoader.js +37 -6
  182. package/node_modules/three/examples/jsm/loaders/GLTFLoader.js +337 -108
  183. package/node_modules/three/examples/jsm/loaders/HDRCubeTextureLoader.js +52 -3
  184. package/node_modules/three/examples/jsm/loaders/HDRLoader.js +486 -0
  185. package/node_modules/three/examples/jsm/loaders/IESLoader.js +42 -0
  186. package/node_modules/three/examples/jsm/loaders/KMZLoader.js +33 -0
  187. package/node_modules/three/examples/jsm/loaders/KTX2Loader.js +441 -138
  188. package/node_modules/three/examples/jsm/loaders/KTXLoader.js +31 -10
  189. package/node_modules/three/examples/jsm/loaders/LDrawLoader.js +194 -145
  190. package/node_modules/three/examples/jsm/loaders/LUT3dlLoader.js +47 -25
  191. package/node_modules/three/examples/jsm/loaders/LUTCubeLoader.js +46 -23
  192. package/node_modules/three/examples/jsm/loaders/LUTImageLoader.js +79 -52
  193. package/node_modules/three/examples/jsm/loaders/LWOLoader.js +47 -20
  194. package/node_modules/three/examples/jsm/loaders/LottieLoader.js +54 -1
  195. package/node_modules/three/examples/jsm/loaders/MD2Loader.js +37 -1
  196. package/node_modules/three/examples/jsm/loaders/MDDLoader.js +57 -12
  197. package/node_modules/three/examples/jsm/loaders/MTLLoader.js +61 -35
  198. package/node_modules/three/examples/jsm/loaders/MaterialXLoader.js +291 -39
  199. package/node_modules/three/examples/jsm/loaders/NRRDLoader.js +38 -6
  200. package/node_modules/three/examples/jsm/loaders/OBJLoader.js +54 -4
  201. package/node_modules/three/examples/jsm/loaders/PCDLoader.js +183 -32
  202. package/node_modules/three/examples/jsm/loaders/PDBLoader.js +44 -4
  203. package/node_modules/three/examples/jsm/loaders/PLYLoader.js +78 -44
  204. package/node_modules/three/examples/jsm/loaders/PVRLoader.js +25 -6
  205. package/node_modules/three/examples/jsm/loaders/RGBELoader.js +6 -438
  206. package/node_modules/three/examples/jsm/loaders/STLLoader.js +51 -40
  207. package/node_modules/three/examples/jsm/loaders/SVGLoader.js +118 -24
  208. package/node_modules/three/examples/jsm/loaders/TDSLoader.js +92 -72
  209. package/node_modules/three/examples/jsm/loaders/TGALoader.js +23 -0
  210. package/node_modules/three/examples/jsm/loaders/TIFFLoader.js +23 -0
  211. package/node_modules/three/examples/jsm/loaders/TTFLoader.js +50 -3
  212. package/node_modules/three/examples/jsm/loaders/USDLoader.js +219 -0
  213. package/node_modules/three/examples/jsm/loaders/USDZLoader.js +4 -810
  214. package/node_modules/three/examples/jsm/loaders/UltraHDRLoader.js +630 -0
  215. package/node_modules/three/examples/jsm/loaders/VOXLoader.js +67 -2
  216. package/node_modules/three/examples/jsm/loaders/VRMLLoader.js +57 -21
  217. package/node_modules/three/examples/jsm/loaders/VTKLoader.js +119 -6
  218. package/node_modules/three/examples/jsm/loaders/XYZLoader.js +39 -2
  219. package/node_modules/three/examples/jsm/loaders/lwo/IFFParser.js +81 -78
  220. package/node_modules/three/examples/jsm/loaders/usd/USDAParser.js +741 -0
  221. package/node_modules/three/examples/jsm/loaders/usd/USDCParser.js +17 -0
  222. package/node_modules/three/examples/jsm/materials/LDrawConditionalLineMaterial.js +183 -0
  223. package/node_modules/three/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +154 -0
  224. package/node_modules/three/examples/jsm/materials/MeshGouraudMaterial.js +9 -1
  225. package/node_modules/three/examples/jsm/materials/MeshPostProcessingMaterial.js +25 -2
  226. package/node_modules/three/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  227. package/node_modules/three/examples/jsm/math/Capsule.js +91 -14
  228. package/node_modules/three/examples/jsm/math/ColorConverter.js +22 -0
  229. package/node_modules/three/examples/jsm/math/ColorSpaces.js +147 -0
  230. package/node_modules/three/examples/jsm/math/ConvexHull.js +517 -93
  231. package/node_modules/three/examples/jsm/math/ImprovedNoise.js +32 -15
  232. package/node_modules/three/examples/jsm/math/Lut.js +113 -0
  233. package/node_modules/three/examples/jsm/math/MeshSurfaceSampler.js +78 -13
  234. package/node_modules/three/examples/jsm/math/OBB.js +141 -29
  235. package/node_modules/three/examples/jsm/math/Octree.js +177 -25
  236. package/node_modules/three/examples/jsm/math/SimplexNoise.js +68 -42
  237. package/node_modules/three/examples/jsm/misc/ConvexObjectBreaker.js +45 -25
  238. package/node_modules/three/examples/jsm/misc/GPUComputationRenderer.js +105 -45
  239. package/node_modules/three/examples/jsm/misc/Gyroscope.js +12 -0
  240. package/node_modules/three/examples/jsm/misc/MD2Character.js +117 -2
  241. package/node_modules/three/examples/jsm/misc/MD2CharacterComplex.js +175 -11
  242. package/node_modules/three/examples/jsm/misc/MorphAnimMesh.js +44 -0
  243. package/node_modules/three/examples/jsm/misc/MorphBlendMesh.js +103 -0
  244. package/node_modules/three/examples/jsm/misc/ProgressiveLightMap.js +101 -54
  245. package/node_modules/three/examples/jsm/misc/ProgressiveLightMapGPU.js +322 -0
  246. package/node_modules/three/examples/jsm/misc/RollerCoaster.js +57 -0
  247. package/node_modules/three/examples/jsm/misc/TubePainter.js +437 -40
  248. package/node_modules/three/examples/jsm/misc/Volume.js +123 -75
  249. package/node_modules/three/examples/jsm/misc/VolumeSlice.js +95 -48
  250. package/node_modules/three/examples/jsm/modifiers/CurveModifier.js +77 -47
  251. package/node_modules/three/examples/jsm/modifiers/CurveModifierGPU.js +256 -0
  252. package/node_modules/three/examples/jsm/modifiers/EdgeSplitModifier.js +20 -0
  253. package/node_modules/three/examples/jsm/modifiers/SimplifyModifier.js +26 -11
  254. package/node_modules/three/examples/jsm/modifiers/TessellateModifier.js +35 -2
  255. package/node_modules/three/examples/jsm/objects/GroundedSkybox.js +25 -6
  256. package/node_modules/three/examples/jsm/objects/Lensflare.js +96 -4
  257. package/node_modules/three/examples/jsm/objects/LensflareMesh.js +376 -0
  258. package/node_modules/three/examples/jsm/objects/MarchingCubes.js +90 -5
  259. package/node_modules/three/examples/jsm/objects/Reflector.js +76 -2
  260. package/node_modules/three/examples/jsm/objects/ReflectorForSSRPass.js +41 -0
  261. package/node_modules/three/examples/jsm/objects/Refractor.js +62 -0
  262. package/node_modules/three/examples/jsm/objects/ShadowMesh.js +54 -4
  263. package/node_modules/three/examples/jsm/objects/Sky.js +30 -12
  264. package/node_modules/three/examples/jsm/objects/SkyMesh.js +243 -0
  265. package/node_modules/three/examples/jsm/objects/Water.js +45 -5
  266. package/node_modules/three/examples/jsm/objects/Water2.js +44 -4
  267. package/node_modules/three/examples/jsm/objects/Water2Mesh.js +199 -0
  268. package/node_modules/three/examples/jsm/objects/WaterMesh.js +196 -0
  269. package/node_modules/three/examples/jsm/physics/AmmoPhysics.js +48 -0
  270. package/node_modules/three/examples/jsm/physics/JoltPhysics.js +330 -0
  271. package/node_modules/three/examples/jsm/physics/RapierPhysics.js +231 -19
  272. package/node_modules/three/examples/jsm/postprocessing/AfterimagePass.js +110 -29
  273. package/node_modules/three/examples/jsm/postprocessing/BloomPass.js +128 -26
  274. package/node_modules/three/examples/jsm/postprocessing/BokehPass.js +99 -22
  275. package/node_modules/three/examples/jsm/postprocessing/ClearPass.js +54 -3
  276. package/node_modules/three/examples/jsm/postprocessing/CubeTexturePass.js +82 -21
  277. package/node_modules/three/examples/jsm/postprocessing/DotScreenPass.js +59 -10
  278. package/node_modules/three/examples/jsm/postprocessing/EffectComposer.js +135 -3
  279. package/node_modules/three/examples/jsm/postprocessing/FXAAPass.js +40 -0
  280. package/node_modules/three/examples/jsm/postprocessing/FilmPass.js +54 -5
  281. package/node_modules/three/examples/jsm/postprocessing/GTAOPass.js +202 -57
  282. package/node_modules/three/examples/jsm/postprocessing/GlitchPass.js +86 -37
  283. package/node_modules/three/examples/jsm/postprocessing/HalftonePass.js +65 -10
  284. package/node_modules/three/examples/jsm/postprocessing/LUTPass.js +43 -79
  285. package/node_modules/three/examples/jsm/postprocessing/MaskPass.js +91 -0
  286. package/node_modules/three/examples/jsm/postprocessing/OutlinePass.js +277 -155
  287. package/node_modules/three/examples/jsm/postprocessing/OutputPass.js +58 -14
  288. package/node_modules/three/examples/jsm/postprocessing/Pass.js +100 -4
  289. package/node_modules/three/examples/jsm/postprocessing/RenderPass.js +85 -1
  290. package/node_modules/three/examples/jsm/postprocessing/RenderPixelatedPass.js +124 -45
  291. package/node_modules/three/examples/jsm/postprocessing/RenderTransitionPass.js +267 -0
  292. package/node_modules/three/examples/jsm/postprocessing/SAOPass.js +128 -56
  293. package/node_modules/three/examples/jsm/postprocessing/SMAAPass.js +106 -75
  294. package/node_modules/three/examples/jsm/postprocessing/SSAARenderPass.js +120 -35
  295. package/node_modules/three/examples/jsm/postprocessing/SSAOPass.js +174 -67
  296. package/node_modules/three/examples/jsm/postprocessing/SSRPass.js +268 -53
  297. package/node_modules/three/examples/jsm/postprocessing/SavePass.js +69 -16
  298. package/node_modules/three/examples/jsm/postprocessing/ShaderPass.js +65 -7
  299. package/node_modules/three/examples/jsm/postprocessing/TAARenderPass.js +79 -24
  300. package/node_modules/three/examples/jsm/postprocessing/TexturePass.js +72 -8
  301. package/node_modules/three/examples/jsm/postprocessing/UnrealBloomPass.js +125 -46
  302. package/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +122 -9
  303. package/node_modules/three/examples/jsm/renderers/CSS3DRenderer.js +133 -8
  304. package/node_modules/three/examples/jsm/renderers/Projector.js +20 -2
  305. package/node_modules/three/examples/jsm/renderers/SVGRenderer.js +134 -5
  306. package/node_modules/three/examples/jsm/shaders/ACESFilmicToneMappingShader.js +12 -5
  307. package/node_modules/three/examples/jsm/shaders/AfterimageShader.js +8 -3
  308. package/node_modules/three/examples/jsm/shaders/BasicShader.js +8 -1
  309. package/node_modules/three/examples/jsm/shaders/BleachBypassShader.js +11 -5
  310. package/node_modules/three/examples/jsm/shaders/BlendShader.js +8 -1
  311. package/node_modules/three/examples/jsm/shaders/BokehShader.js +9 -3
  312. package/node_modules/three/examples/jsm/shaders/BokehShader2.js +11 -4
  313. package/node_modules/three/examples/jsm/shaders/BrightnessContrastShader.js +10 -4
  314. package/node_modules/three/examples/jsm/shaders/ColorCorrectionShader.js +8 -1
  315. package/node_modules/three/examples/jsm/shaders/ColorifyShader.js +9 -3
  316. package/node_modules/three/examples/jsm/shaders/ConvolutionShader.js +9 -38
  317. package/node_modules/three/examples/jsm/shaders/CopyShader.js +8 -1
  318. package/node_modules/three/examples/jsm/shaders/DOFMipMapShader.js +10 -3
  319. package/node_modules/three/examples/jsm/shaders/DepthLimitedBlurShader.js +10 -1
  320. package/node_modules/three/examples/jsm/shaders/DigitalGlitch.js +10 -7
  321. package/node_modules/three/examples/jsm/shaders/DotScreenShader.js +8 -3
  322. package/node_modules/three/examples/jsm/shaders/ExposureShader.js +8 -1
  323. package/node_modules/three/examples/jsm/shaders/FXAAShader.js +243 -233
  324. package/node_modules/three/examples/jsm/shaders/FilmShader.js +13 -0
  325. package/node_modules/three/examples/jsm/shaders/FocusShader.js +8 -3
  326. package/node_modules/three/examples/jsm/shaders/FreiChenShader.js +10 -3
  327. package/node_modules/three/examples/jsm/shaders/GTAOShader.js +37 -40
  328. package/node_modules/three/examples/jsm/shaders/GammaCorrectionShader.js +11 -2
  329. package/node_modules/three/examples/jsm/shaders/GodRaysShader.js +20 -8
  330. package/node_modules/three/examples/jsm/shaders/HalftoneShader.js +13 -4
  331. package/node_modules/three/examples/jsm/shaders/HorizontalBlurShader.js +12 -3
  332. package/node_modules/three/examples/jsm/shaders/HorizontalTiltShiftShader.js +9 -2
  333. package/node_modules/three/examples/jsm/shaders/HueSaturationShader.js +10 -3
  334. package/node_modules/three/examples/jsm/shaders/KaleidoShader.js +11 -4
  335. package/node_modules/three/examples/jsm/shaders/LuminosityHighPassShader.js +9 -7
  336. package/node_modules/three/examples/jsm/shaders/LuminosityShader.js +8 -2
  337. package/node_modules/three/examples/jsm/shaders/MirrorShader.js +10 -4
  338. package/node_modules/three/examples/jsm/shaders/NormalMapShader.js +7 -2
  339. package/node_modules/three/examples/jsm/shaders/OutputShader.js +24 -2
  340. package/node_modules/three/examples/jsm/shaders/PoissonDenoiseShader.js +24 -15
  341. package/node_modules/three/examples/jsm/shaders/RGBShiftShader.js +8 -1
  342. package/node_modules/three/examples/jsm/shaders/SAOShader.js +10 -1
  343. package/node_modules/three/examples/jsm/shaders/SMAAShader.js +24 -1
  344. package/node_modules/three/examples/jsm/shaders/SSAOShader.js +26 -5
  345. package/node_modules/three/examples/jsm/shaders/SSRShader.js +26 -1
  346. package/node_modules/three/examples/jsm/shaders/SepiaShader.js +8 -3
  347. package/node_modules/three/examples/jsm/shaders/SobelOperatorShader.js +9 -3
  348. package/node_modules/three/examples/jsm/shaders/SubsurfaceScatteringShader.js +13 -8
  349. package/node_modules/three/examples/jsm/shaders/TechnicolorShader.js +10 -4
  350. package/node_modules/three/examples/jsm/shaders/ToonShader.js +29 -6
  351. package/node_modules/three/examples/jsm/shaders/TriangleBlurShader.js +9 -4
  352. package/node_modules/three/examples/jsm/shaders/UnpackDepthRGBAShader.js +19 -4
  353. package/node_modules/three/examples/jsm/shaders/VelocityShader.js +8 -1
  354. package/node_modules/three/examples/jsm/shaders/VerticalBlurShader.js +9 -2
  355. package/node_modules/three/examples/jsm/shaders/VerticalTiltShiftShader.js +8 -1
  356. package/node_modules/three/examples/jsm/shaders/VignetteShader.js +8 -3
  357. package/node_modules/three/examples/jsm/shaders/VolumeShader.js +11 -2
  358. package/node_modules/three/examples/jsm/shaders/WaterRefractionShader.js +11 -0
  359. package/node_modules/three/examples/jsm/textures/FlakesTexture.js +14 -0
  360. package/node_modules/three/examples/jsm/transpiler/AST.js +392 -31
  361. package/node_modules/three/examples/jsm/transpiler/GLSLDecoder.js +366 -136
  362. package/node_modules/three/examples/jsm/transpiler/Linker.js +327 -0
  363. package/node_modules/three/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
  364. package/node_modules/three/examples/jsm/transpiler/TSLEncoder.js +336 -111
  365. package/node_modules/three/examples/jsm/transpiler/Transpiler.js +50 -1
  366. package/node_modules/three/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  367. package/node_modules/three/examples/jsm/transpiler/WGSLEncoder.js +812 -0
  368. package/node_modules/three/examples/jsm/tsl/display/AfterImageNode.js +244 -0
  369. package/node_modules/three/examples/jsm/tsl/display/AnaglyphPassNode.js +107 -0
  370. package/node_modules/three/examples/jsm/tsl/display/AnamorphicNode.js +282 -0
  371. package/node_modules/three/examples/jsm/tsl/display/BleachBypass.js +33 -0
  372. package/node_modules/three/examples/jsm/tsl/display/BloomNode.js +524 -0
  373. package/node_modules/three/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
  374. package/node_modules/three/examples/jsm/tsl/display/DenoiseNode.js +334 -0
  375. package/node_modules/three/examples/jsm/tsl/display/DepthOfFieldNode.js +554 -0
  376. package/node_modules/three/examples/jsm/tsl/display/DotScreenNode.js +104 -0
  377. package/node_modules/three/examples/jsm/tsl/display/FXAANode.js +365 -0
  378. package/node_modules/three/examples/jsm/tsl/display/FilmNode.js +101 -0
  379. package/node_modules/three/examples/jsm/tsl/display/GTAONode.js +570 -0
  380. package/node_modules/three/examples/jsm/tsl/display/GaussianBlurNode.js +380 -0
  381. package/node_modules/three/examples/jsm/tsl/display/LensflareNode.js +279 -0
  382. package/node_modules/three/examples/jsm/tsl/display/Lut3DNode.js +109 -0
  383. package/node_modules/three/examples/jsm/tsl/display/MotionBlur.js +33 -0
  384. package/node_modules/three/examples/jsm/tsl/display/OutlineNode.js +762 -0
  385. package/node_modules/three/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +89 -0
  386. package/node_modules/three/examples/jsm/tsl/display/PixelationPassNode.js +334 -0
  387. package/node_modules/three/examples/jsm/tsl/display/RGBShiftNode.js +96 -0
  388. package/node_modules/three/examples/jsm/tsl/display/SMAANode.js +768 -0
  389. package/node_modules/three/examples/jsm/tsl/display/SSAAPassNode.js +358 -0
  390. package/node_modules/three/examples/jsm/tsl/display/SSGINode.js +654 -0
  391. package/node_modules/three/examples/jsm/tsl/display/SSRNode.js +656 -0
  392. package/node_modules/three/examples/jsm/tsl/display/SSSNode.js +488 -0
  393. package/node_modules/three/examples/jsm/tsl/display/Sepia.js +24 -0
  394. package/node_modules/three/examples/jsm/tsl/display/SobelOperatorNode.js +168 -0
  395. package/node_modules/three/examples/jsm/tsl/display/StereoCompositePassNode.js +185 -0
  396. package/node_modules/three/examples/jsm/tsl/display/StereoPassNode.js +120 -0
  397. package/node_modules/three/examples/jsm/tsl/display/TRAANode.js +578 -0
  398. package/node_modules/three/examples/jsm/tsl/display/TransitionNode.js +141 -0
  399. package/node_modules/three/examples/jsm/tsl/display/boxBlur.js +65 -0
  400. package/node_modules/three/examples/jsm/tsl/display/hashBlur.js +54 -0
  401. package/node_modules/three/examples/jsm/tsl/lighting/TiledLightsNode.js +442 -0
  402. package/node_modules/three/examples/jsm/tsl/math/Bayer.js +34 -0
  403. package/node_modules/three/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
  404. package/node_modules/three/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  405. package/node_modules/three/examples/jsm/tsl/utils/Raymarching.js +70 -0
  406. package/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +109 -45
  407. package/node_modules/three/examples/jsm/utils/CameraUtils.js +15 -6
  408. package/node_modules/three/examples/jsm/utils/GeometryCompressionUtils.js +54 -146
  409. package/node_modules/three/examples/jsm/utils/GeometryUtils.js +32 -27
  410. package/node_modules/three/examples/jsm/utils/LDrawUtils.js +13 -4
  411. package/node_modules/three/examples/jsm/utils/SceneOptimizer.js +458 -0
  412. package/node_modules/three/examples/jsm/utils/SceneUtils.js +112 -3
  413. package/node_modules/three/examples/jsm/utils/ShadowMapViewer.js +51 -31
  414. package/node_modules/three/examples/jsm/utils/ShadowMapViewerGPU.js +233 -0
  415. package/node_modules/three/examples/jsm/utils/SkeletonUtils.js +145 -68
  416. package/node_modules/three/examples/jsm/utils/SortUtils.js +23 -8
  417. package/node_modules/three/examples/jsm/utils/UVsDebug.js +12 -4
  418. package/node_modules/three/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +19 -2
  419. package/node_modules/three/examples/jsm/utils/WebGPUTextureUtils.js +81 -0
  420. package/node_modules/three/examples/jsm/utils/WorkerPool.js +67 -2
  421. package/node_modules/three/examples/jsm/webxr/ARButton.js +19 -0
  422. package/node_modules/three/examples/jsm/webxr/OculusHandModel.js +87 -2
  423. package/node_modules/three/examples/jsm/webxr/OculusHandPointerModel.js +148 -22
  424. package/node_modules/three/examples/jsm/webxr/Text2D.js +20 -6
  425. package/node_modules/three/examples/jsm/webxr/VRButton.js +44 -5
  426. package/node_modules/three/examples/jsm/webxr/XRButton.js +23 -1
  427. package/node_modules/three/examples/jsm/webxr/XRControllerModelFactory.js +103 -4
  428. package/node_modules/three/examples/jsm/webxr/XREstimatedLight.js +35 -4
  429. package/node_modules/three/examples/jsm/webxr/XRHandMeshModel.js +37 -0
  430. package/node_modules/three/examples/jsm/webxr/XRHandModelFactory.js +101 -9
  431. package/node_modules/three/examples/jsm/webxr/XRHandPrimitiveModel.js +44 -0
  432. package/node_modules/three/examples/jsm/webxr/XRPlanes.js +18 -0
  433. package/node_modules/three/package.json +25 -20
  434. package/node_modules/three/src/Three.Core.js +185 -0
  435. package/node_modules/three/src/Three.Legacy.js +0 -1
  436. package/node_modules/three/src/Three.TSL.js +633 -0
  437. package/node_modules/three/src/Three.WebGPU.Nodes.js +26 -0
  438. package/node_modules/three/src/Three.WebGPU.js +28 -0
  439. package/node_modules/three/src/Three.js +1 -176
  440. package/node_modules/three/src/animation/AnimationAction.js +262 -30
  441. package/node_modules/three/src/animation/AnimationClip.js +164 -9
  442. package/node_modules/three/src/animation/AnimationMixer.js +99 -15
  443. package/node_modules/three/src/animation/AnimationObjectGroup.js +45 -21
  444. package/node_modules/three/src/animation/AnimationUtils.js +169 -19
  445. package/node_modules/three/src/animation/KeyframeTrack.js +151 -16
  446. package/node_modules/three/src/animation/PropertyBinding.js +91 -16
  447. package/node_modules/three/src/animation/PropertyMixer.js +72 -5
  448. package/node_modules/three/src/animation/tracks/BooleanKeyframeTrack.js +42 -6
  449. package/node_modules/three/src/animation/tracks/ColorKeyframeTrack.js +26 -5
  450. package/node_modules/three/src/animation/tracks/NumberKeyframeTrack.js +26 -2
  451. package/node_modules/three/src/animation/tracks/QuaternionKeyframeTrack.js +31 -3
  452. package/node_modules/three/src/animation/tracks/StringKeyframeTrack.js +42 -2
  453. package/node_modules/three/src/animation/tracks/VectorKeyframeTrack.js +26 -2
  454. package/node_modules/three/src/audio/Audio.js +388 -10
  455. package/node_modules/three/src/audio/AudioAnalyser.js +58 -1
  456. package/node_modules/three/src/audio/AudioContext.js +15 -0
  457. package/node_modules/three/src/audio/AudioListener.js +89 -10
  458. package/node_modules/three/src/audio/PositionalAudio.js +107 -0
  459. package/node_modules/three/src/cameras/ArrayCamera.js +37 -0
  460. package/node_modules/three/src/cameras/Camera.js +61 -0
  461. package/node_modules/three/src/cameras/CubeCamera.js +66 -0
  462. package/node_modules/three/src/cameras/OrthographicCamera.js +110 -1
  463. package/node_modules/three/src/cameras/PerspectiveCamera.js +174 -35
  464. package/node_modules/three/src/cameras/StereoCamera.js +48 -2
  465. package/node_modules/three/src/constants.js +1477 -18
  466. package/node_modules/three/src/core/BufferAttribute.js +417 -23
  467. package/node_modules/three/src/core/BufferGeometry.js +416 -49
  468. package/node_modules/three/src/core/Clock.js +62 -8
  469. package/node_modules/three/src/core/EventDispatcher.js +52 -8
  470. package/node_modules/three/src/core/GLBufferAttribute.js +113 -2
  471. package/node_modules/three/src/core/InstancedBufferAttribute.js +29 -0
  472. package/node_modules/three/src/core/InstancedBufferGeometry.js +20 -0
  473. package/node_modules/three/src/core/InstancedInterleavedBuffer.js +26 -0
  474. package/node_modules/three/src/core/InterleavedBuffer.js +141 -16
  475. package/node_modules/three/src/core/InterleavedBufferAttribute.js +200 -2
  476. package/node_modules/three/src/core/Layers.js +71 -10
  477. package/node_modules/three/src/core/Object3D.js +665 -54
  478. package/node_modules/three/src/core/Raycaster.js +160 -8
  479. package/node_modules/three/src/core/RenderTarget.js +297 -36
  480. package/node_modules/three/src/core/RenderTarget3D.js +48 -0
  481. package/node_modules/three/src/core/Timer.js +184 -0
  482. package/node_modules/three/src/core/Uniform.js +29 -0
  483. package/node_modules/three/src/core/UniformsGroup.js +84 -2
  484. package/node_modules/three/src/extras/Controls.js +120 -0
  485. package/node_modules/three/src/extras/DataUtils.js +50 -9
  486. package/node_modules/three/src/extras/Earcut.js +18 -779
  487. package/node_modules/three/src/extras/ImageUtils.js +22 -14
  488. package/node_modules/three/src/extras/PMREMGenerator.js +329 -64
  489. package/node_modules/three/src/extras/ShapeUtils.js +24 -2
  490. package/node_modules/three/src/extras/TextureUtils.js +293 -0
  491. package/node_modules/three/src/extras/core/Curve.js +156 -55
  492. package/node_modules/three/src/extras/core/CurvePath.js +63 -22
  493. package/node_modules/three/src/extras/core/Interpolations.js +34 -2
  494. package/node_modules/three/src/extras/core/Path.js +134 -1
  495. package/node_modules/three/src/extras/core/Shape.js +66 -3
  496. package/node_modules/three/src/extras/core/ShapePath.js +80 -4
  497. package/node_modules/three/src/extras/curves/ArcCurve.js +22 -0
  498. package/node_modules/three/src/extras/curves/CatmullRomCurve3.js +89 -18
  499. package/node_modules/three/src/extras/curves/CubicBezierCurve.js +67 -0
  500. package/node_modules/three/src/extras/curves/CubicBezierCurve3.js +50 -0
  501. package/node_modules/three/src/extras/curves/EllipseCurve.js +104 -2
  502. package/node_modules/three/src/extras/curves/LineCurve.js +36 -0
  503. package/node_modules/three/src/extras/curves/LineCurve3.js +36 -0
  504. package/node_modules/three/src/extras/curves/QuadraticBezierCurve.js +59 -0
  505. package/node_modules/three/src/extras/curves/QuadraticBezierCurve3.js +43 -0
  506. package/node_modules/three/src/extras/curves/SplineCurve.js +48 -0
  507. package/node_modules/three/src/extras/lib/earcut.js +685 -0
  508. package/node_modules/three/src/geometries/BoxGeometry.js +39 -0
  509. package/node_modules/three/src/geometries/CapsuleGeometry.js +196 -11
  510. package/node_modules/three/src/geometries/CircleGeometry.js +41 -0
  511. package/node_modules/three/src/geometries/ConeGeometry.js +39 -0
  512. package/node_modules/three/src/geometries/CylinderGeometry.js +51 -4
  513. package/node_modules/three/src/geometries/DodecahedronGeometry.js +33 -0
  514. package/node_modules/three/src/geometries/EdgesGeometry.js +30 -2
  515. package/node_modules/three/src/geometries/ExtrudeGeometry.js +146 -50
  516. package/node_modules/three/src/geometries/IcosahedronGeometry.js +33 -0
  517. package/node_modules/three/src/geometries/LatheGeometry.js +44 -3
  518. package/node_modules/three/src/geometries/OctahedronGeometry.js +33 -0
  519. package/node_modules/three/src/geometries/PlaneGeometry.js +35 -0
  520. package/node_modules/three/src/geometries/PolyhedronGeometry.js +29 -0
  521. package/node_modules/three/src/geometries/RingGeometry.js +37 -0
  522. package/node_modules/three/src/geometries/ShapeGeometry.js +38 -0
  523. package/node_modules/three/src/geometries/SphereGeometry.js +38 -0
  524. package/node_modules/three/src/geometries/TetrahedronGeometry.js +33 -0
  525. package/node_modules/three/src/geometries/TorusGeometry.js +36 -0
  526. package/node_modules/three/src/geometries/TorusKnotGeometry.js +39 -0
  527. package/node_modules/three/src/geometries/TubeGeometry.js +50 -0
  528. package/node_modules/three/src/geometries/WireframeGeometry.js +32 -0
  529. package/node_modules/three/src/helpers/ArrowHelper.js +62 -5
  530. package/node_modules/three/src/helpers/AxesHelper.js +28 -0
  531. package/node_modules/three/src/helpers/Box3Helper.js +28 -0
  532. package/node_modules/three/src/helpers/BoxHelper.js +43 -7
  533. package/node_modules/three/src/helpers/CameraHelper.js +100 -27
  534. package/node_modules/three/src/helpers/DirectionalLightHelper.js +52 -0
  535. package/node_modules/three/src/helpers/GridHelper.js +26 -0
  536. package/node_modules/three/src/helpers/HemisphereLightHelper.js +39 -0
  537. package/node_modules/three/src/helpers/PlaneHelper.js +33 -0
  538. package/node_modules/three/src/helpers/PointLightHelper.js +43 -0
  539. package/node_modules/three/src/helpers/PolarGridHelper.js +30 -0
  540. package/node_modules/three/src/helpers/SkeletonHelper.js +73 -7
  541. package/node_modules/three/src/helpers/SpotLightHelper.js +58 -1
  542. package/node_modules/three/src/lights/AmbientLight.js +25 -0
  543. package/node_modules/three/src/lights/DirectionalLight.js +57 -0
  544. package/node_modules/three/src/lights/DirectionalLightShadow.js +15 -0
  545. package/node_modules/three/src/lights/HemisphereLight.js +32 -0
  546. package/node_modules/three/src/lights/Light.js +37 -0
  547. package/node_modules/three/src/lights/LightProbe.js +43 -0
  548. package/node_modules/three/src/lights/LightShadow.js +198 -7
  549. package/node_modules/three/src/lights/PointLight.js +59 -0
  550. package/node_modules/three/src/lights/PointLightShadow.js +22 -1
  551. package/node_modules/three/src/lights/RectAreaLight.js +59 -0
  552. package/node_modules/three/src/lights/SpotLight.js +102 -0
  553. package/node_modules/three/src/lights/SpotLightShadow.js +33 -3
  554. package/node_modules/three/src/lights/webgpu/IESSpotLight.js +46 -0
  555. package/node_modules/three/src/lights/webgpu/ProjectorLight.js +46 -0
  556. package/node_modules/three/src/loaders/AnimationLoader.js +34 -2
  557. package/node_modules/three/src/loaders/AudioLoader.js +34 -2
  558. package/node_modules/three/src/loaders/BufferGeometryLoader.js +38 -13
  559. package/node_modules/three/src/loaders/Cache.js +47 -2
  560. package/node_modules/three/src/loaders/CompressedTextureLoader.js +36 -3
  561. package/node_modules/three/src/loaders/CubeTextureLoader.js +45 -0
  562. package/node_modules/three/src/loaders/DataTextureLoader.js +45 -8
  563. package/node_modules/three/src/loaders/FileLoader.js +90 -6
  564. package/node_modules/three/src/loaders/ImageBitmapLoader.js +108 -11
  565. package/node_modules/three/src/loaders/ImageLoader.js +85 -8
  566. package/node_modules/three/src/loaders/Loader.js +144 -0
  567. package/node_modules/three/src/loaders/LoaderUtils.js +18 -34
  568. package/node_modules/three/src/loaders/LoadingManager.js +187 -0
  569. package/node_modules/three/src/loaders/MaterialLoader.js +70 -4
  570. package/node_modules/three/src/loaders/ObjectLoader.js +146 -30
  571. package/node_modules/three/src/loaders/TextureLoader.js +33 -0
  572. package/node_modules/three/src/loaders/nodes/NodeLoader.js +194 -0
  573. package/node_modules/three/src/loaders/nodes/NodeMaterialLoader.js +108 -0
  574. package/node_modules/three/src/loaders/nodes/NodeObjectLoader.js +151 -0
  575. package/node_modules/three/src/materials/LineBasicMaterial.js +74 -1
  576. package/node_modules/three/src/materials/LineDashedMaterial.js +52 -1
  577. package/node_modules/three/src/materials/Material.js +504 -11
  578. package/node_modules/three/src/materials/MeshBasicMaterial.js +172 -3
  579. package/node_modules/three/src/materials/MeshDepthMaterial.js +94 -0
  580. package/node_modules/three/src/materials/MeshDistanceMaterial.js +76 -0
  581. package/node_modules/three/src/materials/MeshLambertMaterial.js +278 -1
  582. package/node_modules/three/src/materials/MeshMatcapMaterial.js +164 -0
  583. package/node_modules/three/src/materials/MeshNormalMaterial.js +114 -0
  584. package/node_modules/three/src/materials/MeshPhongMaterial.js +293 -1
  585. package/node_modules/three/src/materials/MeshPhysicalMaterial.js +316 -4
  586. package/node_modules/three/src/materials/MeshStandardMaterial.js +304 -3
  587. package/node_modules/three/src/materials/MeshToonMaterial.js +219 -0
  588. package/node_modules/three/src/materials/PointsMaterial.js +89 -0
  589. package/node_modules/three/src/materials/RawShaderMaterial.js +25 -0
  590. package/node_modules/three/src/materials/ShaderMaterial.js +215 -10
  591. package/node_modules/three/src/materials/ShadowMaterial.js +54 -0
  592. package/node_modules/three/src/materials/SpriteMaterial.js +82 -0
  593. package/node_modules/three/{examples/jsm/nodes/materials → src/materials/nodes}/Line2NodeMaterial.js +206 -100
  594. package/node_modules/three/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
  595. package/node_modules/three/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
  596. package/node_modules/three/src/materials/nodes/MeshBasicNodeMaterial.js +134 -0
  597. package/node_modules/three/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
  598. package/node_modules/three/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
  599. package/node_modules/three/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
  600. package/node_modules/three/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
  601. package/node_modules/three/src/materials/nodes/MeshPhysicalNodeMaterial.js +518 -0
  602. package/node_modules/three/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
  603. package/node_modules/three/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
  604. package/node_modules/three/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
  605. package/node_modules/three/src/materials/nodes/NodeMaterial.js +1310 -0
  606. package/node_modules/three/{examples/jsm/nodes/materials/Materials.js → src/materials/nodes/NodeMaterials.js} +7 -2
  607. package/node_modules/three/src/materials/nodes/PointsNodeMaterial.js +211 -0
  608. package/node_modules/three/src/materials/nodes/ShadowNodeMaterial.js +76 -0
  609. package/node_modules/three/src/materials/nodes/SpriteNodeMaterial.js +186 -0
  610. package/node_modules/three/src/materials/nodes/VolumeNodeMaterial.js +81 -0
  611. package/node_modules/three/src/materials/nodes/manager/NodeMaterialObserver.js +613 -0
  612. package/node_modules/three/src/math/Box2.js +181 -4
  613. package/node_modules/three/src/math/Box3.js +277 -6
  614. package/node_modules/three/src/math/Color.js +355 -11
  615. package/node_modules/three/src/math/ColorManagement.js +161 -85
  616. package/node_modules/three/src/math/Cylindrical.js +65 -6
  617. package/node_modules/three/src/math/Euler.js +139 -5
  618. package/node_modules/three/src/math/Frustum.js +108 -9
  619. package/node_modules/three/src/math/FrustumArray.js +258 -0
  620. package/node_modules/three/src/math/Interpolant.js +87 -8
  621. package/node_modules/three/src/math/Line3.js +223 -2
  622. package/node_modules/three/src/math/MathUtils.js +408 -20
  623. package/node_modules/three/src/math/Matrix2.js +124 -0
  624. package/node_modules/three/src/math/Matrix3.js +229 -4
  625. package/node_modules/three/src/math/Matrix4.js +416 -30
  626. package/node_modules/three/src/math/Plane.js +164 -2
  627. package/node_modules/three/src/math/Quaternion.js +345 -86
  628. package/node_modules/three/src/math/Ray.js +162 -0
  629. package/node_modules/three/src/math/Sphere.js +175 -0
  630. package/node_modules/three/src/math/Spherical.js +74 -13
  631. package/node_modules/three/src/math/SphericalHarmonics3.js +112 -14
  632. package/node_modules/three/src/math/Triangle.js +230 -2
  633. package/node_modules/three/src/math/Vector2.js +396 -10
  634. package/node_modules/three/src/math/Vector3.js +557 -20
  635. package/node_modules/three/src/math/Vector4.js +428 -9
  636. package/node_modules/three/src/math/interpolants/CubicInterpolant.js +10 -1
  637. package/node_modules/three/src/math/interpolants/DiscreteInterpolant.js +10 -2
  638. package/node_modules/three/src/math/interpolants/LinearInterpolant.js +13 -0
  639. package/node_modules/three/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
  640. package/node_modules/three/src/nodes/Nodes.js +148 -0
  641. package/node_modules/three/src/nodes/TSL.js +173 -0
  642. package/node_modules/three/src/nodes/accessors/AccessorsUtils.js +53 -0
  643. package/node_modules/three/src/nodes/accessors/Arrays.js +68 -0
  644. package/node_modules/three/src/nodes/accessors/BatchNode.js +163 -0
  645. package/node_modules/three/src/nodes/accessors/Bitangent.js +82 -0
  646. package/node_modules/three/src/nodes/accessors/BufferAttributeNode.js +340 -0
  647. package/node_modules/three/src/nodes/accessors/BufferNode.js +101 -0
  648. package/node_modules/three/src/nodes/accessors/BuiltinNode.js +63 -0
  649. package/node_modules/three/src/nodes/accessors/Camera.js +282 -0
  650. package/node_modules/three/src/nodes/accessors/ClippingNode.js +255 -0
  651. package/node_modules/three/src/nodes/accessors/CubeTextureNode.js +190 -0
  652. package/node_modules/three/src/nodes/accessors/InstanceNode.js +244 -0
  653. package/node_modules/three/src/nodes/accessors/InstancedMeshNode.js +50 -0
  654. package/node_modules/three/src/nodes/accessors/Lights.js +139 -0
  655. package/node_modules/three/src/nodes/accessors/MaterialNode.js +775 -0
  656. package/node_modules/three/src/nodes/accessors/MaterialProperties.js +59 -0
  657. package/node_modules/three/src/nodes/accessors/MaterialReferenceNode.js +85 -0
  658. package/node_modules/three/src/nodes/accessors/ModelNode.js +184 -0
  659. package/node_modules/three/src/nodes/accessors/ModelViewProjectionNode.js +13 -0
  660. package/node_modules/three/{examples/jsm → src}/nodes/accessors/MorphNode.js +122 -57
  661. package/node_modules/three/src/nodes/accessors/Normal.js +243 -0
  662. package/node_modules/three/src/nodes/accessors/Object3DNode.js +268 -0
  663. package/node_modules/three/src/nodes/accessors/PointUVNode.js +55 -0
  664. package/node_modules/three/src/nodes/accessors/Position.js +90 -0
  665. package/node_modules/three/src/nodes/accessors/ReferenceBaseNode.js +357 -0
  666. package/node_modules/three/src/nodes/accessors/ReferenceNode.js +424 -0
  667. package/node_modules/three/src/nodes/accessors/ReflectVector.js +36 -0
  668. package/node_modules/three/src/nodes/accessors/RendererReferenceNode.js +79 -0
  669. package/node_modules/three/src/nodes/accessors/SceneNode.js +145 -0
  670. package/node_modules/three/src/nodes/accessors/SkinningNode.js +327 -0
  671. package/node_modules/three/src/nodes/accessors/StorageBufferNode.js +416 -0
  672. package/node_modules/three/src/nodes/accessors/StorageTextureNode.js +264 -0
  673. package/node_modules/three/src/nodes/accessors/Tangent.js +70 -0
  674. package/node_modules/three/src/nodes/accessors/TangentUtils.js +46 -0
  675. package/node_modules/three/src/nodes/accessors/Texture3DNode.js +199 -0
  676. package/node_modules/three/{examples/jsm/nodes/accessors/TextureBicubicNode.js → src/nodes/accessors/TextureBicubic.js} +28 -30
  677. package/node_modules/three/src/nodes/accessors/TextureNode.js +927 -0
  678. package/node_modules/three/src/nodes/accessors/TextureSizeNode.js +77 -0
  679. package/node_modules/three/src/nodes/accessors/UV.js +11 -0
  680. package/node_modules/three/src/nodes/accessors/UniformArrayNode.js +348 -0
  681. package/node_modules/three/src/nodes/accessors/UserDataNode.js +77 -0
  682. package/node_modules/three/src/nodes/accessors/VelocityNode.js +224 -0
  683. package/node_modules/three/src/nodes/accessors/VertexColorNode.js +110 -0
  684. package/node_modules/three/src/nodes/code/CodeNode.js +181 -0
  685. package/node_modules/three/src/nodes/code/ExpressionNode.js +68 -0
  686. package/node_modules/three/src/nodes/code/FunctionCallNode.js +187 -0
  687. package/node_modules/three/src/nodes/code/FunctionNode.js +183 -0
  688. package/node_modules/three/{examples/jsm → src}/nodes/code/ScriptableNode.js +253 -15
  689. package/node_modules/three/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +95 -9
  690. package/node_modules/three/src/nodes/core/ArrayNode.js +155 -0
  691. package/node_modules/three/src/nodes/core/AssignNode.js +202 -0
  692. package/node_modules/three/src/nodes/core/AttributeNode.js +168 -0
  693. package/node_modules/three/src/nodes/core/BypassNode.js +93 -0
  694. package/node_modules/three/src/nodes/core/ConstNode.js +67 -0
  695. package/node_modules/three/src/nodes/core/ContextNode.js +184 -0
  696. package/node_modules/three/src/nodes/core/IndexNode.js +164 -0
  697. package/node_modules/three/src/nodes/core/InputNode.js +136 -0
  698. package/node_modules/three/src/nodes/core/InspectorNode.js +128 -0
  699. package/node_modules/three/src/nodes/core/IsolateNode.js +133 -0
  700. package/node_modules/three/src/nodes/core/LightingModel.js +77 -0
  701. package/node_modules/three/src/nodes/core/MRTNode.js +150 -0
  702. package/node_modules/three/src/nodes/core/Node.js +1083 -0
  703. package/node_modules/three/src/nodes/core/NodeAttribute.js +53 -0
  704. package/node_modules/three/src/nodes/core/NodeBuilder.js +3081 -0
  705. package/node_modules/three/src/nodes/core/NodeCache.js +75 -0
  706. package/node_modules/three/src/nodes/core/NodeCode.js +46 -0
  707. package/node_modules/three/src/nodes/core/NodeFrame.js +306 -0
  708. package/node_modules/three/src/nodes/core/NodeFunction.js +69 -0
  709. package/node_modules/three/src/nodes/core/NodeFunctionInput.js +61 -0
  710. package/node_modules/three/src/nodes/core/NodeParser.js +23 -0
  711. package/node_modules/three/src/nodes/core/NodeUniform.js +91 -0
  712. package/node_modules/three/src/nodes/core/NodeUtils.js +406 -0
  713. package/node_modules/three/src/nodes/core/NodeVar.js +60 -0
  714. package/node_modules/three/src/nodes/core/NodeVarying.js +63 -0
  715. package/node_modules/three/src/nodes/core/OutputStructNode.js +103 -0
  716. package/node_modules/three/src/nodes/core/ParameterNode.js +94 -0
  717. package/node_modules/three/src/nodes/core/PropertyNode.js +351 -0
  718. package/node_modules/three/src/nodes/core/StackNode.js +377 -0
  719. package/node_modules/three/src/nodes/core/StructNode.js +120 -0
  720. package/node_modules/three/src/nodes/core/StructType.js +13 -0
  721. package/node_modules/three/src/nodes/core/StructTypeNode.js +154 -0
  722. package/node_modules/three/src/nodes/core/SubBuildNode.js +89 -0
  723. package/node_modules/three/src/nodes/core/TempNode.js +88 -0
  724. package/node_modules/three/src/nodes/core/UniformGroupNode.js +137 -0
  725. package/node_modules/three/src/nodes/core/UniformNode.js +243 -0
  726. package/node_modules/three/src/nodes/core/VarNode.js +342 -0
  727. package/node_modules/three/src/nodes/core/VaryingNode.js +227 -0
  728. package/node_modules/three/src/nodes/core/constants.js +68 -0
  729. package/node_modules/three/src/nodes/display/BlendModes.js +235 -0
  730. package/node_modules/three/src/nodes/display/BumpMapNode.js +117 -0
  731. package/node_modules/three/src/nodes/display/ColorAdjustment.js +141 -0
  732. package/node_modules/three/src/nodes/display/ColorSpaceFunctions.js +54 -0
  733. package/node_modules/three/src/nodes/display/ColorSpaceNode.js +164 -0
  734. package/node_modules/three/src/nodes/display/FrontFacingNode.js +102 -0
  735. package/node_modules/three/src/nodes/display/NormalMapNode.js +118 -0
  736. package/node_modules/three/src/nodes/display/PassNode.js +946 -0
  737. package/node_modules/three/src/nodes/display/PosterizeNode.js +65 -0
  738. package/node_modules/three/src/nodes/display/RenderOutputNode.js +150 -0
  739. package/node_modules/three/src/nodes/display/ScreenNode.js +290 -0
  740. package/node_modules/three/src/nodes/display/ToneMappingFunctions.js +242 -0
  741. package/node_modules/three/src/nodes/display/ToneMappingNode.js +147 -0
  742. package/node_modules/three/src/nodes/display/ToonOutlinePassNode.js +191 -0
  743. package/node_modules/three/src/nodes/display/ViewportDepthNode.js +294 -0
  744. package/node_modules/three/src/nodes/display/ViewportDepthTextureNode.js +67 -0
  745. package/node_modules/three/src/nodes/display/ViewportSharedTextureNode.js +73 -0
  746. package/node_modules/three/src/nodes/display/ViewportTextureNode.js +228 -0
  747. package/node_modules/three/src/nodes/fog/Fog.js +114 -0
  748. package/node_modules/three/src/nodes/functions/BSDF/BRDF_GGX.js +55 -0
  749. package/node_modules/three/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  750. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  751. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +9 -9
  752. package/node_modules/three/src/nodes/functions/BSDF/DFGApprox.js +71 -0
  753. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +2 -2
  754. package/node_modules/three/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +28 -0
  755. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  756. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +2 -2
  757. package/node_modules/three/src/nodes/functions/BSDF/LTC.js +175 -0
  758. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  759. package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -4
  760. package/node_modules/three/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +29 -0
  761. package/node_modules/three/src/nodes/functions/BasicLightingModel.js +100 -0
  762. package/node_modules/three/src/nodes/functions/PhongLightingModel.js +99 -0
  763. package/node_modules/three/src/nodes/functions/PhysicalLightingModel.js +797 -0
  764. package/node_modules/three/src/nodes/functions/ShadowMaskModel.js +58 -0
  765. package/node_modules/three/src/nodes/functions/ToonLightingModel.js +70 -0
  766. package/node_modules/three/src/nodes/functions/VolumetricLightingModel.js +183 -0
  767. package/node_modules/three/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
  768. package/node_modules/three/src/nodes/functions/material/getGeometryRoughness.js +19 -0
  769. package/node_modules/three/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
  770. package/node_modules/three/{examples/jsm → src}/nodes/functions/material/getRoughness.js +2 -2
  771. package/node_modules/three/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  772. package/node_modules/three/src/nodes/geometry/RangeNode.js +208 -0
  773. package/node_modules/three/src/nodes/gpgpu/AtomicFunctionNode.js +274 -0
  774. package/node_modules/three/src/nodes/gpgpu/BarrierNode.js +89 -0
  775. package/node_modules/three/src/nodes/gpgpu/ComputeBuiltinNode.js +228 -0
  776. package/node_modules/three/src/nodes/gpgpu/ComputeNode.js +284 -0
  777. package/node_modules/three/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  778. package/node_modules/three/src/nodes/gpgpu/WorkgroupInfoNode.js +234 -0
  779. package/node_modules/three/src/nodes/lighting/AONode.js +45 -0
  780. package/node_modules/three/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +16 -8
  781. package/node_modules/three/src/nodes/lighting/AnalyticLightNode.js +256 -0
  782. package/node_modules/three/src/nodes/lighting/BasicEnvironmentNode.js +49 -0
  783. package/node_modules/three/src/nodes/lighting/BasicLightMapNode.js +49 -0
  784. package/node_modules/three/src/nodes/lighting/DirectionalLightNode.js +39 -0
  785. package/node_modules/three/src/nodes/lighting/EnvironmentNode.js +153 -0
  786. package/node_modules/three/src/nodes/lighting/HemisphereLightNode.js +87 -0
  787. package/node_modules/three/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +20 -10
  788. package/node_modules/three/src/nodes/lighting/IrradianceNode.js +44 -0
  789. package/node_modules/three/src/nodes/lighting/LightProbeNode.js +73 -0
  790. package/node_modules/three/src/nodes/lighting/LightUtils.js +25 -0
  791. package/node_modules/three/src/nodes/lighting/LightingContextNode.js +115 -0
  792. package/node_modules/three/src/nodes/lighting/LightingNode.js +36 -0
  793. package/node_modules/three/src/nodes/lighting/LightsNode.js +453 -0
  794. package/node_modules/three/src/nodes/lighting/PointLightNode.js +102 -0
  795. package/node_modules/three/src/nodes/lighting/PointShadowNode.js +312 -0
  796. package/node_modules/three/src/nodes/lighting/ProjectorLightNode.js +91 -0
  797. package/node_modules/three/src/nodes/lighting/RectAreaLightNode.js +133 -0
  798. package/node_modules/three/src/nodes/lighting/ShadowBaseNode.js +81 -0
  799. package/node_modules/three/src/nodes/lighting/ShadowFilterNode.js +276 -0
  800. package/node_modules/three/src/nodes/lighting/ShadowNode.js +811 -0
  801. package/node_modules/three/src/nodes/lighting/SpotLightNode.js +168 -0
  802. package/node_modules/three/src/nodes/materialx/MaterialXNodes.js +197 -0
  803. package/node_modules/three/{examples/jsm → src}/nodes/materialx/lib/mx_hsv.js +43 -46
  804. package/node_modules/three/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +625 -564
  805. package/node_modules/three/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +3 -9
  806. package/node_modules/three/src/nodes/math/BitcastNode.js +156 -0
  807. package/node_modules/three/src/nodes/math/ConditionalNode.js +245 -0
  808. package/node_modules/three/src/nodes/math/Hash.js +21 -0
  809. package/node_modules/three/src/nodes/math/MathNode.js +1167 -0
  810. package/node_modules/three/src/nodes/math/MathUtils.js +54 -0
  811. package/node_modules/three/src/nodes/math/OperatorNode.js +751 -0
  812. package/node_modules/three/{examples/jsm → src}/nodes/math/TriNoise3D.js +34 -34
  813. package/node_modules/three/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +23 -7
  814. package/node_modules/three/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +11 -0
  815. package/node_modules/three/src/nodes/pmrem/PMREMNode.js +397 -0
  816. package/node_modules/three/src/nodes/pmrem/PMREMUtils.js +403 -0
  817. package/node_modules/three/src/nodes/procedural/Checker.js +22 -0
  818. package/node_modules/three/src/nodes/shapes/Shapes.js +33 -0
  819. package/node_modules/three/src/nodes/tsl/TSLBase.js +36 -0
  820. package/node_modules/three/src/nodes/tsl/TSLCore.js +1229 -0
  821. package/node_modules/three/src/nodes/utils/ArrayElementNode.js +77 -0
  822. package/node_modules/three/src/nodes/utils/ConvertNode.js +100 -0
  823. package/node_modules/three/src/nodes/utils/CubeMapNode.js +237 -0
  824. package/node_modules/three/src/nodes/utils/DebugNode.js +83 -0
  825. package/node_modules/three/src/nodes/utils/Discard.js +24 -0
  826. package/node_modules/three/src/nodes/utils/EquirectUV.js +27 -0
  827. package/node_modules/three/src/nodes/utils/EventNode.js +119 -0
  828. package/node_modules/three/src/nodes/utils/FlipNode.js +106 -0
  829. package/node_modules/three/src/nodes/utils/FunctionOverloadingNode.js +170 -0
  830. package/node_modules/three/src/nodes/utils/JoinNode.js +117 -0
  831. package/node_modules/three/src/nodes/utils/LoopNode.js +349 -0
  832. package/node_modules/three/src/nodes/utils/MatcapUV.js +22 -0
  833. package/node_modules/three/src/nodes/utils/MaxMipLevelNode.js +103 -0
  834. package/node_modules/three/src/nodes/utils/MemberNode.js +120 -0
  835. package/node_modules/three/src/nodes/utils/Oscillators.js +41 -0
  836. package/node_modules/three/src/nodes/utils/Packing.js +21 -0
  837. package/node_modules/three/src/nodes/utils/PostProcessingUtils.js +122 -0
  838. package/node_modules/three/src/nodes/utils/RTTNode.js +289 -0
  839. package/node_modules/three/src/nodes/utils/ReflectorNode.js +630 -0
  840. package/node_modules/three/src/nodes/utils/RemapNode.js +125 -0
  841. package/node_modules/three/{examples/jsm → src}/nodes/utils/RotateNode.js +48 -13
  842. package/node_modules/three/src/nodes/utils/SampleNode.js +91 -0
  843. package/node_modules/three/{examples/jsm → src}/nodes/utils/SetNode.js +50 -4
  844. package/node_modules/three/{examples/jsm → src}/nodes/utils/SplitNode.js +73 -6
  845. package/node_modules/three/src/nodes/utils/SpriteSheetUVNode.js +90 -0
  846. package/node_modules/three/src/nodes/utils/SpriteUtils.js +63 -0
  847. package/node_modules/three/src/nodes/utils/StorageArrayElementNode.js +143 -0
  848. package/node_modules/three/src/nodes/utils/Timer.js +26 -0
  849. package/node_modules/three/src/nodes/utils/TriplanarTextures.js +65 -0
  850. package/node_modules/three/src/nodes/utils/UVUtils.js +39 -0
  851. package/node_modules/three/src/nodes/utils/ViewportUtils.js +26 -0
  852. package/node_modules/three/src/objects/BatchedMesh.js +940 -305
  853. package/node_modules/three/src/objects/Bone.js +24 -0
  854. package/node_modules/three/src/objects/ClippingGroup.js +68 -0
  855. package/node_modules/three/src/objects/Group.js +24 -0
  856. package/node_modules/three/src/objects/InstancedMesh.js +182 -1
  857. package/node_modules/three/src/objects/LOD.js +120 -5
  858. package/node_modules/three/src/objects/Line.js +151 -44
  859. package/node_modules/three/src/objects/LineLoop.js +20 -0
  860. package/node_modules/three/src/objects/LineSegments.js +20 -1
  861. package/node_modules/three/src/objects/Mesh.js +91 -24
  862. package/node_modules/three/src/objects/Points.js +62 -0
  863. package/node_modules/three/src/objects/Skeleton.js +111 -5
  864. package/node_modules/three/src/objects/SkinnedMesh.js +102 -6
  865. package/node_modules/three/src/objects/Sprite.js +65 -1
  866. package/node_modules/three/src/renderers/WebGL3DRenderTarget.js +26 -0
  867. package/node_modules/three/src/renderers/WebGLArrayRenderTarget.js +26 -0
  868. package/node_modules/three/src/renderers/WebGLCubeRenderTarget.js +42 -15
  869. package/node_modules/three/src/renderers/WebGLRenderTarget.js +19 -0
  870. package/node_modules/three/src/renderers/WebGLRenderer.js +1222 -318
  871. package/node_modules/three/src/renderers/common/Animation.js +159 -0
  872. package/node_modules/three/{examples/jsm → src}/renderers/common/Attributes.js +45 -2
  873. package/node_modules/three/src/renderers/common/Backend.js +748 -0
  874. package/node_modules/three/src/renderers/common/Background.js +212 -0
  875. package/node_modules/three/src/renderers/common/BindGroup.js +61 -0
  876. package/node_modules/three/src/renderers/common/Binding.js +60 -0
  877. package/node_modules/three/src/renderers/common/Bindings.js +379 -0
  878. package/node_modules/three/src/renderers/common/Buffer.js +87 -0
  879. package/node_modules/three/src/renderers/common/BufferUtils.js +58 -0
  880. package/node_modules/three/src/renderers/common/BundleGroup.js +83 -0
  881. package/node_modules/three/src/renderers/common/CanvasTarget.js +341 -0
  882. package/node_modules/three/src/renderers/common/ChainMap.js +98 -0
  883. package/node_modules/three/src/renderers/common/ClippingContext.js +262 -0
  884. package/node_modules/three/src/renderers/common/Color4.js +77 -0
  885. package/node_modules/three/src/renderers/common/ComputePipeline.js +41 -0
  886. package/node_modules/three/{examples/jsm → src}/renderers/common/Constants.js +2 -1
  887. package/node_modules/three/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +43 -5
  888. package/node_modules/three/src/renderers/common/DataMap.js +90 -0
  889. package/node_modules/three/src/renderers/common/Geometries.js +370 -0
  890. package/node_modules/three/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
  891. package/node_modules/three/src/renderers/common/Info.js +172 -0
  892. package/node_modules/three/src/renderers/common/InspectorBase.js +146 -0
  893. package/node_modules/three/src/renderers/common/Lighting.js +73 -0
  894. package/node_modules/three/src/renderers/common/Pipeline.js +35 -0
  895. package/node_modules/three/{examples/jsm → src}/renderers/common/Pipelines.js +150 -7
  896. package/node_modules/three/src/renderers/common/PostProcessing.js +226 -0
  897. package/node_modules/three/src/renderers/common/ProgrammableStage.js +78 -0
  898. package/node_modules/three/src/renderers/common/QuadMesh.js +112 -0
  899. package/node_modules/three/src/renderers/common/RenderBundle.js +24 -0
  900. package/node_modules/three/src/renderers/common/RenderBundles.js +67 -0
  901. package/node_modules/three/src/renderers/common/RenderContext.js +265 -0
  902. package/node_modules/three/src/renderers/common/RenderContexts.js +116 -0
  903. package/node_modules/three/src/renderers/common/RenderList.js +404 -0
  904. package/node_modules/three/src/renderers/common/RenderLists.js +77 -0
  905. package/node_modules/three/src/renderers/common/RenderObject.js +903 -0
  906. package/node_modules/three/src/renderers/common/RenderObjects.js +202 -0
  907. package/node_modules/three/src/renderers/common/RenderPipeline.js +40 -0
  908. package/node_modules/three/src/renderers/common/Renderer.js +3290 -0
  909. package/node_modules/three/src/renderers/common/RendererUtils.js +200 -0
  910. package/node_modules/three/src/renderers/common/SampledTexture.js +152 -0
  911. package/node_modules/three/src/renderers/common/Sampler.js +165 -0
  912. package/node_modules/three/src/renderers/common/Storage3DTexture.js +100 -0
  913. package/node_modules/three/src/renderers/common/StorageArrayTexture.js +84 -0
  914. package/node_modules/three/src/renderers/common/StorageBuffer.js +41 -0
  915. package/node_modules/three/src/renderers/common/StorageBufferAttribute.js +46 -0
  916. package/node_modules/three/src/renderers/common/StorageInstancedBufferAttribute.js +46 -0
  917. package/node_modules/three/src/renderers/common/StorageTexture.js +86 -0
  918. package/node_modules/three/src/renderers/common/Textures.js +544 -0
  919. package/node_modules/three/src/renderers/common/TimestampQueryPool.js +161 -0
  920. package/node_modules/three/src/renderers/common/Uniform.js +367 -0
  921. package/node_modules/three/src/renderers/common/UniformBuffer.js +34 -0
  922. package/node_modules/three/src/renderers/common/UniformsGroup.js +487 -0
  923. package/node_modules/three/src/renderers/common/XRManager.js +1676 -0
  924. package/node_modules/three/src/renderers/common/XRRenderTarget.js +91 -0
  925. package/node_modules/three/src/renderers/common/extras/PMREMGenerator.js +1034 -0
  926. package/node_modules/three/src/renderers/common/nodes/NodeBuilderState.js +152 -0
  927. package/node_modules/three/src/renderers/common/nodes/NodeLibrary.js +196 -0
  928. package/node_modules/three/src/renderers/common/nodes/NodeSampledTexture.js +140 -0
  929. package/node_modules/three/src/renderers/common/nodes/NodeSampler.js +62 -0
  930. package/node_modules/three/src/renderers/common/nodes/NodeStorageBuffer.js +61 -0
  931. package/node_modules/three/src/renderers/common/nodes/NodeUniform.js +418 -0
  932. package/node_modules/three/src/renderers/common/nodes/NodeUniformBuffer.js +53 -0
  933. package/node_modules/three/src/renderers/common/nodes/NodeUniformsGroup.js +51 -0
  934. package/node_modules/three/src/renderers/common/nodes/Nodes.js +840 -0
  935. package/node_modules/three/src/renderers/shaders/DFGLUTData.js +64 -0
  936. package/node_modules/three/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +31 -1
  937. package/node_modules/three/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
  938. package/node_modules/three/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -1
  939. package/node_modules/three/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +9 -1
  940. package/node_modules/three/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -33
  941. package/node_modules/three/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -22
  942. package/node_modules/three/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
  943. package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +2 -1
  944. package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
  945. package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +3 -3
  946. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  947. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +8 -22
  948. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +6 -0
  949. package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +55 -20
  950. package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
  951. package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  952. package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +3 -11
  953. package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +3 -17
  954. package/node_modules/three/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +3 -3
  955. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +1 -1
  956. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +14 -0
  957. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +3 -14
  958. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +12 -24
  959. package/node_modules/three/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +3 -23
  960. package/node_modules/three/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
  961. package/node_modules/three/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
  962. package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +59 -36
  963. package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
  964. package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
  965. package/node_modules/three/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +33 -2
  966. package/node_modules/three/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  967. package/node_modules/three/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +47 -13
  968. package/node_modules/three/src/renderers/shaders/ShaderChunk.js +2 -2
  969. package/node_modules/three/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
  970. package/node_modules/three/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +3 -2
  971. package/node_modules/three/src/renderers/shaders/ShaderLib/depth.glsl.js +21 -2
  972. package/node_modules/three/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
  973. package/node_modules/three/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
  974. package/node_modules/three/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -0
  975. package/node_modules/three/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
  976. package/node_modules/three/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -0
  977. package/node_modules/three/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -0
  978. package/node_modules/three/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
  979. package/node_modules/three/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +5 -0
  980. package/node_modules/three/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
  981. package/node_modules/three/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
  982. package/node_modules/three/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -0
  983. package/node_modules/three/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
  984. package/node_modules/three/src/renderers/shaders/ShaderLib.js +4 -2
  985. package/node_modules/three/src/renderers/shaders/UniformsLib.js +6 -4
  986. package/node_modules/three/src/renderers/shaders/UniformsUtils.js +31 -3
  987. package/node_modules/three/src/renderers/webgl/WebGLAttributes.js +46 -38
  988. package/node_modules/three/src/renderers/webgl/WebGLBackground.js +69 -5
  989. package/node_modules/three/src/renderers/webgl/WebGLBindingStates.js +14 -51
  990. package/node_modules/three/src/renderers/webgl/WebGLBufferRenderer.js +19 -22
  991. package/node_modules/three/src/renderers/webgl/WebGLCapabilities.js +39 -14
  992. package/node_modules/three/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
  993. package/node_modules/three/src/renderers/webgl/WebGLExtensions.js +8 -44
  994. package/node_modules/three/src/renderers/webgl/WebGLGeometries.js +0 -28
  995. package/node_modules/three/src/renderers/webgl/WebGLIndexedBufferRenderer.js +19 -21
  996. package/node_modules/three/src/renderers/webgl/WebGLInfo.js +3 -1
  997. package/node_modules/three/src/renderers/webgl/WebGLLights.js +21 -44
  998. package/node_modules/three/src/renderers/webgl/WebGLMaterials.js +33 -9
  999. package/node_modules/three/src/renderers/webgl/WebGLMorphtargets.js +78 -210
  1000. package/node_modules/three/src/renderers/webgl/WebGLProgram.js +103 -121
  1001. package/node_modules/three/src/renderers/webgl/WebGLPrograms.js +32 -26
  1002. package/node_modules/three/src/renderers/webgl/WebGLProperties.js +7 -0
  1003. package/node_modules/three/src/renderers/webgl/WebGLRenderStates.js +15 -9
  1004. package/node_modules/three/src/renderers/webgl/WebGLShadowMap.js +41 -29
  1005. package/node_modules/three/src/renderers/webgl/WebGLState.js +104 -100
  1006. package/node_modules/three/src/renderers/webgl/WebGLTextures.js +567 -408
  1007. package/node_modules/three/src/renderers/webgl/WebGLUniforms.js +12 -2
  1008. package/node_modules/three/src/renderers/webgl/WebGLUniformsGroups.js +13 -11
  1009. package/node_modules/three/src/renderers/webgl/WebGLUtils.js +11 -81
  1010. package/node_modules/three/src/renderers/webgl-fallback/WebGLBackend.js +2612 -0
  1011. package/node_modules/three/src/renderers/webgl-fallback/WebGLBufferRenderer.js +140 -0
  1012. package/node_modules/three/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +1577 -0
  1013. package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +76 -3
  1014. package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +64 -0
  1015. package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +5 -3
  1016. package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLExtensions.js +83 -0
  1017. package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +427 -21
  1018. package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1309 -0
  1019. package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +396 -0
  1020. package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +72 -43
  1021. package/node_modules/three/src/renderers/webgpu/WebGPUBackend.js +2482 -0
  1022. package/node_modules/three/src/renderers/webgpu/WebGPURenderer.Nodes.js +69 -0
  1023. package/node_modules/three/src/renderers/webgpu/WebGPURenderer.js +106 -0
  1024. package/node_modules/three/src/renderers/webgpu/nodes/BasicNodeLibrary.js +66 -0
  1025. package/node_modules/three/src/renderers/webgpu/nodes/StandardNodeLibrary.js +100 -0
  1026. package/node_modules/three/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +2247 -0
  1027. package/node_modules/three/src/renderers/webgpu/nodes/WGSLNodeFunction.js +187 -0
  1028. package/node_modules/three/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  1029. package/node_modules/three/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +449 -0
  1030. package/node_modules/three/src/renderers/webgpu/utils/WebGPUBindingUtils.js +485 -0
  1031. package/node_modules/three/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +24 -4
  1032. package/node_modules/three/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +289 -72
  1033. package/node_modules/three/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +160 -8
  1034. package/node_modules/three/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1576 -0
  1035. package/node_modules/three/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +310 -0
  1036. package/node_modules/three/src/renderers/webgpu/utils/WebGPUUtils.js +247 -0
  1037. package/node_modules/three/src/renderers/webxr/WebXRController.js +87 -2
  1038. package/node_modules/three/src/renderers/webxr/WebXRDepthSensing.js +63 -13
  1039. package/node_modules/three/src/renderers/webxr/WebXRManager.js +323 -44
  1040. package/node_modules/three/src/scenes/Fog.js +60 -0
  1041. package/node_modules/three/src/scenes/FogExp2.js +51 -0
  1042. package/node_modules/three/src/scenes/Scene.js +103 -1
  1043. package/node_modules/three/src/textures/CanvasTexture.js +28 -0
  1044. package/node_modules/three/src/textures/CompressedArrayTexture.js +71 -0
  1045. package/node_modules/three/src/textures/CompressedCubeTexture.js +29 -0
  1046. package/node_modules/three/src/textures/CompressedTexture.js +64 -6
  1047. package/node_modules/three/src/textures/CubeTexture.js +52 -4
  1048. package/node_modules/three/src/textures/Data3DTexture.js +79 -2
  1049. package/node_modules/three/src/textures/DataArrayTexture.js +107 -0
  1050. package/node_modules/three/src/textures/DataTexture.js +65 -0
  1051. package/node_modules/three/src/textures/DepthTexture.js +59 -13
  1052. package/node_modules/three/src/textures/ExternalTexture.js +56 -0
  1053. package/node_modules/three/src/textures/FramebufferTexture.js +62 -0
  1054. package/node_modules/three/src/textures/Source.js +106 -4
  1055. package/node_modules/three/src/textures/Texture.js +490 -27
  1056. package/node_modules/three/src/textures/VideoFrameTexture.js +72 -0
  1057. package/node_modules/three/src/textures/VideoTexture.js +78 -6
  1058. package/node_modules/three/src/utils.js +128 -3
  1059. package/package.json +3 -2
  1060. package/node_modules/three/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
  1061. package/node_modules/three/examples/jsm/animation/MMDPhysics.js +0 -1406
  1062. package/node_modules/three/examples/jsm/cameras/CinematicCamera.js +0 -208
  1063. package/node_modules/three/examples/jsm/effects/PeppersGhostEffect.js +0 -153
  1064. package/node_modules/three/examples/jsm/exporters/MMDExporter.js +0 -217
  1065. package/node_modules/three/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
  1066. package/node_modules/three/examples/jsm/geometries/ParametricGeometries.js +0 -254
  1067. package/node_modules/three/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
  1068. package/node_modules/three/examples/jsm/libs/mmdparser.module.js +0 -11530
  1069. package/node_modules/three/examples/jsm/lights/IESSpotLight.js +0 -25
  1070. package/node_modules/three/examples/jsm/loaders/LogLuvLoader.js +0 -606
  1071. package/node_modules/three/examples/jsm/loaders/MMDLoader.js +0 -2276
  1072. package/node_modules/three/examples/jsm/loaders/RGBMLoader.js +0 -1065
  1073. package/node_modules/three/examples/jsm/loaders/TiltLoader.js +0 -520
  1074. package/node_modules/three/examples/jsm/misc/Timer.js +0 -128
  1075. package/node_modules/three/examples/jsm/nodes/Nodes.js +0 -193
  1076. package/node_modules/three/examples/jsm/nodes/accessors/BitangentNode.js +0 -89
  1077. package/node_modules/three/examples/jsm/nodes/accessors/BufferAttributeNode.js +0 -127
  1078. package/node_modules/three/examples/jsm/nodes/accessors/BufferNode.js +0 -30
  1079. package/node_modules/three/examples/jsm/nodes/accessors/CameraNode.js +0 -119
  1080. package/node_modules/three/examples/jsm/nodes/accessors/CubeTextureNode.js +0 -61
  1081. package/node_modules/three/examples/jsm/nodes/accessors/InstanceNode.js +0 -71
  1082. package/node_modules/three/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  1083. package/node_modules/three/examples/jsm/nodes/accessors/MaterialNode.js +0 -314
  1084. package/node_modules/three/examples/jsm/nodes/accessors/MaterialReferenceNode.js +0 -51
  1085. package/node_modules/three/examples/jsm/nodes/accessors/ModelNode.js +0 -33
  1086. package/node_modules/three/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +0 -39
  1087. package/node_modules/three/examples/jsm/nodes/accessors/NormalNode.js +0 -96
  1088. package/node_modules/three/examples/jsm/nodes/accessors/Object3DNode.js +0 -150
  1089. package/node_modules/three/examples/jsm/nodes/accessors/PointUVNode.js +0 -26
  1090. package/node_modules/three/examples/jsm/nodes/accessors/PositionNode.js +0 -104
  1091. package/node_modules/three/examples/jsm/nodes/accessors/ReferenceNode.js +0 -102
  1092. package/node_modules/three/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -35
  1093. package/node_modules/three/examples/jsm/nodes/accessors/SceneNode.js +0 -52
  1094. package/node_modules/three/examples/jsm/nodes/accessors/SkinningNode.js +0 -103
  1095. package/node_modules/three/examples/jsm/nodes/accessors/StorageBufferNode.js +0 -54
  1096. package/node_modules/three/examples/jsm/nodes/accessors/TangentNode.js +0 -103
  1097. package/node_modules/three/examples/jsm/nodes/accessors/TextureNode.js +0 -367
  1098. package/node_modules/three/examples/jsm/nodes/accessors/TextureSizeNode.js +0 -35
  1099. package/node_modules/three/examples/jsm/nodes/accessors/TextureStoreNode.js +0 -82
  1100. package/node_modules/three/examples/jsm/nodes/accessors/UVNode.js +0 -47
  1101. package/node_modules/three/examples/jsm/nodes/accessors/UserDataNode.js +0 -29
  1102. package/node_modules/three/examples/jsm/nodes/accessors/VertexColorNode.js +0 -70
  1103. package/node_modules/three/examples/jsm/nodes/code/CodeNode.js +0 -78
  1104. package/node_modules/three/examples/jsm/nodes/code/ExpressionNode.js +0 -37
  1105. package/node_modules/three/examples/jsm/nodes/code/FunctionCallNode.js +0 -96
  1106. package/node_modules/three/examples/jsm/nodes/code/FunctionNode.js +0 -138
  1107. package/node_modules/three/examples/jsm/nodes/core/ArrayUniformNode.js +0 -26
  1108. package/node_modules/three/examples/jsm/nodes/core/AssignNode.js +0 -72
  1109. package/node_modules/three/examples/jsm/nodes/core/AttributeNode.js +0 -108
  1110. package/node_modules/three/examples/jsm/nodes/core/BypassNode.js +0 -45
  1111. package/node_modules/three/examples/jsm/nodes/core/CacheNode.js +0 -49
  1112. package/node_modules/three/examples/jsm/nodes/core/ConstNode.js +0 -32
  1113. package/node_modules/three/examples/jsm/nodes/core/ContextNode.js +0 -61
  1114. package/node_modules/three/examples/jsm/nodes/core/IndexNode.js +0 -66
  1115. package/node_modules/three/examples/jsm/nodes/core/InputNode.js +0 -83
  1116. package/node_modules/three/examples/jsm/nodes/core/LightingModel.js +0 -17
  1117. package/node_modules/three/examples/jsm/nodes/core/Node.js +0 -483
  1118. package/node_modules/three/examples/jsm/nodes/core/NodeAttribute.js +0 -15
  1119. package/node_modules/three/examples/jsm/nodes/core/NodeBuilder.js +0 -1256
  1120. package/node_modules/three/examples/jsm/nodes/core/NodeCache.js +0 -26
  1121. package/node_modules/three/examples/jsm/nodes/core/NodeCode.js +0 -15
  1122. package/node_modules/three/examples/jsm/nodes/core/NodeFrame.js +0 -143
  1123. package/node_modules/three/examples/jsm/nodes/core/NodeFunction.js +0 -22
  1124. package/node_modules/three/examples/jsm/nodes/core/NodeFunctionInput.js +0 -17
  1125. package/node_modules/three/examples/jsm/nodes/core/NodeKeywords.js +0 -80
  1126. package/node_modules/three/examples/jsm/nodes/core/NodeParser.js +0 -11
  1127. package/node_modules/three/examples/jsm/nodes/core/NodeUniform.js +0 -40
  1128. package/node_modules/three/examples/jsm/nodes/core/NodeUtils.js +0 -210
  1129. package/node_modules/three/examples/jsm/nodes/core/NodeVar.js +0 -14
  1130. package/node_modules/three/examples/jsm/nodes/core/NodeVarying.js +0 -17
  1131. package/node_modules/three/examples/jsm/nodes/core/OutputStructNode.js +0 -62
  1132. package/node_modules/three/examples/jsm/nodes/core/ParameterNode.js +0 -33
  1133. package/node_modules/three/examples/jsm/nodes/core/PropertyNode.js +0 -72
  1134. package/node_modules/three/examples/jsm/nodes/core/StackNode.js +0 -89
  1135. package/node_modules/three/examples/jsm/nodes/core/StructTypeNode.js +0 -24
  1136. package/node_modules/three/examples/jsm/nodes/core/TempNode.js +0 -58
  1137. package/node_modules/three/examples/jsm/nodes/core/UniformGroup.js +0 -13
  1138. package/node_modules/three/examples/jsm/nodes/core/UniformGroupNode.js +0 -36
  1139. package/node_modules/three/examples/jsm/nodes/core/UniformNode.js +0 -80
  1140. package/node_modules/three/examples/jsm/nodes/core/VarNode.js +0 -60
  1141. package/node_modules/three/examples/jsm/nodes/core/VaryingNode.js +0 -65
  1142. package/node_modules/three/examples/jsm/nodes/core/constants.js +0 -28
  1143. package/node_modules/three/examples/jsm/nodes/display/AfterImageNode.js +0 -148
  1144. package/node_modules/three/examples/jsm/nodes/display/AnamorphicNode.js +0 -148
  1145. package/node_modules/three/examples/jsm/nodes/display/BlendModeNode.js +0 -99
  1146. package/node_modules/three/examples/jsm/nodes/display/BumpMapNode.js +0 -99
  1147. package/node_modules/three/examples/jsm/nodes/display/ColorAdjustmentNode.js +0 -99
  1148. package/node_modules/three/examples/jsm/nodes/display/ColorSpaceNode.js +0 -108
  1149. package/node_modules/three/examples/jsm/nodes/display/FrontFacingNode.js +0 -27
  1150. package/node_modules/three/examples/jsm/nodes/display/GaussianBlurNode.js +0 -190
  1151. package/node_modules/three/examples/jsm/nodes/display/NormalMapNode.js +0 -108
  1152. package/node_modules/three/examples/jsm/nodes/display/PassNode.js +0 -183
  1153. package/node_modules/three/examples/jsm/nodes/display/PosterizeNode.js +0 -32
  1154. package/node_modules/three/examples/jsm/nodes/display/ToneMappingNode.js +0 -184
  1155. package/node_modules/three/examples/jsm/nodes/display/ViewportDepthNode.js +0 -97
  1156. package/node_modules/three/examples/jsm/nodes/display/ViewportDepthTextureNode.js +0 -31
  1157. package/node_modules/three/examples/jsm/nodes/display/ViewportNode.js +0 -134
  1158. package/node_modules/three/examples/jsm/nodes/display/ViewportSharedTextureNode.js +0 -31
  1159. package/node_modules/three/examples/jsm/nodes/display/ViewportTextureNode.js +0 -75
  1160. package/node_modules/three/examples/jsm/nodes/fog/FogExp2Node.js +0 -35
  1161. package/node_modules/three/examples/jsm/nodes/fog/FogNode.js +0 -38
  1162. package/node_modules/three/examples/jsm/nodes/fog/FogRangeNode.js +0 -34
  1163. package/node_modules/three/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +0 -40
  1164. package/node_modules/three/examples/jsm/nodes/functions/BSDF/DFGApprox.js +0 -30
  1165. package/node_modules/three/examples/jsm/nodes/functions/PhongLightingModel.js +0 -67
  1166. package/node_modules/three/examples/jsm/nodes/functions/PhysicalLightingModel.js +0 -393
  1167. package/node_modules/three/examples/jsm/nodes/functions/material/getGeometryRoughness.js +0 -13
  1168. package/node_modules/three/examples/jsm/nodes/geometry/RangeNode.js +0 -104
  1169. package/node_modules/three/examples/jsm/nodes/gpgpu/ComputeNode.js +0 -85
  1170. package/node_modules/three/examples/jsm/nodes/lighting/AONode.js +0 -27
  1171. package/node_modules/three/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -241
  1172. package/node_modules/three/examples/jsm/nodes/lighting/DirectionalLightNode.js +0 -40
  1173. package/node_modules/three/examples/jsm/nodes/lighting/EnvironmentNode.js +0 -181
  1174. package/node_modules/three/examples/jsm/nodes/lighting/HemisphereLightNode.js +0 -55
  1175. package/node_modules/three/examples/jsm/nodes/lighting/LightNode.js +0 -57
  1176. package/node_modules/three/examples/jsm/nodes/lighting/LightUtils.js +0 -17
  1177. package/node_modules/three/examples/jsm/nodes/lighting/LightingContextNode.js +0 -66
  1178. package/node_modules/three/examples/jsm/nodes/lighting/LightingNode.js +0 -21
  1179. package/node_modules/three/examples/jsm/nodes/lighting/LightsNode.js +0 -188
  1180. package/node_modules/three/examples/jsm/nodes/lighting/PointLightNode.js +0 -68
  1181. package/node_modules/three/examples/jsm/nodes/lighting/SpotLightNode.js +0 -89
  1182. package/node_modules/three/examples/jsm/nodes/loaders/NodeLoader.js +0 -108
  1183. package/node_modules/three/examples/jsm/nodes/loaders/NodeMaterialLoader.js +0 -59
  1184. package/node_modules/three/examples/jsm/nodes/loaders/NodeObjectLoader.js +0 -70
  1185. package/node_modules/three/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
  1186. package/node_modules/three/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -28
  1187. package/node_modules/three/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +0 -54
  1188. package/node_modules/three/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
  1189. package/node_modules/three/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +0 -34
  1190. package/node_modules/three/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -40
  1191. package/node_modules/three/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -65
  1192. package/node_modules/three/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +0 -155
  1193. package/node_modules/three/examples/jsm/nodes/materials/MeshSSSNodeMaterial.js +0 -84
  1194. package/node_modules/three/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +0 -80
  1195. package/node_modules/three/examples/jsm/nodes/materials/NodeMaterial.js +0 -570
  1196. package/node_modules/three/examples/jsm/nodes/materials/PointsNodeMaterial.js +0 -39
  1197. package/node_modules/three/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -90
  1198. package/node_modules/three/examples/jsm/nodes/materialx/MaterialXNodes.js +0 -68
  1199. package/node_modules/three/examples/jsm/nodes/math/CondNode.js +0 -86
  1200. package/node_modules/three/examples/jsm/nodes/math/HashNode.js +0 -34
  1201. package/node_modules/three/examples/jsm/nodes/math/MathNode.js +0 -371
  1202. package/node_modules/three/examples/jsm/nodes/math/MathUtils.js +0 -15
  1203. package/node_modules/three/examples/jsm/nodes/math/OperatorNode.js +0 -274
  1204. package/node_modules/three/examples/jsm/nodes/procedural/CheckerNode.js +0 -42
  1205. package/node_modules/three/examples/jsm/nodes/shadernode/ShaderNode.js +0 -634
  1206. package/node_modules/three/examples/jsm/nodes/utils/ArrayElementNode.js +0 -41
  1207. package/node_modules/three/examples/jsm/nodes/utils/ConvertNode.js +0 -65
  1208. package/node_modules/three/examples/jsm/nodes/utils/DiscardNode.js +0 -27
  1209. package/node_modules/three/examples/jsm/nodes/utils/EquirectUVNode.js +0 -33
  1210. package/node_modules/three/examples/jsm/nodes/utils/FunctionOverloadingNode.js +0 -95
  1211. package/node_modules/three/examples/jsm/nodes/utils/JoinNode.js +0 -61
  1212. package/node_modules/three/examples/jsm/nodes/utils/LoopNode.js +0 -198
  1213. package/node_modules/three/examples/jsm/nodes/utils/MatcapUVNode.js +0 -30
  1214. package/node_modules/three/examples/jsm/nodes/utils/MaxMipLevelNode.js +0 -46
  1215. package/node_modules/three/examples/jsm/nodes/utils/OscNode.js +0 -81
  1216. package/node_modules/three/examples/jsm/nodes/utils/PackingNode.js +0 -55
  1217. package/node_modules/three/examples/jsm/nodes/utils/ReflectorNode.js +0 -227
  1218. package/node_modules/three/examples/jsm/nodes/utils/RemapNode.js +0 -42
  1219. package/node_modules/three/examples/jsm/nodes/utils/RotateUVNode.js +0 -35
  1220. package/node_modules/three/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
  1221. package/node_modules/three/examples/jsm/nodes/utils/SpriteSheetUVNode.js +0 -41
  1222. package/node_modules/three/examples/jsm/nodes/utils/TimerNode.js +0 -94
  1223. package/node_modules/three/examples/jsm/nodes/utils/TriplanarTexturesNode.js +0 -62
  1224. package/node_modules/three/examples/jsm/objects/InstancedPoints.js +0 -21
  1225. package/node_modules/three/examples/jsm/objects/QuadMesh.js +0 -66
  1226. package/node_modules/three/examples/jsm/renderers/common/Animation.js +0 -47
  1227. package/node_modules/three/examples/jsm/renderers/common/Backend.js +0 -195
  1228. package/node_modules/three/examples/jsm/renderers/common/Background.js +0 -134
  1229. package/node_modules/three/examples/jsm/renderers/common/Binding.js +0 -25
  1230. package/node_modules/three/examples/jsm/renderers/common/Bindings.js +0 -173
  1231. package/node_modules/three/examples/jsm/renderers/common/Buffer.js +0 -38
  1232. package/node_modules/three/examples/jsm/renderers/common/BufferUtils.js +0 -33
  1233. package/node_modules/three/examples/jsm/renderers/common/ChainMap.js +0 -89
  1234. package/node_modules/three/examples/jsm/renderers/common/Color4.js +0 -37
  1235. package/node_modules/three/examples/jsm/renderers/common/ComputePipeline.js +0 -17
  1236. package/node_modules/three/examples/jsm/renderers/common/DataMap.js +0 -54
  1237. package/node_modules/three/examples/jsm/renderers/common/Geometries.js +0 -215
  1238. package/node_modules/three/examples/jsm/renderers/common/Info.js +0 -107
  1239. package/node_modules/three/examples/jsm/renderers/common/Pipeline.js +0 -13
  1240. package/node_modules/three/examples/jsm/renderers/common/PostProcessing.js +0 -25
  1241. package/node_modules/three/examples/jsm/renderers/common/ProgrammableStage.js +0 -20
  1242. package/node_modules/three/examples/jsm/renderers/common/RenderContext.js +0 -41
  1243. package/node_modules/three/examples/jsm/renderers/common/RenderContexts.js +0 -74
  1244. package/node_modules/three/examples/jsm/renderers/common/RenderList.js +0 -186
  1245. package/node_modules/three/examples/jsm/renderers/common/RenderLists.js +0 -38
  1246. package/node_modules/three/examples/jsm/renderers/common/RenderObject.js +0 -178
  1247. package/node_modules/three/examples/jsm/renderers/common/RenderObjects.js +0 -91
  1248. package/node_modules/three/examples/jsm/renderers/common/RenderPipeline.js +0 -16
  1249. package/node_modules/three/examples/jsm/renderers/common/Renderer.js +0 -1247
  1250. package/node_modules/three/examples/jsm/renderers/common/SampledTexture.js +0 -83
  1251. package/node_modules/three/examples/jsm/renderers/common/Sampler.js +0 -18
  1252. package/node_modules/three/examples/jsm/renderers/common/StorageBuffer.js +0 -17
  1253. package/node_modules/three/examples/jsm/renderers/common/StorageBufferAttribute.js +0 -17
  1254. package/node_modules/three/examples/jsm/renderers/common/StorageTexture.js +0 -20
  1255. package/node_modules/three/examples/jsm/renderers/common/Textures.js +0 -354
  1256. package/node_modules/three/examples/jsm/renderers/common/Uniform.js +0 -140
  1257. package/node_modules/three/examples/jsm/renderers/common/UniformBuffer.js +0 -15
  1258. package/node_modules/three/examples/jsm/renderers/common/UniformsGroup.js +0 -299
  1259. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
  1260. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +0 -49
  1261. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeSampler.js +0 -15
  1262. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeUniform.js +0 -135
  1263. package/node_modules/three/examples/jsm/renderers/common/nodes/NodeUniformsGroup.js +0 -44
  1264. package/node_modules/three/examples/jsm/renderers/common/nodes/Nodes.js +0 -495
  1265. package/node_modules/three/examples/jsm/renderers/webgl/WebGLBackend.js +0 -1362
  1266. package/node_modules/three/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +0 -679
  1267. package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLCapabilities.js +0 -36
  1268. package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +0 -36
  1269. package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +0 -647
  1270. package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +0 -320
  1271. package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +0 -26
  1272. package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +0 -794
  1273. package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +0 -51
  1274. package/node_modules/three/examples/jsm/renderers/webgpu/WebGPUBackend.js +0 -1321
  1275. package/node_modules/three/examples/jsm/renderers/webgpu/WebGPURenderer.js +0 -53
  1276. package/node_modules/three/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +0 -1103
  1277. package/node_modules/three/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
  1278. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +0 -287
  1279. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +0 -244
  1280. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +0 -1040
  1281. package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +0 -93
  1282. package/node_modules/three/examples/jsm/shaders/MMDToonShader.js +0 -134
  1283. package/node_modules/three/examples/jsm/utils/GPUStatsPanel.js +0 -128
  1284. package/node_modules/three/examples/jsm/utils/PackedPhongMaterial.js +0 -178
  1285. package/node_modules/three/src/renderers/WebGL1Renderer.js +0 -7
  1286. package/node_modules/three/src/renderers/WebGLMultipleRenderTargets.js +0 -82
  1287. package/node_modules/three/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -10
  1288. /package/node_modules/three/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
@@ -3,16 +3,12 @@ import {
3
3
  BackSide,
4
4
  FrontSide,
5
5
  DoubleSide,
6
- RGBAFormat,
7
6
  HalfFloatType,
8
- FloatType,
9
7
  UnsignedByteType,
10
8
  NoToneMapping,
11
9
  LinearMipmapLinearFilter,
12
10
  SRGBColorSpace,
13
11
  LinearSRGBColorSpace,
14
- sRGBEncoding,
15
- LinearEncoding,
16
12
  RGBAIntegerFormat,
17
13
  RGIntegerFormat,
18
14
  RedIntegerFormat,
@@ -21,17 +17,13 @@ import {
21
17
  UnsignedInt248Type,
22
18
  UnsignedShort4444Type,
23
19
  UnsignedShort5551Type,
24
- WebGLCoordinateSystem,
25
- DisplayP3ColorSpace,
26
- LinearDisplayP3ColorSpace
20
+ WebGLCoordinateSystem
27
21
  } from '../constants.js';
28
22
  import { Color } from '../math/Color.js';
29
23
  import { Frustum } from '../math/Frustum.js';
30
24
  import { Matrix4 } from '../math/Matrix4.js';
31
- import { Vector2 } from '../math/Vector2.js';
32
25
  import { Vector3 } from '../math/Vector3.js';
33
26
  import { Vector4 } from '../math/Vector4.js';
34
- import { floorPowerOfTwo } from '../math/MathUtils.js';
35
27
  import { WebGLAnimation } from './webgl/WebGLAnimation.js';
36
28
  import { WebGLAttributes } from './webgl/WebGLAttributes.js';
37
29
  import { WebGLBackground } from './webgl/WebGLBackground.js';
@@ -60,32 +52,57 @@ import { WebGLUtils } from './webgl/WebGLUtils.js';
60
52
  import { WebXRManager } from './webxr/WebXRManager.js';
61
53
  import { WebGLMaterials } from './webgl/WebGLMaterials.js';
62
54
  import { WebGLUniformsGroups } from './webgl/WebGLUniformsGroups.js';
63
- import { createCanvasElement } from '../utils.js';
55
+ import { createCanvasElement, probeAsync, warnOnce, error, warn, log } from '../utils.js';
64
56
  import { ColorManagement } from '../math/ColorManagement.js';
57
+ import { getDFGLUT } from './shaders/DFGLUTData.js';
65
58
 
59
+ /**
60
+ * This renderer uses WebGL 2 to display scenes.
61
+ *
62
+ * WebGL 1 is not supported since `r163`.
63
+ */
66
64
  class WebGLRenderer {
67
65
 
66
+ /**
67
+ * Constructs a new WebGL renderer.
68
+ *
69
+ * @param {WebGLRenderer~Options} [parameters] - The configuration parameter.
70
+ */
68
71
  constructor( parameters = {} ) {
69
72
 
70
73
  const {
71
74
  canvas = createCanvasElement(),
72
75
  context = null,
73
76
  depth = true,
74
- stencil = true,
77
+ stencil = false,
75
78
  alpha = false,
76
79
  antialias = false,
77
80
  premultipliedAlpha = true,
78
81
  preserveDrawingBuffer = false,
79
82
  powerPreference = 'default',
80
83
  failIfMajorPerformanceCaveat = false,
84
+ reversedDepthBuffer = false,
81
85
  } = parameters;
82
86
 
87
+ /**
88
+ * This flag can be used for type testing.
89
+ *
90
+ * @type {boolean}
91
+ * @readonly
92
+ * @default true
93
+ */
83
94
  this.isWebGLRenderer = true;
84
95
 
85
96
  let _alpha;
86
97
 
87
98
  if ( context !== null ) {
88
99
 
100
+ if ( typeof WebGLRenderingContext !== 'undefined' && context instanceof WebGLRenderingContext ) {
101
+
102
+ throw new Error( 'THREE.WebGLRenderer: WebGL 1 is not supported since r163.' );
103
+
104
+ }
105
+
89
106
  _alpha = context.getContextAttributes().alpha;
90
107
 
91
108
  } else {
@@ -94,6 +111,21 @@ class WebGLRenderer {
94
111
 
95
112
  }
96
113
 
114
+ const INTEGER_FORMATS = new Set( [
115
+ RGBAIntegerFormat,
116
+ RGIntegerFormat,
117
+ RedIntegerFormat
118
+ ] );
119
+
120
+ const UNSIGNED_TYPES = new Set( [
121
+ UnsignedByteType,
122
+ UnsignedIntType,
123
+ UnsignedShortType,
124
+ UnsignedInt248Type,
125
+ UnsignedShort4444Type,
126
+ UnsignedShort5551Type
127
+ ] );
128
+
97
129
  const uintClearColor = new Uint32Array( 4 );
98
130
  const intClearColor = new Int32Array( 4 );
99
131
 
@@ -108,13 +140,36 @@ class WebGLRenderer {
108
140
 
109
141
  // public properties
110
142
 
143
+ /**
144
+ * A canvas where the renderer draws its output.This is automatically created by the renderer
145
+ * in the constructor (if not provided already); you just need to add it to your page like so:
146
+ * ```js
147
+ * document.body.appendChild( renderer.domElement );
148
+ * ```
149
+ *
150
+ * @type {HTMLCanvasElement|OffscreenCanvas}
151
+ */
111
152
  this.domElement = canvas;
112
153
 
113
- // Debug configuration container
154
+ /**
155
+ * A object with debug configuration settings.
156
+ *
157
+ * - `checkShaderErrors`: If it is `true`, defines whether material shader programs are
158
+ * checked for errors during compilation and linkage process. It may be useful to disable
159
+ * this check in production for performance gain. It is strongly recommended to keep these
160
+ * checks enabled during development. If the shader does not compile and link - it will not
161
+ * work and associated material will not render.
162
+ * - `onShaderError(gl, program, glVertexShader,glFragmentShader)`: A callback function that
163
+ * can be used for custom error reporting. The callback receives the WebGL context, an instance
164
+ * of WebGLProgram as well two instances of WebGLShader representing the vertex and fragment shader.
165
+ * Assigning a custom function disables the default error reporting.
166
+ *
167
+ * @type {Object}
168
+ */
114
169
  this.debug = {
115
170
 
116
171
  /**
117
- * Enables error checking and reporting when shader programs are being compiled
172
+ * Enables error checking and reporting when shader programs are being compiled.
118
173
  * @type {boolean}
119
174
  */
120
175
  checkShaderErrors: true,
@@ -127,33 +182,105 @@ class WebGLRenderer {
127
182
 
128
183
  // clearing
129
184
 
185
+ /**
186
+ * Whether the renderer should automatically clear its output before rendering a frame or not.
187
+ *
188
+ * @type {boolean}
189
+ * @default true
190
+ */
130
191
  this.autoClear = true;
192
+
193
+ /**
194
+ * If {@link WebGLRenderer#autoClear} set to `true`, whether the renderer should clear
195
+ * the color buffer or not.
196
+ *
197
+ * @type {boolean}
198
+ * @default true
199
+ */
131
200
  this.autoClearColor = true;
201
+
202
+ /**
203
+ * If {@link WebGLRenderer#autoClear} set to `true`, whether the renderer should clear
204
+ * the depth buffer or not.
205
+ *
206
+ * @type {boolean}
207
+ * @default true
208
+ */
132
209
  this.autoClearDepth = true;
210
+
211
+ /**
212
+ * If {@link WebGLRenderer#autoClear} set to `true`, whether the renderer should clear
213
+ * the stencil buffer or not.
214
+ *
215
+ * @type {boolean}
216
+ * @default true
217
+ */
133
218
  this.autoClearStencil = true;
134
219
 
135
220
  // scene graph
136
221
 
222
+ /**
223
+ * Whether the renderer should sort objects or not.
224
+ *
225
+ * Note: Sorting is used to attempt to properly render objects that have some
226
+ * degree of transparency. By definition, sorting objects may not work in all
227
+ * cases. Depending on the needs of application, it may be necessary to turn
228
+ * off sorting and use other methods to deal with transparency rendering e.g.
229
+ * manually determining each object's rendering order.
230
+ *
231
+ * @type {boolean}
232
+ * @default true
233
+ */
137
234
  this.sortObjects = true;
138
235
 
139
236
  // user-defined clipping
140
237
 
238
+ /**
239
+ * User-defined clipping planes specified in world space. These planes apply globally.
240
+ * Points in space whose dot product with the plane is negative are cut away.
241
+ *
242
+ * @type {Array<Plane>}
243
+ */
141
244
  this.clippingPlanes = [];
142
- this.localClippingEnabled = false;
143
-
144
- // physically based shading
145
-
146
- this._outputColorSpace = SRGBColorSpace;
147
-
148
- // physical lights
149
245
 
150
- this._useLegacyLights = false;
246
+ /**
247
+ * Whether the renderer respects object-level clipping planes or not.
248
+ *
249
+ * @type {boolean}
250
+ * @default false
251
+ */
252
+ this.localClippingEnabled = false;
151
253
 
152
254
  // tone mapping
153
255
 
256
+ /**
257
+ * The tone mapping technique of the renderer.
258
+ *
259
+ * @type {(NoToneMapping|LinearToneMapping|ReinhardToneMapping|CineonToneMapping|ACESFilmicToneMapping|CustomToneMapping|AgXToneMapping|NeutralToneMapping)}
260
+ * @default NoToneMapping
261
+ */
154
262
  this.toneMapping = NoToneMapping;
263
+
264
+ /**
265
+ * Exposure level of tone mapping.
266
+ *
267
+ * @type {number}
268
+ * @default 1
269
+ */
155
270
  this.toneMappingExposure = 1.0;
156
271
 
272
+ // transmission
273
+
274
+ /**
275
+ * The normalized resolution scale for the transmission render target, measured in percentage
276
+ * of viewport dimensions. Lowering this value can result in significant performance improvements
277
+ * when using {@link MeshPhysicalMaterial#transmission}.
278
+ *
279
+ * @type {number}
280
+ * @default 1
281
+ */
282
+ this.transmissionResolutionScale = 1.0;
283
+
157
284
  // internal properties
158
285
 
159
286
  const _this = this;
@@ -162,6 +289,8 @@ class WebGLRenderer {
162
289
 
163
290
  // internal state cache
164
291
 
292
+ this._outputColorSpace = SRGBColorSpace;
293
+
165
294
  let _currentActiveCubeFace = 0;
166
295
  let _currentActiveMipmapLevel = 0;
167
296
  let _currentRenderTarget = null;
@@ -198,19 +327,18 @@ class WebGLRenderer {
198
327
  let _clippingEnabled = false;
199
328
  let _localClippingEnabled = false;
200
329
 
201
- // transmission
202
-
203
- let _transmissionRenderTarget = null;
204
-
205
330
  // camera matrices cache
206
331
 
207
332
  const _projScreenMatrix = new Matrix4();
208
333
 
209
- const _vector2 = new Vector2();
210
334
  const _vector3 = new Vector3();
211
335
 
336
+ const _vector4 = new Vector4();
337
+
212
338
  const _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };
213
339
 
340
+ let _renderBackground = false;
341
+
214
342
  function getTargetPixelRatio() {
215
343
 
216
344
  return _currentRenderTarget === null ? _pixelRatio : 1;
@@ -221,17 +349,9 @@ class WebGLRenderer {
221
349
 
222
350
  let _gl = context;
223
351
 
224
- function getContext( contextNames, contextAttributes ) {
352
+ function getContext( contextName, contextAttributes ) {
225
353
 
226
- for ( let i = 0; i < contextNames.length; i ++ ) {
227
-
228
- const contextName = contextNames[ i ];
229
- const context = canvas.getContext( contextName, contextAttributes );
230
- if ( context !== null ) return context;
231
-
232
- }
233
-
234
- return null;
354
+ return canvas.getContext( contextName, contextAttributes );
235
355
 
236
356
  }
237
357
 
@@ -258,19 +378,13 @@ class WebGLRenderer {
258
378
 
259
379
  if ( _gl === null ) {
260
380
 
261
- const contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];
262
-
263
- if ( _this.isWebGL1Renderer === true ) {
264
-
265
- contextNames.shift();
381
+ const contextName = 'webgl2';
266
382
 
267
- }
268
-
269
- _gl = getContext( contextNames, contextAttributes );
383
+ _gl = getContext( contextName, contextAttributes );
270
384
 
271
385
  if ( _gl === null ) {
272
386
 
273
- if ( getContext( contextNames ) ) {
387
+ if ( getContext( contextName ) ) {
274
388
 
275
389
  throw new Error( 'Error creating WebGL context with your selected attributes.' );
276
390
 
@@ -284,27 +398,9 @@ class WebGLRenderer {
284
398
 
285
399
  }
286
400
 
287
- if ( typeof WebGLRenderingContext !== 'undefined' && _gl instanceof WebGLRenderingContext ) { // @deprecated, r153
288
-
289
- console.warn( 'THREE.WebGLRenderer: WebGL 1 support was deprecated in r153 and will be removed in r163.' );
290
-
291
- }
292
-
293
- // Some experimental-webgl implementations do not have getShaderPrecisionFormat
294
-
295
- if ( _gl.getShaderPrecisionFormat === undefined ) {
296
-
297
- _gl.getShaderPrecisionFormat = function () {
298
-
299
- return { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };
300
-
301
- };
302
-
303
- }
304
-
305
401
  } catch ( error ) {
306
402
 
307
- console.error( 'THREE.WebGLRenderer: ' + error.message );
403
+ error( 'WebGLRenderer: ' + error.message );
308
404
  throw error;
309
405
 
310
406
  }
@@ -320,22 +416,27 @@ class WebGLRenderer {
320
416
  function initGLContext() {
321
417
 
322
418
  extensions = new WebGLExtensions( _gl );
419
+ extensions.init();
420
+
421
+ utils = new WebGLUtils( _gl, extensions );
422
+
423
+ capabilities = new WebGLCapabilities( _gl, extensions, parameters, utils );
323
424
 
324
- capabilities = new WebGLCapabilities( _gl, extensions, parameters );
425
+ state = new WebGLState( _gl, extensions );
325
426
 
326
- extensions.init( capabilities );
427
+ if ( capabilities.reversedDepthBuffer && reversedDepthBuffer ) {
327
428
 
328
- utils = new WebGLUtils( _gl, extensions, capabilities );
429
+ state.buffers.depth.setReversed( true );
329
430
 
330
- state = new WebGLState( _gl, extensions, capabilities );
431
+ }
331
432
 
332
433
  info = new WebGLInfo( _gl );
333
434
  properties = new WebGLProperties();
334
435
  textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );
335
436
  cubemaps = new WebGLCubeMaps( _this );
336
437
  cubeuvmaps = new WebGLCubeUVMaps( _this );
337
- attributes = new WebGLAttributes( _gl, capabilities );
338
- bindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );
438
+ attributes = new WebGLAttributes( _gl );
439
+ bindingStates = new WebGLBindingStates( _gl, attributes );
339
440
  geometries = new WebGLGeometries( _gl, attributes, info, bindingStates );
340
441
  objects = new WebGLObjects( _gl, geometries, attributes, info );
341
442
  morphtargets = new WebGLMorphtargets( _gl, capabilities, textures );
@@ -343,22 +444,89 @@ class WebGLRenderer {
343
444
  programCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );
344
445
  materials = new WebGLMaterials( _this, properties );
345
446
  renderLists = new WebGLRenderLists();
346
- renderStates = new WebGLRenderStates( extensions, capabilities );
447
+ renderStates = new WebGLRenderStates( extensions );
347
448
  background = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha );
348
449
  shadowMap = new WebGLShadowMap( _this, objects, capabilities );
349
450
  uniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );
350
451
 
351
- bufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );
352
- indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );
452
+ bufferRenderer = new WebGLBufferRenderer( _gl, extensions, info );
453
+ indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info );
353
454
 
354
455
  info.programs = programCache.programs;
355
456
 
457
+ /**
458
+ * Holds details about the capabilities of the current rendering context.
459
+ *
460
+ * @name WebGLRenderer#capabilities
461
+ * @type {WebGLRenderer~Capabilities}
462
+ */
356
463
  _this.capabilities = capabilities;
464
+
465
+ /**
466
+ * Provides methods for retrieving and testing WebGL extensions.
467
+ *
468
+ * - `get(extensionName:string)`: Used to check whether a WebGL extension is supported
469
+ * and return the extension object if available.
470
+ * - `has(extensionName:string)`: returns `true` if the extension is supported.
471
+ *
472
+ * @name WebGLRenderer#extensions
473
+ * @type {Object}
474
+ */
357
475
  _this.extensions = extensions;
476
+
477
+ /**
478
+ * Used to track properties of other objects like native WebGL objects.
479
+ *
480
+ * @name WebGLRenderer#properties
481
+ * @type {Object}
482
+ */
358
483
  _this.properties = properties;
484
+
485
+ /**
486
+ * Manages the render lists of the renderer.
487
+ *
488
+ * @name WebGLRenderer#renderLists
489
+ * @type {Object}
490
+ */
359
491
  _this.renderLists = renderLists;
492
+
493
+
494
+
495
+ /**
496
+ * Interface for managing shadows.
497
+ *
498
+ * @name WebGLRenderer#shadowMap
499
+ * @type {WebGLRenderer~ShadowMap}
500
+ */
360
501
  _this.shadowMap = shadowMap;
502
+
503
+ /**
504
+ * Interface for managing the WebGL state.
505
+ *
506
+ * @name WebGLRenderer#state
507
+ * @type {Object}
508
+ */
361
509
  _this.state = state;
510
+
511
+ /**
512
+ * Holds a series of statistical information about the GPU memory
513
+ * and the rendering process. Useful for debugging and monitoring.
514
+ *
515
+ * By default these data are reset at each render call but when having
516
+ * multiple render passes per frame (e.g. when using post processing) it can
517
+ * be preferred to reset with a custom pattern. First, set `autoReset` to
518
+ * `false`.
519
+ * ```js
520
+ * renderer.info.autoReset = false;
521
+ * ```
522
+ * Call `reset()` whenever you have finished to render a single frame.
523
+ * ```js
524
+ * renderer.info.reset();
525
+ * ```
526
+ *
527
+ * @name WebGLRenderer#info
528
+ * @type {WebGLRenderer~Info}
529
+ */
362
530
  _this.info = info;
363
531
 
364
532
  }
@@ -369,22 +537,38 @@ class WebGLRenderer {
369
537
 
370
538
  const xr = new WebXRManager( _this, _gl );
371
539
 
540
+ /**
541
+ * A reference to the XR manager.
542
+ *
543
+ * @type {WebXRManager}
544
+ */
372
545
  this.xr = xr;
373
546
 
374
- // API
375
-
547
+ /**
548
+ * Returns the rendering context.
549
+ *
550
+ * @return {WebGL2RenderingContext} The rendering context.
551
+ */
376
552
  this.getContext = function () {
377
553
 
378
554
  return _gl;
379
555
 
380
556
  };
381
557
 
558
+ /**
559
+ * Returns the rendering context attributes.
560
+ *
561
+ * @return {WebGLContextAttributes} The rendering context attributes.
562
+ */
382
563
  this.getContextAttributes = function () {
383
564
 
384
565
  return _gl.getContextAttributes();
385
566
 
386
567
  };
387
568
 
569
+ /**
570
+ * Simulates a loss of the WebGL context. This requires support for the `WEBGL_lose_context` extension.
571
+ */
388
572
  this.forceContextLoss = function () {
389
573
 
390
574
  const extension = extensions.get( 'WEBGL_lose_context' );
@@ -392,6 +576,9 @@ class WebGLRenderer {
392
576
 
393
577
  };
394
578
 
579
+ /**
580
+ * Simulates a restore of the WebGL context. This requires support for the `WEBGL_lose_context` extension.
581
+ */
395
582
  this.forceContextRestore = function () {
396
583
 
397
584
  const extension = extensions.get( 'WEBGL_lose_context' );
@@ -399,12 +586,22 @@ class WebGLRenderer {
399
586
 
400
587
  };
401
588
 
589
+ /**
590
+ * Returns the pixel ratio.
591
+ *
592
+ * @return {number} The pixel ratio.
593
+ */
402
594
  this.getPixelRatio = function () {
403
595
 
404
596
  return _pixelRatio;
405
597
 
406
598
  };
407
599
 
600
+ /**
601
+ * Sets the given pixel ratio and resizes the canvas if necessary.
602
+ *
603
+ * @param {number} value - The pixel ratio.
604
+ */
408
605
  this.setPixelRatio = function ( value ) {
409
606
 
410
607
  if ( value === undefined ) return;
@@ -415,17 +612,32 @@ class WebGLRenderer {
415
612
 
416
613
  };
417
614
 
615
+ /**
616
+ * Returns the renderer's size in logical pixels. This method does not honor the pixel ratio.
617
+ *
618
+ * @param {Vector2} target - The method writes the result in this target object.
619
+ * @return {Vector2} The renderer's size in logical pixels.
620
+ */
418
621
  this.getSize = function ( target ) {
419
622
 
420
623
  return target.set( _width, _height );
421
624
 
422
625
  };
423
626
 
627
+ /**
628
+ * Resizes the output canvas to (width, height) with device pixel ratio taken
629
+ * into account, and also sets the viewport to fit that size, starting in (0,
630
+ * 0). Setting `updateStyle` to false prevents any style changes to the output canvas.
631
+ *
632
+ * @param {number} width - The width in logical pixels.
633
+ * @param {number} height - The height in logical pixels.
634
+ * @param {boolean} [updateStyle=true] - Whether to update the `style` attribute of the canvas or not.
635
+ */
424
636
  this.setSize = function ( width, height, updateStyle = true ) {
425
637
 
426
638
  if ( xr.isPresenting ) {
427
639
 
428
- console.warn( 'THREE.WebGLRenderer: Can\'t change size while VR device is presenting.' );
640
+ warn( 'WebGLRenderer: Can\'t change size while VR device is presenting.' );
429
641
  return;
430
642
 
431
643
  }
@@ -447,12 +659,31 @@ class WebGLRenderer {
447
659
 
448
660
  };
449
661
 
662
+ /**
663
+ * Returns the drawing buffer size in physical pixels. This method honors the pixel ratio.
664
+ *
665
+ * @param {Vector2} target - The method writes the result in this target object.
666
+ * @return {Vector2} The drawing buffer size.
667
+ */
450
668
  this.getDrawingBufferSize = function ( target ) {
451
669
 
452
670
  return target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();
453
671
 
454
672
  };
455
673
 
674
+ /**
675
+ * This method allows to define the drawing buffer size by specifying
676
+ * width, height and pixel ratio all at once. The size of the drawing
677
+ * buffer is computed with this formula:
678
+ * ```js
679
+ * size.x = width * pixelRatio;
680
+ * size.y = height * pixelRatio;
681
+ * ```
682
+ *
683
+ * @param {number} width - The width in logical pixels.
684
+ * @param {number} height - The height in logical pixels.
685
+ * @param {number} pixelRatio - The pixel ratio.
686
+ */
456
687
  this.setDrawingBufferSize = function ( width, height, pixelRatio ) {
457
688
 
458
689
  _width = width;
@@ -467,18 +698,39 @@ class WebGLRenderer {
467
698
 
468
699
  };
469
700
 
701
+ /**
702
+ * Returns the current viewport definition.
703
+ *
704
+ * @param {Vector2} target - The method writes the result in this target object.
705
+ * @return {Vector2} The current viewport definition.
706
+ */
470
707
  this.getCurrentViewport = function ( target ) {
471
708
 
472
709
  return target.copy( _currentViewport );
473
710
 
474
711
  };
475
712
 
713
+ /**
714
+ * Returns the viewport definition.
715
+ *
716
+ * @param {Vector4} target - The method writes the result in this target object.
717
+ * @return {Vector4} The viewport definition.
718
+ */
476
719
  this.getViewport = function ( target ) {
477
720
 
478
721
  return target.copy( _viewport );
479
722
 
480
723
  };
481
724
 
725
+ /**
726
+ * Sets the viewport to render from `(x, y)` to `(x + width, y + height)`.
727
+ *
728
+ * @param {number | Vector4} x - The horizontal coordinate for the lower left corner of the viewport origin in logical pixel unit.
729
+ * Or alternatively a four-component vector specifying all the parameters of the viewport.
730
+ * @param {number} y - The vertical coordinate for the lower left corner of the viewport origin in logical pixel unit.
731
+ * @param {number} width - The width of the viewport in logical pixel unit.
732
+ * @param {number} height - The height of the viewport in logical pixel unit.
733
+ */
482
734
  this.setViewport = function ( x, y, width, height ) {
483
735
 
484
736
  if ( x.isVector4 ) {
@@ -491,16 +743,31 @@ class WebGLRenderer {
491
743
 
492
744
  }
493
745
 
494
- state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );
746
+ state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).round() );
495
747
 
496
748
  };
497
749
 
750
+ /**
751
+ * Returns the scissor region.
752
+ *
753
+ * @param {Vector4} target - The method writes the result in this target object.
754
+ * @return {Vector4} The scissor region.
755
+ */
498
756
  this.getScissor = function ( target ) {
499
757
 
500
758
  return target.copy( _scissor );
501
759
 
502
760
  };
503
761
 
762
+ /**
763
+ * Sets the scissor region to render from `(x, y)` to `(x + width, y + height)`.
764
+ *
765
+ * @param {number | Vector4} x - The horizontal coordinate for the lower left corner of the scissor region origin in logical pixel unit.
766
+ * Or alternatively a four-component vector specifying all the parameters of the scissor region.
767
+ * @param {number} y - The vertical coordinate for the lower left corner of the scissor region origin in logical pixel unit.
768
+ * @param {number} width - The width of the scissor region in logical pixel unit.
769
+ * @param {number} height - The height of the scissor region in logical pixel unit.
770
+ */
504
771
  this.setScissor = function ( x, y, width, height ) {
505
772
 
506
773
  if ( x.isVector4 ) {
@@ -513,28 +780,52 @@ class WebGLRenderer {
513
780
 
514
781
  }
515
782
 
516
- state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );
783
+ state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).round() );
517
784
 
518
785
  };
519
786
 
787
+ /**
788
+ * Returns `true` if the scissor test is enabled.
789
+ *
790
+ * @return {boolean} Whether the scissor test is enabled or not.
791
+ */
520
792
  this.getScissorTest = function () {
521
793
 
522
794
  return _scissorTest;
523
795
 
524
796
  };
525
797
 
798
+ /**
799
+ * Enable or disable the scissor test. When this is enabled, only the pixels
800
+ * within the defined scissor area will be affected by further renderer
801
+ * actions.
802
+ *
803
+ * @param {boolean} boolean - Whether the scissor test is enabled or not.
804
+ */
526
805
  this.setScissorTest = function ( boolean ) {
527
806
 
528
807
  state.setScissorTest( _scissorTest = boolean );
529
808
 
530
809
  };
531
810
 
811
+ /**
812
+ * Sets a custom opaque sort function for the render lists. Pass `null`
813
+ * to use the default `painterSortStable` function.
814
+ *
815
+ * @param {?Function} method - The opaque sort function.
816
+ */
532
817
  this.setOpaqueSort = function ( method ) {
533
818
 
534
819
  _opaqueSort = method;
535
820
 
536
821
  };
537
822
 
823
+ /**
824
+ * Sets a custom transparent sort function for the render lists. Pass `null`
825
+ * to use the default `reversePainterSortStable` function.
826
+ *
827
+ * @param {?Function} method - The opaque sort function.
828
+ */
538
829
  this.setTransparentSort = function ( method ) {
539
830
 
540
831
  _transparentSort = method;
@@ -543,30 +834,60 @@ class WebGLRenderer {
543
834
 
544
835
  // Clearing
545
836
 
837
+ /**
838
+ * Returns the clear color.
839
+ *
840
+ * @param {Color} target - The method writes the result in this target object.
841
+ * @return {Color} The clear color.
842
+ */
546
843
  this.getClearColor = function ( target ) {
547
844
 
548
845
  return target.copy( background.getClearColor() );
549
846
 
550
847
  };
551
848
 
849
+ /**
850
+ * Sets the clear color and alpha.
851
+ *
852
+ * @param {Color} color - The clear color.
853
+ * @param {number} [alpha=1] - The clear alpha.
854
+ */
552
855
  this.setClearColor = function () {
553
856
 
554
- background.setClearColor.apply( background, arguments );
857
+ background.setClearColor( ...arguments );
555
858
 
556
859
  };
557
860
 
861
+ /**
862
+ * Returns the clear alpha. Ranges within `[0,1]`.
863
+ *
864
+ * @return {number} The clear alpha.
865
+ */
558
866
  this.getClearAlpha = function () {
559
867
 
560
868
  return background.getClearAlpha();
561
869
 
562
870
  };
563
871
 
872
+ /**
873
+ * Sets the clear alpha.
874
+ *
875
+ * @param {number} alpha - The clear alpha.
876
+ */
564
877
  this.setClearAlpha = function () {
565
878
 
566
- background.setClearAlpha.apply( background, arguments );
879
+ background.setClearAlpha( ...arguments );
567
880
 
568
881
  };
569
882
 
883
+ /**
884
+ * Tells the renderer to clear its color, depth or stencil drawing buffer(s).
885
+ * This method initializes the buffers to the current clear color values.
886
+ *
887
+ * @param {boolean} [color=true] - Whether the color buffer should be cleared or not.
888
+ * @param {boolean} [depth=true] - Whether the depth buffer should be cleared or not.
889
+ * @param {boolean} [stencil=true] - Whether the stencil buffer should be cleared or not.
890
+ */
570
891
  this.clear = function ( color = true, depth = true, stencil = true ) {
571
892
 
572
893
  let bits = 0;
@@ -578,9 +899,7 @@ class WebGLRenderer {
578
899
  if ( _currentRenderTarget !== null ) {
579
900
 
580
901
  const targetFormat = _currentRenderTarget.texture.format;
581
- isIntegerFormat = targetFormat === RGBAIntegerFormat ||
582
- targetFormat === RGIntegerFormat ||
583
- targetFormat === RedIntegerFormat;
902
+ isIntegerFormat = INTEGER_FORMATS.has( targetFormat );
584
903
 
585
904
  }
586
905
 
@@ -589,12 +908,7 @@ class WebGLRenderer {
589
908
  if ( isIntegerFormat ) {
590
909
 
591
910
  const targetType = _currentRenderTarget.texture.type;
592
- const isUnsignedType = targetType === UnsignedByteType ||
593
- targetType === UnsignedIntType ||
594
- targetType === UnsignedShortType ||
595
- targetType === UnsignedInt248Type ||
596
- targetType === UnsignedShort4444Type ||
597
- targetType === UnsignedShort5551Type;
911
+ const isUnsignedType = UNSIGNED_TYPES.has( targetType );
598
912
 
599
913
  const clearColor = background.getClearColor();
600
914
  const a = background.getClearAlpha();
@@ -628,7 +942,12 @@ class WebGLRenderer {
628
942
 
629
943
  }
630
944
 
631
- if ( depth ) bits |= _gl.DEPTH_BUFFER_BIT;
945
+ if ( depth ) {
946
+
947
+ bits |= _gl.DEPTH_BUFFER_BIT;
948
+
949
+ }
950
+
632
951
  if ( stencil ) {
633
952
 
634
953
  bits |= _gl.STENCIL_BUFFER_BIT;
@@ -640,32 +959,44 @@ class WebGLRenderer {
640
959
 
641
960
  };
642
961
 
962
+ /**
963
+ * Clears the color buffer. Equivalent to calling `renderer.clear( true, false, false )`.
964
+ */
643
965
  this.clearColor = function () {
644
966
 
645
967
  this.clear( true, false, false );
646
968
 
647
969
  };
648
970
 
971
+ /**
972
+ * Clears the depth buffer. Equivalent to calling `renderer.clear( false, true, false )`.
973
+ */
649
974
  this.clearDepth = function () {
650
975
 
651
976
  this.clear( false, true, false );
652
977
 
653
978
  };
654
979
 
980
+ /**
981
+ * Clears the stencil buffer. Equivalent to calling `renderer.clear( false, false, true )`.
982
+ */
655
983
  this.clearStencil = function () {
656
984
 
657
985
  this.clear( false, false, true );
658
986
 
659
987
  };
660
988
 
661
- //
662
-
989
+ /**
990
+ * Frees the GPU-related resources allocated by this instance. Call this
991
+ * method whenever this instance is no longer used in your app.
992
+ */
663
993
  this.dispose = function () {
664
994
 
665
995
  canvas.removeEventListener( 'webglcontextlost', onContextLost, false );
666
996
  canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );
667
997
  canvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );
668
998
 
999
+ background.dispose();
669
1000
  renderLists.dispose();
670
1001
  renderStates.dispose();
671
1002
  properties.dispose();
@@ -681,13 +1012,6 @@ class WebGLRenderer {
681
1012
  xr.removeEventListener( 'sessionstart', onXRSessionStart );
682
1013
  xr.removeEventListener( 'sessionend', onXRSessionEnd );
683
1014
 
684
- if ( _transmissionRenderTarget ) {
685
-
686
- _transmissionRenderTarget.dispose();
687
- _transmissionRenderTarget = null;
688
-
689
- }
690
-
691
1015
  animation.stop();
692
1016
 
693
1017
  };
@@ -698,7 +1022,7 @@ class WebGLRenderer {
698
1022
 
699
1023
  event.preventDefault();
700
1024
 
701
- console.log( 'THREE.WebGLRenderer: Context Lost.' );
1025
+ log( 'WebGLRenderer: Context Lost.' );
702
1026
 
703
1027
  _isContextLost = true;
704
1028
 
@@ -706,7 +1030,7 @@ class WebGLRenderer {
706
1030
 
707
1031
  function onContextRestore( /* event */ ) {
708
1032
 
709
- console.log( 'THREE.WebGLRenderer: Context Restored.' );
1033
+ log( 'WebGLRenderer: Context Restored.' );
710
1034
 
711
1035
  _isContextLost = false;
712
1036
 
@@ -728,7 +1052,7 @@ class WebGLRenderer {
728
1052
 
729
1053
  function onContextCreationError( event ) {
730
1054
 
731
- console.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );
1055
+ error( 'WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );
732
1056
 
733
1057
  }
734
1058
 
@@ -898,7 +1222,35 @@ class WebGLRenderer {
898
1222
 
899
1223
  if ( object.isBatchedMesh ) {
900
1224
 
901
- renderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );
1225
+ if ( object._multiDrawInstances !== null ) {
1226
+
1227
+ // @deprecated, r174
1228
+ warnOnce( 'WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection.' );
1229
+ renderer.renderMultiDrawInstances( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount, object._multiDrawInstances );
1230
+
1231
+ } else {
1232
+
1233
+ if ( ! extensions.get( 'WEBGL_multi_draw' ) ) {
1234
+
1235
+ const starts = object._multiDrawStarts;
1236
+ const counts = object._multiDrawCounts;
1237
+ const drawCount = object._multiDrawCount;
1238
+ const bytesPerElement = index ? attributes.get( index ).bytesPerElement : 1;
1239
+ const uniforms = properties.get( material ).currentProgram.getUniforms();
1240
+ for ( let i = 0; i < drawCount; i ++ ) {
1241
+
1242
+ uniforms.setValue( _gl, '_gl_DrawID', i );
1243
+ renderer.render( starts[ i ] / bytesPerElement, counts[ i ] );
1244
+
1245
+ }
1246
+
1247
+ } else {
1248
+
1249
+ renderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );
1250
+
1251
+ }
1252
+
1253
+ }
902
1254
 
903
1255
  } else if ( object.isInstancedMesh ) {
904
1256
 
@@ -943,12 +1295,24 @@ class WebGLRenderer {
943
1295
 
944
1296
  }
945
1297
 
1298
+ /**
1299
+ * Compiles all materials in the scene with the camera. This is useful to precompile shaders
1300
+ * before the first rendering. If you want to add a 3D object to an existing scene, use the third
1301
+ * optional parameter for applying the target scene.
1302
+ *
1303
+ * Note that the (target) scene's lighting and environment must be configured before calling this method.
1304
+ *
1305
+ * @param {Object3D} scene - The scene or another type of 3D object to precompile.
1306
+ * @param {Camera} camera - The camera.
1307
+ * @param {?Scene} [targetScene=null] - The target scene.
1308
+ * @return {Set<Material>} The precompiled materials.
1309
+ */
946
1310
  this.compile = function ( scene, camera, targetScene = null ) {
947
1311
 
948
1312
  if ( targetScene === null ) targetScene = scene;
949
1313
 
950
1314
  currentRenderState = renderStates.get( targetScene );
951
- currentRenderState.init();
1315
+ currentRenderState.init( camera );
952
1316
 
953
1317
  renderStateStack.push( currentRenderState );
954
1318
 
@@ -990,7 +1354,7 @@ class WebGLRenderer {
990
1354
 
991
1355
  }
992
1356
 
993
- currentRenderState.setupLights( _this._useLegacyLights );
1357
+ currentRenderState.setupLights();
994
1358
 
995
1359
  // Only initialize materials in the new scene, not the targetScene.
996
1360
 
@@ -998,6 +1362,12 @@ class WebGLRenderer {
998
1362
 
999
1363
  scene.traverse( function ( object ) {
1000
1364
 
1365
+ if ( ! ( object.isMesh || object.isPoints || object.isLine || object.isSprite ) ) {
1366
+
1367
+ return;
1368
+
1369
+ }
1370
+
1001
1371
  const material = object.material;
1002
1372
 
1003
1373
  if ( material ) {
@@ -1024,8 +1394,7 @@ class WebGLRenderer {
1024
1394
 
1025
1395
  } );
1026
1396
 
1027
- renderStateStack.pop();
1028
- currentRenderState = null;
1397
+ currentRenderState = renderStateStack.pop();
1029
1398
 
1030
1399
  return materials;
1031
1400
 
@@ -1033,6 +1402,18 @@ class WebGLRenderer {
1033
1402
 
1034
1403
  // compileAsync
1035
1404
 
1405
+ /**
1406
+ * Asynchronous version of {@link WebGLRenderer#compile}.
1407
+ *
1408
+ * This method makes use of the `KHR_parallel_shader_compile` WebGL extension. Hence,
1409
+ * it is recommended to use this version of `compile()` whenever possible.
1410
+ *
1411
+ * @async
1412
+ * @param {Object3D} scene - The scene or another type of 3D object to precompile.
1413
+ * @param {Camera} camera - The camera.
1414
+ * @param {?Scene} [targetScene=null] - The target scene.
1415
+ * @return {Promise} A Promise that resolves when the given scene can be rendered without unnecessary stalling due to shader compilation.
1416
+ */
1036
1417
  this.compileAsync = function ( scene, camera, targetScene = null ) {
1037
1418
 
1038
1419
  const materials = this.compile( scene, camera, targetScene );
@@ -1120,6 +1501,13 @@ class WebGLRenderer {
1120
1501
 
1121
1502
  if ( typeof self !== 'undefined' ) animation.setContext( self );
1122
1503
 
1504
+ /**
1505
+ * Applications are advised to always define the animation loop
1506
+ * with this method and not manually with `requestAnimationFrame()`
1507
+ * for best compatibility.
1508
+ *
1509
+ * @param {?onAnimationCallback} callback - The application's animation loop.
1510
+ */
1123
1511
  this.setAnimationLoop = function ( callback ) {
1124
1512
 
1125
1513
  onAnimationFrameCallback = callback;
@@ -1134,11 +1522,25 @@ class WebGLRenderer {
1134
1522
 
1135
1523
  // Rendering
1136
1524
 
1525
+ /**
1526
+ * Renders the given scene (or other type of 3D object) using the given camera.
1527
+ *
1528
+ * The render is done to a previously specified render target set by calling {@link WebGLRenderer#setRenderTarget}
1529
+ * or to the canvas as usual.
1530
+ *
1531
+ * By default render buffers are cleared before rendering but you can prevent
1532
+ * this by setting the property `autoClear` to `false`. If you want to prevent
1533
+ * only certain buffers being cleared you can `autoClearColor`, `autoClearDepth`
1534
+ * or `autoClearStencil` to `false`. To force a clear, use {@link WebGLRenderer#clear}.
1535
+ *
1536
+ * @param {Object3D} scene - The scene to render.
1537
+ * @param {Camera} camera - The camera.
1538
+ */
1137
1539
  this.render = function ( scene, camera ) {
1138
1540
 
1139
1541
  if ( camera !== undefined && camera.isCamera !== true ) {
1140
1542
 
1141
- console.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );
1543
+ error( 'WebGLRenderer.render: camera is not an instance of THREE.Camera.' );
1142
1544
  return;
1143
1545
 
1144
1546
  }
@@ -1165,12 +1567,12 @@ class WebGLRenderer {
1165
1567
  if ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );
1166
1568
 
1167
1569
  currentRenderState = renderStates.get( scene, renderStateStack.length );
1168
- currentRenderState.init();
1570
+ currentRenderState.init( camera );
1169
1571
 
1170
1572
  renderStateStack.push( currentRenderState );
1171
1573
 
1172
1574
  _projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );
1173
- _frustum.setFromProjectionMatrix( _projScreenMatrix );
1575
+ _frustum.setFromProjectionMatrix( _projScreenMatrix, WebGLCoordinateSystem, camera.reversedDepth );
1174
1576
 
1175
1577
  _localClippingEnabled = this.localClippingEnabled;
1176
1578
  _clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled );
@@ -1180,6 +1582,18 @@ class WebGLRenderer {
1180
1582
 
1181
1583
  renderListStack.push( currentRenderList );
1182
1584
 
1585
+ if ( xr.enabled === true && xr.isPresenting === true ) {
1586
+
1587
+ const depthSensingMesh = _this.xr.getDepthSensingMesh();
1588
+
1589
+ if ( depthSensingMesh !== null ) {
1590
+
1591
+ projectObject( depthSensingMesh, camera, - Infinity, _this.sortObjects );
1592
+
1593
+ }
1594
+
1595
+ }
1596
+
1183
1597
  projectObject( scene, camera, 0, _this.sortObjects );
1184
1598
 
1185
1599
  currentRenderList.finish();
@@ -1190,6 +1604,13 @@ class WebGLRenderer {
1190
1604
 
1191
1605
  }
1192
1606
 
1607
+ _renderBackground = xr.enabled === false || xr.isPresenting === false || xr.hasDepthSensing() === false;
1608
+ if ( _renderBackground ) {
1609
+
1610
+ background.addToRenderList( currentRenderList, scene );
1611
+
1612
+ }
1613
+
1193
1614
  //
1194
1615
 
1195
1616
  this.info.render.frame ++;
@@ -1206,22 +1627,30 @@ class WebGLRenderer {
1206
1627
 
1207
1628
  if ( this.info.autoReset === true ) this.info.reset();
1208
1629
 
1630
+ // render scene
1209
1631
 
1210
- //
1632
+ const opaqueObjects = currentRenderList.opaque;
1633
+ const transmissiveObjects = currentRenderList.transmissive;
1211
1634
 
1212
- if ( xr.enabled === false || xr.isPresenting === false || xr.hasDepthSensing() === false ) {
1635
+ currentRenderState.setupLights();
1213
1636
 
1214
- background.render( currentRenderList, scene );
1637
+ if ( camera.isArrayCamera ) {
1215
1638
 
1216
- }
1639
+ const cameras = camera.cameras;
1217
1640
 
1218
- // render scene
1641
+ if ( transmissiveObjects.length > 0 ) {
1219
1642
 
1220
- currentRenderState.setupLights( _this._useLegacyLights );
1643
+ for ( let i = 0, l = cameras.length; i < l; i ++ ) {
1221
1644
 
1222
- if ( camera.isArrayCamera ) {
1645
+ const camera2 = cameras[ i ];
1223
1646
 
1224
- const cameras = camera.cameras;
1647
+ renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera2 );
1648
+
1649
+ }
1650
+
1651
+ }
1652
+
1653
+ if ( _renderBackground ) background.render( scene );
1225
1654
 
1226
1655
  for ( let i = 0, l = cameras.length; i < l; i ++ ) {
1227
1656
 
@@ -1233,13 +1662,17 @@ class WebGLRenderer {
1233
1662
 
1234
1663
  } else {
1235
1664
 
1665
+ if ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera );
1666
+
1667
+ if ( _renderBackground ) background.render( scene );
1668
+
1236
1669
  renderScene( currentRenderList, scene, camera );
1237
1670
 
1238
1671
  }
1239
1672
 
1240
1673
  //
1241
1674
 
1242
- if ( _currentRenderTarget !== null ) {
1675
+ if ( _currentRenderTarget !== null && _currentActiveMipmapLevel === 0 ) {
1243
1676
 
1244
1677
  // resolve multisample renderbuffers to a single-sample texture if necessary
1245
1678
 
@@ -1267,6 +1700,8 @@ class WebGLRenderer {
1267
1700
 
1268
1701
  currentRenderState = renderStateStack[ renderStateStack.length - 1 ];
1269
1702
 
1703
+ if ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, currentRenderState.state.camera );
1704
+
1270
1705
  } else {
1271
1706
 
1272
1707
  currentRenderState = null;
@@ -1319,7 +1754,7 @@ class WebGLRenderer {
1319
1754
 
1320
1755
  if ( sortObjects ) {
1321
1756
 
1322
- _vector3.setFromMatrixPosition( object.matrixWorld )
1757
+ _vector4.setFromMatrixPosition( object.matrixWorld )
1323
1758
  .applyMatrix4( _projScreenMatrix );
1324
1759
 
1325
1760
  }
@@ -1329,7 +1764,7 @@ class WebGLRenderer {
1329
1764
 
1330
1765
  if ( material.visible ) {
1331
1766
 
1332
- currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );
1767
+ currentRenderList.push( object, geometry, material, groupOrder, _vector4.z, null );
1333
1768
 
1334
1769
  }
1335
1770
 
@@ -1347,16 +1782,16 @@ class WebGLRenderer {
1347
1782
  if ( object.boundingSphere !== undefined ) {
1348
1783
 
1349
1784
  if ( object.boundingSphere === null ) object.computeBoundingSphere();
1350
- _vector3.copy( object.boundingSphere.center );
1785
+ _vector4.copy( object.boundingSphere.center );
1351
1786
 
1352
1787
  } else {
1353
1788
 
1354
1789
  if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();
1355
- _vector3.copy( geometry.boundingSphere.center );
1790
+ _vector4.copy( geometry.boundingSphere.center );
1356
1791
 
1357
1792
  }
1358
1793
 
1359
- _vector3
1794
+ _vector4
1360
1795
  .applyMatrix4( object.matrixWorld )
1361
1796
  .applyMatrix4( _projScreenMatrix );
1362
1797
 
@@ -1373,7 +1808,7 @@ class WebGLRenderer {
1373
1808
 
1374
1809
  if ( groupMaterial && groupMaterial.visible ) {
1375
1810
 
1376
- currentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );
1811
+ currentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector4.z, group );
1377
1812
 
1378
1813
  }
1379
1814
 
@@ -1381,7 +1816,7 @@ class WebGLRenderer {
1381
1816
 
1382
1817
  } else if ( material.visible ) {
1383
1818
 
1384
- currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );
1819
+ currentRenderList.push( object, geometry, material, groupOrder, _vector4.z, null );
1385
1820
 
1386
1821
  }
1387
1822
 
@@ -1403,16 +1838,12 @@ class WebGLRenderer {
1403
1838
 
1404
1839
  function renderScene( currentRenderList, scene, camera, viewport ) {
1405
1840
 
1406
- const opaqueObjects = currentRenderList.opaque;
1407
- const transmissiveObjects = currentRenderList.transmissive;
1408
- const transparentObjects = currentRenderList.transparent;
1841
+ const { opaque: opaqueObjects, transmissive: transmissiveObjects, transparent: transparentObjects } = currentRenderList;
1409
1842
 
1410
1843
  currentRenderState.setupLightsView( camera );
1411
1844
 
1412
1845
  if ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );
1413
1846
 
1414
- if ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera );
1415
-
1416
1847
  if ( viewport ) state.viewport( _currentViewport.copy( viewport ) );
1417
1848
 
1418
1849
  if ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );
@@ -1439,15 +1870,17 @@ class WebGLRenderer {
1439
1870
 
1440
1871
  }
1441
1872
 
1442
- const isWebGL2 = capabilities.isWebGL2;
1443
-
1444
- if ( _transmissionRenderTarget === null ) {
1873
+ if ( currentRenderState.state.transmissionRenderTarget[ camera.id ] === undefined ) {
1445
1874
 
1446
- _transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {
1875
+ currentRenderState.state.transmissionRenderTarget[ camera.id ] = new WebGLRenderTarget( 1, 1, {
1447
1876
  generateMipmaps: true,
1448
- type: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,
1877
+ type: ( extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' ) ) ? HalfFloatType : UnsignedByteType,
1449
1878
  minFilter: LinearMipmapLinearFilter,
1450
- samples: ( isWebGL2 ) ? 4 : 0
1879
+ samples: 4,
1880
+ stencilBuffer: stencil,
1881
+ resolveDepthBuffer: false,
1882
+ resolveStencilBuffer: false,
1883
+ colorSpace: ColorManagement.workingColorSpace,
1451
1884
  } );
1452
1885
 
1453
1886
  // debug
@@ -1462,22 +1895,18 @@ class WebGLRenderer {
1462
1895
 
1463
1896
  }
1464
1897
 
1465
- _this.getDrawingBufferSize( _vector2 );
1898
+ const transmissionRenderTarget = currentRenderState.state.transmissionRenderTarget[ camera.id ];
1466
1899
 
1467
- if ( isWebGL2 ) {
1468
-
1469
- _transmissionRenderTarget.setSize( _vector2.x, _vector2.y );
1470
-
1471
- } else {
1472
-
1473
- _transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );
1474
-
1475
- }
1900
+ const activeViewport = camera.viewport || _currentViewport;
1901
+ transmissionRenderTarget.setSize( activeViewport.z * _this.transmissionResolutionScale, activeViewport.w * _this.transmissionResolutionScale );
1476
1902
 
1477
1903
  //
1478
1904
 
1479
1905
  const currentRenderTarget = _this.getRenderTarget();
1480
- _this.setRenderTarget( _transmissionRenderTarget );
1906
+ const currentActiveCubeFace = _this.getActiveCubeFace();
1907
+ const currentActiveMipmapLevel = _this.getActiveMipmapLevel();
1908
+
1909
+ _this.setRenderTarget( transmissionRenderTarget );
1481
1910
 
1482
1911
  _this.getClearColor( _currentClearColor );
1483
1912
  _currentClearAlpha = _this.getClearAlpha();
@@ -1485,56 +1914,70 @@ class WebGLRenderer {
1485
1914
 
1486
1915
  _this.clear();
1487
1916
 
1917
+ if ( _renderBackground ) background.render( scene );
1918
+
1488
1919
  // Turn off the features which can affect the frag color for opaque objects pass.
1489
1920
  // Otherwise they are applied twice in opaque objects pass and transmission objects pass.
1490
1921
  const currentToneMapping = _this.toneMapping;
1491
1922
  _this.toneMapping = NoToneMapping;
1492
1923
 
1924
+ // Remove viewport from camera to avoid nested render calls resetting viewport to it (e.g Reflector).
1925
+ // Transmission render pass requires viewport to match the transmissionRenderTarget.
1926
+ const currentCameraViewport = camera.viewport;
1927
+ if ( camera.viewport !== undefined ) camera.viewport = undefined;
1928
+
1929
+ currentRenderState.setupLightsView( camera );
1930
+
1931
+ if ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );
1932
+
1493
1933
  renderObjects( opaqueObjects, scene, camera );
1494
1934
 
1495
- textures.updateMultisampleRenderTarget( _transmissionRenderTarget );
1496
- textures.updateRenderTargetMipmap( _transmissionRenderTarget );
1935
+ textures.updateMultisampleRenderTarget( transmissionRenderTarget );
1936
+ textures.updateRenderTargetMipmap( transmissionRenderTarget );
1497
1937
 
1498
- let renderTargetNeedsUpdate = false;
1938
+ if ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === false ) { // see #28131
1499
1939
 
1500
- for ( let i = 0, l = transmissiveObjects.length; i < l; i ++ ) {
1940
+ let renderTargetNeedsUpdate = false;
1501
1941
 
1502
- const renderItem = transmissiveObjects[ i ];
1942
+ for ( let i = 0, l = transmissiveObjects.length; i < l; i ++ ) {
1503
1943
 
1504
- const object = renderItem.object;
1505
- const geometry = renderItem.geometry;
1506
- const material = renderItem.material;
1507
- const group = renderItem.group;
1944
+ const renderItem = transmissiveObjects[ i ];
1508
1945
 
1509
- if ( material.side === DoubleSide && object.layers.test( camera.layers ) ) {
1946
+ const { object, geometry, material, group } = renderItem;
1510
1947
 
1511
- const currentSide = material.side;
1948
+ if ( material.side === DoubleSide && object.layers.test( camera.layers ) ) {
1512
1949
 
1513
- material.side = BackSide;
1514
- material.needsUpdate = true;
1950
+ const currentSide = material.side;
1515
1951
 
1516
- renderObject( object, scene, camera, geometry, material, group );
1952
+ material.side = BackSide;
1953
+ material.needsUpdate = true;
1954
+
1955
+ renderObject( object, scene, camera, geometry, material, group );
1517
1956
 
1518
- material.side = currentSide;
1519
- material.needsUpdate = true;
1957
+ material.side = currentSide;
1958
+ material.needsUpdate = true;
1520
1959
 
1521
- renderTargetNeedsUpdate = true;
1960
+ renderTargetNeedsUpdate = true;
1961
+
1962
+ }
1522
1963
 
1523
1964
  }
1524
1965
 
1525
- }
1966
+ if ( renderTargetNeedsUpdate === true ) {
1526
1967
 
1527
- if ( renderTargetNeedsUpdate === true ) {
1968
+ textures.updateMultisampleRenderTarget( transmissionRenderTarget );
1969
+ textures.updateRenderTargetMipmap( transmissionRenderTarget );
1528
1970
 
1529
- textures.updateMultisampleRenderTarget( _transmissionRenderTarget );
1530
- textures.updateRenderTargetMipmap( _transmissionRenderTarget );
1971
+ }
1531
1972
 
1532
1973
  }
1533
1974
 
1534
- _this.setRenderTarget( currentRenderTarget );
1975
+ _this.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );
1535
1976
 
1536
1977
  _this.setClearColor( _currentClearColor, _currentClearAlpha );
1537
1978
 
1979
+ if ( currentCameraViewport !== undefined ) camera.viewport = currentCameraViewport;
1980
+
1538
1981
  _this.toneMapping = currentToneMapping;
1539
1982
 
1540
1983
  }
@@ -1547,10 +1990,14 @@ class WebGLRenderer {
1547
1990
 
1548
1991
  const renderItem = renderList[ i ];
1549
1992
 
1550
- const object = renderItem.object;
1551
- const geometry = renderItem.geometry;
1552
- const material = overrideMaterial === null ? renderItem.material : overrideMaterial;
1553
- const group = renderItem.group;
1993
+ const { object, geometry, group } = renderItem;
1994
+ let material = renderItem.material;
1995
+
1996
+ if ( material.allowOverride === true && overrideMaterial !== null ) {
1997
+
1998
+ material = overrideMaterial;
1999
+
2000
+ }
1554
2001
 
1555
2002
  if ( object.layers.test( camera.layers ) ) {
1556
2003
 
@@ -1614,6 +2061,7 @@ class WebGLRenderer {
1614
2061
  materialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;
1615
2062
  materialProperties.fog = scene.fog;
1616
2063
  materialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );
2064
+ materialProperties.envMapRotation = ( materialProperties.environment !== null && material.envMap === null ) ? scene.environmentRotation : material.envMapRotation;
1617
2065
 
1618
2066
  if ( programs === undefined ) {
1619
2067
 
@@ -1644,8 +2092,6 @@ class WebGLRenderer {
1644
2092
 
1645
2093
  parameters.uniforms = programCache.getUniforms( material );
1646
2094
 
1647
- material.onBuild( object, parameters, _this );
1648
-
1649
2095
  material.onBeforeCompile( parameters, _this );
1650
2096
 
1651
2097
  program = programCache.acquireProgram( parameters, programCacheKey );
@@ -1724,8 +2170,10 @@ class WebGLRenderer {
1724
2170
 
1725
2171
  materialProperties.outputColorSpace = parameters.outputColorSpace;
1726
2172
  materialProperties.batching = parameters.batching;
2173
+ materialProperties.batchingColor = parameters.batchingColor;
1727
2174
  materialProperties.instancing = parameters.instancing;
1728
2175
  materialProperties.instancingColor = parameters.instancingColor;
2176
+ materialProperties.instancingMorph = parameters.instancingMorph;
1729
2177
  materialProperties.skinning = parameters.skinning;
1730
2178
  materialProperties.morphTargets = parameters.morphTargets;
1731
2179
  materialProperties.morphNormals = parameters.morphNormals;
@@ -1812,6 +2260,14 @@ class WebGLRenderer {
1812
2260
 
1813
2261
  needsProgramChange = true;
1814
2262
 
2263
+ } else if ( object.isBatchedMesh && materialProperties.batchingColor === true && object.colorTexture === null ) {
2264
+
2265
+ needsProgramChange = true;
2266
+
2267
+ } else if ( object.isBatchedMesh && materialProperties.batchingColor === false && object.colorTexture !== null ) {
2268
+
2269
+ needsProgramChange = true;
2270
+
1815
2271
  } else if ( object.isInstancedMesh && materialProperties.instancing === false ) {
1816
2272
 
1817
2273
  needsProgramChange = true;
@@ -1836,6 +2292,14 @@ class WebGLRenderer {
1836
2292
 
1837
2293
  needsProgramChange = true;
1838
2294
 
2295
+ } else if ( object.isInstancedMesh && materialProperties.instancingMorph === true && object.morphTexture === null ) {
2296
+
2297
+ needsProgramChange = true;
2298
+
2299
+ } else if ( object.isInstancedMesh && materialProperties.instancingMorph === false && object.morphTexture !== null ) {
2300
+
2301
+ needsProgramChange = true;
2302
+
1839
2303
  } else if ( materialProperties.envMap !== envMap ) {
1840
2304
 
1841
2305
  needsProgramChange = true;
@@ -1874,7 +2338,7 @@ class WebGLRenderer {
1874
2338
 
1875
2339
  needsProgramChange = true;
1876
2340
 
1877
- } else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {
2341
+ } else if ( materialProperties.morphTargetsCount !== morphTargetsCount ) {
1878
2342
 
1879
2343
  needsProgramChange = true;
1880
2344
 
@@ -1924,7 +2388,17 @@ class WebGLRenderer {
1924
2388
 
1925
2389
  // common camera uniforms
1926
2390
 
2391
+ const reversedDepthBuffer = state.buffers.depth.getReversed();
2392
+
2393
+ if ( reversedDepthBuffer && camera.reversedDepth !== true ) {
2394
+
2395
+ camera._reversedDepth = true;
2396
+ camera.updateProjectionMatrix();
2397
+
2398
+ }
2399
+
1927
2400
  p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );
2401
+
1928
2402
  p_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );
1929
2403
 
1930
2404
  const uCamPos = p_uniforms.map.cameraPosition;
@@ -1983,17 +2457,9 @@ class WebGLRenderer {
1983
2457
 
1984
2458
  if ( skeleton ) {
1985
2459
 
1986
- if ( capabilities.floatVertexTextures ) {
1987
-
1988
- if ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();
1989
-
1990
- p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );
1991
-
1992
- } else {
1993
-
1994
- console.warn( 'THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.' );
2460
+ if ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();
1995
2461
 
1996
- }
2462
+ p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );
1997
2463
 
1998
2464
  }
1999
2465
 
@@ -2004,11 +2470,21 @@ class WebGLRenderer {
2004
2470
  p_uniforms.setOptional( _gl, object, 'batchingTexture' );
2005
2471
  p_uniforms.setValue( _gl, 'batchingTexture', object._matricesTexture, textures );
2006
2472
 
2473
+ p_uniforms.setOptional( _gl, object, 'batchingIdTexture' );
2474
+ p_uniforms.setValue( _gl, 'batchingIdTexture', object._indirectTexture, textures );
2475
+
2476
+ p_uniforms.setOptional( _gl, object, 'batchingColorTexture' );
2477
+ if ( object._colorsTexture !== null ) {
2478
+
2479
+ p_uniforms.setValue( _gl, 'batchingColorTexture', object._colorsTexture, textures );
2480
+
2481
+ }
2482
+
2007
2483
  }
2008
2484
 
2009
2485
  const morphAttributes = geometry.morphAttributes;
2010
2486
 
2011
- if ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined && capabilities.isWebGL2 === true ) ) {
2487
+ if ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined ) ) {
2012
2488
 
2013
2489
  morphtargets.update( object, geometry, program );
2014
2490
 
@@ -2031,6 +2507,19 @@ class WebGLRenderer {
2031
2507
 
2032
2508
  }
2033
2509
 
2510
+ if ( material.isMeshStandardMaterial && material.envMap === null && scene.environment !== null ) {
2511
+
2512
+ m_uniforms.envMapIntensity.value = scene.environmentIntensity;
2513
+
2514
+ }
2515
+
2516
+ // Set DFG LUT for physically-based materials
2517
+ if ( m_uniforms.dfgLUT !== undefined ) {
2518
+
2519
+ m_uniforms.dfgLUT.value = getDFGLUT();
2520
+
2521
+ }
2522
+
2034
2523
  if ( refreshMaterial ) {
2035
2524
 
2036
2525
  p_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );
@@ -2058,7 +2547,7 @@ class WebGLRenderer {
2058
2547
 
2059
2548
  }
2060
2549
 
2061
- materials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget );
2550
+ materials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, currentRenderState.state.transmissionRenderTarget[ camera.id ] );
2062
2551
 
2063
2552
  WebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );
2064
2553
 
@@ -2091,18 +2580,10 @@ class WebGLRenderer {
2091
2580
 
2092
2581
  for ( let i = 0, l = groups.length; i < l; i ++ ) {
2093
2582
 
2094
- if ( capabilities.isWebGL2 ) {
2583
+ const group = groups[ i ];
2095
2584
 
2096
- const group = groups[ i ];
2097
-
2098
- uniformsGroups.update( group, program );
2099
- uniformsGroups.bind( group, program );
2100
-
2101
- } else {
2102
-
2103
- console.warn( 'THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.' );
2104
-
2105
- }
2585
+ uniformsGroups.update( group, program );
2586
+ uniformsGroups.bind( group, program );
2106
2587
 
2107
2588
  }
2108
2589
 
@@ -2138,18 +2619,34 @@ class WebGLRenderer {
2138
2619
 
2139
2620
  }
2140
2621
 
2622
+ /**
2623
+ * Returns the active cube face.
2624
+ *
2625
+ * @return {number} The active cube face.
2626
+ */
2141
2627
  this.getActiveCubeFace = function () {
2142
2628
 
2143
2629
  return _currentActiveCubeFace;
2144
2630
 
2145
2631
  };
2146
2632
 
2633
+ /**
2634
+ * Returns the active mipmap level.
2635
+ *
2636
+ * @return {number} The active mipmap level.
2637
+ */
2147
2638
  this.getActiveMipmapLevel = function () {
2148
2639
 
2149
2640
  return _currentActiveMipmapLevel;
2150
2641
 
2151
2642
  };
2152
2643
 
2644
+ /**
2645
+ * Returns the active render target.
2646
+ *
2647
+ * @return {?WebGLRenderTarget} The active render target. Returns `null` if no render target
2648
+ * is currently set.
2649
+ */
2153
2650
  this.getRenderTarget = function () {
2154
2651
 
2155
2652
  return _currentRenderTarget;
@@ -2158,30 +2655,21 @@ class WebGLRenderer {
2158
2655
 
2159
2656
  this.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {
2160
2657
 
2161
- properties.get( renderTarget.texture ).__webglTexture = colorTexture;
2162
- properties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;
2163
-
2164
2658
  const renderTargetProperties = properties.get( renderTarget );
2165
- renderTargetProperties.__hasExternalTextures = true;
2166
-
2167
- if ( renderTargetProperties.__hasExternalTextures ) {
2168
-
2169
- renderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;
2170
2659
 
2171
- if ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {
2660
+ renderTargetProperties.__autoAllocateDepthBuffer = renderTarget.resolveDepthBuffer === false;
2661
+ if ( renderTargetProperties.__autoAllocateDepthBuffer === false ) {
2172
2662
 
2173
- // The multisample_render_to_texture extension doesn't work properly if there
2174
- // are midframe flushes and an external depth buffer. Disable use of the extension.
2175
- if ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {
2663
+ // The multisample_render_to_texture extension doesn't work properly if there
2664
+ // are midframe flushes and an external depth buffer. Disable use of the extension.
2665
+ renderTargetProperties.__useRenderToTexture = false;
2176
2666
 
2177
- console.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );
2178
- renderTargetProperties.__useRenderToTexture = false;
2179
-
2180
- }
2667
+ }
2181
2668
 
2182
- }
2669
+ properties.get( renderTarget.texture ).__webglTexture = colorTexture;
2670
+ properties.get( renderTarget.depthTexture ).__webglTexture = renderTargetProperties.__autoAllocateDepthBuffer ? undefined : depthTexture;
2183
2671
 
2184
- }
2672
+ renderTargetProperties.__hasExternalTextures = true;
2185
2673
 
2186
2674
  };
2187
2675
 
@@ -2193,6 +2681,17 @@ class WebGLRenderer {
2193
2681
 
2194
2682
  };
2195
2683
 
2684
+ const _scratchFrameBuffer = _gl.createFramebuffer();
2685
+
2686
+ /**
2687
+ * Sets the active rendertarget.
2688
+ *
2689
+ * @param {?WebGLRenderTarget} renderTarget - The render target to set. When `null` is given,
2690
+ * the canvas is set as the active render target instead.
2691
+ * @param {number} [activeCubeFace=0] - The active cube face when using a cube render target.
2692
+ * Indicates the z layer to render in to when using 3D or array render targets.
2693
+ * @param {number} [activeMipmapLevel=0] - The active mipmap level.
2694
+ */
2196
2695
  this.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {
2197
2696
 
2198
2697
  _currentRenderTarget = renderTarget;
@@ -2223,6 +2722,28 @@ class WebGLRenderer {
2223
2722
  // Color and depth texture must be rebound in order for the swapchain to update.
2224
2723
  textures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );
2225
2724
 
2725
+ } else if ( renderTarget.depthBuffer ) {
2726
+
2727
+ // check if the depth texture is already bound to the frame buffer and that it's been initialized
2728
+ const depthTexture = renderTarget.depthTexture;
2729
+ if ( renderTargetProperties.__boundDepthTexture !== depthTexture ) {
2730
+
2731
+ // check if the depth texture is compatible
2732
+ if (
2733
+ depthTexture !== null &&
2734
+ properties.has( depthTexture ) &&
2735
+ ( renderTarget.width !== depthTexture.image.width || renderTarget.height !== depthTexture.image.height )
2736
+ ) {
2737
+
2738
+ throw new Error( 'WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.' );
2739
+
2740
+ }
2741
+
2742
+ // Swap the depth buffer to the currently attached one
2743
+ textures.setupDepthRenderbuffer( renderTarget );
2744
+
2745
+ }
2746
+
2226
2747
  }
2227
2748
 
2228
2749
  const texture = renderTarget.texture;
@@ -2249,7 +2770,7 @@ class WebGLRenderer {
2249
2770
 
2250
2771
  isCube = true;
2251
2772
 
2252
- } else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {
2773
+ } else if ( ( renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {
2253
2774
 
2254
2775
  framebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;
2255
2776
 
@@ -2279,9 +2800,17 @@ class WebGLRenderer {
2279
2800
 
2280
2801
  }
2281
2802
 
2803
+ // Use a scratch frame buffer if rendering to a mip level to avoid depth buffers
2804
+ // being bound that are different sizes.
2805
+ if ( activeMipmapLevel !== 0 ) {
2806
+
2807
+ framebuffer = _scratchFrameBuffer;
2808
+
2809
+ }
2810
+
2282
2811
  const framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
2283
2812
 
2284
- if ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {
2813
+ if ( framebufferBound && useDefaultFramebuffer ) {
2285
2814
 
2286
2815
  state.drawBuffers( renderTarget, framebuffer );
2287
2816
 
@@ -2298,9 +2827,22 @@ class WebGLRenderer {
2298
2827
 
2299
2828
  } else if ( isRenderTarget3D ) {
2300
2829
 
2830
+ const layer = activeCubeFace;
2831
+
2832
+ for ( let i = 0; i < renderTarget.textures.length; i ++ ) {
2833
+
2834
+ const textureProperties = properties.get( renderTarget.textures[ i ] );
2835
+
2836
+ _gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, textureProperties.__webglTexture, activeMipmapLevel, layer );
2837
+
2838
+ }
2839
+
2840
+ } else if ( renderTarget !== null && activeMipmapLevel !== 0 ) {
2841
+
2842
+ // Only bind the frame buffer if we are using a scratch frame buffer to render to a mipmap.
2843
+ // If we rebind the texture when using a multi sample buffer then an error about inconsistent samples will be thrown.
2301
2844
  const textureProperties = properties.get( renderTarget.texture );
2302
- const layer = activeCubeFace || 0;
2303
- _gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );
2845
+ _gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, textureProperties.__webglTexture, activeMipmapLevel );
2304
2846
 
2305
2847
  }
2306
2848
 
@@ -2308,11 +2850,23 @@ class WebGLRenderer {
2308
2850
 
2309
2851
  };
2310
2852
 
2311
- this.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {
2853
+ /**
2854
+ * Reads the pixel data from the given render target into the given buffer.
2855
+ *
2856
+ * @param {WebGLRenderTarget} renderTarget - The render target to read from.
2857
+ * @param {number} x - The `x` coordinate of the copy region's origin.
2858
+ * @param {number} y - The `y` coordinate of the copy region's origin.
2859
+ * @param {number} width - The width of the copy region.
2860
+ * @param {number} height - The height of the copy region.
2861
+ * @param {TypedArray} buffer - The result buffer.
2862
+ * @param {number} [activeCubeFaceIndex] - The active cube face index.
2863
+ * @param {number} [textureIndex=0] - The texture index of an MRT render target.
2864
+ */
2865
+ this.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex, textureIndex = 0 ) {
2312
2866
 
2313
2867
  if ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {
2314
2868
 
2315
- console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );
2869
+ error( 'WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );
2316
2870
  return;
2317
2871
 
2318
2872
  }
@@ -2331,24 +2885,20 @@ class WebGLRenderer {
2331
2885
 
2332
2886
  try {
2333
2887
 
2334
- const texture = renderTarget.texture;
2888
+ const texture = renderTarget.textures[ textureIndex ];
2335
2889
  const textureFormat = texture.format;
2336
2890
  const textureType = texture.type;
2337
2891
 
2338
- if ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {
2892
+ if ( ! capabilities.textureFormatReadable( textureFormat ) ) {
2339
2893
 
2340
- console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );
2894
+ error( 'WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );
2341
2895
  return;
2342
2896
 
2343
2897
  }
2344
2898
 
2345
- const halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );
2899
+ if ( ! capabilities.textureTypeReadable( textureType ) ) {
2346
2900
 
2347
- if ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // Edge and Chrome Mac < 52 (#9513)
2348
- ! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox
2349
- ! halfFloatSupportedByExt ) {
2350
-
2351
- console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );
2901
+ error( 'WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );
2352
2902
  return;
2353
2903
 
2354
2904
  }
@@ -2357,6 +2907,10 @@ class WebGLRenderer {
2357
2907
 
2358
2908
  if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {
2359
2909
 
2910
+ // when using MRT, select the correct color buffer for the subsequent read command
2911
+
2912
+ if ( renderTarget.textures.length > 1 ) _gl.readBuffer( _gl.COLOR_ATTACHMENT0 + textureIndex );
2913
+
2360
2914
  _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );
2361
2915
 
2362
2916
  }
@@ -2374,72 +2928,213 @@ class WebGLRenderer {
2374
2928
 
2375
2929
  };
2376
2930
 
2377
- this.copyFramebufferToTexture = function ( position, texture, level = 0 ) {
2931
+ /**
2932
+ * Asynchronous, non-blocking version of {@link WebGLRenderer#readRenderTargetPixels}.
2933
+ *
2934
+ * It is recommended to use this version of `readRenderTargetPixels()` whenever possible.
2935
+ *
2936
+ * @async
2937
+ * @param {WebGLRenderTarget} renderTarget - The render target to read from.
2938
+ * @param {number} x - The `x` coordinate of the copy region's origin.
2939
+ * @param {number} y - The `y` coordinate of the copy region's origin.
2940
+ * @param {number} width - The width of the copy region.
2941
+ * @param {number} height - The height of the copy region.
2942
+ * @param {TypedArray} buffer - The result buffer.
2943
+ * @param {number} [activeCubeFaceIndex] - The active cube face index.
2944
+ * @param {number} [textureIndex=0] - The texture index of an MRT render target.
2945
+ * @return {Promise<TypedArray>} A Promise that resolves when the read has been finished. The resolve provides the read data as a typed array.
2946
+ */
2947
+ this.readRenderTargetPixelsAsync = async function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex, textureIndex = 0 ) {
2948
+
2949
+ if ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {
2950
+
2951
+ throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );
2952
+
2953
+ }
2954
+
2955
+ let framebuffer = properties.get( renderTarget ).__webglFramebuffer;
2956
+ if ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {
2957
+
2958
+ framebuffer = framebuffer[ activeCubeFaceIndex ];
2959
+
2960
+ }
2961
+
2962
+ if ( framebuffer ) {
2963
+
2964
+ // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)
2965
+ if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {
2966
+
2967
+ // set the active frame buffer to the one we want to read
2968
+ state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
2969
+
2970
+ const texture = renderTarget.textures[ textureIndex ];
2971
+ const textureFormat = texture.format;
2972
+ const textureType = texture.type;
2973
+
2974
+ if ( ! capabilities.textureFormatReadable( textureFormat ) ) {
2975
+
2976
+ throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.' );
2977
+
2978
+ }
2979
+
2980
+ if ( ! capabilities.textureTypeReadable( textureType ) ) {
2981
+
2982
+ throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.' );
2983
+
2984
+ }
2985
+
2986
+ const glBuffer = _gl.createBuffer();
2987
+ _gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer );
2988
+ _gl.bufferData( _gl.PIXEL_PACK_BUFFER, buffer.byteLength, _gl.STREAM_READ );
2989
+
2990
+ // when using MRT, select the correct color buffer for the subsequent read command
2991
+
2992
+ if ( renderTarget.textures.length > 1 ) _gl.readBuffer( _gl.COLOR_ATTACHMENT0 + textureIndex );
2993
+
2994
+ _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), 0 );
2995
+
2996
+ // reset the frame buffer to the currently set buffer before waiting
2997
+ const currFramebuffer = _currentRenderTarget !== null ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;
2998
+ state.bindFramebuffer( _gl.FRAMEBUFFER, currFramebuffer );
2999
+
3000
+ // check if the commands have finished every 8 ms
3001
+ const sync = _gl.fenceSync( _gl.SYNC_GPU_COMMANDS_COMPLETE, 0 );
3002
+
3003
+ _gl.flush();
3004
+
3005
+ await probeAsync( _gl, sync, 4 );
3006
+
3007
+ // read the data and delete the buffer
3008
+ _gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer );
3009
+ _gl.getBufferSubData( _gl.PIXEL_PACK_BUFFER, 0, buffer );
3010
+ _gl.deleteBuffer( glBuffer );
3011
+ _gl.deleteSync( sync );
3012
+
3013
+ return buffer;
3014
+
3015
+ } else {
3016
+
3017
+ throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.' );
3018
+
3019
+ }
3020
+
3021
+ }
3022
+
3023
+ };
3024
+
3025
+ /**
3026
+ * Copies pixels from the current bound framebuffer into the given texture.
3027
+ *
3028
+ * @param {FramebufferTexture} texture - The texture.
3029
+ * @param {?Vector2} [position=null] - The start position of the copy operation.
3030
+ * @param {number} [level=0] - The mip level. The default represents the base mip.
3031
+ */
3032
+ this.copyFramebufferToTexture = function ( texture, position = null, level = 0 ) {
2378
3033
 
2379
3034
  const levelScale = Math.pow( 2, - level );
2380
3035
  const width = Math.floor( texture.image.width * levelScale );
2381
3036
  const height = Math.floor( texture.image.height * levelScale );
2382
3037
 
3038
+ const x = position !== null ? position.x : 0;
3039
+ const y = position !== null ? position.y : 0;
3040
+
2383
3041
  textures.setTexture2D( texture, 0 );
2384
3042
 
2385
- _gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, position.x, position.y, width, height );
3043
+ _gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, x, y, width, height );
2386
3044
 
2387
3045
  state.unbindTexture();
2388
3046
 
2389
3047
  };
2390
3048
 
2391
- this.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {
3049
+ const _srcFramebuffer = _gl.createFramebuffer();
3050
+ const _dstFramebuffer = _gl.createFramebuffer();
3051
+
3052
+ /**
3053
+ * Copies data of the given source texture into a destination texture.
3054
+ *
3055
+ * When using render target textures as `srcTexture` and `dstTexture`, you must make sure both render targets are initialized
3056
+ * {@link WebGLRenderer#initRenderTarget}.
3057
+ *
3058
+ * @param {Texture} srcTexture - The source texture.
3059
+ * @param {Texture} dstTexture - The destination texture.
3060
+ * @param {?(Box2|Box3)} [srcRegion=null] - A bounding box which describes the source region. Can be two or three-dimensional.
3061
+ * @param {?(Vector2|Vector3)} [dstPosition=null] - A vector that represents the origin of the destination region. Can be two or three-dimensional.
3062
+ * @param {number} [srcLevel=0] - The source mipmap level to copy.
3063
+ * @param {?number} [dstLevel=null] - The destination mipmap level.
3064
+ */
3065
+ this.copyTextureToTexture = function ( srcTexture, dstTexture, srcRegion = null, dstPosition = null, srcLevel = 0, dstLevel = null ) {
3066
+
3067
+ // support the previous signature with just a single dst mipmap level
3068
+ if ( dstLevel === null ) {
3069
+
3070
+ if ( srcLevel !== 0 ) {
3071
+
3072
+ // @deprecated, r171
3073
+ warnOnce( 'WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels.' );
3074
+ dstLevel = srcLevel;
3075
+ srcLevel = 0;
2392
3076
 
2393
- const width = srcTexture.image.width;
2394
- const height = srcTexture.image.height;
2395
- const glFormat = utils.convert( dstTexture.format );
2396
- const glType = utils.convert( dstTexture.type );
3077
+ } else {
2397
3078
 
2398
- textures.setTexture2D( dstTexture, 0 );
3079
+ dstLevel = 0;
2399
3080
 
2400
- // As another texture upload may have changed pixelStorei
2401
- // parameters, make sure they are correct for the dstTexture
2402
- _gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );
2403
- _gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );
2404
- _gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );
3081
+ }
3082
+
3083
+ }
2405
3084
 
2406
- if ( srcTexture.isDataTexture ) {
3085
+ // gather the necessary dimensions to copy
3086
+ let width, height, depth, minX, minY, minZ;
3087
+ let dstX, dstY, dstZ;
3088
+ const image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ dstLevel ] : srcTexture.image;
3089
+ if ( srcRegion !== null ) {
2407
3090
 
2408
- _gl.texSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );
3091
+ width = srcRegion.max.x - srcRegion.min.x;
3092
+ height = srcRegion.max.y - srcRegion.min.y;
3093
+ depth = srcRegion.isBox3 ? srcRegion.max.z - srcRegion.min.z : 1;
3094
+ minX = srcRegion.min.x;
3095
+ minY = srcRegion.min.y;
3096
+ minZ = srcRegion.isBox3 ? srcRegion.min.z : 0;
2409
3097
 
2410
3098
  } else {
2411
3099
 
2412
- if ( srcTexture.isCompressedTexture ) {
3100
+ const levelScale = Math.pow( 2, - srcLevel );
3101
+ width = Math.floor( image.width * levelScale );
3102
+ height = Math.floor( image.height * levelScale );
3103
+ if ( srcTexture.isDataArrayTexture ) {
2413
3104
 
2414
- _gl.compressedTexSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );
3105
+ depth = image.depth;
3106
+
3107
+ } else if ( srcTexture.isData3DTexture ) {
3108
+
3109
+ depth = Math.floor( image.depth * levelScale );
2415
3110
 
2416
3111
  } else {
2417
3112
 
2418
- _gl.texSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, glFormat, glType, srcTexture.image );
3113
+ depth = 1;
2419
3114
 
2420
3115
  }
2421
3116
 
2422
- }
3117
+ minX = 0;
3118
+ minY = 0;
3119
+ minZ = 0;
2423
3120
 
2424
- // Generate mipmaps only when copying level 0
2425
- if ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( _gl.TEXTURE_2D );
3121
+ }
2426
3122
 
2427
- state.unbindTexture();
3123
+ if ( dstPosition !== null ) {
2428
3124
 
2429
- };
3125
+ dstX = dstPosition.x;
3126
+ dstY = dstPosition.y;
3127
+ dstZ = dstPosition.z;
2430
3128
 
2431
- this.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {
3129
+ } else {
2432
3130
 
2433
- if ( _this.isWebGL1Renderer ) {
2434
-
2435
- console.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.' );
2436
- return;
3131
+ dstX = 0;
3132
+ dstY = 0;
3133
+ dstZ = 0;
2437
3134
 
2438
3135
  }
2439
3136
 
2440
- const width = sourceBox.max.x - sourceBox.min.x + 1;
2441
- const height = sourceBox.max.y - sourceBox.min.y + 1;
2442
- const depth = sourceBox.max.z - sourceBox.min.z + 1;
3137
+ // Set up the destination target
2443
3138
  const glFormat = utils.convert( dstTexture.format );
2444
3139
  const glType = utils.convert( dstTexture.type );
2445
3140
  let glTarget;
@@ -2456,8 +3151,8 @@ class WebGLRenderer {
2456
3151
 
2457
3152
  } else {
2458
3153
 
2459
- console.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );
2460
- return;
3154
+ textures.setTexture2D( dstTexture, 0 );
3155
+ glTarget = _gl.TEXTURE_2D;
2461
3156
 
2462
3157
  }
2463
3158
 
@@ -2465,52 +3160,183 @@ class WebGLRenderer {
2465
3160
  _gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );
2466
3161
  _gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );
2467
3162
 
2468
- const unpackRowLen = _gl.getParameter( _gl.UNPACK_ROW_LENGTH );
2469
- const unpackImageHeight = _gl.getParameter( _gl.UNPACK_IMAGE_HEIGHT );
2470
- const unpackSkipPixels = _gl.getParameter( _gl.UNPACK_SKIP_PIXELS );
2471
- const unpackSkipRows = _gl.getParameter( _gl.UNPACK_SKIP_ROWS );
2472
- const unpackSkipImages = _gl.getParameter( _gl.UNPACK_SKIP_IMAGES );
2473
-
2474
- const image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ level ] : srcTexture.image;
3163
+ // used for copying data from cpu
3164
+ const currentUnpackRowLen = _gl.getParameter( _gl.UNPACK_ROW_LENGTH );
3165
+ const currentUnpackImageHeight = _gl.getParameter( _gl.UNPACK_IMAGE_HEIGHT );
3166
+ const currentUnpackSkipPixels = _gl.getParameter( _gl.UNPACK_SKIP_PIXELS );
3167
+ const currentUnpackSkipRows = _gl.getParameter( _gl.UNPACK_SKIP_ROWS );
3168
+ const currentUnpackSkipImages = _gl.getParameter( _gl.UNPACK_SKIP_IMAGES );
2475
3169
 
2476
3170
  _gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width );
2477
3171
  _gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, image.height );
2478
- _gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, sourceBox.min.x );
2479
- _gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, sourceBox.min.y );
2480
- _gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, sourceBox.min.z );
3172
+ _gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, minX );
3173
+ _gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, minY );
3174
+ _gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, minZ );
3175
+
3176
+ // set up the src texture
3177
+ const isSrc3D = srcTexture.isDataArrayTexture || srcTexture.isData3DTexture;
3178
+ const isDst3D = dstTexture.isDataArrayTexture || dstTexture.isData3DTexture;
3179
+ if ( srcTexture.isDepthTexture ) {
3180
+
3181
+ const srcTextureProperties = properties.get( srcTexture );
3182
+ const dstTextureProperties = properties.get( dstTexture );
3183
+ const srcRenderTargetProperties = properties.get( srcTextureProperties.__renderTarget );
3184
+ const dstRenderTargetProperties = properties.get( dstTextureProperties.__renderTarget );
3185
+ state.bindFramebuffer( _gl.READ_FRAMEBUFFER, srcRenderTargetProperties.__webglFramebuffer );
3186
+ state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, dstRenderTargetProperties.__webglFramebuffer );
3187
+
3188
+ for ( let i = 0; i < depth; i ++ ) {
2481
3189
 
2482
- if ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {
3190
+ // if the source or destination are a 3d target then a layer needs to be bound
3191
+ if ( isSrc3D ) {
3192
+
3193
+ _gl.framebufferTextureLayer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, properties.get( srcTexture ).__webglTexture, srcLevel, minZ + i );
3194
+ _gl.framebufferTextureLayer( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, properties.get( dstTexture ).__webglTexture, dstLevel, dstZ + i );
3195
+
3196
+ }
3197
+
3198
+ _gl.blitFramebuffer( minX, minY, width, height, dstX, dstY, width, height, _gl.DEPTH_BUFFER_BIT, _gl.NEAREST );
3199
+
3200
+ }
2483
3201
 
2484
- _gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );
3202
+ state.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );
3203
+ state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );
3204
+
3205
+ } else if ( srcLevel !== 0 || srcTexture.isRenderTargetTexture || properties.has( srcTexture ) ) {
3206
+
3207
+ // get the appropriate frame buffers
3208
+ const srcTextureProperties = properties.get( srcTexture );
3209
+ const dstTextureProperties = properties.get( dstTexture );
3210
+
3211
+ // bind the frame buffer targets
3212
+ state.bindFramebuffer( _gl.READ_FRAMEBUFFER, _srcFramebuffer );
3213
+ state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, _dstFramebuffer );
3214
+
3215
+ for ( let i = 0; i < depth; i ++ ) {
3216
+
3217
+ // assign the correct layers and mip maps to the frame buffers
3218
+ if ( isSrc3D ) {
3219
+
3220
+ _gl.framebufferTextureLayer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, srcTextureProperties.__webglTexture, srcLevel, minZ + i );
3221
+
3222
+ } else {
3223
+
3224
+ _gl.framebufferTexture2D( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, srcTextureProperties.__webglTexture, srcLevel );
3225
+
3226
+ }
3227
+
3228
+ if ( isDst3D ) {
3229
+
3230
+ _gl.framebufferTextureLayer( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, dstTextureProperties.__webglTexture, dstLevel, dstZ + i );
3231
+
3232
+ } else {
3233
+
3234
+ _gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, dstTextureProperties.__webglTexture, dstLevel );
3235
+
3236
+ }
3237
+
3238
+ // copy the data using the fastest function that can achieve the copy
3239
+ if ( srcLevel !== 0 ) {
3240
+
3241
+ _gl.blitFramebuffer( minX, minY, width, height, dstX, dstY, width, height, _gl.COLOR_BUFFER_BIT, _gl.NEAREST );
3242
+
3243
+ } else if ( isDst3D ) {
3244
+
3245
+ _gl.copyTexSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ + i, minX, minY, width, height );
3246
+
3247
+ } else {
3248
+
3249
+ _gl.copyTexSubImage2D( glTarget, dstLevel, dstX, dstY, minX, minY, width, height );
3250
+
3251
+ }
3252
+
3253
+ }
3254
+
3255
+ // unbind read, draw buffers
3256
+ state.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );
3257
+ state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );
2485
3258
 
2486
3259
  } else {
2487
3260
 
2488
- if ( srcTexture.isCompressedArrayTexture ) {
3261
+ if ( isDst3D ) {
3262
+
3263
+ // copy data into the 3d texture
3264
+ if ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {
3265
+
3266
+ _gl.texSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ, width, height, depth, glFormat, glType, image.data );
3267
+
3268
+ } else if ( dstTexture.isCompressedArrayTexture ) {
3269
+
3270
+ _gl.compressedTexSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ, width, height, depth, glFormat, image.data );
3271
+
3272
+ } else {
3273
+
3274
+ _gl.texSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ, width, height, depth, glFormat, glType, image );
2489
3275
 
2490
- console.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );
2491
- _gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );
3276
+ }
2492
3277
 
2493
3278
  } else {
2494
3279
 
2495
- _gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );
3280
+ // copy data into the 2d texture
3281
+ if ( srcTexture.isDataTexture ) {
3282
+
3283
+ _gl.texSubImage2D( _gl.TEXTURE_2D, dstLevel, dstX, dstY, width, height, glFormat, glType, image.data );
3284
+
3285
+ } else if ( srcTexture.isCompressedTexture ) {
3286
+
3287
+ _gl.compressedTexSubImage2D( _gl.TEXTURE_2D, dstLevel, dstX, dstY, image.width, image.height, glFormat, image.data );
3288
+
3289
+ } else {
3290
+
3291
+ _gl.texSubImage2D( _gl.TEXTURE_2D, dstLevel, dstX, dstY, width, height, glFormat, glType, image );
3292
+
3293
+ }
2496
3294
 
2497
3295
  }
2498
3296
 
2499
3297
  }
2500
3298
 
2501
- _gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, unpackRowLen );
2502
- _gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, unpackImageHeight );
2503
- _gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, unpackSkipPixels );
2504
- _gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, unpackSkipRows );
2505
- _gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, unpackSkipImages );
3299
+ // reset values
3300
+ _gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, currentUnpackRowLen );
3301
+ _gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, currentUnpackImageHeight );
3302
+ _gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, currentUnpackSkipPixels );
3303
+ _gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, currentUnpackSkipRows );
3304
+ _gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, currentUnpackSkipImages );
2506
3305
 
2507
3306
  // Generate mipmaps only when copying level 0
2508
- if ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );
3307
+ if ( dstLevel === 0 && dstTexture.generateMipmaps ) {
3308
+
3309
+ _gl.generateMipmap( glTarget );
3310
+
3311
+ }
2509
3312
 
2510
3313
  state.unbindTexture();
2511
3314
 
2512
3315
  };
2513
3316
 
3317
+ /**
3318
+ * Initializes the given WebGLRenderTarget memory. Useful for initializing a render target so data
3319
+ * can be copied into it using {@link WebGLRenderer#copyTextureToTexture} before it has been
3320
+ * rendered to.
3321
+ *
3322
+ * @param {WebGLRenderTarget} target - The render target.
3323
+ */
3324
+ this.initRenderTarget = function ( target ) {
3325
+
3326
+ if ( properties.get( target ).__webglFramebuffer === undefined ) {
3327
+
3328
+ textures.setupRenderTarget( target );
3329
+
3330
+ }
3331
+
3332
+ };
3333
+
3334
+ /**
3335
+ * Initializes the given texture. Useful for preloading a texture rather than waiting until first
3336
+ * render (which can cause noticeable lags due to decode and GPU upload overhead).
3337
+ *
3338
+ * @param {Texture} texture - The texture.
3339
+ */
2514
3340
  this.initTexture = function ( texture ) {
2515
3341
 
2516
3342
  if ( texture.isCubeTexture ) {
@@ -2535,6 +3361,11 @@ class WebGLRenderer {
2535
3361
 
2536
3362
  };
2537
3363
 
3364
+ /**
3365
+ * Can be used to reset the internal WebGL state. This method is mostly
3366
+ * relevant for applications which share a single WebGL context across
3367
+ * multiple WebGL libraries.
3368
+ */
2538
3369
  this.resetState = function () {
2539
3370
 
2540
3371
  _currentActiveCubeFace = 0;
@@ -2554,12 +3385,27 @@ class WebGLRenderer {
2554
3385
 
2555
3386
  }
2556
3387
 
3388
+ /**
3389
+ * Defines the coordinate system of the renderer.
3390
+ *
3391
+ * In `WebGLRenderer`, the value is always `WebGLCoordinateSystem`.
3392
+ *
3393
+ * @type {WebGLCoordinateSystem|WebGPUCoordinateSystem}
3394
+ * @default WebGLCoordinateSystem
3395
+ * @readonly
3396
+ */
2557
3397
  get coordinateSystem() {
2558
3398
 
2559
3399
  return WebGLCoordinateSystem;
2560
3400
 
2561
3401
  }
2562
3402
 
3403
+ /**
3404
+ * Defines the output color space of the renderer.
3405
+ *
3406
+ * @type {SRGBColorSpace|LinearSRGBColorSpace}
3407
+ * @default SRGBColorSpace
3408
+ */
2563
3409
  get outputColorSpace() {
2564
3410
 
2565
3411
  return this._outputColorSpace;
@@ -2571,40 +3417,98 @@ class WebGLRenderer {
2571
3417
  this._outputColorSpace = colorSpace;
2572
3418
 
2573
3419
  const gl = this.getContext();
2574
- gl.drawingBufferColorSpace = colorSpace === DisplayP3ColorSpace ? 'display-p3' : 'srgb';
2575
- gl.unpackColorSpace = ColorManagement.workingColorSpace === LinearDisplayP3ColorSpace ? 'display-p3' : 'srgb';
2576
-
2577
- }
2578
-
2579
- get outputEncoding() { // @deprecated, r152
2580
-
2581
- console.warn( 'THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.' );
2582
- return this.outputColorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding;
2583
-
2584
- }
2585
-
2586
- set outputEncoding( encoding ) { // @deprecated, r152
2587
-
2588
- console.warn( 'THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.' );
2589
- this.outputColorSpace = encoding === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;
2590
-
2591
- }
2592
-
2593
- get useLegacyLights() { // @deprecated, r155
2594
-
2595
- console.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );
2596
- return this._useLegacyLights;
2597
-
2598
- }
2599
-
2600
- set useLegacyLights( value ) { // @deprecated, r155
2601
-
2602
- console.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );
2603
- this._useLegacyLights = value;
3420
+ gl.drawingBufferColorSpace = ColorManagement._getDrawingBufferColorSpace( colorSpace );
3421
+ gl.unpackColorSpace = ColorManagement._getUnpackColorSpace();
2604
3422
 
2605
3423
  }
2606
3424
 
2607
3425
  }
2608
3426
 
3427
+ // JSDoc
3428
+
3429
+ /**
3430
+ * WebGLRenderer options.
3431
+ *
3432
+ * @typedef {Object} WebGLRenderer~Options
3433
+ * @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.
3434
+ * @property {WebGL2RenderingContext} [context=null] - Can be used to attach an existing rendering context to this renderer.
3435
+ * @property {('highp'|'mediump'|'lowp')} [precision='highp'] - The default shader precision. Uses `highp` if supported by the device.
3436
+ * @property {boolean} [alpha=false] - Controls the default clear alpha value. When set to`true`, the value is `0`. Otherwise it's `1`.
3437
+ * @property {boolean} [premultipliedAlpha=true] Whether the renderer will assume colors have premultiplied alpha or not.
3438
+ * @property {boolean} [antialias=false] Whether to use the default MSAA or not.
3439
+ * @property {boolean} [stencil=false] Whether the drawing buffer has a stencil buffer of at least 8 bits or not.
3440
+ * @property {boolean} [preserveDrawingBuffer=false] Whether to preserve the buffer until manually cleared or overwritten.
3441
+ * @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.
3442
+ * @property {boolean} [failIfMajorPerformanceCaveat=false] Whether the renderer creation will fail upon low performance is detected.
3443
+ * @property {boolean} [depth=true] Whether the drawing buffer has a depth buffer of at least 16 bits.
3444
+ * @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.
3445
+ * Note that this setting uses `gl_FragDepth` if available which disables the Early Fragment Test optimization and can cause a decrease in performance.
3446
+ * @property {boolean} [reversedDepthBuffer=false] Whether to use a reverse depth buffer. Requires the `EXT_clip_control` extension.
3447
+ * This is a more faster and accurate version than logarithmic depth buffer.
3448
+ **/
3449
+
3450
+ /**
3451
+ * WebGLRenderer Capabilities.
3452
+ *
3453
+ * @typedef {Object} WebGLRenderer~Capabilities
3454
+ * @property {Function} getMaxAnisotropy - Returns the maximum available anisotropy.
3455
+ * @property {Function} getMaxPrecision - Returns the maximum available precision for vertex and fragment shaders.
3456
+ * @property {boolean} logarithmicDepthBuffer - `true` if `logarithmicDepthBuffer` was set to `true` in the constructor.
3457
+ * @property {number} maxAttributes - The number of shader attributes that can be used by the vertex shader.
3458
+ * @property {number} maxCubemapSize - Maximum height * width of cube map textures that a shader can use.
3459
+ * @property {number} maxFragmentUniforms - The number of uniforms that can be used by a fragment shader.
3460
+ * @property {number} maxSamples - Maximum number of samples in context of Multisample anti-aliasing (MSAA).
3461
+ * @property {number} maxTextures - The maximum number of textures that can be used by a shader.
3462
+ * @property {number} maxTextureSize - Maximum height * width of a texture that a shader use.
3463
+ * @property {number} maxVaryings - The number of varying vectors that can used by shaders.
3464
+ * @property {number} maxVertexTextures - The number of textures that can be used in a vertex shader.
3465
+ * @property {number} maxVertexUniforms - The maximum number of uniforms that can be used in a vertex shader.
3466
+ * @property {string} precision - The shader precision currently being used by the renderer.
3467
+ * @property {boolean} reversedDepthBuffer - `true` if `reversedDepthBuffer` was set to `true` in the constructor
3468
+ * and the rendering context supports `EXT_clip_control`.
3469
+ * @property {boolean} vertexTextures - `true` if vertex textures can be used.
3470
+ **/
3471
+
3472
+ /**
3473
+ * WebGLRenderer Info Memory
3474
+ *
3475
+ * @typedef {Object} WebGLRenderer~InfoMemory
3476
+ * @property {number} geometries - The number of active geometries.
3477
+ * @property {number} textures - The number of active textures.
3478
+ **/
3479
+
3480
+ /**
3481
+ * WebGLRenderer Info Render
3482
+ *
3483
+ * @typedef {Object} WebGLRenderer~InfoRender
3484
+ * @property {number} frame - The frame ID.
3485
+ * @property {number} calls - The number of draw calls per frame.
3486
+ * @property {number} triangles - The number of rendered triangles primitives per frame.
3487
+ * @property {number} points - The number of rendered points primitives per frame.
3488
+ * @property {number} lines - The number of rendered lines primitives per frame.
3489
+ **/
3490
+
3491
+ /**
3492
+ * WebGLRenderer Info
3493
+ *
3494
+ * @typedef {Object} WebGLRenderer~Info
3495
+ * @property {boolean} [autoReset=true] - Whether to automatically reset the info by the renderer or not.
3496
+ * @property {WebGLRenderer~InfoMemory} memory - Information about allocated objects.
3497
+ * @property {WebGLRenderer~InfoRender} render - Information about rendered objects.
3498
+ * @property {?Array<WebGLProgram>} programs - An array `WebGLProgram`s used for rendering.
3499
+ * @property {Function} reset - Resets the info object for the next frame.
3500
+ **/
3501
+
3502
+ /**
3503
+ * WebGLRenderer Shadow Map.
3504
+ *
3505
+ * @typedef {Object} WebGLRenderer~ShadowMap
3506
+ * @property {boolean} [enabled=false] - If set to `true`, use shadow maps in the scene.
3507
+ * @property {boolean} [autoUpdate=true] - Enables automatic updates to the shadows in the scene.
3508
+ * If you do not require dynamic lighting / shadows, you may set this to `false`.
3509
+ * @property {boolean} [needsUpdate=false] - When set to `true`, shadow maps in the scene
3510
+ * will be updated in the next `render` call.
3511
+ * @property {(BasicShadowMap|PCFShadowMap|PCFSoftShadowMap|VSMShadowMap)} [type=PCFShadowMap] - Defines the shadow map type.
3512
+ **/
2609
3513
 
2610
3514
  export { WebGLRenderer };