super-three 0.181.0 → 0.185.0

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 (693) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -4
  3. package/build/three.cjs +21332 -19201
  4. package/build/three.core.js +20908 -19853
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +1947 -862
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +37 -16
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +33628 -25197
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +33394 -25000
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/jsm/Addons.js +14 -3
  15. package/examples/jsm/animation/CCDIKSolver.js +7 -3
  16. package/examples/jsm/controls/ArcballControls.js +13 -6
  17. package/examples/jsm/controls/DragControls.js +2 -2
  18. package/examples/jsm/controls/FirstPersonControls.js +127 -86
  19. package/examples/jsm/controls/FlyControls.js +4 -0
  20. package/examples/jsm/controls/MapControls.js +55 -1
  21. package/examples/jsm/controls/OrbitControls.js +111 -8
  22. package/examples/jsm/controls/TrackballControls.js +8 -8
  23. package/examples/jsm/controls/TransformControls.js +102 -17
  24. package/examples/jsm/csm/CSM.js +2 -1
  25. package/examples/jsm/csm/CSMFrustum.js +31 -6
  26. package/examples/jsm/csm/CSMShadowNode.js +10 -3
  27. package/examples/jsm/effects/AnaglyphEffect.js +102 -7
  28. package/examples/jsm/effects/AsciiEffect.js +14 -1
  29. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  30. package/examples/jsm/environments/RoomEnvironment.js +3 -0
  31. package/examples/jsm/exporters/DRACOExporter.js +27 -6
  32. package/examples/jsm/exporters/EXRExporter.js +1 -1
  33. package/examples/jsm/exporters/GLTFExporter.js +266 -21
  34. package/examples/jsm/exporters/PLYExporter.js +286 -73
  35. package/examples/jsm/exporters/USDZExporter.js +353 -99
  36. package/examples/jsm/generators/CityGenerator.js +346 -0
  37. package/examples/jsm/generators/ForestGenerator.js +347 -0
  38. package/examples/jsm/generators/TerrainGenerator.js +504 -0
  39. package/examples/jsm/generators/TreeGenerator.js +377 -0
  40. package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
  41. package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
  42. package/examples/jsm/geometries/DecalGeometry.js +1 -1
  43. package/examples/jsm/geometries/LoftGeometry.js +355 -0
  44. package/examples/jsm/geometries/TextGeometry.js +18 -0
  45. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  46. package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
  47. package/examples/jsm/helpers/LightProbeHelper.js +5 -4
  48. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
  49. package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
  50. package/examples/jsm/helpers/ViewHelper.js +83 -14
  51. package/examples/jsm/inspector/Extension.js +13 -0
  52. package/examples/jsm/inspector/Inspector.js +244 -91
  53. package/examples/jsm/inspector/RendererInspector.js +165 -39
  54. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
  55. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
  56. package/examples/jsm/inspector/tabs/Console.js +241 -25
  57. package/examples/jsm/inspector/tabs/Memory.js +136 -0
  58. package/examples/jsm/inspector/tabs/Parameters.js +115 -7
  59. package/examples/jsm/inspector/tabs/Performance.js +24 -9
  60. package/examples/jsm/inspector/tabs/Settings.js +306 -0
  61. package/examples/jsm/inspector/tabs/Timeline.js +1696 -0
  62. package/examples/jsm/inspector/tabs/Viewer.js +723 -9
  63. package/examples/jsm/inspector/ui/Graph.js +162 -25
  64. package/examples/jsm/inspector/ui/Item.js +92 -13
  65. package/examples/jsm/inspector/ui/List.js +2 -2
  66. package/examples/jsm/inspector/ui/Profiler.js +1991 -44
  67. package/examples/jsm/inspector/ui/Style.js +1943 -543
  68. package/examples/jsm/inspector/ui/Tab.js +226 -5
  69. package/examples/jsm/inspector/ui/Values.js +126 -8
  70. package/examples/jsm/inspector/ui/utils.js +143 -10
  71. package/examples/jsm/interaction/InteractionManager.js +226 -0
  72. package/examples/jsm/libs/basis/README.md +0 -1
  73. package/examples/jsm/libs/demuxer_mp4.js +3 -3
  74. package/examples/jsm/libs/draco/README.md +0 -1
  75. package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
  76. package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
  77. package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
  78. package/examples/jsm/libs/mikktspace.module.js +34 -9
  79. package/examples/jsm/lighting/ClusteredLighting.js +55 -0
  80. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  81. package/examples/jsm/lighting/LightProbeGrid.js +681 -0
  82. package/examples/jsm/lines/LineMaterial.js +45 -16
  83. package/examples/jsm/lines/LineSegments2.js +8 -0
  84. package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
  85. package/examples/jsm/loaders/3DMLoader.js +6 -5
  86. package/examples/jsm/loaders/3MFLoader.js +2 -2
  87. package/examples/jsm/loaders/AMFLoader.js +2 -2
  88. package/examples/jsm/loaders/ColladaLoader.js +24 -4026
  89. package/examples/jsm/loaders/DRACOLoader.js +51 -18
  90. package/examples/jsm/loaders/EXRLoader.js +701 -90
  91. package/examples/jsm/loaders/FBXLoader.js +235 -37
  92. package/examples/jsm/loaders/GCodeLoader.js +34 -8
  93. package/examples/jsm/loaders/GLTFLoader.js +146 -178
  94. package/examples/jsm/loaders/HDRLoader.js +7 -30
  95. package/examples/jsm/loaders/KMZLoader.js +5 -5
  96. package/examples/jsm/loaders/KTX2Loader.js +58 -17
  97. package/examples/jsm/loaders/LDrawLoader.js +49 -58
  98. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  99. package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
  100. package/examples/jsm/loaders/LWOLoader.js +11 -39
  101. package/examples/jsm/loaders/LottieLoader.js +1 -1
  102. package/examples/jsm/loaders/MaterialXLoader.js +31 -9
  103. package/examples/jsm/loaders/NRRDLoader.js +5 -5
  104. package/examples/jsm/loaders/PCDLoader.js +11 -9
  105. package/examples/jsm/loaders/PLYLoader.js +218 -55
  106. package/examples/jsm/loaders/SVGLoader.js +549 -497
  107. package/examples/jsm/loaders/TDSLoader.js +0 -2
  108. package/examples/jsm/loaders/TGALoader.js +0 -2
  109. package/examples/jsm/loaders/TTFLoader.js +1 -1
  110. package/examples/jsm/loaders/USDLoader.js +127 -43
  111. package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
  112. package/examples/jsm/loaders/VOXLoader.js +660 -117
  113. package/examples/jsm/loaders/VRMLLoader.js +80 -3
  114. package/examples/jsm/loaders/VTKLoader.js +42 -25
  115. package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
  116. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  117. package/examples/jsm/loaders/usd/USDAParser.js +504 -344
  118. package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
  119. package/examples/jsm/loaders/usd/USDComposer.js +4627 -0
  120. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
  121. package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
  122. package/examples/jsm/math/Octree.js +131 -1
  123. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  124. package/examples/jsm/misc/RollerCoaster.js +42 -4
  125. package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
  126. package/examples/jsm/misc/Volume.js +2 -3
  127. package/examples/jsm/misc/VolumeSlice.js +0 -1
  128. package/examples/jsm/modifiers/TessellateModifier.js +1 -1
  129. package/examples/jsm/objects/GroundedSkybox.js +1 -1
  130. package/examples/jsm/objects/LensflareMesh.js +1 -1
  131. package/examples/jsm/objects/Reflector.js +72 -25
  132. package/examples/jsm/objects/Sky.js +90 -6
  133. package/examples/jsm/objects/SkyMesh.js +150 -16
  134. package/examples/jsm/objects/Water.js +4 -3
  135. package/examples/jsm/objects/Water2.js +5 -3
  136. package/examples/jsm/objects/Water2Mesh.js +1 -1
  137. package/examples/jsm/objects/WaterMesh.js +5 -7
  138. package/examples/jsm/physics/AmmoPhysics.js +27 -15
  139. package/examples/jsm/physics/JoltPhysics.js +10 -6
  140. package/examples/jsm/physics/RapierPhysics.js +36 -7
  141. package/examples/jsm/postprocessing/EffectComposer.js +7 -5
  142. package/examples/jsm/postprocessing/OutputPass.js +9 -0
  143. package/examples/jsm/postprocessing/RenderPass.js +10 -0
  144. package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
  145. package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
  146. package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
  147. package/examples/jsm/renderers/Projector.js +246 -28
  148. package/examples/jsm/renderers/SVGRenderer.js +174 -60
  149. package/examples/jsm/shaders/GTAOShader.js +19 -6
  150. package/examples/jsm/shaders/HalftoneShader.js +12 -1
  151. package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
  152. package/examples/jsm/shaders/SAOShader.js +17 -4
  153. package/examples/jsm/shaders/SSAOShader.js +11 -1
  154. package/examples/jsm/shaders/SSRShader.js +6 -5
  155. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
  156. package/examples/jsm/shaders/VignetteShader.js +1 -1
  157. package/examples/jsm/shaders/VolumeShader.js +31 -44
  158. package/examples/jsm/transpiler/AST.js +44 -0
  159. package/examples/jsm/transpiler/GLSLDecoder.js +65 -8
  160. package/examples/jsm/transpiler/Linker.js +1 -1
  161. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
  162. package/examples/jsm/transpiler/TSLEncoder.js +46 -3
  163. package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
  164. package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
  165. package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
  166. package/examples/jsm/tsl/display/AfterImageNode.js +11 -1
  167. package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
  168. package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
  169. package/examples/jsm/tsl/display/BloomNode.js +75 -25
  170. package/examples/jsm/tsl/display/CRT.js +150 -0
  171. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
  172. package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
  173. package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
  174. package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
  175. package/examples/jsm/tsl/display/FSR1Node.js +477 -0
  176. package/examples/jsm/tsl/display/FXAANode.js +13 -14
  177. package/examples/jsm/tsl/display/GTAONode.js +40 -17
  178. package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
  179. package/examples/jsm/tsl/display/GodraysNode.js +615 -0
  180. package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
  181. package/examples/jsm/tsl/display/LensflareNode.js +1 -1
  182. package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
  183. package/examples/jsm/tsl/display/OutlineNode.js +69 -19
  184. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
  185. package/examples/jsm/tsl/display/PixelationPassNode.js +9 -8
  186. package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
  187. package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
  188. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  189. package/examples/jsm/tsl/display/SMAANode.js +2 -2
  190. package/examples/jsm/tsl/display/SSAAPassNode.js +15 -27
  191. package/examples/jsm/tsl/display/SSGINode.js +96 -62
  192. package/examples/jsm/tsl/display/SSRNode.js +831 -134
  193. package/examples/jsm/tsl/display/SSSNode.js +8 -6
  194. package/examples/jsm/tsl/display/Shape.js +29 -0
  195. package/examples/jsm/tsl/display/SharpenNode.js +283 -0
  196. package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
  197. package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
  198. package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
  199. package/examples/jsm/tsl/display/TAAUNode.js +835 -0
  200. package/examples/jsm/tsl/display/TRAANode.js +315 -126
  201. package/examples/jsm/tsl/display/TemporalReprojectNode.js +1023 -0
  202. package/examples/jsm/tsl/display/TransitionNode.js +1 -1
  203. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  204. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  205. package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +622 -0
  206. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
  207. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
  208. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
  209. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
  210. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
  211. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
  212. package/examples/jsm/tsl/math/Bayer.js +53 -3
  213. package/examples/jsm/tsl/math/curlNoise.js +107 -0
  214. package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
  215. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
  216. package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
  217. package/examples/jsm/tsl/utils/RNoise.js +51 -0
  218. package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
  219. package/examples/jsm/utils/BufferGeometryUtils.js +128 -62
  220. package/examples/jsm/utils/ColorUtils.js +76 -0
  221. package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
  222. package/examples/jsm/utils/LDrawUtils.js +1 -1
  223. package/examples/jsm/utils/SceneOptimizer.js +1 -1
  224. package/examples/jsm/utils/ShadowMapViewer.js +24 -10
  225. package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
  226. package/examples/jsm/utils/SkeletonUtils.js +14 -8
  227. package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
  228. package/examples/jsm/webxr/ARButton.js +1 -1
  229. package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
  230. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
  231. package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
  232. package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
  233. package/package.json +28 -34
  234. package/src/Three.Core.js +3 -1
  235. package/src/Three.TSL.js +35 -14
  236. package/src/Three.WebGPU.Nodes.js +5 -0
  237. package/src/Three.WebGPU.js +13 -0
  238. package/src/Three.js +1 -0
  239. package/src/animation/AnimationAction.js +18 -4
  240. package/src/animation/AnimationClip.js +0 -139
  241. package/src/animation/AnimationMixer.js +6 -0
  242. package/src/animation/AnimationUtils.js +1 -12
  243. package/src/animation/KeyframeTrack.js +47 -8
  244. package/src/animation/PropertyBinding.js +2 -2
  245. package/src/animation/PropertyMixer.js +4 -4
  246. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  247. package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
  248. package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
  249. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
  250. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  251. package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
  252. package/src/audio/Audio.js +1 -1
  253. package/src/audio/AudioContext.js +2 -2
  254. package/src/audio/AudioListener.js +5 -3
  255. package/src/cameras/Camera.js +34 -4
  256. package/src/cameras/CubeCamera.js +20 -0
  257. package/src/cameras/StereoCamera.js +5 -2
  258. package/src/constants.js +90 -5
  259. package/src/core/BufferAttribute.js +13 -1
  260. package/src/core/BufferGeometry.js +43 -9
  261. package/src/core/Clock.js +7 -0
  262. package/src/core/Object3D.js +69 -11
  263. package/src/core/Raycaster.js +3 -3
  264. package/src/core/RenderTarget.js +19 -6
  265. package/src/extras/PMREMGenerator.js +13 -22
  266. package/src/extras/TextureUtils.js +6 -2
  267. package/src/extras/core/ShapePath.js +149 -160
  268. package/src/extras/curves/CatmullRomCurve3.js +3 -2
  269. package/src/geometries/ExtrudeGeometry.js +2 -2
  270. package/src/geometries/PolyhedronGeometry.js +1 -1
  271. package/src/geometries/SphereGeometry.js +8 -3
  272. package/src/geometries/TorusGeometry.js +8 -3
  273. package/src/helpers/CameraHelper.js +3 -0
  274. package/src/helpers/DirectionalLightHelper.js +6 -1
  275. package/src/helpers/HemisphereLightHelper.js +5 -0
  276. package/src/helpers/PointLightHelper.js +3 -25
  277. package/src/helpers/SpotLightHelper.js +4 -1
  278. package/src/lights/DirectionalLight.js +13 -0
  279. package/src/lights/HemisphereLight.js +10 -0
  280. package/src/lights/Light.js +1 -11
  281. package/src/lights/LightProbe.js +0 -15
  282. package/src/lights/LightShadow.js +15 -6
  283. package/src/lights/PointLight.js +15 -0
  284. package/src/lights/PointLightShadow.js +0 -86
  285. package/src/lights/SpotLight.js +22 -1
  286. package/src/lights/webgpu/IESSpotLight.js +2 -1
  287. package/src/loaders/AudioLoader.js +11 -1
  288. package/src/loaders/Cache.js +28 -0
  289. package/src/loaders/DataTextureLoader.js +75 -42
  290. package/src/loaders/FileLoader.js +2 -3
  291. package/src/loaders/ImageBitmapLoader.js +12 -9
  292. package/src/loaders/Loader.js +6 -0
  293. package/src/loaders/LoadingManager.js +5 -0
  294. package/src/loaders/MaterialLoader.js +37 -266
  295. package/src/loaders/ObjectLoader.js +48 -6
  296. package/src/loaders/nodes/NodeLoader.js +2 -2
  297. package/src/loaders/nodes/NodeObjectLoader.js +18 -0
  298. package/src/materials/LineBasicMaterial.js +4 -0
  299. package/src/materials/Material.js +198 -1
  300. package/src/materials/MeshBasicMaterial.js +24 -0
  301. package/src/materials/MeshDepthMaterial.js +10 -0
  302. package/src/materials/MeshDistanceMaterial.js +10 -0
  303. package/src/materials/MeshLambertMaterial.js +49 -1
  304. package/src/materials/MeshMatcapMaterial.js +25 -1
  305. package/src/materials/MeshNormalMaterial.js +9 -1
  306. package/src/materials/MeshPhongMaterial.js +49 -1
  307. package/src/materials/MeshPhysicalMaterial.js +38 -0
  308. package/src/materials/MeshStandardMaterial.js +42 -1
  309. package/src/materials/MeshToonMaterial.js +35 -2
  310. package/src/materials/PointsMaterial.js +7 -0
  311. package/src/materials/ShaderMaterial.js +106 -1
  312. package/src/materials/SpriteMaterial.js +7 -0
  313. package/src/materials/nodes/Line2NodeMaterial.js +380 -297
  314. package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
  315. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  316. package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
  317. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +3 -30
  318. package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
  319. package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -15
  320. package/src/materials/nodes/NodeMaterial.js +153 -89
  321. package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
  322. package/src/materials/nodes/manager/NodeMaterialObserver.js +234 -100
  323. package/src/math/Box3.js +5 -0
  324. package/src/math/FrustumArray.js +103 -133
  325. package/src/math/Interpolant.js +1 -1
  326. package/src/math/Line3.js +6 -5
  327. package/src/math/MathUtils.js +12 -12
  328. package/src/math/Matrix2.js +13 -9
  329. package/src/math/Matrix3.js +24 -9
  330. package/src/math/Matrix4.js +112 -74
  331. package/src/math/Plane.js +4 -3
  332. package/src/math/Quaternion.js +3 -29
  333. package/src/math/Sphere.js +1 -1
  334. package/src/math/Triangle.js +1 -1
  335. package/src/math/Vector2.js +13 -9
  336. package/src/math/Vector3.js +17 -15
  337. package/src/math/Vector4.js +15 -11
  338. package/src/math/interpolants/BezierInterpolant.js +106 -0
  339. package/src/nodes/Nodes.js +86 -71
  340. package/src/nodes/TSL.js +15 -13
  341. package/src/nodes/accessors/Arrays.js +5 -5
  342. package/src/nodes/accessors/Batch.js +108 -0
  343. package/src/nodes/accessors/Bitangent.js +7 -7
  344. package/src/nodes/accessors/BufferAttributeNode.js +120 -17
  345. package/src/nodes/accessors/BufferNode.js +29 -2
  346. package/src/nodes/accessors/Camera.js +149 -28
  347. package/src/nodes/accessors/ClippingNode.js +5 -5
  348. package/src/nodes/accessors/CubeTextureNode.js +27 -2
  349. package/src/nodes/accessors/Instance.js +264 -0
  350. package/src/nodes/accessors/MaterialNode.js +27 -3
  351. package/src/nodes/accessors/MaterialProperties.js +6 -8
  352. package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
  353. package/src/nodes/accessors/ModelNode.js +1 -1
  354. package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
  355. package/src/nodes/accessors/Normal.js +24 -24
  356. package/src/nodes/accessors/Object3DNode.js +1 -1
  357. package/src/nodes/accessors/Position.js +39 -3
  358. package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
  359. package/src/nodes/accessors/ReferenceNode.js +9 -8
  360. package/src/nodes/accessors/ReflectVector.js +3 -3
  361. package/src/nodes/accessors/RendererReferenceNode.js +1 -2
  362. package/src/nodes/accessors/SceneProperties.js +47 -0
  363. package/src/nodes/accessors/Skinning.js +263 -0
  364. package/src/nodes/accessors/StorageBufferNode.js +16 -27
  365. package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
  366. package/src/nodes/accessors/StorageTextureNode.js +74 -11
  367. package/src/nodes/accessors/Tangent.js +8 -18
  368. package/src/nodes/accessors/Texture3DNode.js +32 -35
  369. package/src/nodes/accessors/TextureNode.js +124 -25
  370. package/src/nodes/accessors/UniformArrayNode.js +6 -4
  371. package/src/nodes/accessors/UserDataNode.js +1 -2
  372. package/src/nodes/accessors/VertexColorNode.js +1 -2
  373. package/src/nodes/code/FunctionCallNode.js +1 -1
  374. package/src/nodes/code/FunctionNode.js +4 -19
  375. package/src/nodes/core/ArrayNode.js +21 -2
  376. package/src/nodes/core/AssignNode.js +3 -3
  377. package/src/nodes/core/AttributeNode.js +3 -3
  378. package/src/nodes/core/BypassNode.js +1 -1
  379. package/src/nodes/core/ContextNode.js +104 -5
  380. package/src/nodes/core/IndexNode.js +2 -1
  381. package/src/nodes/core/InputNode.js +1 -1
  382. package/src/nodes/core/InspectorNode.js +1 -1
  383. package/src/nodes/core/IsolateNode.js +1 -1
  384. package/src/nodes/core/MRTNode.js +55 -4
  385. package/src/nodes/core/Node.js +151 -17
  386. package/src/nodes/core/NodeBuilder.js +479 -101
  387. package/src/nodes/core/NodeError.js +28 -0
  388. package/src/nodes/core/NodeFrame.js +12 -4
  389. package/src/nodes/core/NodeUtils.js +20 -18
  390. package/src/nodes/core/OutputStructNode.js +13 -11
  391. package/src/nodes/core/OverrideContextNode.js +153 -0
  392. package/src/nodes/core/ParameterNode.js +4 -4
  393. package/src/nodes/core/PropertyNode.js +66 -4
  394. package/src/nodes/core/StackNode.js +91 -20
  395. package/src/nodes/core/StackTrace.js +139 -0
  396. package/src/nodes/core/StructNode.js +20 -8
  397. package/src/nodes/core/StructTypeNode.js +17 -23
  398. package/src/nodes/core/SubBuildNode.js +2 -2
  399. package/src/nodes/core/UniformGroupNode.js +36 -6
  400. package/src/nodes/core/UniformNode.js +21 -5
  401. package/src/nodes/core/VarNode.js +56 -23
  402. package/src/nodes/core/VaryingNode.js +14 -21
  403. package/src/nodes/display/BlendModes.js +1 -105
  404. package/src/nodes/display/BumpMapNode.js +6 -1
  405. package/src/nodes/display/ColorAdjustment.js +27 -9
  406. package/src/nodes/display/ColorSpaceNode.js +3 -3
  407. package/src/nodes/display/FrontFacingNode.js +38 -9
  408. package/src/nodes/display/NormalMapNode.js +41 -6
  409. package/src/nodes/display/PassNode.js +157 -56
  410. package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
  411. package/src/nodes/display/RenderOutputNode.js +19 -10
  412. package/src/nodes/display/ScreenNode.js +4 -2
  413. package/src/nodes/display/ToneMappingNode.js +1 -1
  414. package/src/nodes/display/ToonOutlinePassNode.js +2 -2
  415. package/src/nodes/display/ViewportDepthNode.js +52 -4
  416. package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
  417. package/src/nodes/display/ViewportTextureNode.js +39 -11
  418. package/src/nodes/fog/Fog.js +18 -35
  419. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
  420. package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
  421. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  422. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  423. package/src/nodes/functions/PhysicalLightingModel.js +126 -45
  424. package/src/nodes/functions/VolumetricLightingModel.js +40 -7
  425. package/src/nodes/geometry/RangeNode.js +5 -3
  426. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  427. package/src/nodes/gpgpu/BarrierNode.js +9 -0
  428. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -3
  429. package/src/nodes/gpgpu/ComputeNode.js +74 -48
  430. package/src/nodes/gpgpu/SubgroupFunctionNode.js +2 -2
  431. package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -5
  432. package/src/nodes/lighting/AnalyticLightNode.js +53 -0
  433. package/src/nodes/lighting/EnvironmentNode.js +30 -5
  434. package/src/nodes/lighting/IESSpotLightNode.js +40 -2
  435. package/src/nodes/lighting/LightingContextNode.js +10 -2
  436. package/src/nodes/lighting/LightsNode.js +97 -65
  437. package/src/nodes/lighting/PointShadowNode.js +166 -148
  438. package/src/nodes/lighting/ShadowFilterNode.js +74 -117
  439. package/src/nodes/lighting/ShadowNode.js +149 -51
  440. package/src/nodes/materialx/lib/mx_noise.js +2 -2
  441. package/src/nodes/math/BitcastNode.js +1 -1
  442. package/src/nodes/math/BitcountNode.js +433 -0
  443. package/src/nodes/math/ConditionalNode.js +6 -6
  444. package/src/nodes/math/MathNode.js +115 -52
  445. package/src/nodes/math/OperatorNode.js +24 -23
  446. package/src/nodes/math/PackFloatNode.js +98 -0
  447. package/src/nodes/math/UnpackFloatNode.js +96 -0
  448. package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
  449. package/src/nodes/pmrem/PMREMNode.js +34 -3
  450. package/src/nodes/pmrem/PMREMUtils.js +9 -15
  451. package/src/nodes/tsl/TSLBase.js +1 -1
  452. package/src/nodes/tsl/TSLCore.js +99 -33
  453. package/src/nodes/utils/ArrayElementNode.js +14 -1
  454. package/src/nodes/utils/ConvertNode.js +1 -1
  455. package/src/nodes/utils/DebugNode.js +12 -12
  456. package/src/nodes/utils/EquirectUV.js +30 -5
  457. package/src/nodes/utils/EventNode.js +31 -2
  458. package/src/nodes/utils/FlipNode.js +1 -1
  459. package/src/nodes/utils/FunctionOverloadingNode.js +2 -2
  460. package/src/nodes/utils/JoinNode.js +3 -3
  461. package/src/nodes/utils/LoopNode.js +1 -1
  462. package/src/nodes/utils/MemberNode.js +2 -2
  463. package/src/nodes/utils/Packing.js +48 -5
  464. package/src/nodes/utils/PostProcessingUtils.js +33 -1
  465. package/src/nodes/utils/RTTNode.js +41 -25
  466. package/src/nodes/utils/ReflectorNode.js +4 -4
  467. package/src/nodes/utils/Remap.js +48 -0
  468. package/src/nodes/utils/RotateNode.js +1 -1
  469. package/src/nodes/utils/SampleNode.js +1 -1
  470. package/src/nodes/utils/SetNode.js +1 -1
  471. package/src/nodes/utils/SplitNode.js +1 -1
  472. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  473. package/src/nodes/utils/StorageArrayElementNode.js +1 -1
  474. package/src/nodes/utils/UVUtils.js +28 -0
  475. package/src/objects/BatchedMesh.js +66 -30
  476. package/src/objects/InstancedMesh.js +19 -3
  477. package/src/objects/Line.js +1 -1
  478. package/src/objects/Mesh.js +1 -1
  479. package/src/objects/Points.js +1 -1
  480. package/src/objects/SkinnedMesh.js +26 -9
  481. package/src/renderers/WebGLRenderer.js +344 -156
  482. package/src/renderers/common/Animation.js +3 -3
  483. package/src/renderers/common/Attributes.js +15 -1
  484. package/src/renderers/common/Backend.js +78 -13
  485. package/src/renderers/common/Background.js +26 -13
  486. package/src/renderers/common/BindGroup.js +1 -16
  487. package/src/renderers/common/Binding.js +11 -0
  488. package/src/renderers/common/Bindings.js +141 -57
  489. package/src/renderers/common/BlendMode.js +143 -0
  490. package/src/renderers/common/Buffer.js +49 -0
  491. package/src/renderers/common/BundleGroup.js +1 -1
  492. package/src/renderers/common/ChainMap.js +30 -6
  493. package/src/renderers/common/ClippingContext.js +10 -2
  494. package/src/renderers/common/ComputePipeline.js +1 -1
  495. package/src/renderers/common/CubeRenderTarget.js +51 -7
  496. package/src/renderers/common/Geometries.js +29 -3
  497. package/src/renderers/common/Info.js +374 -4
  498. package/src/renderers/common/InspectorBase.js +6 -1
  499. package/src/renderers/common/Lighting.js +51 -19
  500. package/src/renderers/common/Pipelines.js +40 -7
  501. package/src/renderers/common/PostProcessing.js +8 -206
  502. package/src/renderers/common/ReadbackBuffer.js +78 -0
  503. package/src/renderers/common/RenderBundle.js +3 -1
  504. package/src/renderers/common/RenderBundles.js +7 -3
  505. package/src/renderers/common/RenderContext.js +16 -0
  506. package/src/renderers/common/RenderContexts.js +33 -49
  507. package/src/renderers/common/RenderList.js +41 -4
  508. package/src/renderers/common/RenderLists.js +2 -1
  509. package/src/renderers/common/RenderObject.js +88 -16
  510. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  511. package/src/renderers/common/RenderObjects.js +21 -5
  512. package/src/renderers/common/RenderPipeline.js +232 -17
  513. package/src/renderers/common/Renderer.js +700 -163
  514. package/src/renderers/common/Sampler.js +16 -48
  515. package/src/renderers/common/StorageBuffer.js +13 -1
  516. package/src/renderers/common/Textures.js +121 -9
  517. package/src/renderers/common/TimestampQueryPool.js +6 -4
  518. package/src/renderers/common/Uniform.js +8 -0
  519. package/src/renderers/common/UniformsGroup.js +84 -1
  520. package/src/renderers/common/XRManager.js +377 -51
  521. package/src/renderers/common/extras/PMREMGenerator.js +40 -61
  522. package/src/renderers/common/nodes/NodeBuilderState.js +10 -2
  523. package/src/renderers/common/nodes/NodeLibrary.js +4 -4
  524. package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +298 -106
  525. package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
  526. package/src/renderers/common/nodes/NodeUniformBuffer.js +65 -0
  527. package/src/renderers/shaders/DFGLUTData.js +19 -34
  528. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
  529. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
  530. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
  531. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
  532. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
  533. package/src/renderers/shaders/ShaderChunk/common.glsl.js +13 -4
  534. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
  535. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  536. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +9 -13
  537. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
  538. package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
  539. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
  540. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
  541. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
  542. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
  543. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +3 -1
  544. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
  545. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -53
  546. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -2
  547. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
  548. package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -0
  549. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
  550. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
  551. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
  552. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
  553. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  554. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +2 -2
  555. package/src/renderers/shaders/ShaderChunk.js +5 -3
  556. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
  557. package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
  558. package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +2 -3
  559. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
  560. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
  561. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
  562. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
  563. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
  564. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  565. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
  566. package/src/renderers/shaders/ShaderLib.js +7 -6
  567. package/src/renderers/shaders/UniformsLib.js +7 -5
  568. package/src/renderers/shaders/UniformsUtils.js +27 -5
  569. package/src/renderers/webgl/WebGLAnimation.js +2 -1
  570. package/src/renderers/webgl/WebGLBackground.js +15 -15
  571. package/src/renderers/webgl/WebGLBindingStates.js +99 -27
  572. package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
  573. package/src/renderers/webgl/WebGLCapabilities.js +9 -4
  574. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  575. package/src/renderers/webgl/WebGLGeometries.js +10 -7
  576. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
  577. package/src/renderers/webgl/WebGLLights.js +18 -1
  578. package/src/renderers/webgl/WebGLMaterials.js +24 -13
  579. package/src/renderers/webgl/WebGLObjects.js +3 -1
  580. package/src/renderers/webgl/WebGLOutput.js +271 -0
  581. package/src/renderers/webgl/WebGLProgram.js +54 -113
  582. package/src/renderers/webgl/WebGLPrograms.js +74 -55
  583. package/src/renderers/webgl/WebGLRenderLists.js +24 -1
  584. package/src/renderers/webgl/WebGLRenderStates.js +13 -2
  585. package/src/renderers/webgl/WebGLShaderCache.js +5 -11
  586. package/src/renderers/webgl/WebGLShadowMap.js +188 -24
  587. package/src/renderers/webgl/WebGLState.js +75 -37
  588. package/src/renderers/webgl/WebGLTextures.js +230 -56
  589. package/src/renderers/webgl/WebGLUniforms.js +40 -3
  590. package/src/renderers/webgl/WebGLUniformsGroups.js +82 -35
  591. package/src/renderers/webgl/WebGLUtils.js +6 -2
  592. package/src/renderers/webgl-fallback/WebGLBackend.js +322 -92
  593. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
  594. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +295 -66
  595. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
  596. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
  597. package/src/renderers/webgl-fallback/utils/WebGLState.js +223 -6
  598. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +118 -73
  599. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
  600. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +9 -3
  601. package/src/renderers/webgpu/WebGPUBackend.js +733 -302
  602. package/src/renderers/webgpu/WebGPURenderer.js +2 -1
  603. package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
  604. package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
  605. package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
  606. package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
  607. package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
  608. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
  609. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
  610. package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
  611. package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
  612. package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
  613. package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
  614. package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
  615. package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
  616. package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
  617. package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
  618. package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
  619. package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
  620. package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
  621. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
  622. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
  623. package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
  624. package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
  625. package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
  626. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
  627. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +526 -93
  628. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
  629. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +194 -61
  630. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +395 -234
  631. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
  632. package/src/renderers/webgpu/utils/WebGPUConstants.js +10 -0
  633. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +224 -91
  634. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +228 -213
  635. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +428 -175
  636. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +40 -25
  637. package/src/renderers/webgpu/utils/WebGPUUtils.js +70 -13
  638. package/src/renderers/webxr/WebXRController.js +12 -0
  639. package/src/renderers/webxr/WebXRManager.js +4 -2
  640. package/src/textures/CubeDepthTexture.js +76 -0
  641. package/src/textures/DepthTexture.js +1 -1
  642. package/src/textures/ExternalTexture.js +0 -3
  643. package/src/textures/HTMLTexture.js +74 -0
  644. package/src/textures/Source.js +2 -2
  645. package/src/textures/Texture.js +16 -5
  646. package/src/utils.js +280 -3
  647. package/examples/fonts/LICENSE +0 -13
  648. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  649. package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
  650. package/examples/fonts/README.md +0 -11
  651. package/examples/fonts/droid/NOTICE +0 -190
  652. package/examples/fonts/droid/README.txt +0 -18
  653. package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
  654. package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
  655. package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
  656. package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
  657. package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
  658. package/examples/fonts/gentilis_bold.typeface.json +0 -1
  659. package/examples/fonts/gentilis_regular.typeface.json +0 -1
  660. package/examples/fonts/helvetiker_bold.typeface.json +0 -1
  661. package/examples/fonts/helvetiker_regular.typeface.json +0 -1
  662. package/examples/fonts/optimer_bold.typeface.json +0 -1
  663. package/examples/fonts/optimer_regular.typeface.json +0 -1
  664. package/examples/fonts/ttf/README.md +0 -9
  665. package/examples/fonts/ttf/kenpixel.ttf +0 -0
  666. package/examples/jsm/libs/ammo.wasm.js +0 -822
  667. package/examples/jsm/libs/ammo.wasm.wasm +0 -0
  668. package/examples/jsm/libs/draco/draco_encoder.js +0 -33
  669. package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
  670. package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
  671. package/examples/jsm/libs/opentype.module.js +0 -14506
  672. package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
  673. package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
  674. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  675. package/examples/jsm/lighting/TiledLighting.js +0 -42
  676. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
  677. package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
  678. package/examples/jsm/shaders/GodRaysShader.js +0 -333
  679. package/examples/jsm/tsl/display/AnamorphicNode.js +0 -282
  680. package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
  681. package/src/nodes/accessors/BatchNode.js +0 -163
  682. package/src/nodes/accessors/InstanceNode.js +0 -244
  683. package/src/nodes/accessors/InstancedMeshNode.js +0 -50
  684. package/src/nodes/accessors/SceneNode.js +0 -145
  685. package/src/nodes/accessors/SkinningNode.js +0 -327
  686. package/src/nodes/code/ScriptableNode.js +0 -726
  687. package/src/nodes/code/ScriptableValueNode.js +0 -253
  688. package/src/nodes/display/PosterizeNode.js +0 -65
  689. package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
  690. package/src/nodes/utils/RemapNode.js +0 -125
  691. package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
  692. package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
  693. package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
@@ -58,7 +58,6 @@ uniform vec3 emissive;
58
58
  uniform float opacity;
59
59
 
60
60
  #include <common>
61
- #include <packing>
62
61
  #include <dithering_pars_fragment>
63
62
  #include <color_pars_fragment>
64
63
  #include <uv_pars_fragment>
@@ -69,8 +68,10 @@ uniform float opacity;
69
68
  #include <aomap_pars_fragment>
70
69
  #include <lightmap_pars_fragment>
71
70
  #include <emissivemap_pars_fragment>
71
+ #include <cube_uv_reflection_fragment>
72
72
  #include <envmap_common_pars_fragment>
73
73
  #include <envmap_pars_fragment>
74
+ #include <envmap_physical_pars_fragment>
74
75
  #include <fog_pars_fragment>
75
76
  #include <bsdfs>
76
77
  #include <lights_pars_begin>
@@ -58,7 +58,6 @@ uniform float opacity;
58
58
 
59
59
  #endif
60
60
 
61
- #include <packing>
62
61
  #include <uv_pars_fragment>
63
62
  #include <normal_pars_fragment>
64
63
  #include <bumpmap_pars_fragment>
@@ -75,7 +74,7 @@ void main() {
75
74
  #include <normal_fragment_begin>
76
75
  #include <normal_fragment_maps>
77
76
 
78
- gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );
77
+ gl_FragColor = vec4( normalize( normal ) * 0.5 + 0.5, diffuseColor.a );
79
78
 
80
79
  #ifdef OPAQUE
81
80
 
@@ -60,7 +60,6 @@ uniform float shininess;
60
60
  uniform float opacity;
61
61
 
62
62
  #include <common>
63
- #include <packing>
64
63
  #include <dithering_pars_fragment>
65
64
  #include <color_pars_fragment>
66
65
  #include <uv_pars_fragment>
@@ -71,8 +70,10 @@ uniform float opacity;
71
70
  #include <aomap_pars_fragment>
72
71
  #include <lightmap_pars_fragment>
73
72
  #include <emissivemap_pars_fragment>
73
+ #include <cube_uv_reflection_fragment>
74
74
  #include <envmap_common_pars_fragment>
75
75
  #include <envmap_pars_fragment>
76
+ #include <envmap_physical_pars_fragment>
76
77
  #include <fog_pars_fragment>
77
78
  #include <bsdfs>
78
79
  #include <lights_pars_begin>
@@ -130,7 +130,6 @@ uniform float opacity;
130
130
  varying vec3 vViewPosition;
131
131
 
132
132
  #include <common>
133
- #include <packing>
134
133
  #include <dithering_pars_fragment>
135
134
  #include <color_pars_fragment>
136
135
  #include <uv_pars_fragment>
@@ -199,14 +198,10 @@ void main() {
199
198
  vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;
200
199
 
201
200
  #ifdef USE_SHEEN
202
-
203
- // Sheen energy compensation approximation calculation can be found at the end of
204
- // https://drive.google.com/file/d/1T0D1VSyR4AllqIJTQAraEIzjlb5h4FKH/view?usp=sharing
205
- float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );
206
-
207
- outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;
208
-
209
- #endif
201
+
202
+ outgoingLight = outgoingLight + sheenSpecularDirect + sheenSpecularIndirect;
203
+
204
+ #endif
210
205
 
211
206
  #ifdef USE_CLEARCOAT
212
207
 
@@ -56,7 +56,6 @@ uniform vec3 emissive;
56
56
  uniform float opacity;
57
57
 
58
58
  #include <common>
59
- #include <packing>
60
59
  #include <dithering_pars_fragment>
61
60
  #include <color_pars_fragment>
62
61
  #include <uv_pars_fragment>
@@ -36,7 +36,6 @@ uniform vec3 color;
36
36
  uniform float opacity;
37
37
 
38
38
  #include <common>
39
- #include <packing>
40
39
  #include <fog_pars_fragment>
41
40
  #include <bsdfs>
42
41
  #include <lights_pars_begin>
@@ -53,6 +52,7 @@ void main() {
53
52
  #include <tonemapping_fragment>
54
53
  #include <colorspace_fragment>
55
54
  #include <fog_fragment>
55
+ #include <premultiplied_alpha_fragment>
56
56
 
57
57
  }
58
58
  `;
@@ -11,8 +11,6 @@ uniform sampler2D shadow_pass;
11
11
  uniform vec2 resolution;
12
12
  uniform float radius;
13
13
 
14
- #include <packing>
15
-
16
14
  void main() {
17
15
 
18
16
  const float samples = float( VSM_SAMPLES );
@@ -28,13 +26,13 @@ void main() {
28
26
 
29
27
  #ifdef HORIZONTAL_PASS
30
28
 
31
- vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );
29
+ vec2 distribution = texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ).rg;
32
30
  mean += distribution.x;
33
31
  squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;
34
32
 
35
33
  #else
36
34
 
37
- float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );
35
+ float depth = texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ).r;
38
36
  mean += depth;
39
37
  squared_mean += depth * depth;
40
38
 
@@ -45,9 +43,9 @@ void main() {
45
43
  mean = mean / samples;
46
44
  squared_mean = squared_mean / samples;
47
45
 
48
- float std_dev = sqrt( squared_mean - mean * mean );
46
+ float std_dev = sqrt( max( 0.0, squared_mean - mean * mean ) );
49
47
 
50
- gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );
48
+ gl_FragColor = vec4( mean, std_dev, 0.0, 1.0 );
51
49
 
52
50
  }
53
51
  `;
@@ -39,7 +39,8 @@ const ShaderLib = {
39
39
  UniformsLib.fog,
40
40
  UniformsLib.lights,
41
41
  {
42
- emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }
42
+ emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },
43
+ envMapIntensity: { value: 1 }
43
44
  }
44
45
  ] ),
45
46
 
@@ -65,7 +66,8 @@ const ShaderLib = {
65
66
  {
66
67
  emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },
67
68
  specular: { value: /*@__PURE__*/ new Color( 0x111111 ) },
68
- shininess: { value: 30 }
69
+ shininess: { value: 30 },
70
+ envMapIntensity: { value: 1 }
69
71
  }
70
72
  ] ),
71
73
 
@@ -230,7 +232,6 @@ const ShaderLib = {
230
232
 
231
233
  uniforms: {
232
234
  envMap: { value: null },
233
- flipEnvMap: { value: - 1 },
234
235
  backgroundBlurriness: { value: 0 },
235
236
  backgroundIntensity: { value: 1 },
236
237
  backgroundRotation: { value: /*@__PURE__*/ new Matrix3() }
@@ -265,7 +266,7 @@ const ShaderLib = {
265
266
 
266
267
  },
267
268
 
268
- distanceRGBA: {
269
+ distance: {
269
270
 
270
271
  uniforms: /*@__PURE__*/ mergeUniforms( [
271
272
  UniformsLib.common,
@@ -277,8 +278,8 @@ const ShaderLib = {
277
278
  }
278
279
  ] ),
279
280
 
280
- vertexShader: ShaderChunk.distanceRGBA_vert,
281
- fragmentShader: ShaderChunk.distanceRGBA_frag
281
+ vertexShader: ShaderChunk.distance_vert,
282
+ fragmentShader: ShaderChunk.distance_frag
282
283
 
283
284
  },
284
285
 
@@ -1,5 +1,6 @@
1
1
  import { Color } from '../../math/Color.js';
2
2
  import { Vector2 } from '../../math/Vector2.js';
3
+ import { Vector3 } from '../../math/Vector3.js';
3
4
  import { Matrix3 } from '../../math/Matrix3.js';
4
5
 
5
6
  // Uniforms library for shared webgl shaders
@@ -31,7 +32,6 @@ const UniformsLib = {
31
32
 
32
33
  envMap: { value: null },
33
34
  envMapRotation: { value: /*@__PURE__*/ new Matrix3() },
34
- flipEnvMap: { value: - 1 },
35
35
  reflectivity: { value: 1.0 }, // basic, lambert, phong
36
36
  ior: { value: 1.5 }, // physical
37
37
  refractionRatio: { value: 0.98 }, // basic, lambert, phong
@@ -135,7 +135,6 @@ const UniformsLib = {
135
135
  shadowMapSize: {}
136
136
  } },
137
137
 
138
- directionalShadowMap: { value: [] },
139
138
  directionalShadowMatrix: { value: [] },
140
139
 
141
140
  spotLights: { value: [], properties: {
@@ -157,7 +156,6 @@ const UniformsLib = {
157
156
  } },
158
157
 
159
158
  spotLightMap: { value: [] },
160
- spotShadowMap: { value: [] },
161
159
  spotLightMatrix: { value: [] },
162
160
 
163
161
  pointLights: { value: [], properties: {
@@ -177,7 +175,6 @@ const UniformsLib = {
177
175
  shadowCameraFar: {}
178
176
  } },
179
177
 
180
- pointShadowMap: { value: [] },
181
178
  pointShadowMatrix: { value: [] },
182
179
 
183
180
  hemisphereLights: { value: [], properties: {
@@ -195,7 +192,12 @@ const UniformsLib = {
195
192
  } },
196
193
 
197
194
  ltc_1: { value: null },
198
- ltc_2: { value: null }
195
+ ltc_2: { value: null },
196
+
197
+ probesSH: { value: null },
198
+ probesMin: { value: /*@__PURE__*/ new Vector3() },
199
+ probesMax: { value: /*@__PURE__*/ new Vector3() },
200
+ probesResolution: { value: /*@__PURE__*/ new Vector3() }
199
201
 
200
202
  },
201
203
 
@@ -27,10 +27,7 @@ export function cloneUniforms( src ) {
27
27
 
28
28
  const property = src[ u ][ p ];
29
29
 
30
- if ( property && ( property.isColor ||
31
- property.isMatrix3 || property.isMatrix4 ||
32
- property.isVector2 || property.isVector3 || property.isVector4 ||
33
- property.isTexture || property.isQuaternion ) ) {
30
+ if ( isThreeObject( property ) ) {
34
31
 
35
32
  if ( property.isRenderTargetTexture ) {
36
33
 
@@ -45,7 +42,23 @@ export function cloneUniforms( src ) {
45
42
 
46
43
  } else if ( Array.isArray( property ) ) {
47
44
 
48
- dst[ u ][ p ] = property.slice();
45
+ if ( isThreeObject( property[ 0 ] ) ) {
46
+
47
+ const clonedProperty = [];
48
+
49
+ for ( let i = 0, l = property.length; i < l; i ++ ) {
50
+
51
+ clonedProperty[ i ] = property[ i ].clone();
52
+
53
+ }
54
+
55
+ dst[ u ][ p ] = clonedProperty;
56
+
57
+ } else {
58
+
59
+ dst[ u ][ p ] = property.slice();
60
+
61
+ }
49
62
 
50
63
  } else {
51
64
 
@@ -89,6 +102,15 @@ export function mergeUniforms( uniforms ) {
89
102
 
90
103
  }
91
104
 
105
+ function isThreeObject( property ) {
106
+
107
+ return ( property && ( property.isColor ||
108
+ property.isMatrix3 || property.isMatrix4 ||
109
+ property.isVector2 || property.isVector3 || property.isVector4 ||
110
+ property.isTexture || property.isQuaternion ) );
111
+
112
+ }
113
+
92
114
  export function cloneUniformsGroups( src ) {
93
115
 
94
116
  const dst = [];
@@ -19,6 +19,7 @@ function WebGLAnimation() {
19
19
 
20
20
  if ( isAnimating === true ) return;
21
21
  if ( animationLoop === null ) return;
22
+ if ( context === null ) return;
22
23
 
23
24
  requestId = context.requestAnimationFrame( onAnimationFrame );
24
25
 
@@ -28,7 +29,7 @@ function WebGLAnimation() {
28
29
 
29
30
  stop: function () {
30
31
 
31
- context.cancelAnimationFrame( requestId );
32
+ if ( context !== null ) context.cancelAnimationFrame( requestId );
32
33
 
33
34
  isAnimating = false;
34
35
 
@@ -4,17 +4,19 @@ import { PlaneGeometry } from '../../geometries/PlaneGeometry.js';
4
4
  import { ShaderMaterial } from '../../materials/ShaderMaterial.js';
5
5
  import { Color } from '../../math/Color.js';
6
6
  import { ColorManagement } from '../../math/ColorManagement.js';
7
- import { Euler } from '../../math/Euler.js';
7
+ import { Matrix3 } from '../../math/Matrix3.js';
8
8
  import { Matrix4 } from '../../math/Matrix4.js';
9
9
  import { Mesh } from '../../objects/Mesh.js';
10
10
  import { ShaderLib } from '../shaders/ShaderLib.js';
11
11
  import { cloneUniforms, getUnlitUniformColorSpace } from '../shaders/UniformsUtils.js';
12
12
 
13
13
  const _rgb = { r: 0, b: 0, g: 0 };
14
- const _e1 = /*@__PURE__*/ new Euler();
15
14
  const _m1 = /*@__PURE__*/ new Matrix4();
15
+ const _m = /*@__PURE__*/ new Matrix3();
16
16
 
17
- function WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha ) {
17
+ _m.set( - 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0 );
18
+
19
+ function WebGLBackground( renderer, environments, state, objects, alpha, premultipliedAlpha ) {
18
20
 
19
21
  const clearColor = new Color( 0x000000 );
20
22
  let clearAlpha = alpha === true ? 0 : 1;
@@ -33,7 +35,7 @@ function WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha,
33
35
  if ( background && background.isTexture ) {
34
36
 
35
37
  const usePMREM = scene.backgroundBlurriness > 0; // use PMREM if the user wants to blur the background
36
- background = ( usePMREM ? cubeuvmaps : cubemaps ).get( background );
38
+ background = environments.get( background, usePMREM );
37
39
 
38
40
  }
39
41
 
@@ -130,24 +132,22 @@ function WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha,
130
132
 
131
133
  }
132
134
 
133
- _e1.copy( scene.backgroundRotation );
134
135
 
135
- // accommodate left-handed frame
136
- _e1.x *= - 1; _e1.y *= - 1; _e1.z *= - 1;
136
+ boxMesh.material.uniforms.envMap.value = background;
137
+ boxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;
138
+ boxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;
139
+
140
+
141
+ // note: since the matrix is orthonormal, we can use the more-efficient transpose() in lieu of invert()
142
+ boxMesh.material.uniforms.backgroundRotation.value.setFromMatrix4( _m1.makeRotationFromEuler( scene.backgroundRotation ) ).transpose();
137
143
 
138
144
  if ( background.isCubeTexture && background.isRenderTargetTexture === false ) {
139
145
 
140
- // environment maps which are not cube render targets or PMREMs follow a different convention
141
- _e1.y *= - 1;
142
- _e1.z *= - 1;
146
+ boxMesh.material.uniforms.backgroundRotation.value.premultiply( _m );
143
147
 
144
148
  }
145
149
 
146
- boxMesh.material.uniforms.envMap.value = background;
147
- boxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;
148
- boxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;
149
- boxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;
150
- boxMesh.material.uniforms.backgroundRotation.value.setFromMatrix4( _m1.makeRotationFromEuler( _e1 ) );
150
+
151
151
  boxMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;
152
152
 
153
153
  if ( currentBackground !== background ||
@@ -14,7 +14,7 @@ function WebGLBindingStates( gl, attributes ) {
14
14
 
15
15
  let updateBuffers = false;
16
16
 
17
- const state = getBindingState( geometry, program, material );
17
+ const state = getBindingState( object, geometry, program, material );
18
18
 
19
19
  if ( currentState !== state ) {
20
20
 
@@ -67,16 +67,28 @@ function WebGLBindingStates( gl, attributes ) {
67
67
 
68
68
  }
69
69
 
70
- function getBindingState( geometry, program, material ) {
70
+ function getBindingState( object, geometry, program, material ) {
71
71
 
72
72
  const wireframe = ( material.wireframe === true );
73
73
 
74
- let programMap = bindingStates[ geometry.id ];
74
+ let objectMap = bindingStates[ geometry.id ];
75
+
76
+ if ( objectMap === undefined ) {
77
+
78
+ objectMap = {};
79
+ bindingStates[ geometry.id ] = objectMap;
80
+
81
+ }
82
+
83
+ // Each InstancedMesh requires unique binding states because it contains instanced attributes.
84
+ const objectId = ( object.isInstancedMesh === true ) ? object.id : 0;
85
+
86
+ let programMap = objectMap[ objectId ];
75
87
 
76
88
  if ( programMap === undefined ) {
77
89
 
78
90
  programMap = {};
79
- bindingStates[ geometry.id ] = programMap;
91
+ objectMap[ objectId ] = programMap;
80
92
 
81
93
  }
82
94
 
@@ -477,21 +489,27 @@ function WebGLBindingStates( gl, attributes ) {
477
489
 
478
490
  for ( const geometryId in bindingStates ) {
479
491
 
480
- const programMap = bindingStates[ geometryId ];
492
+ const objectMap = bindingStates[ geometryId ];
481
493
 
482
- for ( const programId in programMap ) {
494
+ for ( const objectId in objectMap ) {
483
495
 
484
- const stateMap = programMap[ programId ];
496
+ const programMap = objectMap[ objectId ];
485
497
 
486
- for ( const wireframe in stateMap ) {
498
+ for ( const programId in programMap ) {
487
499
 
488
- deleteVertexArrayObject( stateMap[ wireframe ].object );
500
+ const stateMap = programMap[ programId ];
489
501
 
490
- delete stateMap[ wireframe ];
502
+ for ( const wireframe in stateMap ) {
491
503
 
492
- }
504
+ deleteVertexArrayObject( stateMap[ wireframe ].object );
493
505
 
494
- delete programMap[ programId ];
506
+ delete stateMap[ wireframe ];
507
+
508
+ }
509
+
510
+ delete programMap[ programId ];
511
+
512
+ }
495
513
 
496
514
  }
497
515
 
@@ -505,21 +523,27 @@ function WebGLBindingStates( gl, attributes ) {
505
523
 
506
524
  if ( bindingStates[ geometry.id ] === undefined ) return;
507
525
 
508
- const programMap = bindingStates[ geometry.id ];
526
+ const objectMap = bindingStates[ geometry.id ];
509
527
 
510
- for ( const programId in programMap ) {
528
+ for ( const objectId in objectMap ) {
511
529
 
512
- const stateMap = programMap[ programId ];
530
+ const programMap = objectMap[ objectId ];
513
531
 
514
- for ( const wireframe in stateMap ) {
532
+ for ( const programId in programMap ) {
515
533
 
516
- deleteVertexArrayObject( stateMap[ wireframe ].object );
534
+ const stateMap = programMap[ programId ];
517
535
 
518
- delete stateMap[ wireframe ];
536
+ for ( const wireframe in stateMap ) {
519
537
 
520
- }
538
+ deleteVertexArrayObject( stateMap[ wireframe ].object );
521
539
 
522
- delete programMap[ programId ];
540
+ delete stateMap[ wireframe ];
541
+
542
+ }
543
+
544
+ delete programMap[ programId ];
545
+
546
+ }
523
547
 
524
548
  }
525
549
 
@@ -531,26 +555,73 @@ function WebGLBindingStates( gl, attributes ) {
531
555
 
532
556
  for ( const geometryId in bindingStates ) {
533
557
 
534
- const programMap = bindingStates[ geometryId ];
558
+ const objectMap = bindingStates[ geometryId ];
559
+
560
+ for ( const objectId in objectMap ) {
561
+
562
+ const programMap = objectMap[ objectId ];
563
+
564
+ if ( programMap[ program.id ] === undefined ) continue;
565
+
566
+ const stateMap = programMap[ program.id ];
567
+
568
+ for ( const wireframe in stateMap ) {
569
+
570
+ deleteVertexArrayObject( stateMap[ wireframe ].object );
571
+
572
+ delete stateMap[ wireframe ];
573
+
574
+ }
575
+
576
+ delete programMap[ program.id ];
577
+
578
+ }
579
+
580
+ }
581
+
582
+ }
583
+
584
+ function releaseStatesOfObject( object ) {
585
+
586
+ for ( const geometryId in bindingStates ) {
587
+
588
+ const objectMap = bindingStates[ geometryId ];
535
589
 
536
- if ( programMap[ program.id ] === undefined ) continue;
590
+ const objectId = ( object.isInstancedMesh === true ) ? object.id : 0;
537
591
 
538
- const stateMap = programMap[ program.id ];
592
+ const programMap = objectMap[ objectId ];
539
593
 
540
- for ( const wireframe in stateMap ) {
594
+ if ( programMap === undefined ) continue;
541
595
 
542
- deleteVertexArrayObject( stateMap[ wireframe ].object );
596
+ for ( const programId in programMap ) {
543
597
 
544
- delete stateMap[ wireframe ];
598
+ const stateMap = programMap[ programId ];
599
+
600
+ for ( const wireframe in stateMap ) {
601
+
602
+ deleteVertexArrayObject( stateMap[ wireframe ].object );
603
+
604
+ delete stateMap[ wireframe ];
605
+
606
+ }
607
+
608
+ delete programMap[ programId ];
545
609
 
546
610
  }
547
611
 
548
- delete programMap[ program.id ];
612
+ delete objectMap[ objectId ];
613
+
614
+ if ( Object.keys( objectMap ).length === 0 ) {
615
+
616
+ delete bindingStates[ geometryId ];
617
+
618
+ }
549
619
 
550
620
  }
551
621
 
552
622
  }
553
623
 
624
+
554
625
  function reset() {
555
626
 
556
627
  resetDefaultState();
@@ -580,6 +651,7 @@ function WebGLBindingStates( gl, attributes ) {
580
651
  resetDefaultState: resetDefaultState,
581
652
  dispose: dispose,
582
653
  releaseStatesOfGeometry: releaseStatesOfGeometry,
654
+ releaseStatesOfObject: releaseStatesOfObject,
583
655
  releaseStatesOfProgram: releaseStatesOfProgram,
584
656
 
585
657
  initAttributes: initAttributes,
@@ -44,44 +44,12 @@ function WebGLBufferRenderer( gl, extensions, info ) {
44
44
 
45
45
  }
46
46
 
47
- function renderMultiDrawInstances( starts, counts, drawCount, primcount ) {
48
-
49
- if ( drawCount === 0 ) return;
50
-
51
- const extension = extensions.get( 'WEBGL_multi_draw' );
52
-
53
- if ( extension === null ) {
54
-
55
- for ( let i = 0; i < starts.length; i ++ ) {
56
-
57
- renderInstances( starts[ i ], counts[ i ], primcount[ i ] );
58
-
59
- }
60
-
61
- } else {
62
-
63
- extension.multiDrawArraysInstancedWEBGL( mode, starts, 0, counts, 0, primcount, 0, drawCount );
64
-
65
- let elementCount = 0;
66
- for ( let i = 0; i < drawCount; i ++ ) {
67
-
68
- elementCount += counts[ i ] * primcount[ i ];
69
-
70
- }
71
-
72
- info.update( elementCount, mode, 1 );
73
-
74
- }
75
-
76
- }
77
-
78
47
  //
79
48
 
80
49
  this.setMode = setMode;
81
50
  this.render = render;
82
51
  this.renderInstances = renderInstances;
83
52
  this.renderMultiDraw = renderMultiDraw;
84
- this.renderMultiDrawInstances = renderMultiDrawInstances;
85
53
 
86
54
  }
87
55
 
@@ -95,6 +95,12 @@ function WebGLCapabilities( gl, extensions, parameters, utils ) {
95
95
  const logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;
96
96
  const reversedDepthBuffer = parameters.reversedDepthBuffer === true && extensions.has( 'EXT_clip_control' );
97
97
 
98
+ if ( parameters.reversedDepthBuffer === true && reversedDepthBuffer === false ) {
99
+
100
+ warn( 'WebGLRenderer: Unable to use reversed depth buffer due to missing EXT_clip_control extension. Fallback to default depth buffer.' );
101
+
102
+ }
103
+
98
104
  const maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );
99
105
  const maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );
100
106
  const maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );
@@ -105,9 +111,8 @@ function WebGLCapabilities( gl, extensions, parameters, utils ) {
105
111
  const maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );
106
112
  const maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );
107
113
 
108
- const vertexTextures = maxVertexTextures > 0;
109
-
110
114
  const maxSamples = gl.getParameter( gl.MAX_SAMPLES );
115
+ const samples = gl.getParameter( gl.SAMPLES );
111
116
 
112
117
  return {
113
118
 
@@ -133,9 +138,9 @@ function WebGLCapabilities( gl, extensions, parameters, utils ) {
133
138
  maxVaryings: maxVaryings,
134
139
  maxFragmentUniforms: maxFragmentUniforms,
135
140
 
136
- vertexTextures: vertexTextures,
141
+ maxSamples: maxSamples,
137
142
 
138
- maxSamples: maxSamples
143
+ samples: samples
139
144
 
140
145
  };
141
146