@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
@@ -1,15 +1,15 @@
1
- import { LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, RGBAFormat, RGB_ETC1_Format, DepthFormat, DepthStencilFormat, UnsignedShortType, UnsignedIntType, UnsignedInt248Type, FloatType, HalfFloatType, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, UnsignedByteType, _SRGBAFormat, NoColorSpace, LinearSRGBColorSpace, NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare, SRGBTransfer, LinearTransfer } from '../../constants.js';
2
- import * as MathUtils from '../../math/MathUtils.js';
3
- import { ImageUtils } from '../../extras/ImageUtils.js';
4
- import { createElementNS } from '../../utils.js';
1
+ import { LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, RGBAFormat, DepthFormat, DepthStencilFormat, UnsignedIntType, FloatType, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, UnsignedByteType, NoColorSpace, LinearSRGBColorSpace, NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare, SRGBTransfer, LinearTransfer, UnsignedShortType, UnsignedInt248Type } from '../../constants.js';
2
+ import { createElementNS, warn, error } from '../../utils.js';
5
3
  import { ColorManagement } from '../../math/ColorManagement.js';
4
+ import { Vector2 } from '../../math/Vector2.js';
5
+ import { getByteLength } from '../../extras/TextureUtils.js';
6
6
 
7
7
  function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {
8
8
 
9
- const isWebGL2 = capabilities.isWebGL2;
10
9
  const multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;
11
10
  const supportsInvalidateFramebuffer = typeof navigator === 'undefined' ? false : /OculusBrowser/g.test( navigator.userAgent );
12
11
 
12
+ const _imageDimensions = new Vector2();
13
13
  const _videoTextures = new WeakMap();
14
14
  let _canvas;
15
15
 
@@ -43,32 +43,33 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
43
43
 
44
44
  }
45
45
 
46
- function resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {
46
+ function resizeImage( image, needsNewCanvas, maxSize ) {
47
47
 
48
48
  let scale = 1;
49
49
 
50
+ const dimensions = getDimensions( image );
51
+
50
52
  // handle case if texture exceeds max size
51
53
 
52
- if ( image.width > maxSize || image.height > maxSize ) {
54
+ if ( dimensions.width > maxSize || dimensions.height > maxSize ) {
53
55
 
54
- scale = maxSize / Math.max( image.width, image.height );
56
+ scale = maxSize / Math.max( dimensions.width, dimensions.height );
55
57
 
56
58
  }
57
59
 
58
60
  // only perform resize if necessary
59
61
 
60
- if ( scale < 1 || needsPowerOfTwo === true ) {
62
+ if ( scale < 1 ) {
61
63
 
62
64
  // only perform resize for certain image types
63
65
 
64
66
  if ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||
65
67
  ( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||
66
- ( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {
67
-
68
- const floor = needsPowerOfTwo ? MathUtils.floorPowerOfTwo : Math.floor;
68
+ ( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ||
69
+ ( typeof VideoFrame !== 'undefined' && image instanceof VideoFrame ) ) {
69
70
 
70
- const width = floor( scale * image.width );
71
- const height = floor( scale * image.height );
71
+ const width = Math.floor( scale * dimensions.width );
72
+ const height = Math.floor( scale * dimensions.height );
72
73
 
73
74
  if ( _canvas === undefined ) _canvas = createCanvas( width, height );
74
75
 
@@ -82,7 +83,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
82
83
  const context = canvas.getContext( '2d' );
83
84
  context.drawImage( image, 0, 0, width, height );
84
85
 
85
- console.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );
86
+ warn( 'WebGLRenderer: Texture has been resized from (' + dimensions.width + 'x' + dimensions.height + ') to (' + width + 'x' + height + ').' );
86
87
 
87
88
  return canvas;
88
89
 
@@ -90,7 +91,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
90
91
 
91
92
  if ( 'data' in image ) {
92
93
 
93
- console.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );
94
+ warn( 'WebGLRenderer: Image in DataTexture is too big (' + dimensions.width + 'x' + dimensions.height + ').' );
94
95
 
95
96
  }
96
97
 
@@ -104,43 +105,34 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
104
105
 
105
106
  }
106
107
 
107
- function isPowerOfTwo( image ) {
108
-
109
- return MathUtils.isPowerOfTwo( image.width ) && MathUtils.isPowerOfTwo( image.height );
110
-
111
- }
112
-
113
- function textureNeedsPowerOfTwo( texture ) {
108
+ function textureNeedsGenerateMipmaps( texture ) {
114
109
 
115
- if ( isWebGL2 ) return false;
116
-
117
- return ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||
118
- ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );
110
+ return texture.generateMipmaps;
119
111
 
120
112
  }
121
113
 
122
- function textureNeedsGenerateMipmaps( texture, supportsMips ) {
114
+ function generateMipmap( target ) {
123
115
 
124
- return texture.generateMipmaps && supportsMips &&
125
- texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;
116
+ _gl.generateMipmap( target );
126
117
 
127
118
  }
128
119
 
129
- function generateMipmap( target ) {
120
+ function getTargetType( texture ) {
130
121
 
131
- _gl.generateMipmap( target );
122
+ if ( texture.isWebGLCubeRenderTarget ) return _gl.TEXTURE_CUBE_MAP;
123
+ if ( texture.isWebGL3DRenderTarget ) return _gl.TEXTURE_3D;
124
+ if ( texture.isWebGLArrayRenderTarget || texture.isCompressedArrayTexture ) return _gl.TEXTURE_2D_ARRAY;
125
+ return _gl.TEXTURE_2D;
132
126
 
133
127
  }
134
128
 
135
129
  function getInternalFormat( internalFormatName, glFormat, glType, colorSpace, forceLinearTransfer = false ) {
136
130
 
137
- if ( isWebGL2 === false ) return glFormat;
138
-
139
131
  if ( internalFormatName !== null ) {
140
132
 
141
133
  if ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];
142
134
 
143
- console.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \'' + internalFormatName + '\'' );
135
+ warn( 'WebGLRenderer: Attempt to use non-existing WebGL internal format \'' + internalFormatName + '\'' );
144
136
 
145
137
  }
146
138
 
@@ -173,6 +165,46 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
173
165
 
174
166
  }
175
167
 
168
+ if ( glFormat === _gl.RG_INTEGER ) {
169
+
170
+ if ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8UI;
171
+ if ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.RG16UI;
172
+ if ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.RG32UI;
173
+ if ( glType === _gl.BYTE ) internalFormat = _gl.RG8I;
174
+ if ( glType === _gl.SHORT ) internalFormat = _gl.RG16I;
175
+ if ( glType === _gl.INT ) internalFormat = _gl.RG32I;
176
+
177
+ }
178
+
179
+ if ( glFormat === _gl.RGB_INTEGER ) {
180
+
181
+ if ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RGB8UI;
182
+ if ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.RGB16UI;
183
+ if ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.RGB32UI;
184
+ if ( glType === _gl.BYTE ) internalFormat = _gl.RGB8I;
185
+ if ( glType === _gl.SHORT ) internalFormat = _gl.RGB16I;
186
+ if ( glType === _gl.INT ) internalFormat = _gl.RGB32I;
187
+
188
+ }
189
+
190
+ if ( glFormat === _gl.RGBA_INTEGER ) {
191
+
192
+ if ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RGBA8UI;
193
+ if ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.RGBA16UI;
194
+ if ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.RGBA32UI;
195
+ if ( glType === _gl.BYTE ) internalFormat = _gl.RGBA8I;
196
+ if ( glType === _gl.SHORT ) internalFormat = _gl.RGBA16I;
197
+ if ( glType === _gl.INT ) internalFormat = _gl.RGBA32I;
198
+
199
+ }
200
+
201
+ if ( glFormat === _gl.RGB ) {
202
+
203
+ if ( glType === _gl.UNSIGNED_INT_5_9_9_9_REV ) internalFormat = _gl.RGB9_E5;
204
+ if ( glType === _gl.UNSIGNED_INT_10F_11F_11F_REV ) internalFormat = _gl.R11F_G11F_B10F;
205
+
206
+ }
207
+
176
208
  if ( glFormat === _gl.RGBA ) {
177
209
 
178
210
  const transfer = forceLinearTransfer ? LinearTransfer : ColorManagement.getTransfer( colorSpace );
@@ -197,43 +229,71 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
197
229
 
198
230
  }
199
231
 
200
- function getMipLevels( texture, image, supportsMips ) {
232
+ function getInternalDepthFormat( useStencil, depthType ) {
201
233
 
202
- if ( textureNeedsGenerateMipmaps( texture, supportsMips ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {
234
+ let glInternalFormat;
235
+ if ( useStencil ) {
203
236
 
204
- return Math.log2( Math.max( image.width, image.height ) ) + 1;
237
+ if ( depthType === null || depthType === UnsignedIntType || depthType === UnsignedInt248Type ) {
205
238
 
206
- } else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {
239
+ glInternalFormat = _gl.DEPTH24_STENCIL8;
207
240
 
208
- // user-defined mipmaps
241
+ } else if ( depthType === FloatType ) {
209
242
 
210
- return texture.mipmaps.length;
243
+ glInternalFormat = _gl.DEPTH32F_STENCIL8;
211
244
 
212
- } else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {
245
+ } else if ( depthType === UnsignedShortType ) {
213
246
 
214
- return image.mipmaps.length;
247
+ glInternalFormat = _gl.DEPTH24_STENCIL8;
248
+ warn( 'DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.' );
249
+
250
+ }
215
251
 
216
252
  } else {
217
253
 
218
- // texture without mipmaps (only base level)
254
+ if ( depthType === null || depthType === UnsignedIntType || depthType === UnsignedInt248Type ) {
219
255
 
220
- return 1;
256
+ glInternalFormat = _gl.DEPTH_COMPONENT24;
257
+
258
+ } else if ( depthType === FloatType ) {
259
+
260
+ glInternalFormat = _gl.DEPTH_COMPONENT32F;
261
+
262
+ } else if ( depthType === UnsignedShortType ) {
263
+
264
+ glInternalFormat = _gl.DEPTH_COMPONENT16;
265
+
266
+ }
221
267
 
222
268
  }
223
269
 
270
+ return glInternalFormat;
271
+
224
272
  }
225
273
 
226
- // Fallback filters for non-power-of-2 textures
274
+ function getMipLevels( texture, image ) {
275
+
276
+ if ( textureNeedsGenerateMipmaps( texture ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {
227
277
 
228
- function filterFallback( f ) {
278
+ return Math.log2( Math.max( image.width, image.height ) ) + 1;
279
+
280
+ } else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {
229
281
 
230
- if ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {
282
+ // user-defined mipmaps
231
283
 
232
- return _gl.NEAREST;
284
+ return texture.mipmaps.length;
233
285
 
234
- }
286
+ } else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {
287
+
288
+ return image.mipmaps.length;
235
289
 
236
- return _gl.LINEAR;
290
+ } else {
291
+
292
+ // texture without mipmaps (only base level)
293
+
294
+ return 1;
295
+
296
+ }
237
297
 
238
298
  }
239
299
 
@@ -320,23 +380,14 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
320
380
 
321
381
  function deallocateRenderTarget( renderTarget ) {
322
382
 
323
- const texture = renderTarget.texture;
324
-
325
383
  const renderTargetProperties = properties.get( renderTarget );
326
- const textureProperties = properties.get( texture );
327
-
328
- if ( textureProperties.__webglTexture !== undefined ) {
329
-
330
- _gl.deleteTexture( textureProperties.__webglTexture );
331
-
332
- info.memory.textures --;
333
-
334
- }
335
384
 
336
385
  if ( renderTarget.depthTexture ) {
337
386
 
338
387
  renderTarget.depthTexture.dispose();
339
388
 
389
+ properties.remove( renderTarget.depthTexture );
390
+
340
391
  }
341
392
 
342
393
  if ( renderTarget.isWebGLCubeRenderTarget ) {
@@ -386,27 +437,24 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
386
437
 
387
438
  }
388
439
 
389
- if ( renderTarget.isWebGLMultipleRenderTargets ) {
390
-
391
- for ( let i = 0, il = texture.length; i < il; i ++ ) {
440
+ const textures = renderTarget.textures;
392
441
 
393
- const attachmentProperties = properties.get( texture[ i ] );
394
-
395
- if ( attachmentProperties.__webglTexture ) {
442
+ for ( let i = 0, il = textures.length; i < il; i ++ ) {
396
443
 
397
- _gl.deleteTexture( attachmentProperties.__webglTexture );
444
+ const attachmentProperties = properties.get( textures[ i ] );
398
445
 
399
- info.memory.textures --;
446
+ if ( attachmentProperties.__webglTexture ) {
400
447
 
401
- }
448
+ _gl.deleteTexture( attachmentProperties.__webglTexture );
402
449
 
403
- properties.remove( texture[ i ] );
450
+ info.memory.textures --;
404
451
 
405
452
  }
406
453
 
454
+ properties.remove( textures[ i ] );
455
+
407
456
  }
408
457
 
409
- properties.remove( texture );
410
458
  properties.remove( renderTarget );
411
459
 
412
460
  }
@@ -427,7 +475,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
427
475
 
428
476
  if ( textureUnit >= capabilities.maxTextures ) {
429
477
 
430
- console.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );
478
+ warn( 'WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );
431
479
 
432
480
  }
433
481
 
@@ -468,17 +516,17 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
468
516
 
469
517
  if ( texture.isVideoTexture ) updateVideoTexture( texture );
470
518
 
471
- if ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {
519
+ if ( texture.isRenderTargetTexture === false && texture.isExternalTexture !== true && texture.version > 0 && textureProperties.__version !== texture.version ) {
472
520
 
473
521
  const image = texture.image;
474
522
 
475
523
  if ( image === null ) {
476
524
 
477
- console.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );
525
+ warn( 'WebGLRenderer: Texture marked for update but no image data found.' );
478
526
 
479
527
  } else if ( image.complete === false ) {
480
528
 
481
- console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );
529
+ warn( 'WebGLRenderer: Texture marked for update but image is incomplete' );
482
530
 
483
531
  } else {
484
532
 
@@ -487,6 +535,10 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
487
535
 
488
536
  }
489
537
 
538
+ } else if ( texture.isExternalTexture ) {
539
+
540
+ textureProperties.__webglTexture = texture.sourceTexture ? texture.sourceTexture : null;
541
+
490
542
  }
491
543
 
492
544
  state.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );
@@ -497,11 +549,15 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
497
549
 
498
550
  const textureProperties = properties.get( texture );
499
551
 
500
- if ( texture.version > 0 && textureProperties.__version !== texture.version ) {
552
+ if ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {
501
553
 
502
554
  uploadTexture( textureProperties, texture, slot );
503
555
  return;
504
556
 
557
+ } else if ( texture.isExternalTexture ) {
558
+
559
+ textureProperties.__webglTexture = texture.sourceTexture ? texture.sourceTexture : null;
560
+
505
561
  }
506
562
 
507
563
  state.bindTexture( _gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );
@@ -512,7 +568,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
512
568
 
513
569
  const textureProperties = properties.get( texture );
514
570
 
515
- if ( texture.version > 0 && textureProperties.__version !== texture.version ) {
571
+ if ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {
516
572
 
517
573
  uploadTexture( textureProperties, texture, slot );
518
574
  return;
@@ -565,58 +621,28 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
565
621
  [ NotEqualCompare ]: _gl.NOTEQUAL
566
622
  };
567
623
 
568
- function setTextureParameters( textureType, texture, supportsMips ) {
624
+ function setTextureParameters( textureType, texture ) {
569
625
 
570
626
  if ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false &&
571
627
  ( texture.magFilter === LinearFilter || texture.magFilter === LinearMipmapNearestFilter || texture.magFilter === NearestMipmapLinearFilter || texture.magFilter === LinearMipmapLinearFilter ||
572
628
  texture.minFilter === LinearFilter || texture.minFilter === LinearMipmapNearestFilter || texture.minFilter === NearestMipmapLinearFilter || texture.minFilter === LinearMipmapLinearFilter ) ) {
573
629
 
574
- console.warn( 'THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.' );
630
+ warn( 'WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.' );
575
631
 
576
632
  }
577
633
 
578
- if ( supportsMips ) {
579
-
580
- _gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[ texture.wrapS ] );
581
- _gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[ texture.wrapT ] );
634
+ _gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[ texture.wrapS ] );
635
+ _gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[ texture.wrapT ] );
582
636
 
583
- if ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {
637
+ if ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {
584
638
 
585
- _gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[ texture.wrapR ] );
586
-
587
- }
588
-
589
- _gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[ texture.magFilter ] );
590
- _gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[ texture.minFilter ] );
591
-
592
- } else {
593
-
594
- _gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );
595
- _gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );
596
-
597
- if ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {
598
-
599
- _gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, _gl.CLAMP_TO_EDGE );
600
-
601
- }
602
-
603
- if ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {
604
-
605
- console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );
606
-
607
- }
608
-
609
- _gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterFallback( texture.magFilter ) );
610
- _gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterFallback( texture.minFilter ) );
611
-
612
- if ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {
613
-
614
- console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );
615
-
616
- }
639
+ _gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[ texture.wrapR ] );
617
640
 
618
641
  }
619
642
 
643
+ _gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[ texture.magFilter ] );
644
+ _gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[ texture.minFilter ] );
645
+
620
646
  if ( texture.compareFunction ) {
621
647
 
622
648
  _gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE );
@@ -626,15 +652,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
626
652
 
627
653
  if ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {
628
654
 
629
- const extension = extensions.get( 'EXT_texture_filter_anisotropic' );
630
-
631
655
  if ( texture.magFilter === NearestFilter ) return;
632
656
  if ( texture.minFilter !== NearestMipmapLinearFilter && texture.minFilter !== LinearMipmapLinearFilter ) return;
633
- if ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension for WebGL 1 and WebGL 2
634
- if ( isWebGL2 === false && ( texture.type === HalfFloatType && extensions.has( 'OES_texture_half_float_linear' ) === false ) ) return; // verify extension for WebGL 1 only
657
+ if ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension
635
658
 
636
659
  if ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {
637
660
 
661
+ const extension = extensions.get( 'EXT_texture_filter_anisotropic' );
638
662
  _gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );
639
663
  properties.get( texture ).__currentAnisotropy = texture.anisotropy;
640
664
 
@@ -724,126 +748,163 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
724
748
 
725
749
  }
726
750
 
727
- function uploadTexture( textureProperties, texture, slot ) {
751
+ function getRow( index, rowLength, componentStride ) {
728
752
 
729
- let textureType = _gl.TEXTURE_2D;
753
+ return Math.floor( Math.floor( index / componentStride ) / rowLength );
730
754
 
731
- if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) textureType = _gl.TEXTURE_2D_ARRAY;
732
- if ( texture.isData3DTexture ) textureType = _gl.TEXTURE_3D;
755
+ }
733
756
 
734
- const forceUpload = initTexture( textureProperties, texture );
735
- const source = texture.source;
757
+ function updateTexture( texture, image, glFormat, glType ) {
736
758
 
737
- state.bindTexture( textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );
759
+ const componentStride = 4; // only RGBA supported
738
760
 
739
- const sourceProperties = properties.get( source );
761
+ const updateRanges = texture.updateRanges;
740
762
 
741
- if ( source.version !== sourceProperties.__version || forceUpload === true ) {
763
+ if ( updateRanges.length === 0 ) {
742
764
 
743
- state.activeTexture( _gl.TEXTURE0 + slot );
765
+ state.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );
744
766
 
745
- const workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );
746
- const texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );
747
- const unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;
767
+ } else {
748
768
 
749
- _gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );
750
- _gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );
751
- _gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );
752
- _gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );
769
+ // Before applying update ranges, we merge any adjacent / overlapping
770
+ // ranges to reduce load on `gl.texSubImage2D`. Empirically, this has led
771
+ // to performance improvements for applications which make heavy use of
772
+ // update ranges. Likely due to GPU command overhead.
773
+ //
774
+ // Note that to reduce garbage collection between frames, we merge the
775
+ // update ranges in-place. This is safe because this method will clear the
776
+ // update ranges once updated.
777
+
778
+ updateRanges.sort( ( a, b ) => a.start - b.start );
779
+
780
+ // To merge the update ranges in-place, we work from left to right in the
781
+ // existing updateRanges array, merging ranges. This may result in a final
782
+ // array which is smaller than the original. This index tracks the last
783
+ // index representing a merged range, any data after this index can be
784
+ // trimmed once the merge algorithm is completed.
785
+ let mergeIndex = 0;
786
+
787
+ for ( let i = 1; i < updateRanges.length; i ++ ) {
788
+
789
+ const previousRange = updateRanges[ mergeIndex ];
790
+ const range = updateRanges[ i ];
791
+
792
+ // Only merge if in the same row and overlapping/adjacent
793
+ const previousEnd = previousRange.start + previousRange.count;
794
+ const currentRow = getRow( range.start, image.width, componentStride );
795
+ const previousRow = getRow( previousRange.start, image.width, componentStride );
796
+
797
+ // We add one here to merge adjacent ranges. This is safe because ranges
798
+ // operate over positive integers.
799
+ if (
800
+ range.start <= previousEnd + 1 &&
801
+ currentRow === previousRow &&
802
+ getRow( range.start + range.count - 1, image.width, componentStride ) === currentRow // ensure range doesn't spill
803
+ ) {
804
+
805
+ previousRange.count = Math.max(
806
+ previousRange.count,
807
+ range.start + range.count - previousRange.start
808
+ );
753
809
 
754
- const needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;
755
- let image = resizeImage( texture.image, needsPowerOfTwo, false, capabilities.maxTextureSize );
756
- image = verifyColorSpace( texture, image );
810
+ } else {
757
811
 
758
- const supportsMips = isPowerOfTwo( image ) || isWebGL2,
759
- glFormat = utils.convert( texture.format, texture.colorSpace );
812
+ ++ mergeIndex;
813
+ updateRanges[ mergeIndex ] = range;
760
814
 
761
- let glType = utils.convert( texture.type ),
762
- glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, texture.isVideoTexture );
815
+ }
763
816
 
764
- setTextureParameters( textureType, texture, supportsMips );
765
817
 
766
- let mipmap;
767
- const mipmaps = texture.mipmaps;
818
+ }
768
819
 
769
- const useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true && glInternalFormat !== RGB_ETC1_Format );
770
- const allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );
771
- const dataReady = source.dataReady;
772
- const levels = getMipLevels( texture, image, supportsMips );
820
+ // Trim the array to only contain the merged ranges.
821
+ updateRanges.length = mergeIndex + 1;
773
822
 
774
- if ( texture.isDepthTexture ) {
823
+ const currentUnpackRowLen = _gl.getParameter( _gl.UNPACK_ROW_LENGTH );
824
+ const currentUnpackSkipPixels = _gl.getParameter( _gl.UNPACK_SKIP_PIXELS );
825
+ const currentUnpackSkipRows = _gl.getParameter( _gl.UNPACK_SKIP_ROWS );
775
826
 
776
- // populate depth texture with dummy data
827
+ _gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width );
777
828
 
778
- glInternalFormat = _gl.DEPTH_COMPONENT;
829
+ for ( let i = 0, l = updateRanges.length; i < l; i ++ ) {
779
830
 
780
- if ( isWebGL2 ) {
831
+ const range = updateRanges[ i ];
781
832
 
782
- if ( texture.type === FloatType ) {
833
+ const pixelStart = Math.floor( range.start / componentStride );
834
+ const pixelCount = Math.ceil( range.count / componentStride );
783
835
 
784
- glInternalFormat = _gl.DEPTH_COMPONENT32F;
836
+ const x = pixelStart % image.width;
837
+ const y = Math.floor( pixelStart / image.width );
785
838
 
786
- } else if ( texture.type === UnsignedIntType ) {
839
+ // Assumes update ranges refer to contiguous memory
840
+ const width = pixelCount;
841
+ const height = 1;
787
842
 
788
- glInternalFormat = _gl.DEPTH_COMPONENT24;
843
+ _gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, x );
844
+ _gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, y );
789
845
 
790
- } else if ( texture.type === UnsignedInt248Type ) {
846
+ state.texSubImage2D( _gl.TEXTURE_2D, 0, x, y, width, height, glFormat, glType, image.data );
791
847
 
792
- glInternalFormat = _gl.DEPTH24_STENCIL8;
848
+ }
793
849
 
794
- } else {
850
+ texture.clearUpdateRanges();
795
851
 
796
- glInternalFormat = _gl.DEPTH_COMPONENT16; // WebGL2 requires sized internalformat for glTexImage2D
852
+ _gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, currentUnpackRowLen );
853
+ _gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, currentUnpackSkipPixels );
854
+ _gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, currentUnpackSkipRows );
797
855
 
798
- }
856
+ }
799
857
 
800
- } else {
858
+ }
801
859
 
802
- if ( texture.type === FloatType ) {
860
+ function uploadTexture( textureProperties, texture, slot ) {
803
861
 
804
- console.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );
862
+ let textureType = _gl.TEXTURE_2D;
805
863
 
806
- }
864
+ if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) textureType = _gl.TEXTURE_2D_ARRAY;
865
+ if ( texture.isData3DTexture ) textureType = _gl.TEXTURE_3D;
807
866
 
808
- }
867
+ const forceUpload = initTexture( textureProperties, texture );
868
+ const source = texture.source;
809
869
 
810
- // validation checks for WebGL 1
870
+ state.bindTexture( textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );
811
871
 
812
- if ( texture.format === DepthFormat && glInternalFormat === _gl.DEPTH_COMPONENT ) {
872
+ const sourceProperties = properties.get( source );
813
873
 
814
- // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are
815
- // DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT
816
- // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)
817
- if ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {
874
+ if ( source.version !== sourceProperties.__version || forceUpload === true ) {
818
875
 
819
- console.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );
876
+ state.activeTexture( _gl.TEXTURE0 + slot );
820
877
 
821
- texture.type = UnsignedIntType;
822
- glType = utils.convert( texture.type );
878
+ const workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );
879
+ const texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );
880
+ const unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;
823
881
 
824
- }
882
+ _gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );
883
+ _gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );
884
+ _gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );
885
+ _gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );
825
886
 
826
- }
887
+ let image = resizeImage( texture.image, false, capabilities.maxTextureSize );
888
+ image = verifyColorSpace( texture, image );
827
889
 
828
- if ( texture.format === DepthStencilFormat && glInternalFormat === _gl.DEPTH_COMPONENT ) {
890
+ const glFormat = utils.convert( texture.format, texture.colorSpace );
829
891
 
830
- // Depth stencil textures need the DEPTH_STENCIL internal format
831
- // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)
832
- glInternalFormat = _gl.DEPTH_STENCIL;
892
+ const glType = utils.convert( texture.type );
893
+ let glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, texture.isVideoTexture );
833
894
 
834
- // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are
835
- // DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.
836
- // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)
837
- if ( texture.type !== UnsignedInt248Type ) {
895
+ setTextureParameters( textureType, texture );
838
896
 
839
- console.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );
897
+ let mipmap;
898
+ const mipmaps = texture.mipmaps;
840
899
 
841
- texture.type = UnsignedInt248Type;
842
- glType = utils.convert( texture.type );
900
+ const useTexStorage = ( texture.isVideoTexture !== true );
901
+ const allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );
902
+ const dataReady = source.dataReady;
903
+ const levels = getMipLevels( texture, image );
843
904
 
844
- }
905
+ if ( texture.isDepthTexture ) {
845
906
 
846
- }
907
+ glInternalFormat = getInternalDepthFormat( texture.format === DepthStencilFormat, texture.type );
847
908
 
848
909
  //
849
910
 
@@ -867,7 +928,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
867
928
  // if there are no manual mipmaps
868
929
  // set 0 level mipmap and then use GL to generate other mipmap levels
869
930
 
870
- if ( mipmaps.length > 0 && supportsMips ) {
931
+ if ( mipmaps.length > 0 ) {
871
932
 
872
933
  if ( useTexStorage && allocateMemory ) {
873
934
 
@@ -909,7 +970,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
909
970
 
910
971
  if ( dataReady ) {
911
972
 
912
- state.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );
973
+ updateTexture( texture, image, glFormat, glType );
913
974
 
914
975
  }
915
976
 
@@ -943,7 +1004,27 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
943
1004
 
944
1005
  if ( dataReady ) {
945
1006
 
946
- state.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data, 0, 0 );
1007
+ if ( texture.layerUpdates.size > 0 ) {
1008
+
1009
+ const layerByteLength = getByteLength( mipmap.width, mipmap.height, texture.format, texture.type );
1010
+
1011
+ for ( const layerIndex of texture.layerUpdates ) {
1012
+
1013
+ const layerData = mipmap.data.subarray(
1014
+ layerIndex * layerByteLength / mipmap.data.BYTES_PER_ELEMENT,
1015
+ ( layerIndex + 1 ) * layerByteLength / mipmap.data.BYTES_PER_ELEMENT
1016
+ );
1017
+ state.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, layerIndex, mipmap.width, mipmap.height, 1, glFormat, layerData );
1018
+
1019
+ }
1020
+
1021
+ texture.clearLayerUpdates();
1022
+
1023
+ } else {
1024
+
1025
+ state.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data );
1026
+
1027
+ }
947
1028
 
948
1029
  }
949
1030
 
@@ -955,7 +1036,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
955
1036
 
956
1037
  } else {
957
1038
 
958
- console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );
1039
+ warn( 'WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );
959
1040
 
960
1041
  }
961
1042
 
@@ -1011,7 +1092,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1011
1092
 
1012
1093
  } else {
1013
1094
 
1014
- console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );
1095
+ warn( 'WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );
1015
1096
 
1016
1097
  }
1017
1098
 
@@ -1049,7 +1130,27 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1049
1130
 
1050
1131
  if ( dataReady ) {
1051
1132
 
1052
- state.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );
1133
+ if ( texture.layerUpdates.size > 0 ) {
1134
+
1135
+ const layerByteLength = getByteLength( image.width, image.height, texture.format, texture.type );
1136
+
1137
+ for ( const layerIndex of texture.layerUpdates ) {
1138
+
1139
+ const layerData = image.data.subarray(
1140
+ layerIndex * layerByteLength / image.data.BYTES_PER_ELEMENT,
1141
+ ( layerIndex + 1 ) * layerByteLength / image.data.BYTES_PER_ELEMENT
1142
+ );
1143
+ state.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, layerIndex, image.width, image.height, 1, glFormat, glType, layerData );
1144
+
1145
+ }
1146
+
1147
+ texture.clearLayerUpdates();
1148
+
1149
+ } else {
1150
+
1151
+ state.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );
1152
+
1153
+ }
1053
1154
 
1054
1155
  }
1055
1156
 
@@ -1114,11 +1215,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1114
1215
  // if there are no manual mipmaps
1115
1216
  // set 0 level mipmap and then use GL to generate other mipmap levels
1116
1217
 
1117
- if ( mipmaps.length > 0 && supportsMips ) {
1218
+ if ( mipmaps.length > 0 ) {
1118
1219
 
1119
1220
  if ( useTexStorage && allocateMemory ) {
1120
1221
 
1121
- state.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );
1222
+ const dimensions = getDimensions( mipmaps[ 0 ] );
1223
+
1224
+ state.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height );
1122
1225
 
1123
1226
  }
1124
1227
 
@@ -1150,7 +1253,9 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1150
1253
 
1151
1254
  if ( allocateMemory ) {
1152
1255
 
1153
- state.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );
1256
+ const dimensions = getDimensions( image );
1257
+
1258
+ state.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height );
1154
1259
 
1155
1260
  }
1156
1261
 
@@ -1170,7 +1275,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1170
1275
 
1171
1276
  }
1172
1277
 
1173
- if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {
1278
+ if ( textureNeedsGenerateMipmaps( texture ) ) {
1174
1279
 
1175
1280
  generateMipmap( textureType );
1176
1281
 
@@ -1219,7 +1324,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1219
1324
 
1220
1325
  if ( ! isCompressed && ! isDataTexture ) {
1221
1326
 
1222
- cubeImage[ i ] = resizeImage( texture.image[ i ], false, true, capabilities.maxCubemapSize );
1327
+ cubeImage[ i ] = resizeImage( texture.image[ i ], true, capabilities.maxCubemapSize );
1223
1328
 
1224
1329
  } else {
1225
1330
 
@@ -1232,17 +1337,16 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1232
1337
  }
1233
1338
 
1234
1339
  const image = cubeImage[ 0 ],
1235
- supportsMips = isPowerOfTwo( image ) || isWebGL2,
1236
1340
  glFormat = utils.convert( texture.format, texture.colorSpace ),
1237
1341
  glType = utils.convert( texture.type ),
1238
1342
  glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );
1239
1343
 
1240
- const useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );
1344
+ const useTexStorage = ( texture.isVideoTexture !== true );
1241
1345
  const allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );
1242
1346
  const dataReady = source.dataReady;
1243
- let levels = getMipLevels( texture, image, supportsMips );
1347
+ let levels = getMipLevels( texture, image );
1244
1348
 
1245
- setTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, supportsMips );
1349
+ setTextureParameters( _gl.TEXTURE_CUBE_MAP, texture );
1246
1350
 
1247
1351
  let mipmaps;
1248
1352
 
@@ -1282,7 +1386,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1282
1386
 
1283
1387
  } else {
1284
1388
 
1285
- console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );
1389
+ warn( 'WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );
1286
1390
 
1287
1391
  }
1288
1392
 
@@ -1320,7 +1424,9 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1320
1424
 
1321
1425
  if ( mipmaps.length > 0 ) levels ++;
1322
1426
 
1323
- state.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, cubeImage[ 0 ].width, cubeImage[ 0 ].height );
1427
+ const dimensions = getDimensions( cubeImage[ 0 ] );
1428
+
1429
+ state.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, dimensions.width, dimensions.height );
1324
1430
 
1325
1431
  }
1326
1432
 
@@ -1405,7 +1511,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1405
1511
 
1406
1512
  }
1407
1513
 
1408
- if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {
1514
+ if ( textureNeedsGenerateMipmaps( texture ) ) {
1409
1515
 
1410
1516
  // We assume images for cube map have the same size.
1411
1517
  generateMipmap( _gl.TEXTURE_CUBE_MAP );
@@ -1431,6 +1537,9 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1431
1537
  const glType = utils.convert( texture.type );
1432
1538
  const glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );
1433
1539
  const renderTargetProperties = properties.get( renderTarget );
1540
+ const textureProperties = properties.get( texture );
1541
+
1542
+ textureProperties.__renderTarget = renderTarget;
1434
1543
 
1435
1544
  if ( ! renderTargetProperties.__hasExternalTextures ) {
1436
1545
 
@@ -1453,11 +1562,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1453
1562
 
1454
1563
  if ( useMultisampledRTT( renderTarget ) ) {
1455
1564
 
1456
- multisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );
1565
+ multisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, attachment, textureTarget, textureProperties.__webglTexture, 0, getRenderTargetSamples( renderTarget ) );
1457
1566
 
1458
1567
  } else if ( textureTarget === _gl.TEXTURE_2D || ( textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z ) ) { // see #24753
1459
1568
 
1460
- _gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, level );
1569
+ _gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, textureProperties.__webglTexture, level );
1461
1570
 
1462
1571
  }
1463
1572
 
@@ -1465,78 +1574,41 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1465
1574
 
1466
1575
  }
1467
1576
 
1468
-
1469
1577
  // Setup storage for internal depth/stencil buffers and bind to correct framebuffer
1470
1578
  function setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {
1471
1579
 
1472
1580
  _gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );
1473
1581
 
1474
- if ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {
1475
-
1476
- let glInternalFormat = ( isWebGL2 === true ) ? _gl.DEPTH_COMPONENT24 : _gl.DEPTH_COMPONENT16;
1477
-
1478
- if ( isMultisample || useMultisampledRTT( renderTarget ) ) {
1479
-
1480
- const depthTexture = renderTarget.depthTexture;
1481
-
1482
- if ( depthTexture && depthTexture.isDepthTexture ) {
1483
-
1484
- if ( depthTexture.type === FloatType ) {
1485
-
1486
- glInternalFormat = _gl.DEPTH_COMPONENT32F;
1487
-
1488
- } else if ( depthTexture.type === UnsignedIntType ) {
1489
-
1490
- glInternalFormat = _gl.DEPTH_COMPONENT24;
1491
-
1492
- }
1493
-
1494
- }
1495
-
1496
- const samples = getRenderTargetSamples( renderTarget );
1497
-
1498
- if ( useMultisampledRTT( renderTarget ) ) {
1499
-
1500
- multisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );
1501
-
1502
- } else {
1503
-
1504
- _gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );
1505
-
1506
- }
1507
-
1508
- } else {
1509
-
1510
- _gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );
1511
-
1512
- }
1513
-
1514
- _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );
1582
+ if ( renderTarget.depthBuffer ) {
1515
1583
 
1516
- } else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {
1584
+ // retrieve the depth attachment types
1585
+ const depthTexture = renderTarget.depthTexture;
1586
+ const depthType = depthTexture && depthTexture.isDepthTexture ? depthTexture.type : null;
1587
+ const glInternalFormat = getInternalDepthFormat( renderTarget.stencilBuffer, depthType );
1588
+ const glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;
1517
1589
 
1590
+ // set up the attachment
1518
1591
  const samples = getRenderTargetSamples( renderTarget );
1592
+ const isUseMultisampledRTT = useMultisampledRTT( renderTarget );
1593
+ if ( isUseMultisampledRTT ) {
1519
1594
 
1520
- if ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {
1595
+ multisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );
1521
1596
 
1522
- _gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );
1597
+ } else if ( isMultisample ) {
1523
1598
 
1524
- } else if ( useMultisampledRTT( renderTarget ) ) {
1525
-
1526
- multisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );
1599
+ _gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );
1527
1600
 
1528
1601
  } else {
1529
1602
 
1530
- _gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );
1603
+ _gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );
1531
1604
 
1532
1605
  }
1533
1606
 
1534
-
1535
- _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );
1607
+ _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer );
1536
1608
 
1537
1609
  } else {
1538
1610
 
1539
- const textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];
1611
+ const textures = renderTarget.textures;
1540
1612
 
1541
1613
  for ( let i = 0; i < textures.length; i ++ ) {
1542
1614
 
@@ -1583,8 +1655,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1583
1655
 
1584
1656
  }
1585
1657
 
1658
+ const textureProperties = properties.get( renderTarget.depthTexture );
1659
+ textureProperties.__renderTarget = renderTarget;
1660
+
1586
1661
  // upload an empty depth texture with framebuffer size
1587
- if ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||
1662
+ if ( ! textureProperties.__webglTexture ||
1588
1663
  renderTarget.depthTexture.image.width !== renderTarget.width ||
1589
1664
  renderTarget.depthTexture.image.height !== renderTarget.height ) {
1590
1665
 
@@ -1596,7 +1671,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1596
1671
 
1597
1672
  setTexture2D( renderTarget.depthTexture, 0 );
1598
1673
 
1599
- const webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;
1674
+ const webglDepthTexture = textureProperties.__webglTexture;
1600
1675
  const samples = getRenderTargetSamples( renderTarget );
1601
1676
 
1602
1677
  if ( renderTarget.depthTexture.format === DepthFormat ) {
@@ -1637,11 +1712,52 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1637
1712
  const renderTargetProperties = properties.get( renderTarget );
1638
1713
  const isCube = ( renderTarget.isWebGLCubeRenderTarget === true );
1639
1714
 
1715
+ // if the bound depth texture has changed
1716
+ if ( renderTargetProperties.__boundDepthTexture !== renderTarget.depthTexture ) {
1717
+
1718
+ // fire the dispose event to get rid of stored state associated with the previously bound depth buffer
1719
+ const depthTexture = renderTarget.depthTexture;
1720
+ if ( renderTargetProperties.__depthDisposeCallback ) {
1721
+
1722
+ renderTargetProperties.__depthDisposeCallback();
1723
+
1724
+ }
1725
+
1726
+ // set up dispose listeners to track when the currently attached buffer is implicitly unbound
1727
+ if ( depthTexture ) {
1728
+
1729
+ const disposeEvent = () => {
1730
+
1731
+ delete renderTargetProperties.__boundDepthTexture;
1732
+ delete renderTargetProperties.__depthDisposeCallback;
1733
+ depthTexture.removeEventListener( 'dispose', disposeEvent );
1734
+
1735
+ };
1736
+
1737
+ depthTexture.addEventListener( 'dispose', disposeEvent );
1738
+ renderTargetProperties.__depthDisposeCallback = disposeEvent;
1739
+
1740
+ }
1741
+
1742
+ renderTargetProperties.__boundDepthTexture = depthTexture;
1743
+
1744
+ }
1745
+
1640
1746
  if ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {
1641
1747
 
1642
1748
  if ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );
1643
1749
 
1644
- setupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );
1750
+ const mipmaps = renderTarget.texture.mipmaps;
1751
+
1752
+ if ( mipmaps && mipmaps.length > 0 ) {
1753
+
1754
+ setupDepthTexture( renderTargetProperties.__webglFramebuffer[ 0 ], renderTarget );
1755
+
1756
+ } else {
1757
+
1758
+ setupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );
1759
+
1760
+ }
1645
1761
 
1646
1762
  } else {
1647
1763
 
@@ -1652,16 +1768,52 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1652
1768
  for ( let i = 0; i < 6; i ++ ) {
1653
1769
 
1654
1770
  state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );
1655
- renderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();
1656
- setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );
1771
+
1772
+ if ( renderTargetProperties.__webglDepthbuffer[ i ] === undefined ) {
1773
+
1774
+ renderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();
1775
+ setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );
1776
+
1777
+ } else {
1778
+
1779
+ // attach buffer if it's been created already
1780
+ const glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;
1781
+ const renderbuffer = renderTargetProperties.__webglDepthbuffer[ i ];
1782
+ _gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );
1783
+ _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer );
1784
+
1785
+ }
1657
1786
 
1658
1787
  }
1659
1788
 
1660
1789
  } else {
1661
1790
 
1662
- state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );
1663
- renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();
1664
- setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );
1791
+ const mipmaps = renderTarget.texture.mipmaps;
1792
+
1793
+ if ( mipmaps && mipmaps.length > 0 ) {
1794
+
1795
+ state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ 0 ] );
1796
+
1797
+ } else {
1798
+
1799
+ state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );
1800
+
1801
+ }
1802
+
1803
+ if ( renderTargetProperties.__webglDepthbuffer === undefined ) {
1804
+
1805
+ renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();
1806
+ setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );
1807
+
1808
+ } else {
1809
+
1810
+ // attach buffer if it's been created already
1811
+ const glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;
1812
+ const renderbuffer = renderTargetProperties.__webglDepthbuffer;
1813
+ _gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );
1814
+ _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer );
1815
+
1816
+ }
1665
1817
 
1666
1818
  }
1667
1819
 
@@ -1700,7 +1852,12 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1700
1852
 
1701
1853
  renderTarget.addEventListener( 'dispose', onRenderTargetDispose );
1702
1854
 
1703
- if ( renderTarget.isWebGLMultipleRenderTargets !== true ) {
1855
+ const textures = renderTarget.textures;
1856
+
1857
+ const isCube = ( renderTarget.isWebGLCubeRenderTarget === true );
1858
+ const isMultipleRenderTargets = ( textures.length > 1 );
1859
+
1860
+ if ( ! isMultipleRenderTargets ) {
1704
1861
 
1705
1862
  if ( textureProperties.__webglTexture === undefined ) {
1706
1863
 
@@ -1713,10 +1870,6 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1713
1870
 
1714
1871
  }
1715
1872
 
1716
- const isCube = ( renderTarget.isWebGLCubeRenderTarget === true );
1717
- const isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );
1718
- const supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;
1719
-
1720
1873
  // Setup framebuffer
1721
1874
 
1722
1875
  if ( isCube ) {
@@ -1725,7 +1878,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1725
1878
 
1726
1879
  for ( let i = 0; i < 6; i ++ ) {
1727
1880
 
1728
- if ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {
1881
+ if ( texture.mipmaps && texture.mipmaps.length > 0 ) {
1729
1882
 
1730
1883
  renderTargetProperties.__webglFramebuffer[ i ] = [];
1731
1884
 
@@ -1745,7 +1898,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1745
1898
 
1746
1899
  } else {
1747
1900
 
1748
- if ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {
1901
+ if ( texture.mipmaps && texture.mipmaps.length > 0 ) {
1749
1902
 
1750
1903
  renderTargetProperties.__webglFramebuffer = [];
1751
1904
 
@@ -1763,35 +1916,23 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1763
1916
 
1764
1917
  if ( isMultipleRenderTargets ) {
1765
1918
 
1766
- if ( capabilities.drawBuffers ) {
1767
-
1768
- const textures = renderTarget.texture;
1919
+ for ( let i = 0, il = textures.length; i < il; i ++ ) {
1769
1920
 
1770
- for ( let i = 0, il = textures.length; i < il; i ++ ) {
1921
+ const attachmentProperties = properties.get( textures[ i ] );
1771
1922
 
1772
- const attachmentProperties = properties.get( textures[ i ] );
1923
+ if ( attachmentProperties.__webglTexture === undefined ) {
1773
1924
 
1774
- if ( attachmentProperties.__webglTexture === undefined ) {
1925
+ attachmentProperties.__webglTexture = _gl.createTexture();
1775
1926
 
1776
- attachmentProperties.__webglTexture = _gl.createTexture();
1777
-
1778
- info.memory.textures ++;
1779
-
1780
- }
1927
+ info.memory.textures ++;
1781
1928
 
1782
1929
  }
1783
1930
 
1784
- } else {
1785
-
1786
- console.warn( 'THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.' );
1787
-
1788
1931
  }
1789
1932
 
1790
1933
  }
1791
1934
 
1792
- if ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {
1793
-
1794
- const textures = isMultipleRenderTargets ? texture : [ texture ];
1935
+ if ( ( renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {
1795
1936
 
1796
1937
  renderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();
1797
1938
  renderTargetProperties.__webglColorRenderbuffer = [];
@@ -1835,11 +1976,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1835
1976
  if ( isCube ) {
1836
1977
 
1837
1978
  state.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );
1838
- setTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, supportsMips );
1979
+ setTextureParameters( _gl.TEXTURE_CUBE_MAP, texture );
1839
1980
 
1840
1981
  for ( let i = 0; i < 6; i ++ ) {
1841
1982
 
1842
- if ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {
1983
+ if ( texture.mipmaps && texture.mipmaps.length > 0 ) {
1843
1984
 
1844
1985
  for ( let level = 0; level < texture.mipmaps.length; level ++ ) {
1845
1986
 
@@ -1855,7 +1996,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1855
1996
 
1856
1997
  }
1857
1998
 
1858
- if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {
1999
+ if ( textureNeedsGenerateMipmaps( texture ) ) {
1859
2000
 
1860
2001
  generateMipmap( _gl.TEXTURE_CUBE_MAP );
1861
2002
 
@@ -1865,20 +2006,26 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1865
2006
 
1866
2007
  } else if ( isMultipleRenderTargets ) {
1867
2008
 
1868
- const textures = renderTarget.texture;
1869
-
1870
2009
  for ( let i = 0, il = textures.length; i < il; i ++ ) {
1871
2010
 
1872
2011
  const attachment = textures[ i ];
1873
2012
  const attachmentProperties = properties.get( attachment );
1874
2013
 
1875
- state.bindTexture( _gl.TEXTURE_2D, attachmentProperties.__webglTexture );
1876
- setTextureParameters( _gl.TEXTURE_2D, attachment, supportsMips );
1877
- setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, 0 );
2014
+ let glTextureType = _gl.TEXTURE_2D;
2015
+
2016
+ if ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {
2017
+
2018
+ glTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;
2019
+
2020
+ }
2021
+
2022
+ state.bindTexture( glTextureType, attachmentProperties.__webglTexture );
2023
+ setTextureParameters( glTextureType, attachment );
2024
+ setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, glTextureType, 0 );
1878
2025
 
1879
- if ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {
2026
+ if ( textureNeedsGenerateMipmaps( attachment ) ) {
1880
2027
 
1881
- generateMipmap( _gl.TEXTURE_2D );
2028
+ generateMipmap( glTextureType );
1882
2029
 
1883
2030
  }
1884
2031
 
@@ -1892,22 +2039,14 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1892
2039
 
1893
2040
  if ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {
1894
2041
 
1895
- if ( isWebGL2 ) {
1896
-
1897
- glTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;
1898
-
1899
- } else {
1900
-
1901
- console.error( 'THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.' );
1902
-
1903
- }
2042
+ glTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;
1904
2043
 
1905
2044
  }
1906
2045
 
1907
2046
  state.bindTexture( glTextureType, textureProperties.__webglTexture );
1908
- setTextureParameters( glTextureType, texture, supportsMips );
2047
+ setTextureParameters( glTextureType, texture );
1909
2048
 
1910
- if ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {
2049
+ if ( texture.mipmaps && texture.mipmaps.length > 0 ) {
1911
2050
 
1912
2051
  for ( let level = 0; level < texture.mipmaps.length; level ++ ) {
1913
2052
 
@@ -1921,7 +2060,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1921
2060
 
1922
2061
  }
1923
2062
 
1924
- if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {
2063
+ if ( textureNeedsGenerateMipmaps( texture ) ) {
1925
2064
 
1926
2065
  generateMipmap( glTextureType );
1927
2066
 
@@ -1943,21 +2082,19 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1943
2082
 
1944
2083
  function updateRenderTargetMipmap( renderTarget ) {
1945
2084
 
1946
- const supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;
1947
-
1948
- const textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];
2085
+ const textures = renderTarget.textures;
1949
2086
 
1950
2087
  for ( let i = 0, il = textures.length; i < il; i ++ ) {
1951
2088
 
1952
2089
  const texture = textures[ i ];
1953
2090
 
1954
- if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {
2091
+ if ( textureNeedsGenerateMipmaps( texture ) ) {
1955
2092
 
1956
- const target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;
2093
+ const targetType = getTargetType( renderTarget );
1957
2094
  const webglTexture = properties.get( texture ).__webglTexture;
1958
2095
 
1959
- state.bindTexture( target, webglTexture );
1960
- generateMipmap( target );
2096
+ state.bindTexture( targetType, webglTexture );
2097
+ generateMipmap( targetType );
1961
2098
  state.unbindTexture();
1962
2099
 
1963
2100
  }
@@ -1966,109 +2103,131 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1966
2103
 
1967
2104
  }
1968
2105
 
2106
+ const invalidationArrayRead = [];
2107
+ const invalidationArrayDraw = [];
2108
+
1969
2109
  function updateMultisampleRenderTarget( renderTarget ) {
1970
2110
 
1971
- if ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {
2111
+ if ( renderTarget.samples > 0 ) {
1972
2112
 
1973
- const textures = renderTarget.isWebGLMultipleRenderTargets ? renderTarget.texture : [ renderTarget.texture ];
1974
- const width = renderTarget.width;
1975
- const height = renderTarget.height;
1976
- let mask = _gl.COLOR_BUFFER_BIT;
1977
- const invalidationArray = [];
1978
- const depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;
1979
- const renderTargetProperties = properties.get( renderTarget );
1980
- const isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );
2113
+ if ( useMultisampledRTT( renderTarget ) === false ) {
1981
2114
 
1982
- // If MRT we need to remove FBO attachments
1983
- if ( isMultipleRenderTargets ) {
2115
+ const textures = renderTarget.textures;
2116
+ const width = renderTarget.width;
2117
+ const height = renderTarget.height;
2118
+ let mask = _gl.COLOR_BUFFER_BIT;
2119
+ const depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;
2120
+ const renderTargetProperties = properties.get( renderTarget );
2121
+ const isMultipleRenderTargets = ( textures.length > 1 );
1984
2122
 
1985
- for ( let i = 0; i < textures.length; i ++ ) {
2123
+ // If MRT we need to remove FBO attachments
2124
+ if ( isMultipleRenderTargets ) {
1986
2125
 
1987
- state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );
1988
- _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, null );
2126
+ for ( let i = 0; i < textures.length; i ++ ) {
1989
2127
 
1990
- state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );
1991
- _gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, null, 0 );
2128
+ state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );
2129
+ _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, null );
2130
+
2131
+ state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );
2132
+ _gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, null, 0 );
2133
+
2134
+ }
1992
2135
 
1993
2136
  }
1994
2137
 
1995
- }
2138
+ state.bindFramebuffer( _gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );
1996
2139
 
1997
- state.bindFramebuffer( _gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );
1998
- state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );
2140
+ const mipmaps = renderTarget.texture.mipmaps;
1999
2141
 
2000
- for ( let i = 0; i < textures.length; i ++ ) {
2142
+ if ( mipmaps && mipmaps.length > 0 ) {
2001
2143
 
2002
- invalidationArray.push( _gl.COLOR_ATTACHMENT0 + i );
2144
+ state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ 0 ] );
2003
2145
 
2004
- if ( renderTarget.depthBuffer ) {
2146
+ } else {
2005
2147
 
2006
- invalidationArray.push( depthStyle );
2148
+ state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );
2007
2149
 
2008
2150
  }
2009
2151
 
2010
- const ignoreDepthValues = ( renderTargetProperties.__ignoreDepthValues !== undefined ) ? renderTargetProperties.__ignoreDepthValues : false;
2152
+ for ( let i = 0; i < textures.length; i ++ ) {
2011
2153
 
2012
- if ( ignoreDepthValues === false ) {
2154
+ if ( renderTarget.resolveDepthBuffer ) {
2013
2155
 
2014
- if ( renderTarget.depthBuffer ) mask |= _gl.DEPTH_BUFFER_BIT;
2015
- if ( renderTarget.stencilBuffer ) mask |= _gl.STENCIL_BUFFER_BIT;
2156
+ if ( renderTarget.depthBuffer ) mask |= _gl.DEPTH_BUFFER_BIT;
2016
2157
 
2017
- }
2158
+ // resolving stencil is slow with a D3D backend. disable it for all transmission render targets (see #27799)
2018
2159
 
2019
- if ( isMultipleRenderTargets ) {
2160
+ if ( renderTarget.stencilBuffer && renderTarget.resolveStencilBuffer ) mask |= _gl.STENCIL_BUFFER_BIT;
2020
2161
 
2021
- _gl.framebufferRenderbuffer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );
2162
+ }
2022
2163
 
2023
- }
2164
+ if ( isMultipleRenderTargets ) {
2024
2165
 
2025
- if ( ignoreDepthValues === true ) {
2166
+ _gl.framebufferRenderbuffer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );
2026
2167
 
2027
- _gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, [ depthStyle ] );
2028
- _gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, [ depthStyle ] );
2168
+ const webglTexture = properties.get( textures[ i ] ).__webglTexture;
2169
+ _gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, webglTexture, 0 );
2029
2170
 
2030
- }
2171
+ }
2031
2172
 
2032
- if ( isMultipleRenderTargets ) {
2173
+ _gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST );
2033
2174
 
2034
- const webglTexture = properties.get( textures[ i ] ).__webglTexture;
2035
- _gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, webglTexture, 0 );
2175
+ if ( supportsInvalidateFramebuffer === true ) {
2036
2176
 
2037
- }
2177
+ invalidationArrayRead.length = 0;
2178
+ invalidationArrayDraw.length = 0;
2179
+
2180
+ invalidationArrayRead.push( _gl.COLOR_ATTACHMENT0 + i );
2181
+
2182
+ if ( renderTarget.depthBuffer && renderTarget.resolveDepthBuffer === false ) {
2038
2183
 
2039
- _gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST );
2184
+ invalidationArrayRead.push( depthStyle );
2185
+ invalidationArrayDraw.push( depthStyle );
2040
2186
 
2041
- if ( supportsInvalidateFramebuffer ) {
2187
+ _gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, invalidationArrayDraw );
2042
2188
 
2043
- _gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, invalidationArray );
2189
+ }
2190
+
2191
+ _gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, invalidationArrayRead );
2192
+
2193
+ }
2044
2194
 
2045
2195
  }
2046
2196
 
2197
+ state.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );
2198
+ state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );
2047
2199
 
2048
- }
2200
+ // If MRT since pre-blit we removed the FBO we need to reconstruct the attachments
2201
+ if ( isMultipleRenderTargets ) {
2049
2202
 
2050
- state.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );
2051
- state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );
2203
+ for ( let i = 0; i < textures.length; i ++ ) {
2052
2204
 
2053
- // If MRT since pre-blit we removed the FBO we need to reconstruct the attachments
2054
- if ( isMultipleRenderTargets ) {
2205
+ state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );
2206
+ _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );
2055
2207
 
2056
- for ( let i = 0; i < textures.length; i ++ ) {
2208
+ const webglTexture = properties.get( textures[ i ] ).__webglTexture;
2057
2209
 
2058
- state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );
2059
- _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );
2210
+ state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );
2211
+ _gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, webglTexture, 0 );
2060
2212
 
2061
- const webglTexture = properties.get( textures[ i ] ).__webglTexture;
2213
+ }
2062
2214
 
2063
- state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );
2064
- _gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, webglTexture, 0 );
2215
+ }
2216
+
2217
+ state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );
2218
+
2219
+ } else {
2220
+
2221
+ if ( renderTarget.depthBuffer && renderTarget.resolveDepthBuffer === false && supportsInvalidateFramebuffer ) {
2222
+
2223
+ const depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;
2224
+
2225
+ _gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, [ depthStyle ] );
2065
2226
 
2066
2227
  }
2067
2228
 
2068
2229
  }
2069
2230
 
2070
- state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );
2071
-
2072
2231
  }
2073
2232
 
2074
2233
  }
@@ -2083,7 +2242,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
2083
2242
 
2084
2243
  const renderTargetProperties = properties.get( renderTarget );
2085
2244
 
2086
- return isWebGL2 && renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;
2245
+ return renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;
2087
2246
 
2088
2247
  }
2089
2248
 
@@ -2108,7 +2267,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
2108
2267
  const format = texture.format;
2109
2268
  const type = texture.type;
2110
2269
 
2111
- if ( texture.isCompressedTexture === true || texture.isVideoTexture === true || texture.format === _SRGBAFormat ) return image;
2270
+ if ( texture.isCompressedTexture === true || texture.isVideoTexture === true ) return image;
2112
2271
 
2113
2272
  if ( colorSpace !== LinearSRGBColorSpace && colorSpace !== NoColorSpace ) {
2114
2273
 
@@ -2116,48 +2275,48 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
2116
2275
 
2117
2276
  if ( ColorManagement.getTransfer( colorSpace ) === SRGBTransfer ) {
2118
2277
 
2119
- if ( isWebGL2 === false ) {
2278
+ // in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format
2120
2279
 
2121
- // in WebGL 1, try to use EXT_sRGB extension and unsized formats
2280
+ if ( format !== RGBAFormat || type !== UnsignedByteType ) {
2122
2281
 
2123
- if ( extensions.has( 'EXT_sRGB' ) === true && format === RGBAFormat ) {
2282
+ warn( 'WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );
2124
2283
 
2125
- texture.format = _SRGBAFormat;
2284
+ }
2126
2285
 
2127
- // it's not possible to generate mips in WebGL 1 with this extension
2286
+ } else {
2128
2287
 
2129
- texture.minFilter = LinearFilter;
2130
- texture.generateMipmaps = false;
2288
+ error( 'WebGLTextures: Unsupported texture color space:', colorSpace );
2131
2289
 
2132
- } else {
2133
-
2134
- // slow fallback (CPU decode)
2290
+ }
2135
2291
 
2136
- image = ImageUtils.sRGBToLinear( image );
2292
+ }
2137
2293
 
2138
- }
2294
+ return image;
2139
2295
 
2140
- } else {
2296
+ }
2141
2297
 
2142
- // in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format
2298
+ function getDimensions( image ) {
2143
2299
 
2144
- if ( format !== RGBAFormat || type !== UnsignedByteType ) {
2300
+ if ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) {
2145
2301
 
2146
- console.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );
2302
+ // if intrinsic data are not available, fallback to width/height
2147
2303
 
2148
- }
2304
+ _imageDimensions.width = image.naturalWidth || image.width;
2305
+ _imageDimensions.height = image.naturalHeight || image.height;
2149
2306
 
2150
- }
2307
+ } else if ( typeof VideoFrame !== 'undefined' && image instanceof VideoFrame ) {
2151
2308
 
2152
- } else {
2309
+ _imageDimensions.width = image.displayWidth;
2310
+ _imageDimensions.height = image.displayHeight;
2153
2311
 
2154
- console.error( 'THREE.WebGLTextures: Unsupported texture color space:', colorSpace );
2312
+ } else {
2155
2313
 
2156
- }
2314
+ _imageDimensions.width = image.width;
2315
+ _imageDimensions.height = image.height;
2157
2316
 
2158
2317
  }
2159
2318
 
2160
- return image;
2319
+ return _imageDimensions;
2161
2320
 
2162
2321
  }
2163
2322