super-three 0.177.0 → 0.181.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 (501) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +1994 -749
  3. package/build/three.core.js +1358 -506
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +631 -247
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +113 -33
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +9571 -3424
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +9397 -3426
  12. package/build/three.webgpu.nodes.min.js +1 -1
  13. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  14. package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  15. package/examples/jsm/Addons.js +2 -3
  16. package/examples/jsm/animation/CCDIKSolver.js +1 -1
  17. package/examples/jsm/capabilities/WebGL.js +0 -27
  18. package/examples/jsm/capabilities/WebGPU.js +1 -1
  19. package/examples/jsm/controls/ArcballControls.js +9 -9
  20. package/examples/jsm/controls/DragControls.js +7 -57
  21. package/examples/jsm/controls/FirstPersonControls.js +3 -3
  22. package/examples/jsm/controls/FlyControls.js +1 -1
  23. package/examples/jsm/controls/OrbitControls.js +2 -2
  24. package/examples/jsm/controls/PointerLockControls.js +2 -10
  25. package/examples/jsm/controls/TrackballControls.js +1 -1
  26. package/examples/jsm/controls/TransformControls.js +62 -15
  27. package/examples/jsm/csm/CSMShadowNode.js +4 -4
  28. package/examples/jsm/effects/AsciiEffect.js +8 -8
  29. package/examples/jsm/environments/RoomEnvironment.js +8 -3
  30. package/examples/jsm/exporters/DRACOExporter.js +2 -2
  31. package/examples/jsm/exporters/EXRExporter.js +1 -1
  32. package/examples/jsm/exporters/GLTFExporter.js +33 -25
  33. package/examples/jsm/exporters/KTX2Exporter.js +4 -2
  34. package/examples/jsm/exporters/PLYExporter.js +1 -1
  35. package/examples/jsm/exporters/USDZExporter.js +683 -299
  36. package/examples/jsm/geometries/DecalGeometry.js +2 -2
  37. package/examples/jsm/geometries/ParametricGeometry.js +1 -1
  38. package/examples/jsm/geometries/RoundedBoxGeometry.js +47 -8
  39. package/examples/jsm/geometries/TeapotGeometry.js +2 -2
  40. package/examples/jsm/geometries/TextGeometry.js +3 -2
  41. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  42. package/examples/jsm/helpers/ViewHelper.js +43 -5
  43. package/examples/jsm/inspector/Inspector.js +427 -0
  44. package/examples/jsm/inspector/RendererInspector.js +415 -0
  45. package/examples/jsm/inspector/tabs/Console.js +204 -0
  46. package/examples/jsm/inspector/tabs/Parameters.js +332 -0
  47. package/examples/jsm/inspector/tabs/Performance.js +268 -0
  48. package/examples/jsm/inspector/tabs/Viewer.js +166 -0
  49. package/examples/jsm/inspector/ui/Graph.js +95 -0
  50. package/examples/jsm/inspector/ui/Item.js +170 -0
  51. package/examples/jsm/inspector/ui/List.js +75 -0
  52. package/examples/jsm/inspector/ui/Profiler.js +170 -0
  53. package/examples/jsm/inspector/ui/Style.js +654 -0
  54. package/examples/jsm/inspector/ui/Tab.js +46 -0
  55. package/examples/jsm/inspector/ui/Values.js +423 -0
  56. package/examples/jsm/inspector/ui/utils.js +56 -0
  57. package/examples/jsm/interactive/HTMLMesh.js +11 -13
  58. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  59. package/examples/jsm/interactive/SelectionBox.js +30 -0
  60. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  61. package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
  62. package/examples/jsm/lights/LightProbeGenerator.js +14 -3
  63. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  64. package/examples/jsm/lines/Line2.js +3 -3
  65. package/examples/jsm/lines/LineGeometry.js +1 -1
  66. package/examples/jsm/lines/LineSegments2.js +2 -2
  67. package/examples/jsm/lines/Wireframe.js +2 -2
  68. package/examples/jsm/lines/WireframeGeometry2.js +1 -1
  69. package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
  70. package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
  71. package/examples/jsm/loaders/3MFLoader.js +1 -1
  72. package/examples/jsm/loaders/ColladaLoader.js +4 -4
  73. package/examples/jsm/loaders/DDSLoader.js +1 -1
  74. package/examples/jsm/loaders/DRACOLoader.js +73 -22
  75. package/examples/jsm/loaders/EXRLoader.js +210 -22
  76. package/examples/jsm/loaders/FBXLoader.js +4 -4
  77. package/examples/jsm/loaders/FontLoader.js +23 -5
  78. package/examples/jsm/loaders/GLTFLoader.js +14 -8
  79. package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
  80. package/examples/jsm/loaders/HDRLoader.js +486 -0
  81. package/examples/jsm/loaders/KTX2Loader.js +136 -49
  82. package/examples/jsm/loaders/KTXLoader.js +2 -2
  83. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  84. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  85. package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
  86. package/examples/jsm/loaders/LWOLoader.js +2 -2
  87. package/examples/jsm/loaders/MaterialXLoader.js +233 -34
  88. package/examples/jsm/loaders/OBJLoader.js +1 -1
  89. package/examples/jsm/loaders/PDBLoader.js +1 -1
  90. package/examples/jsm/loaders/RGBELoader.js +7 -473
  91. package/examples/jsm/loaders/SVGLoader.js +2 -2
  92. package/examples/jsm/loaders/TTFLoader.js +13 -1
  93. package/examples/jsm/loaders/USDLoader.js +219 -0
  94. package/examples/jsm/loaders/USDZLoader.js +4 -892
  95. package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
  96. package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
  97. package/examples/jsm/loaders/usd/USDAParser.js +741 -0
  98. package/examples/jsm/loaders/usd/USDCParser.js +17 -0
  99. package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  100. package/examples/jsm/math/ColorSpaces.js +19 -1
  101. package/examples/jsm/math/ConvexHull.js +3 -3
  102. package/examples/jsm/math/ImprovedNoise.js +1 -1
  103. package/examples/jsm/math/Lut.js +2 -2
  104. package/examples/jsm/math/SimplexNoise.js +1 -1
  105. package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
  106. package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
  107. package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
  108. package/examples/jsm/misc/TubePainter.js +383 -40
  109. package/examples/jsm/misc/Volume.js +1 -1
  110. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  111. package/examples/jsm/objects/LensflareMesh.js +3 -3
  112. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  113. package/examples/jsm/objects/Sky.js +1 -1
  114. package/examples/jsm/objects/SkyMesh.js +3 -3
  115. package/examples/jsm/objects/Water.js +3 -3
  116. package/examples/jsm/objects/WaterMesh.js +6 -6
  117. package/examples/jsm/physics/RapierPhysics.js +95 -16
  118. package/examples/jsm/postprocessing/GTAOPass.js +10 -9
  119. package/examples/jsm/postprocessing/GlitchPass.js +2 -2
  120. package/examples/jsm/postprocessing/OutlinePass.js +17 -17
  121. package/examples/jsm/postprocessing/SSAOPass.js +10 -9
  122. package/examples/jsm/postprocessing/SSRPass.js +37 -8
  123. package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
  124. package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
  125. package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
  126. package/examples/jsm/renderers/SVGRenderer.js +1 -1
  127. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
  128. package/examples/jsm/shaders/AfterimageShader.js +1 -1
  129. package/examples/jsm/shaders/BleachBypassShader.js +1 -1
  130. package/examples/jsm/shaders/BokehShader.js +1 -1
  131. package/examples/jsm/shaders/BokehShader2.js +1 -1
  132. package/examples/jsm/shaders/DotScreenShader.js +1 -1
  133. package/examples/jsm/shaders/FocusShader.js +1 -1
  134. package/examples/jsm/shaders/GTAOShader.js +2 -2
  135. package/examples/jsm/shaders/GodRaysShader.js +1 -1
  136. package/examples/jsm/shaders/KaleidoShader.js +1 -1
  137. package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
  138. package/examples/jsm/shaders/SSRShader.js +1 -1
  139. package/examples/jsm/shaders/SepiaShader.js +1 -1
  140. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
  141. package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
  142. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +11 -2
  143. package/examples/jsm/shaders/VignetteShader.js +1 -1
  144. package/examples/jsm/transpiler/AST.js +381 -30
  145. package/examples/jsm/transpiler/GLSLDecoder.js +247 -104
  146. package/examples/jsm/transpiler/Linker.js +327 -0
  147. package/examples/jsm/transpiler/TSLEncoder.js +196 -92
  148. package/examples/jsm/transpiler/Transpiler.js +17 -1
  149. package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  150. package/examples/jsm/transpiler/WGSLEncoder.js +812 -0
  151. package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
  152. package/examples/jsm/tsl/display/AnamorphicNode.js +28 -4
  153. package/examples/jsm/tsl/display/BloomNode.js +11 -6
  154. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
  155. package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
  156. package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
  157. package/examples/jsm/tsl/display/GTAONode.js +53 -5
  158. package/examples/jsm/tsl/display/GaussianBlurNode.js +55 -43
  159. package/examples/jsm/tsl/display/OutlineNode.js +13 -2
  160. package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
  161. package/examples/jsm/tsl/display/SSGINode.js +654 -0
  162. package/examples/jsm/tsl/display/SSRNode.js +182 -65
  163. package/examples/jsm/tsl/display/SSSNode.js +488 -0
  164. package/examples/jsm/tsl/display/TRAANode.js +578 -0
  165. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  166. package/examples/jsm/tsl/display/hashBlur.js +18 -20
  167. package/examples/jsm/tsl/lighting/TiledLightsNode.js +22 -2
  168. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  169. package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
  170. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  171. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  172. package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
  173. package/package.json +5 -10
  174. package/src/Three.Core.js +5 -2
  175. package/src/Three.TSL.js +112 -32
  176. package/src/Three.WebGPU.Nodes.js +2 -0
  177. package/src/Three.WebGPU.js +4 -0
  178. package/src/animation/AnimationClip.js +20 -4
  179. package/src/animation/AnimationMixer.js +3 -3
  180. package/src/animation/AnimationObjectGroup.js +2 -1
  181. package/src/animation/KeyframeTrack.js +8 -7
  182. package/src/animation/PropertyBinding.js +12 -11
  183. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  184. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  185. package/src/audio/Audio.js +10 -9
  186. package/src/audio/PositionalAudio.js +1 -1
  187. package/src/cameras/Camera.js +14 -0
  188. package/src/cameras/OrthographicCamera.js +2 -2
  189. package/src/cameras/PerspectiveCamera.js +2 -2
  190. package/src/cameras/StereoCamera.js +2 -2
  191. package/src/constants.js +13 -5
  192. package/src/core/BufferAttribute.js +3 -3
  193. package/src/core/BufferGeometry.js +10 -10
  194. package/src/core/Clock.js +2 -8
  195. package/src/core/EventDispatcher.js +1 -1
  196. package/src/core/GLBufferAttribute.js +13 -1
  197. package/src/core/InterleavedBuffer.js +1 -1
  198. package/src/core/InterleavedBufferAttribute.js +3 -2
  199. package/src/core/Object3D.js +4 -3
  200. package/src/core/Raycaster.js +2 -1
  201. package/src/core/RenderTarget.js +10 -1
  202. package/{examples/jsm/misc → src/core}/Timer.js +4 -42
  203. package/src/extras/Controls.js +5 -4
  204. package/src/extras/DataUtils.js +2 -1
  205. package/src/extras/Earcut.js +6 -0
  206. package/src/extras/ImageUtils.js +2 -2
  207. package/src/extras/PMREMGenerator.js +279 -55
  208. package/src/extras/TextureUtils.js +2 -1
  209. package/src/extras/core/Curve.js +2 -1
  210. package/src/extras/core/Interpolations.js +7 -1
  211. package/src/extras/core/Path.js +22 -22
  212. package/src/extras/core/ShapePath.js +4 -4
  213. package/src/extras/lib/earcut.js +8 -8
  214. package/src/geometries/BoxGeometry.js +1 -0
  215. package/src/geometries/CapsuleGeometry.js +1 -0
  216. package/src/geometries/CircleGeometry.js +1 -0
  217. package/src/geometries/ConeGeometry.js +1 -0
  218. package/src/geometries/CylinderGeometry.js +1 -0
  219. package/src/geometries/DodecahedronGeometry.js +1 -0
  220. package/src/geometries/ExtrudeGeometry.js +8 -6
  221. package/src/geometries/IcosahedronGeometry.js +1 -0
  222. package/src/geometries/LatheGeometry.js +1 -0
  223. package/src/geometries/OctahedronGeometry.js +1 -0
  224. package/src/geometries/PlaneGeometry.js +1 -0
  225. package/src/geometries/RingGeometry.js +1 -0
  226. package/src/geometries/ShapeGeometry.js +1 -0
  227. package/src/geometries/SphereGeometry.js +1 -0
  228. package/src/geometries/TetrahedronGeometry.js +1 -0
  229. package/src/geometries/TorusGeometry.js +1 -0
  230. package/src/geometries/TorusKnotGeometry.js +1 -0
  231. package/src/geometries/TubeGeometry.js +1 -0
  232. package/src/helpers/CameraHelper.js +42 -12
  233. package/src/helpers/SkeletonHelper.js +35 -6
  234. package/src/lights/LightShadow.js +21 -8
  235. package/src/lights/PointLightShadow.js +1 -1
  236. package/src/lights/webgpu/ProjectorLight.js +1 -1
  237. package/src/loaders/AnimationLoader.js +2 -1
  238. package/src/loaders/AudioLoader.js +2 -1
  239. package/src/loaders/BufferGeometryLoader.js +2 -2
  240. package/src/loaders/Cache.js +2 -2
  241. package/src/loaders/DataTextureLoader.js +1 -1
  242. package/src/loaders/FileLoader.js +29 -5
  243. package/src/loaders/ImageBitmapLoader.js +32 -8
  244. package/src/loaders/ImageLoader.js +56 -9
  245. package/src/loaders/Loader.js +17 -3
  246. package/src/loaders/LoadingManager.js +45 -0
  247. package/src/loaders/MaterialLoader.js +3 -2
  248. package/src/loaders/ObjectLoader.js +13 -13
  249. package/src/loaders/TextureLoader.js +1 -1
  250. package/src/loaders/nodes/NodeLoader.js +3 -2
  251. package/src/materials/Material.js +16 -3
  252. package/src/materials/MeshBasicMaterial.js +2 -1
  253. package/src/materials/MeshDepthMaterial.js +1 -0
  254. package/src/materials/MeshDistanceMaterial.js +1 -1
  255. package/src/materials/MeshLambertMaterial.js +2 -1
  256. package/src/materials/MeshMatcapMaterial.js +22 -0
  257. package/src/materials/MeshNormalMaterial.js +1 -0
  258. package/src/materials/MeshPhongMaterial.js +2 -1
  259. package/src/materials/MeshPhysicalMaterial.js +2 -1
  260. package/src/materials/MeshStandardMaterial.js +8 -7
  261. package/src/materials/MeshToonMaterial.js +1 -0
  262. package/src/materials/PointsMaterial.js +1 -1
  263. package/src/materials/ShaderMaterial.js +2 -2
  264. package/src/materials/nodes/Line2NodeMaterial.js +2 -10
  265. package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
  266. package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
  267. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  268. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
  269. package/src/materials/nodes/MeshSSSNodeMaterial.js +3 -3
  270. package/src/materials/nodes/NodeMaterial.js +90 -27
  271. package/src/materials/nodes/PointsNodeMaterial.js +86 -28
  272. package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
  273. package/src/materials/nodes/manager/NodeMaterialObserver.js +89 -3
  274. package/src/math/Color.js +6 -5
  275. package/src/math/ColorManagement.js +9 -3
  276. package/src/math/Cylindrical.js +1 -1
  277. package/src/math/Euler.js +2 -1
  278. package/src/math/Frustum.js +25 -9
  279. package/src/math/FrustumArray.js +10 -5
  280. package/src/math/Line3.js +129 -2
  281. package/src/math/MathUtils.js +13 -11
  282. package/src/math/Matrix2.js +1 -1
  283. package/src/math/Matrix3.js +2 -2
  284. package/src/math/Matrix4.js +55 -34
  285. package/src/math/Plane.js +1 -1
  286. package/src/math/Quaternion.js +69 -67
  287. package/src/math/Spherical.js +3 -3
  288. package/src/nodes/Nodes.js +6 -4
  289. package/src/nodes/TSL.js +9 -4
  290. package/src/nodes/accessors/AccessorsUtils.js +7 -8
  291. package/src/nodes/accessors/Bitangent.js +31 -25
  292. package/src/nodes/accessors/BufferNode.js +1 -1
  293. package/src/nodes/accessors/Camera.js +142 -16
  294. package/src/nodes/accessors/ClippingNode.js +6 -5
  295. package/src/nodes/accessors/CubeTextureNode.js +5 -4
  296. package/src/nodes/accessors/InstanceNode.js +25 -5
  297. package/src/nodes/accessors/Lights.js +10 -0
  298. package/src/nodes/accessors/Normal.js +97 -30
  299. package/src/nodes/accessors/Object3DNode.js +2 -2
  300. package/src/nodes/accessors/Position.js +25 -9
  301. package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
  302. package/src/nodes/accessors/ReferenceNode.js +20 -4
  303. package/src/nodes/accessors/ReflectVector.js +3 -3
  304. package/src/nodes/accessors/SceneNode.js +3 -2
  305. package/src/nodes/accessors/StorageBufferNode.js +2 -1
  306. package/src/nodes/accessors/StorageTextureNode.js +23 -1
  307. package/src/nodes/accessors/Tangent.js +25 -17
  308. package/src/nodes/accessors/TangentUtils.js +46 -0
  309. package/src/nodes/accessors/Texture3DNode.js +14 -1
  310. package/src/nodes/accessors/TextureBicubic.js +21 -3
  311. package/src/nodes/accessors/TextureNode.js +142 -44
  312. package/src/nodes/accessors/UniformArrayNode.js +0 -16
  313. package/src/nodes/code/FunctionCallNode.js +24 -4
  314. package/src/nodes/code/FunctionNode.js +23 -0
  315. package/src/nodes/core/ArrayNode.js +13 -0
  316. package/src/nodes/core/AssignNode.js +6 -2
  317. package/src/nodes/core/AttributeNode.js +2 -1
  318. package/src/nodes/core/ContextNode.js +48 -10
  319. package/src/nodes/core/IndexNode.js +2 -2
  320. package/src/nodes/core/InputNode.js +2 -1
  321. package/src/nodes/core/InspectorNode.js +128 -0
  322. package/src/nodes/core/{CacheNode.js → IsolateNode.js} +36 -17
  323. package/src/nodes/core/Node.js +167 -34
  324. package/src/nodes/core/NodeBuilder.js +404 -120
  325. package/src/nodes/core/NodeFrame.js +21 -21
  326. package/src/nodes/core/NodeFunction.js +2 -1
  327. package/src/nodes/core/NodeParser.js +2 -1
  328. package/src/nodes/core/NodeUniform.js +1 -1
  329. package/src/nodes/core/NodeUtils.js +17 -88
  330. package/src/nodes/core/ParameterNode.js +31 -0
  331. package/src/nodes/core/PropertyNode.js +7 -0
  332. package/src/nodes/core/StackNode.js +77 -30
  333. package/src/nodes/core/StructNode.js +5 -5
  334. package/src/nodes/core/StructTypeNode.js +1 -0
  335. package/src/nodes/core/SubBuildNode.js +89 -0
  336. package/src/nodes/core/UniformNode.js +80 -14
  337. package/src/nodes/core/VarNode.js +142 -16
  338. package/src/nodes/core/VaryingNode.js +9 -6
  339. package/src/nodes/display/BlendModes.js +7 -6
  340. package/src/nodes/display/BumpMapNode.js +1 -1
  341. package/src/nodes/display/ColorAdjustment.js +1 -1
  342. package/src/nodes/display/FrontFacingNode.js +35 -7
  343. package/src/nodes/display/NormalMapNode.js +20 -50
  344. package/src/nodes/display/PassNode.js +206 -17
  345. package/src/nodes/display/RenderOutputNode.js +28 -2
  346. package/src/nodes/display/ScreenNode.js +44 -40
  347. package/src/nodes/display/ToneMappingNode.js +31 -4
  348. package/src/nodes/display/ToonOutlinePassNode.js +8 -0
  349. package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
  350. package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
  351. package/src/nodes/display/ViewportTextureNode.js +94 -4
  352. package/src/nodes/fog/Fog.js +3 -2
  353. package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
  354. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  355. package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
  356. package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
  357. package/src/nodes/functions/BasicLightingModel.js +2 -1
  358. package/src/nodes/functions/PhongLightingModel.js +3 -3
  359. package/src/nodes/functions/PhysicalLightingModel.js +19 -18
  360. package/src/nodes/functions/VolumetricLightingModel.js +5 -5
  361. package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
  362. package/src/nodes/geometry/RangeNode.js +40 -4
  363. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  364. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
  365. package/src/nodes/gpgpu/ComputeNode.js +81 -25
  366. package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  367. package/src/nodes/gpgpu/WorkgroupInfoNode.js +29 -3
  368. package/src/nodes/lighting/EnvironmentNode.js +11 -11
  369. package/src/nodes/lighting/LightsNode.js +7 -8
  370. package/src/nodes/lighting/PointShadowNode.js +6 -0
  371. package/src/nodes/lighting/ProjectorLightNode.js +19 -6
  372. package/src/nodes/lighting/ShadowFilterNode.js +3 -1
  373. package/src/nodes/lighting/ShadowNode.js +77 -10
  374. package/src/nodes/materialx/MaterialXNodes.js +131 -2
  375. package/src/nodes/materialx/lib/mx_noise.js +165 -1
  376. package/src/nodes/math/BitcastNode.js +156 -0
  377. package/src/nodes/math/ConditionalNode.js +25 -27
  378. package/src/nodes/math/MathNode.js +106 -65
  379. package/src/nodes/math/OperatorNode.js +28 -43
  380. package/src/nodes/pmrem/PMREMUtils.js +117 -2
  381. package/src/nodes/shapes/Shapes.js +1 -1
  382. package/src/nodes/tsl/TSLBase.js +6 -2
  383. package/src/nodes/tsl/TSLCore.js +546 -186
  384. package/src/nodes/utils/DebugNode.js +3 -2
  385. package/src/nodes/utils/EquirectUV.js +27 -0
  386. package/src/nodes/utils/EventNode.js +119 -0
  387. package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
  388. package/src/nodes/utils/JoinNode.js +6 -3
  389. package/src/nodes/utils/LoopNode.js +20 -41
  390. package/src/nodes/utils/MatcapUV.js +22 -0
  391. package/src/nodes/utils/MemberNode.js +59 -7
  392. package/src/nodes/utils/PostProcessingUtils.js +28 -1
  393. package/src/nodes/utils/RTTNode.js +33 -6
  394. package/src/nodes/utils/ReflectorNode.js +68 -10
  395. package/src/nodes/utils/SampleNode.js +91 -0
  396. package/src/nodes/utils/SplitNode.js +11 -0
  397. package/src/nodes/utils/Timer.js +0 -47
  398. package/src/nodes/utils/TriplanarTextures.js +65 -0
  399. package/src/objects/BatchedMesh.js +6 -4
  400. package/src/objects/LOD.js +1 -1
  401. package/src/objects/Line.js +2 -1
  402. package/src/objects/LineSegments.js +2 -1
  403. package/src/objects/Skeleton.js +3 -2
  404. package/src/objects/SkinnedMesh.js +3 -1
  405. package/src/objects/Sprite.js +4 -3
  406. package/src/renderers/WebGLRenderer.js +77 -66
  407. package/src/renderers/common/Animation.js +13 -1
  408. package/src/renderers/common/Attributes.js +1 -1
  409. package/src/renderers/common/Backend.js +108 -27
  410. package/src/renderers/common/Background.js +4 -3
  411. package/src/renderers/common/Bindings.js +76 -19
  412. package/src/renderers/common/CanvasTarget.js +341 -0
  413. package/src/renderers/common/ChainMap.js +1 -1
  414. package/src/renderers/common/Color4.js +2 -2
  415. package/src/renderers/common/CubeRenderTarget.js +1 -1
  416. package/src/renderers/common/DataMap.js +1 -1
  417. package/src/renderers/common/Geometries.js +26 -0
  418. package/src/renderers/common/Info.js +4 -2
  419. package/src/renderers/common/InspectorBase.js +146 -0
  420. package/src/renderers/common/Pipelines.js +1 -1
  421. package/src/renderers/common/PostProcessing.js +61 -25
  422. package/src/renderers/common/QuadMesh.js +7 -1
  423. package/src/renderers/common/RenderContext.js +2 -2
  424. package/src/renderers/common/RenderList.js +7 -3
  425. package/src/renderers/common/RenderObject.js +84 -5
  426. package/src/renderers/common/RenderObjects.js +1 -1
  427. package/src/renderers/common/Renderer.js +486 -255
  428. package/src/renderers/common/RendererUtils.js +9 -0
  429. package/src/renderers/common/SampledTexture.js +8 -68
  430. package/src/renderers/common/Sampler.js +117 -0
  431. package/src/renderers/common/Storage3DTexture.js +100 -0
  432. package/src/renderers/common/StorageArrayTexture.js +84 -0
  433. package/src/renderers/common/StorageTexture.js +27 -0
  434. package/src/renderers/common/Textures.js +138 -46
  435. package/src/renderers/common/TimestampQueryPool.js +65 -3
  436. package/src/renderers/common/UniformsGroup.js +2 -1
  437. package/src/renderers/common/XRManager.js +63 -24
  438. package/src/renderers/common/XRRenderTarget.js +21 -4
  439. package/src/renderers/common/extras/PMREMGenerator.js +161 -66
  440. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  441. package/src/renderers/common/nodes/NodeLibrary.js +9 -7
  442. package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
  443. package/src/renderers/common/nodes/NodeSampler.js +13 -1
  444. package/src/renderers/common/nodes/Nodes.js +38 -16
  445. package/src/renderers/shaders/DFGLUTData.js +64 -0
  446. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
  447. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
  448. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
  449. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
  450. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
  451. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  452. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
  453. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
  454. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +21 -11
  455. package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
  456. package/src/renderers/shaders/UniformsLib.js +1 -0
  457. package/src/renderers/shaders/UniformsUtils.js +25 -4
  458. package/src/renderers/webgl/WebGLAttributes.js +4 -0
  459. package/src/renderers/webgl/WebGLCapabilities.js +4 -3
  460. package/src/renderers/webgl/WebGLExtensions.js +2 -25
  461. package/src/renderers/webgl/WebGLInfo.js +3 -1
  462. package/src/renderers/webgl/WebGLProgram.js +25 -18
  463. package/src/renderers/webgl/WebGLPrograms.js +9 -6
  464. package/src/renderers/webgl/WebGLShadowMap.js +13 -2
  465. package/src/renderers/webgl/WebGLState.js +17 -16
  466. package/src/renderers/webgl/WebGLTextures.js +38 -21
  467. package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
  468. package/src/renderers/webgl/WebGLUtils.js +3 -2
  469. package/src/renderers/webgl-fallback/WebGLBackend.js +245 -182
  470. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +184 -30
  471. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
  472. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
  473. package/src/renderers/webgl-fallback/utils/WebGLState.js +9 -8
  474. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +171 -19
  475. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +51 -22
  476. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
  477. package/src/renderers/webgpu/WebGPUBackend.js +205 -128
  478. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
  479. package/src/renderers/webgpu/WebGPURenderer.js +3 -2
  480. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +198 -121
  481. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +8 -1
  482. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +49 -33
  483. package/src/renderers/webgpu/utils/WebGPUConstants.js +14 -3
  484. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +56 -37
  485. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
  486. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +266 -158
  487. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
  488. package/src/renderers/webgpu/utils/WebGPUUtils.js +24 -19
  489. package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
  490. package/src/renderers/webxr/WebXRManager.js +89 -13
  491. package/src/textures/ExternalTexture.js +56 -0
  492. package/src/textures/FramebufferTexture.js +2 -2
  493. package/src/textures/Source.js +14 -3
  494. package/src/textures/Texture.js +3 -2
  495. package/src/textures/VideoTexture.js +29 -2
  496. package/src/utils.js +67 -3
  497. package/examples/jsm/loaders/RGBMLoader.js +0 -1148
  498. package/examples/jsm/tsl/display/TRAAPassNode.js +0 -452
  499. package/src/nodes/utils/EquirectUVNode.js +0 -65
  500. package/src/nodes/utils/MatcapUVNode.js +0 -49
  501. package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
@@ -5,6 +5,7 @@ import { Color } from '../../math/Color.js';
5
5
  *
6
6
  * If not state object is provided, the function creates one.
7
7
  *
8
+ * @private
8
9
  * @function
9
10
  * @param {Renderer} renderer - The renderer.
10
11
  * @param {Object} [state={}] - The state.
@@ -36,6 +37,7 @@ export function saveRendererState( renderer, state = {} ) {
36
37
  *
37
38
  * If not state object is provided, the function creates one.
38
39
  *
40
+ * @private
39
41
  * @function
40
42
  * @param {Renderer} renderer - The renderer.
41
43
  * @param {Object} [state={}] - The state.
@@ -57,6 +59,7 @@ export function resetRendererState( renderer, state ) {
57
59
  /**
58
60
  * Restores the state of the given renderer from the given state object.
59
61
  *
62
+ * @private
60
63
  * @function
61
64
  * @param {Renderer} renderer - The renderer.
62
65
  * @param {Object} state - The state to restore.
@@ -81,6 +84,7 @@ export function restoreRendererState( renderer, state ) {
81
84
  *
82
85
  * If not state object is provided, the function creates one.
83
86
  *
87
+ * @private
84
88
  * @function
85
89
  * @param {Scene} scene - The scene.
86
90
  * @param {Object} [state={}] - The state.
@@ -102,6 +106,7 @@ export function saveSceneState( scene, state = {} ) {
102
106
  *
103
107
  * If not state object is provided, the function creates one.
104
108
  *
109
+ * @private
105
110
  * @function
106
111
  * @param {Scene} scene - The scene.
107
112
  * @param {Object} [state={}] - The state.
@@ -122,6 +127,7 @@ export function resetSceneState( scene, state ) {
122
127
  /**
123
128
  * Restores the state of the given scene from the given state object.
124
129
  *
130
+ * @private
125
131
  * @function
126
132
  * @param {Scene} scene - The scene.
127
133
  * @param {Object} state - The state to restore.
@@ -139,6 +145,7 @@ export function restoreSceneState( scene, state ) {
139
145
  *
140
146
  * If not state object is provided, the function creates one.
141
147
  *
148
+ * @private
142
149
  * @function
143
150
  * @param {Renderer} renderer - The renderer.
144
151
  * @param {Scene} scene - The scene.
@@ -160,6 +167,7 @@ export function saveRendererAndSceneState( renderer, scene, state = {} ) {
160
167
  *
161
168
  * If not state object is provided, the function creates one.
162
169
  *
170
+ * @private
163
171
  * @function
164
172
  * @param {Renderer} renderer - The renderer.
165
173
  * @param {Scene} scene - The scene.
@@ -178,6 +186,7 @@ export function resetRendererAndSceneState( renderer, scene, state ) {
178
186
  /**
179
187
  * Restores the state of the given renderer and scene from the given state object.
180
188
  *
189
+ * @private
181
190
  * @function
182
191
  * @param {Renderer} renderer - The renderer.
183
192
  * @param {Scene} scene - The scene.
@@ -1,4 +1,4 @@
1
- import Binding from './Binding.js';
1
+ import Sampler from './Sampler.js';
2
2
 
3
3
  let _id = 0;
4
4
 
@@ -6,9 +6,9 @@ let _id = 0;
6
6
  * Represents a sampled texture binding type.
7
7
  *
8
8
  * @private
9
- * @augments Binding
9
+ * @augments Sampler
10
10
  */
11
- class SampledTexture extends Binding {
11
+ class SampledTexture extends Sampler {
12
12
 
13
13
  /**
14
14
  * Constructs a new sampled texture.
@@ -18,7 +18,7 @@ class SampledTexture extends Binding {
18
18
  */
19
19
  constructor( name, texture ) {
20
20
 
21
- super( name );
21
+ super( name, texture );
22
22
 
23
23
  /**
24
24
  * This identifier.
@@ -27,20 +27,6 @@ class SampledTexture extends Binding {
27
27
  */
28
28
  this.id = _id ++;
29
29
 
30
- /**
31
- * The texture this binding is referring to.
32
- *
33
- * @type {?Texture}
34
- */
35
- this.texture = texture;
36
-
37
- /**
38
- * The binding's version.
39
- *
40
- * @type {number}
41
- */
42
- this.version = texture ? texture.version : 0;
43
-
44
30
  /**
45
31
  * Whether the texture is a storage texture or not.
46
32
  *
@@ -50,13 +36,12 @@ class SampledTexture extends Binding {
50
36
  this.store = false;
51
37
 
52
38
  /**
53
- * The binding's generation which is an additional version
54
- * qualifier.
39
+ * The mip level to bind for storage textures.
55
40
  *
56
- * @type {?number}
57
- * @default null
41
+ * @type {number}
42
+ * @default 0
58
43
  */
59
- this.generation = null;
44
+ this.mipLevel = 0;
60
45
 
61
46
  /**
62
47
  * This flag can be used for type testing.
@@ -69,51 +54,6 @@ class SampledTexture extends Binding {
69
54
 
70
55
  }
71
56
 
72
- /**
73
- * Returns `true` whether this binding requires an update for the
74
- * given generation.
75
- *
76
- * @param {number} generation - The generation.
77
- * @return {boolean} Whether an update is required or not.
78
- */
79
- needsBindingsUpdate( generation ) {
80
-
81
- const { texture } = this;
82
-
83
- if ( generation !== this.generation ) {
84
-
85
- this.generation = generation;
86
-
87
- return true;
88
-
89
- }
90
-
91
- return texture.isVideoTexture;
92
-
93
- }
94
-
95
- /**
96
- * Updates the binding.
97
- *
98
- * @return {boolean} Whether the texture has been updated and must be
99
- * uploaded to the GPU.
100
- */
101
- update() {
102
-
103
- const { texture, version } = this;
104
-
105
- if ( version !== texture.version ) {
106
-
107
- this.version = texture.version;
108
-
109
- return true;
110
-
111
- }
112
-
113
- return false;
114
-
115
- }
116
-
117
57
  }
118
58
 
119
59
  /**
@@ -21,8 +21,25 @@ class Sampler extends Binding {
21
21
  /**
22
22
  * The texture the sampler is referring to.
23
23
  *
24
+ * @private
24
25
  * @type {?Texture}
25
26
  */
27
+ this._texture = null;
28
+
29
+ /**
30
+ * An event listener which is added to {@link texture}'s dispose event.
31
+ *
32
+ * @private
33
+ * @type {Function}
34
+ */
35
+ this._onTextureDispose = () => {
36
+
37
+ this.generation = null;
38
+ this.version = 0;
39
+
40
+ };
41
+
42
+ // Assignment to the texture via a setter must occur after "_onTextureDispose" is initialized.
26
43
  this.texture = texture;
27
44
 
28
45
  /**
@@ -32,6 +49,23 @@ class Sampler extends Binding {
32
49
  */
33
50
  this.version = texture ? texture.version : 0;
34
51
 
52
+ /**
53
+ * The binding's generation which is an additional version
54
+ * qualifier.
55
+ *
56
+ * @type {?number}
57
+ * @default null
58
+ */
59
+ this.generation = null;
60
+
61
+ /**
62
+ * The binding's sampler key.
63
+ *
64
+ * @type {string}
65
+ * @default ''
66
+ */
67
+ this.samplerKey = '';
68
+
35
69
  /**
36
70
  * This flag can be used for type testing.
37
71
  *
@@ -43,6 +77,89 @@ class Sampler extends Binding {
43
77
 
44
78
  }
45
79
 
80
+ /**
81
+ * Sets the texture of this sampler.
82
+ *
83
+ * @param {Texture} value - The texture to set.
84
+ */
85
+ set texture( value ) {
86
+
87
+ if ( this._texture === value ) return;
88
+
89
+ if ( this._texture ) {
90
+
91
+ this._texture.removeEventListener( 'dispose', this._onTextureDispose );
92
+
93
+ }
94
+
95
+ this._texture = value;
96
+
97
+ this.generation = null;
98
+ this.version = 0;
99
+
100
+ if ( this._texture ) {
101
+
102
+ this._texture.addEventListener( 'dispose', this._onTextureDispose );
103
+
104
+ }
105
+
106
+ }
107
+
108
+ /**
109
+ * Gets the texture of this sampler.
110
+ * @return {?Texture} The texture.
111
+ */
112
+ get texture() {
113
+
114
+ return this._texture;
115
+
116
+ }
117
+
118
+ /**
119
+ * Updates the binding.
120
+ *
121
+ * @return {boolean} Whether the texture has been updated and must be
122
+ * uploaded to the GPU.
123
+ */
124
+ update() {
125
+
126
+ const { texture, version } = this;
127
+
128
+ if ( version !== texture.version ) {
129
+
130
+ this.version = texture.version;
131
+
132
+ return true;
133
+
134
+ }
135
+
136
+ return false;
137
+
138
+ }
139
+
140
+
141
+ clone() {
142
+
143
+ const clonedSampler = super.clone();
144
+
145
+ // fix dispose handler for cloned instances
146
+ // TODO: Find better solution, see #31747
147
+
148
+ clonedSampler._texture = null;
149
+
150
+ clonedSampler._onTextureDispose = () => {
151
+
152
+ clonedSampler.generation = null;
153
+ clonedSampler.version = 0;
154
+
155
+ };
156
+
157
+ clonedSampler.texture = this.texture;
158
+
159
+ return clonedSampler;
160
+
161
+ }
162
+
46
163
  }
47
164
 
48
165
  export default Sampler;
@@ -0,0 +1,100 @@
1
+ import { Texture } from '../../textures/Texture.js';
2
+ import { LinearFilter, ClampToEdgeWrapping } from '../../constants.js';
3
+
4
+ /**
5
+ * This special type of texture is intended for compute shaders.
6
+ * It can be used to compute the data of a texture with a compute shader.
7
+ *
8
+ * Note: This type of texture can only be used with `WebGPURenderer`
9
+ * and a WebGPU backend.
10
+ *
11
+ * @augments Texture
12
+ */
13
+ class Storage3DTexture extends Texture {
14
+
15
+ /**
16
+ * Constructs a new storage texture.
17
+ *
18
+ * @param {number} [width=1] - The storage texture's width.
19
+ * @param {number} [height=1] - The storage texture's height.
20
+ * @param {number} [depth=1] - The storage texture's depth.
21
+ */
22
+ constructor( width = 1, height = 1, depth = 1 ) {
23
+
24
+ super();
25
+
26
+ //inherited from texture. Must be false for 3DTexture
27
+ this.isArrayTexture = false;
28
+
29
+ /**
30
+ * The image object which just represents the texture's dimension.
31
+ *
32
+ * @type {{width: number, height: number, depth: number}}
33
+ */
34
+ this.image = { width, height, depth };
35
+
36
+ /**
37
+ * The default `magFilter` for storage textures is `THREE.LinearFilter`.
38
+ *
39
+ * @type {number}
40
+ */
41
+ this.magFilter = LinearFilter;
42
+
43
+ /**
44
+ * The default `minFilter` for storage textures is `THREE.LinearFilter`.
45
+ *
46
+ * @type {number}
47
+ */
48
+ this.minFilter = LinearFilter;
49
+
50
+ /**
51
+ * This defines how the texture is wrapped in the depth direction and corresponds to
52
+ * *W* in UVW mapping.
53
+ *
54
+ * @type {number}
55
+ */
56
+ this.wrapR = ClampToEdgeWrapping;
57
+
58
+ /**
59
+ * This flag can be used for type testing.
60
+ *
61
+ * @type {boolean}
62
+ * @readonly
63
+ * @default true
64
+ */
65
+ this.isStorageTexture = true;
66
+
67
+ /**
68
+ * Indicates whether this texture is a 3D texture.
69
+ *
70
+ * @type {boolean}
71
+ *
72
+ */
73
+ this.is3DTexture = true;
74
+
75
+ }
76
+
77
+ /**
78
+ * Sets the size of the storage 3d texture.
79
+ *
80
+ * @param {number} width - The new width of the storage texture.
81
+ * @param {number} height - The new height of the storage texture.
82
+ * @param {number} depth - The new depth of the storage texture.
83
+ */
84
+ setSize( width, height, depth ) {
85
+
86
+ if ( this.image.width !== width || this.image.height !== height || this.image.depth !== depth ) {
87
+
88
+ this.image.width = width;
89
+ this.image.height = height;
90
+ this.image.depth = depth;
91
+
92
+ this.dispose();
93
+
94
+ }
95
+
96
+ }
97
+
98
+ }
99
+
100
+ export default Storage3DTexture;
@@ -0,0 +1,84 @@
1
+ import { Texture } from '../../textures/Texture.js';
2
+ import { LinearFilter } from '../../constants.js';
3
+
4
+ /**
5
+ * This special type of texture is intended for compute shaders.
6
+ * It can be used to compute the data of a texture with a compute shader.
7
+ *
8
+ * Note: This type of texture can only be used with `WebGPURenderer`
9
+ * and a WebGPU backend.
10
+ *
11
+ * @augments Texture
12
+ */
13
+ class StorageArrayTexture extends Texture {
14
+
15
+ /**
16
+ * Constructs a new storage texture.
17
+ *
18
+ * @param {number} [width=1] - The storage texture's width.
19
+ * @param {number} [height=1] - The storage texture's height.
20
+ * @param {number} [depth=1] - The storage texture's depth.
21
+ */
22
+ constructor( width = 1, height = 1, depth = 1 ) {
23
+
24
+ super();
25
+
26
+ //inherited from texture
27
+ this.isArrayTexture = true;
28
+
29
+ /**
30
+ * The image object which just represents the texture's dimension.
31
+ *
32
+ * @type {{width: number, height: number, depth: number}}
33
+ */
34
+ this.image = { width, height, depth };
35
+
36
+ /**
37
+ * The default `magFilter` for storage textures is `THREE.LinearFilter`.
38
+ *
39
+ * @type {number}
40
+ */
41
+ this.magFilter = LinearFilter;
42
+
43
+ /**
44
+ * The default `minFilter` for storage textures is `THREE.LinearFilter`.
45
+ *
46
+ * @type {number}
47
+ */
48
+ this.minFilter = LinearFilter;
49
+
50
+ /**
51
+ * This flag can be used for type testing.
52
+ *
53
+ * @type {boolean}
54
+ * @readonly
55
+ * @default true
56
+ */
57
+ this.isStorageTexture = true;
58
+
59
+ }
60
+
61
+ /**
62
+ * Sets the size of the storage array texture.
63
+ *
64
+ * @param {number} width - The new width of the storage texture.
65
+ * @param {number} height - The new height of the storage texture.
66
+ * @param {number} depth - The new depth of the storage texture.
67
+ */
68
+ setSize( width, height, depth ) {
69
+
70
+ if ( this.image.width !== width || this.image.height !== height || this.image.depth !== depth ) {
71
+
72
+ this.image.width = width;
73
+ this.image.height = height;
74
+ this.image.depth = depth;
75
+
76
+ this.dispose();
77
+
78
+ }
79
+
80
+ }
81
+
82
+ }
83
+
84
+ export default StorageArrayTexture;
@@ -52,6 +52,33 @@ class StorageTexture extends Texture {
52
52
  */
53
53
  this.isStorageTexture = true;
54
54
 
55
+ /**
56
+ * When `true`, mipmaps will be auto-generated after compute writes.
57
+ * When `false`, mipmaps must be written manually via compute shaders.
58
+ *
59
+ * @type {boolean}
60
+ * @default true
61
+ */
62
+ this.mipmapsAutoUpdate = true;
63
+
64
+ }
65
+ /**
66
+ * Sets the size of the storage texture.
67
+ *
68
+ * @param {number} width - The new width of the storage texture.
69
+ * @param {number} height - The new height of the storage texture.
70
+ */
71
+ setSize( width, height ) {
72
+
73
+ if ( this.image.width !== width || this.image.height !== height ) {
74
+
75
+ this.image.width = width;
76
+ this.image.height = height;
77
+
78
+ this.dispose();
79
+
80
+ }
81
+
55
82
  }
56
83
 
57
84
  }