super-three 0.171.0 → 0.172.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 (413) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +157 -49
  3. package/build/three.core.js +104 -42
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +53 -8
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +10 -5
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +21191 -1008
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +21189 -1008
  12. package/build/three.webgpu.nodes.min.js +1 -1
  13. package/examples/jsm/Addons.js +0 -5
  14. package/examples/jsm/animation/CCDIKSolver.js +3 -2
  15. package/examples/jsm/controls/ArcballControls.js +28 -19
  16. package/examples/jsm/controls/OrbitControls.js +5 -4
  17. package/examples/jsm/csm/CSMShadowNode.js +16 -11
  18. package/examples/jsm/curves/NURBSCurve.js +1 -1
  19. package/examples/jsm/curves/NURBSUtils.js +3 -0
  20. package/examples/jsm/effects/OutlineEffect.js +1 -1
  21. package/examples/jsm/exporters/GLTFExporter.js +11 -7
  22. package/examples/jsm/exporters/KTX2Exporter.js +1 -1
  23. package/examples/jsm/exporters/PLYExporter.js +2 -2
  24. package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
  25. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  26. package/examples/jsm/lights/LightProbeGenerator.js +3 -3
  27. package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
  28. package/examples/jsm/loaders/3MFLoader.js +6 -3
  29. package/examples/jsm/loaders/BVHLoader.js +1 -1
  30. package/examples/jsm/loaders/ColladaLoader.js +5 -5
  31. package/examples/jsm/loaders/DDSLoader.js +42 -0
  32. package/examples/jsm/loaders/GCodeLoader.js +1 -1
  33. package/examples/jsm/loaders/GLTFLoader.js +22 -2
  34. package/examples/jsm/loaders/KTX2Loader.js +6 -1
  35. package/examples/jsm/loaders/KTXLoader.js +4 -4
  36. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  37. package/examples/jsm/loaders/LottieLoader.js +1 -1
  38. package/examples/jsm/loaders/MTLLoader.js +1 -0
  39. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  40. package/examples/jsm/loaders/PLYLoader.js +7 -7
  41. package/examples/jsm/loaders/PVRLoader.js +1 -1
  42. package/examples/jsm/loaders/SVGLoader.js +2 -2
  43. package/examples/jsm/loaders/TDSLoader.js +1 -1
  44. package/examples/jsm/loaders/VRMLLoader.js +7 -7
  45. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  46. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
  47. package/examples/jsm/math/ConvexHull.js +1 -1
  48. package/examples/jsm/math/OBB.js +17 -0
  49. package/examples/jsm/misc/ProgressiveLightMapGPU.js +10 -10
  50. package/examples/jsm/misc/Volume.js +20 -12
  51. package/examples/jsm/misc/VolumeSlice.js +2 -2
  52. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  53. package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
  54. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  55. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  56. package/examples/jsm/objects/Sky.js +2 -2
  57. package/examples/jsm/objects/SkyMesh.js +3 -3
  58. package/examples/jsm/objects/Water2.js +1 -1
  59. package/examples/jsm/objects/Water2Mesh.js +2 -2
  60. package/examples/jsm/objects/WaterMesh.js +4 -4
  61. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  62. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  63. package/examples/jsm/postprocessing/OutlinePass.js +4 -4
  64. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  65. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  66. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  67. package/examples/jsm/postprocessing/SSRPass.js +2 -4
  68. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  69. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  70. package/examples/jsm/shaders/BokehShader2.js +1 -1
  71. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  72. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  73. package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
  74. package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
  75. package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
  76. package/examples/jsm/tsl/display/BleachBypass.js +10 -0
  77. package/examples/jsm/tsl/display/BloomNode.js +233 -26
  78. package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
  79. package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
  80. package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
  81. package/examples/jsm/tsl/display/FXAANode.js +52 -3
  82. package/examples/jsm/tsl/display/FilmNode.js +47 -1
  83. package/examples/jsm/tsl/display/GTAONode.js +210 -14
  84. package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
  85. package/examples/jsm/tsl/display/LensflareNode.js +131 -13
  86. package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
  87. package/examples/jsm/tsl/display/MotionBlur.js +12 -2
  88. package/examples/jsm/tsl/display/OutlineNode.js +343 -26
  89. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
  90. package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
  91. package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
  92. package/examples/jsm/tsl/display/SMAANode.js +187 -46
  93. package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
  94. package/examples/jsm/tsl/display/SSRNode.js +194 -21
  95. package/examples/jsm/tsl/display/Sepia.js +9 -0
  96. package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
  97. package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
  98. package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
  99. package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
  100. package/examples/jsm/tsl/display/TransitionNode.js +71 -6
  101. package/examples/jsm/tsl/display/hashBlur.js +14 -3
  102. package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
  103. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  104. package/examples/jsm/utils/CameraUtils.js +4 -1
  105. package/examples/jsm/utils/GeometryUtils.js +22 -19
  106. package/examples/jsm/utils/SceneUtils.js +2 -2
  107. package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
  108. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  109. package/package.json +8 -3
  110. package/src/Three.Core.js +2 -0
  111. package/src/Three.Legacy.js +0 -21
  112. package/src/Three.TSL.js +9 -4
  113. package/src/Three.WebGPU.Nodes.js +2 -2
  114. package/src/Three.WebGPU.js +2 -2
  115. package/src/animation/PropertyBinding.js +2 -2
  116. package/src/cameras/PerspectiveCamera.js +18 -2
  117. package/src/constants.js +1 -1
  118. package/src/core/RenderTarget.js +18 -0
  119. package/src/core/RenderTarget3D.js +22 -0
  120. package/src/core/RenderTargetArray.js +22 -0
  121. package/src/extras/Earcut.js +1 -1
  122. package/src/extras/PMREMGenerator.js +20 -0
  123. package/src/extras/TextureUtils.js +6 -0
  124. package/src/helpers/CameraHelper.js +16 -13
  125. package/src/loaders/nodes/NodeLoader.js +59 -0
  126. package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
  127. package/src/loaders/nodes/NodeObjectLoader.js +61 -0
  128. package/src/materials/nodes/InstancedPointsNodeMaterial.js +72 -19
  129. package/src/materials/nodes/Line2NodeMaterial.js +128 -34
  130. package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
  131. package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
  132. package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
  133. package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
  134. package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
  135. package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
  136. package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
  137. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
  138. package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
  139. package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
  140. package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
  141. package/src/materials/nodes/NodeMaterial.js +474 -21
  142. package/src/materials/nodes/PointsNodeMaterial.js +22 -13
  143. package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
  144. package/src/materials/nodes/SpriteNodeMaterial.js +77 -19
  145. package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
  146. package/src/materials/nodes/manager/NodeMaterialObserver.js +87 -0
  147. package/src/nodes/Nodes.js +1 -6
  148. package/src/nodes/TSL.js +2 -3
  149. package/src/nodes/accessors/AccessorsUtils.js +27 -0
  150. package/src/nodes/accessors/Arrays.js +24 -5
  151. package/src/nodes/accessors/BatchNode.js +39 -3
  152. package/src/nodes/accessors/Bitangent.js +37 -0
  153. package/src/nodes/accessors/BufferAttributeNode.js +178 -5
  154. package/src/nodes/accessors/BufferNode.js +63 -0
  155. package/src/nodes/accessors/BuiltinNode.js +38 -0
  156. package/src/nodes/accessors/Camera.js +49 -0
  157. package/src/nodes/accessors/ClippingNode.js +71 -2
  158. package/src/nodes/accessors/CubeTextureNode.js +64 -0
  159. package/src/nodes/accessors/InstanceNode.js +85 -2
  160. package/src/nodes/accessors/InstancedMeshNode.js +28 -3
  161. package/src/nodes/accessors/InstancedPointsMaterialNode.js +13 -0
  162. package/src/nodes/accessors/Lights.js +50 -1
  163. package/src/nodes/accessors/MaterialNode.js +302 -8
  164. package/src/nodes/accessors/MaterialProperties.js +7 -0
  165. package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
  166. package/src/nodes/accessors/ModelNode.js +100 -5
  167. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
  168. package/src/nodes/accessors/MorphNode.js +48 -4
  169. package/src/nodes/accessors/Normal.js +59 -3
  170. package/src/nodes/accessors/Object3DNode.js +102 -1
  171. package/src/nodes/accessors/PointUVNode.js +26 -0
  172. package/src/nodes/accessors/Position.js +53 -4
  173. package/src/nodes/accessors/ReferenceBaseNode.js +188 -0
  174. package/src/nodes/accessors/ReferenceNode.js +202 -2
  175. package/src/nodes/accessors/ReflectVector.js +24 -0
  176. package/src/nodes/accessors/RendererReferenceNode.js +46 -1
  177. package/src/nodes/accessors/SceneNode.js +54 -0
  178. package/src/nodes/accessors/SkinningNode.js +127 -1
  179. package/src/nodes/accessors/StorageBufferNode.js +168 -4
  180. package/src/nodes/accessors/StorageTextureNode.js +118 -0
  181. package/src/nodes/accessors/Tangent.js +36 -0
  182. package/src/nodes/accessors/Texture3DNode.js +89 -5
  183. package/src/nodes/accessors/TextureBicubic.js +12 -2
  184. package/src/nodes/accessors/TextureNode.js +309 -10
  185. package/src/nodes/accessors/TextureSizeNode.js +42 -0
  186. package/src/nodes/accessors/UV.js +10 -1
  187. package/src/nodes/accessors/UniformArrayNode.js +223 -23
  188. package/src/nodes/accessors/UserDataNode.js +46 -0
  189. package/src/nodes/accessors/VelocityNode.js +82 -0
  190. package/src/nodes/accessors/VertexColorNode.js +39 -2
  191. package/src/nodes/code/CodeNode.js +95 -1
  192. package/src/nodes/code/ExpressionNode.js +28 -0
  193. package/src/nodes/code/FunctionCallNode.js +37 -0
  194. package/src/nodes/code/FunctionNode.js +45 -0
  195. package/src/nodes/code/ScriptableNode.js +223 -1
  196. package/src/nodes/code/ScriptableValueNode.js +85 -1
  197. package/src/nodes/core/AssignNode.js +48 -2
  198. package/src/nodes/core/AttributeNode.js +43 -0
  199. package/src/nodes/core/BypassNode.js +47 -2
  200. package/src/nodes/core/CacheNode.js +53 -2
  201. package/src/nodes/core/ConstNode.js +24 -0
  202. package/src/nodes/core/ContextNode.js +65 -0
  203. package/src/nodes/core/IndexNode.js +68 -7
  204. package/src/nodes/core/InputNode.js +48 -0
  205. package/src/nodes/core/LightingModel.js +60 -0
  206. package/src/nodes/core/MRTNode.js +66 -0
  207. package/src/nodes/core/Node.js +337 -12
  208. package/src/nodes/core/NodeAttribute.js +38 -0
  209. package/src/nodes/core/NodeBuilder.js +945 -15
  210. package/src/nodes/core/NodeCache.js +41 -2
  211. package/src/nodes/core/NodeCode.js +31 -0
  212. package/src/nodes/core/NodeFrame.js +123 -2
  213. package/src/nodes/core/NodeFunction.js +46 -0
  214. package/src/nodes/core/NodeFunctionInput.js +44 -0
  215. package/src/nodes/core/NodeParser.js +11 -0
  216. package/src/nodes/core/NodeUniform.js +52 -0
  217. package/src/nodes/core/NodeUtils.js +141 -0
  218. package/src/nodes/core/NodeVar.js +30 -0
  219. package/src/nodes/core/NodeVarying.js +28 -0
  220. package/src/nodes/core/OutputStructNode.js +33 -2
  221. package/src/nodes/core/ParameterNode.js +28 -0
  222. package/src/nodes/core/PropertyNode.js +232 -0
  223. package/src/nodes/core/StackNode.js +78 -0
  224. package/src/nodes/core/StructTypeNode.js +39 -1
  225. package/src/nodes/core/TempNode.js +30 -4
  226. package/src/nodes/core/UniformGroupNode.js +82 -7
  227. package/src/nodes/core/UniformNode.js +66 -0
  228. package/src/nodes/core/VarNode.js +52 -0
  229. package/src/nodes/core/VaryingNode.js +83 -2
  230. package/src/nodes/core/constants.js +36 -0
  231. package/src/nodes/display/BumpMapNode.js +37 -0
  232. package/src/nodes/display/ColorAdjustment.js +53 -11
  233. package/src/nodes/display/ColorSpaceFunctions.js +16 -0
  234. package/src/nodes/display/ColorSpaceNode.js +82 -0
  235. package/src/nodes/display/FrontFacingNode.js +29 -0
  236. package/src/nodes/display/NormalMapNode.js +43 -0
  237. package/src/nodes/display/PassNode.js +298 -7
  238. package/src/nodes/display/PosterizeNode.js +33 -0
  239. package/src/nodes/display/RenderOutputNode.js +66 -1
  240. package/src/nodes/display/ScreenNode.js +87 -0
  241. package/src/nodes/display/ToneMappingFunctions.js +58 -10
  242. package/src/nodes/display/ToneMappingNode.js +55 -2
  243. package/src/nodes/display/ToonOutlinePassNode.js +73 -0
  244. package/src/nodes/display/ViewportDepthNode.js +122 -8
  245. package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
  246. package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
  247. package/src/nodes/display/ViewportTextureNode.js +57 -0
  248. package/src/nodes/fog/Fog.js +93 -0
  249. package/src/nodes/functions/BasicLightingModel.js +24 -0
  250. package/src/nodes/functions/PhongLightingModel.js +34 -2
  251. package/src/nodes/functions/PhysicalLightingModel.js +167 -8
  252. package/src/nodes/functions/ShadowMaskModel.js +23 -0
  253. package/src/nodes/functions/ToonLightingModel.js +20 -0
  254. package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
  255. package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
  256. package/src/nodes/geometry/RangeNode.js +54 -2
  257. package/src/nodes/gpgpu/AtomicFunctionNode.js +157 -1
  258. package/src/nodes/gpgpu/BarrierNode.js +47 -0
  259. package/src/nodes/gpgpu/ComputeBuiltinNode.js +126 -0
  260. package/src/nodes/gpgpu/ComputeNode.js +106 -2
  261. package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
  262. package/src/nodes/lighting/AONode.js +18 -0
  263. package/src/nodes/lighting/AmbientLightNode.js +10 -0
  264. package/src/nodes/lighting/AnalyticLightNode.js +97 -2
  265. package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
  266. package/src/nodes/lighting/BasicLightMapNode.js +17 -0
  267. package/src/nodes/lighting/DirectionalLightNode.js +10 -0
  268. package/src/nodes/lighting/EnvironmentNode.js +18 -0
  269. package/src/nodes/lighting/HemisphereLightNode.js +31 -0
  270. package/src/nodes/lighting/IESSpotLightNode.js +11 -0
  271. package/src/nodes/lighting/IrradianceNode.js +17 -0
  272. package/src/nodes/lighting/LightProbeNode.js +20 -0
  273. package/src/nodes/lighting/LightUtils.js +12 -0
  274. package/src/nodes/lighting/LightingContextNode.js +48 -0
  275. package/src/nodes/lighting/LightingNode.js +15 -6
  276. package/src/nodes/lighting/LightsNode.js +132 -1
  277. package/src/nodes/lighting/PointLightNode.js +32 -1
  278. package/src/nodes/lighting/PointShadowNode.js +54 -1
  279. package/src/nodes/lighting/RectAreaLightNode.js +44 -6
  280. package/src/nodes/lighting/ShadowBaseNode.js +93 -0
  281. package/src/nodes/lighting/ShadowNode.js +240 -34
  282. package/src/nodes/lighting/SpotLightNode.js +43 -0
  283. package/src/nodes/math/ConditionalNode.js +70 -3
  284. package/src/nodes/math/Hash.js +9 -0
  285. package/src/nodes/math/MathNode.js +614 -11
  286. package/src/nodes/math/MathUtils.js +45 -1
  287. package/src/nodes/math/OperatorNode.js +233 -0
  288. package/src/nodes/math/TriNoise3D.js +18 -7
  289. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  290. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  291. package/src/nodes/pmrem/PMREMNode.js +133 -0
  292. package/src/nodes/pmrem/PMREMUtils.js +1 -1
  293. package/src/nodes/procedural/Checker.js +9 -0
  294. package/src/nodes/tsl/TSLBase.js +2 -2
  295. package/src/nodes/utils/ArrayElementNode.js +38 -2
  296. package/src/nodes/utils/ConvertNode.js +31 -0
  297. package/src/nodes/utils/CubeMapNode.js +78 -0
  298. package/src/nodes/utils/Discard.js +16 -0
  299. package/src/nodes/utils/EquirectUVNode.js +31 -1
  300. package/src/nodes/utils/FlipNode.js +38 -0
  301. package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
  302. package/src/nodes/utils/JoinNode.js +25 -0
  303. package/src/nodes/utils/LoopNode.js +74 -1
  304. package/src/nodes/utils/MatcapUVNode.js +17 -0
  305. package/src/nodes/utils/MaxMipLevelNode.js +49 -0
  306. package/src/nodes/utils/Oscillators.js +33 -0
  307. package/src/nodes/utils/Packing.js +17 -0
  308. package/src/nodes/utils/PostProcessingUtils.js +28 -23
  309. package/src/nodes/utils/RTTNode.js +123 -2
  310. package/src/nodes/utils/ReflectorNode.js +174 -4
  311. package/src/nodes/utils/RemapNode.js +79 -0
  312. package/src/nodes/utils/RotateNode.js +41 -0
  313. package/src/nodes/utils/SetNode.js +44 -1
  314. package/src/nodes/utils/SplitNode.js +55 -3
  315. package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
  316. package/src/nodes/utils/SpriteUtils.js +17 -0
  317. package/src/nodes/utils/StorageArrayElementNode.js +40 -0
  318. package/src/nodes/utils/Timer.js +19 -0
  319. package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
  320. package/src/nodes/utils/UVUtils.js +20 -0
  321. package/src/nodes/utils/ViewportUtils.js +13 -0
  322. package/src/objects/BatchedMesh.js +1 -2
  323. package/src/objects/ClippingGroup.js +49 -0
  324. package/src/renderers/WebGLRenderer.js +23 -4
  325. package/src/renderers/common/Animation.js +63 -0
  326. package/src/renderers/common/Attributes.js +36 -0
  327. package/src/renderers/common/Backend.js +467 -52
  328. package/src/renderers/common/Background.js +34 -1
  329. package/src/renderers/common/BindGroup.js +43 -0
  330. package/src/renderers/common/Binding.js +35 -0
  331. package/src/renderers/common/Bindings.js +93 -1
  332. package/src/renderers/common/Buffer.js +49 -0
  333. package/src/renderers/common/BufferUtils.js +27 -0
  334. package/src/renderers/common/BundleGroup.js +57 -0
  335. package/src/renderers/common/ChainMap.js +38 -1
  336. package/src/renderers/common/ClippingContext.js +107 -14
  337. package/src/renderers/common/Color4.js +36 -0
  338. package/src/renderers/common/ComputePipeline.js +24 -0
  339. package/src/renderers/common/CubeRenderTarget.js +13 -0
  340. package/src/renderers/common/DataMap.js +37 -1
  341. package/src/renderers/common/Geometries.js +98 -0
  342. package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
  343. package/src/renderers/common/Info.js +87 -0
  344. package/src/renderers/common/Lighting.js +26 -0
  345. package/src/renderers/common/Pipeline.js +22 -0
  346. package/src/renderers/common/Pipelines.js +148 -5
  347. package/src/renderers/common/PostProcessing.js +75 -3
  348. package/src/renderers/common/ProgrammableStage.js +60 -2
  349. package/src/renderers/common/QuadMesh.js +54 -5
  350. package/src/renderers/common/RenderBundle.js +14 -8
  351. package/src/renderers/common/RenderBundles.js +33 -10
  352. package/src/renderers/common/RenderContext.js +169 -4
  353. package/src/renderers/common/RenderContexts.js +42 -2
  354. package/src/renderers/common/RenderList.js +178 -0
  355. package/src/renderers/common/RenderLists.js +31 -0
  356. package/src/renderers/common/RenderObject.js +328 -4
  357. package/src/renderers/common/RenderObjects.js +101 -7
  358. package/src/renderers/common/RenderPipeline.js +24 -0
  359. package/src/renderers/common/Renderer.js +1096 -31
  360. package/src/renderers/common/RendererUtils.js +193 -0
  361. package/src/renderers/common/SampledTexture.js +121 -0
  362. package/src/renderers/common/Sampler.js +30 -0
  363. package/src/renderers/common/StorageBuffer.js +24 -0
  364. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  365. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  366. package/src/renderers/common/StorageTexture.js +38 -0
  367. package/src/renderers/common/Textures.js +83 -0
  368. package/src/renderers/common/Uniform.js +188 -2
  369. package/src/renderers/common/UniformBuffer.js +19 -0
  370. package/src/renderers/common/UniformsGroup.js +139 -2
  371. package/src/renderers/common/extras/PMREMGenerator.js +24 -3
  372. package/src/renderers/common/nodes/NodeBuilderState.js +95 -1
  373. package/src/renderers/common/nodes/NodeLibrary.js +89 -0
  374. package/src/renderers/common/nodes/NodeSampledTexture.js +91 -2
  375. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  376. package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
  377. package/src/renderers/common/nodes/NodeUniform.js +189 -0
  378. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  379. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  380. package/src/renderers/common/nodes/Nodes.js +327 -60
  381. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  382. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  383. package/src/renderers/webgl-fallback/WebGLBackend.js +547 -29
  384. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +0 -1
  385. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +1 -1
  386. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1 -1
  387. package/src/renderers/webgpu/WebGPUBackend.js +480 -49
  388. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +34 -0
  389. package/src/renderers/webgpu/WebGPURenderer.js +35 -0
  390. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
  391. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
  392. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +59 -11
  393. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
  394. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  395. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +10 -8
  396. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +9 -1
  397. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +5 -9
  398. package/src/renderers/webgpu/utils/WebGPUUtils.js +30 -0
  399. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  400. package/src/renderers/webxr/WebXRManager.js +7 -1
  401. package/src/textures/Data3DTexture.js +2 -2
  402. package/src/textures/Texture.js +4 -0
  403. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
  404. package/examples/jsm/animation/MMDPhysics.js +0 -1408
  405. package/examples/jsm/exporters/MMDExporter.js +0 -223
  406. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  407. package/examples/jsm/loaders/MMDLoader.js +0 -2298
  408. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  409. package/src/nodes/core/UniformGroup.js +0 -13
  410. package/src/nodes/fog/FogExp2Node.js +0 -35
  411. package/src/nodes/fog/FogNode.js +0 -50
  412. package/src/nodes/fog/FogRangeNode.js +0 -36
  413. package/src/renderers/common/PostProcessingUtils.js +0 -86
@@ -0,0 +1,193 @@
1
+ import { Color } from '../../math/Color.js';
2
+
3
+ /** @module RendererUtils **/
4
+
5
+ /**
6
+ * Saves the state of the given renderer and stores it into the given state object.
7
+ *
8
+ * If not state object is provided, the function creates one.
9
+ *
10
+ * @function
11
+ * @param {Renderer} renderer - The renderer.
12
+ * @param {Object} [state={}] - The state.
13
+ * @return {Object} The state.
14
+ */
15
+ export function saveRendererState( renderer, state = {} ) {
16
+
17
+ state.toneMapping = renderer.toneMapping;
18
+ state.toneMappingExposure = renderer.toneMappingExposure;
19
+ state.outputColorSpace = renderer.outputColorSpace;
20
+ state.renderTarget = renderer.getRenderTarget();
21
+ state.activeCubeFace = renderer.getActiveCubeFace();
22
+ state.activeMipmapLevel = renderer.getActiveMipmapLevel();
23
+ state.renderObjectFunction = renderer.getRenderObjectFunction();
24
+ state.pixelRatio = renderer.getPixelRatio();
25
+ state.mrt = renderer.getMRT();
26
+ state.clearColor = renderer.getClearColor( state.clearColor || new Color() );
27
+ state.clearAlpha = renderer.getClearAlpha();
28
+ state.autoClear = renderer.autoClear;
29
+ state.scissorTest = renderer.getScissorTest();
30
+
31
+ return state;
32
+
33
+ }
34
+
35
+ /**
36
+ * Saves the state of the given renderer and stores it into the given state object.
37
+ * Besides, the function also resets the state of the renderer to its default values.
38
+ *
39
+ * If not state object is provided, the function creates one.
40
+ *
41
+ * @function
42
+ * @param {Renderer} renderer - The renderer.
43
+ * @param {Object} [state={}] - The state.
44
+ * @return {Object} The state.
45
+ */
46
+ export function resetRendererState( renderer, state ) {
47
+
48
+ state = saveRendererState( renderer, state );
49
+
50
+ renderer.setMRT( null );
51
+ renderer.setRenderObjectFunction( null );
52
+ renderer.setClearColor( 0x000000, 1 );
53
+ renderer.autoClear = true;
54
+
55
+ return state;
56
+
57
+ }
58
+
59
+ /**
60
+ * Restores the state of the given renderer from the given state object.
61
+ *
62
+ * @function
63
+ * @param {Renderer} renderer - The renderer.
64
+ * @param {Object} state - The state to restore.
65
+ */
66
+ export function restoreRendererState( renderer, state ) {
67
+
68
+ renderer.toneMapping = state.toneMapping;
69
+ renderer.toneMappingExposure = state.toneMappingExposure;
70
+ renderer.outputColorSpace = state.outputColorSpace;
71
+ renderer.setRenderTarget( state.renderTarget, state.activeCubeFace, state.activeMipmapLevel );
72
+ renderer.setRenderObjectFunction( state.renderObjectFunction );
73
+ renderer.setPixelRatio( state.pixelRatio );
74
+ renderer.setMRT( state.mrt );
75
+ renderer.setClearColor( state.clearColor, state.clearAlpha );
76
+ renderer.autoClear = state.autoClear;
77
+ renderer.setScissorTest( state.scissorTest );
78
+
79
+ }
80
+
81
+ /**
82
+ * Saves the state of the given scene and stores it into the given state object.
83
+ *
84
+ * If not state object is provided, the function creates one.
85
+ *
86
+ * @function
87
+ * @param {Scene} scene - The scene.
88
+ * @param {Object} [state={}] - The state.
89
+ * @return {Object} The state.
90
+ */
91
+ export function saveSceneState( scene, state = {} ) {
92
+
93
+ state.background = scene.background;
94
+ state.backgroundNode = scene.backgroundNode;
95
+ state.overrideMaterial = scene.overrideMaterial;
96
+
97
+ return state;
98
+
99
+ }
100
+
101
+ /**
102
+ * Saves the state of the given scene and stores it into the given state object.
103
+ * Besides, the function also resets the state of the scene to its default values.
104
+ *
105
+ * If not state object is provided, the function creates one.
106
+ *
107
+ * @function
108
+ * @param {Scene} scene - The scene.
109
+ * @param {Object} [state={}] - The state.
110
+ * @return {Object} The state.
111
+ */
112
+ export function resetSceneState( scene, state ) {
113
+
114
+ state = saveSceneState( scene, state );
115
+
116
+ scene.background = null;
117
+ scene.backgroundNode = null;
118
+ scene.overrideMaterial = null;
119
+
120
+ return state;
121
+
122
+ }
123
+
124
+ /**
125
+ * Restores the state of the given scene from the given state object.
126
+ *
127
+ * @function
128
+ * @param {Scene} scene - The scene.
129
+ * @param {Object} state - The state to restore.
130
+ */
131
+ export function restoreSceneState( scene, state ) {
132
+
133
+ scene.background = state.background;
134
+ scene.backgroundNode = state.backgroundNode;
135
+ scene.overrideMaterial = state.overrideMaterial;
136
+
137
+ }
138
+
139
+ /**
140
+ * Saves the state of the given renderer and scene and stores it into the given state object.
141
+ *
142
+ * If not state object is provided, the function creates one.
143
+ *
144
+ * @function
145
+ * @param {Renderer} renderer - The renderer.
146
+ * @param {Scene} scene - The scene.
147
+ * @param {Object} [state={}] - The state.
148
+ * @return {Object} The state.
149
+ */
150
+ export function saveRendererAndSceneState( renderer, scene, state = {} ) {
151
+
152
+ state = saveRendererState( renderer, state );
153
+ state = saveSceneState( scene, state );
154
+
155
+ return state;
156
+
157
+ }
158
+
159
+ /**
160
+ * Saves the state of the given renderer and scene and stores it into the given state object.
161
+ * Besides, the function also resets the state of the renderer and scene to its default values.
162
+ *
163
+ * If not state object is provided, the function creates one.
164
+ *
165
+ * @function
166
+ * @param {Renderer} renderer - The renderer.
167
+ * @param {Scene} scene - The scene.
168
+ * @param {Object} [state={}] - The state.
169
+ * @return {Object} The state.
170
+ */
171
+ export function resetRendererAndSceneState( renderer, scene, state ) {
172
+
173
+ state = resetRendererState( renderer, state );
174
+ state = resetSceneState( scene, state );
175
+
176
+ return state;
177
+
178
+ }
179
+
180
+ /**
181
+ * Restores the state of the given renderer and scene from the given state object.
182
+ *
183
+ * @function
184
+ * @param {Renderer} renderer - The renderer.
185
+ * @param {Scene} scene - The scene.
186
+ * @param {Object} state - The state to restore.
187
+ */
188
+ export function restoreRendererAndSceneState( renderer, scene, state ) {
189
+
190
+ restoreRendererState( renderer, state );
191
+ restoreSceneState( scene, state );
192
+
193
+ }
@@ -2,23 +2,80 @@ import Binding from './Binding.js';
2
2
 
3
3
  let _id = 0;
4
4
 
5
+ /**
6
+ * Represents a sampled texture binding type.
7
+ *
8
+ * @private
9
+ * @augments Binding
10
+ */
5
11
  class SampledTexture extends Binding {
6
12
 
13
+ /**
14
+ * Constructs a new sampled texture.
15
+ *
16
+ * @param {String} name - The sampled texture's name.
17
+ * @param {Texture?} texture - The texture this binding is referring to.
18
+ */
7
19
  constructor( name, texture ) {
8
20
 
9
21
  super( name );
10
22
 
23
+ /**
24
+ * This identifier.
25
+ *
26
+ * @type {Number}
27
+ */
11
28
  this.id = _id ++;
12
29
 
30
+ /**
31
+ * The texture this binding is referring to.
32
+ *
33
+ * @type {Texture?}
34
+ */
13
35
  this.texture = texture;
36
+
37
+ /**
38
+ * The binding's version.
39
+ *
40
+ * @type {Number}
41
+ */
14
42
  this.version = texture ? texture.version : 0;
43
+
44
+ /**
45
+ * Whether the texture is a storage texture or not.
46
+ *
47
+ * @type {Boolean}
48
+ * @default false
49
+ */
15
50
  this.store = false;
51
+
52
+ /**
53
+ * The binding's generation which is an additional version
54
+ * qualifier.
55
+ *
56
+ * @type {Number?}
57
+ * @default null
58
+ */
16
59
  this.generation = null;
17
60
 
61
+ /**
62
+ * This flag can be used for type testing.
63
+ *
64
+ * @type {Boolean}
65
+ * @readonly
66
+ * @default true
67
+ */
18
68
  this.isSampledTexture = true;
19
69
 
20
70
  }
21
71
 
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
+ */
22
79
  needsBindingsUpdate( generation ) {
23
80
 
24
81
  const { texture } = this;
@@ -35,6 +92,13 @@ class SampledTexture extends Binding {
35
92
 
36
93
  }
37
94
 
95
+ /**
96
+ * Updates the binding.
97
+ *
98
+ * @param {Number} generation - The generation.
99
+ * @return {Boolean} Whether the texture has been updated and must be
100
+ * uploaded to the GPU.
101
+ */
38
102
  update() {
39
103
 
40
104
  const { texture, version } = this;
@@ -53,36 +117,93 @@ class SampledTexture extends Binding {
53
117
 
54
118
  }
55
119
 
120
+ /**
121
+ * Represents a sampled array texture binding type.
122
+ *
123
+ * @private
124
+ * @augments SampledTexture
125
+ */
56
126
  class SampledArrayTexture extends SampledTexture {
57
127
 
128
+ /**
129
+ * Constructs a new sampled array texture.
130
+ *
131
+ * @param {String} name - The sampled array texture's name.
132
+ * @param {(DataArrayTexture|CompressedArrayTexture)?} texture - The texture this binding is referring to.
133
+ */
58
134
  constructor( name, texture ) {
59
135
 
60
136
  super( name, texture );
61
137
 
138
+ /**
139
+ * This flag can be used for type testing.
140
+ *
141
+ * @type {Boolean}
142
+ * @readonly
143
+ * @default true
144
+ */
62
145
  this.isSampledArrayTexture = true;
63
146
 
64
147
  }
65
148
 
66
149
  }
67
150
 
151
+ /**
152
+ * Represents a sampled 3D texture binding type.
153
+ *
154
+ * @private
155
+ * @augments SampledTexture
156
+ */
68
157
  class Sampled3DTexture extends SampledTexture {
69
158
 
159
+ /**
160
+ * Constructs a new sampled 3D texture.
161
+ *
162
+ * @param {String} name - The sampled 3D texture's name.
163
+ * @param {Data3DTexture?} texture - The texture this binding is referring to.
164
+ */
70
165
  constructor( name, texture ) {
71
166
 
72
167
  super( name, texture );
73
168
 
169
+ /**
170
+ * This flag can be used for type testing.
171
+ *
172
+ * @type {Boolean}
173
+ * @readonly
174
+ * @default true
175
+ */
74
176
  this.isSampled3DTexture = true;
75
177
 
76
178
  }
77
179
 
78
180
  }
79
181
 
182
+ /**
183
+ * Represents a sampled cube texture binding type.
184
+ *
185
+ * @private
186
+ * @augments SampledTexture
187
+ */
80
188
  class SampledCubeTexture extends SampledTexture {
81
189
 
190
+ /**
191
+ * Constructs a new sampled cube texture.
192
+ *
193
+ * @param {String} name - The sampled cube texture's name.
194
+ * @param {(CubeTexture|CompressedCubeTexture)?} texture - The texture this binding is referring to.
195
+ */
82
196
  constructor( name, texture ) {
83
197
 
84
198
  super( name, texture );
85
199
 
200
+ /**
201
+ * This flag can be used for type testing.
202
+ *
203
+ * @type {Boolean}
204
+ * @readonly
205
+ * @default true
206
+ */
86
207
  this.isSampledCubeTexture = true;
87
208
 
88
209
  }
@@ -1,14 +1,44 @@
1
1
  import Binding from './Binding.js';
2
2
 
3
+ /**
4
+ * Represents a sampler binding type.
5
+ *
6
+ * @private
7
+ * @augments Binding
8
+ */
3
9
  class Sampler extends Binding {
4
10
 
11
+ /**
12
+ * Constructs a new sampler.
13
+ *
14
+ * @param {String} name - The samplers's name.
15
+ * @param {Texture?} texture - The texture this binding is referring to.
16
+ */
5
17
  constructor( name, texture ) {
6
18
 
7
19
  super( name );
8
20
 
21
+ /**
22
+ * The texture the sampler is referring to.
23
+ *
24
+ * @type {Texture?}
25
+ */
9
26
  this.texture = texture;
27
+
28
+ /**
29
+ * The binding's version.
30
+ *
31
+ * @type {Number}
32
+ */
10
33
  this.version = texture ? texture.version : 0;
11
34
 
35
+ /**
36
+ * This flag can be used for type testing.
37
+ *
38
+ * @type {Boolean}
39
+ * @readonly
40
+ * @default true
41
+ */
12
42
  this.isSampler = true;
13
43
 
14
44
  }
@@ -1,13 +1,37 @@
1
1
  import Buffer from './Buffer.js';
2
2
 
3
+ /**
4
+ * Represents a storage buffer binding type.
5
+ *
6
+ * @private
7
+ * @augments Buffer
8
+ */
3
9
  class StorageBuffer extends Buffer {
4
10
 
11
+ /**
12
+ * Constructs a new uniform buffer.
13
+ *
14
+ * @param {String} name - The buffer's name.
15
+ * @param {BufferAttribute} attribute - The buffer attribute.
16
+ */
5
17
  constructor( name, attribute ) {
6
18
 
7
19
  super( name, attribute ? attribute.array : null );
8
20
 
21
+ /**
22
+ * This flag can be used for type testing.
23
+ *
24
+ * @type {BufferAttribute}
25
+ */
9
26
  this.attribute = attribute;
10
27
 
28
+ /**
29
+ * This flag can be used for type testing.
30
+ *
31
+ * @type {Boolean}
32
+ * @readonly
33
+ * @default true
34
+ */
11
35
  this.isStorageBuffer = true;
12
36
 
13
37
  }
@@ -1,13 +1,42 @@
1
1
  import { BufferAttribute } from '../../core/BufferAttribute.js';
2
2
 
3
+ /**
4
+ * This special type of buffer attribute is intended for compute shaders.
5
+ * In earlier three.js versions it was only possible to update attribute data
6
+ * on the CPU via JavaScript and then upload the data to the GPU. With the
7
+ * new material system and renderer it is now possible to use compute shaders
8
+ * to compute the data for an attribute more efficiently on the GPU.
9
+ *
10
+ * The idea is to create an instance of this class and provide it as an input
11
+ * to {@link module:StorageBufferNode}.
12
+ *
13
+ * Note: This type of buffer attribute can only be used with `WebGPURenderer`.
14
+ *
15
+ * @augments BufferAttribute
16
+ */
3
17
  class StorageBufferAttribute extends BufferAttribute {
4
18
 
5
- constructor( array, itemSize, typeClass = Float32Array ) {
19
+ /**
20
+ * Constructs a new storage buffer attribute.
21
+ *
22
+ * @param {Number|TypedArray} count - The item count. It is also valid to pass a typed array as an argument.
23
+ * The subsequent parameters are then obsolete.
24
+ * @param {Number} itemSize - The item size.
25
+ * @param {TypedArray.contructor} [typeClass=Float32Array] - A typed array constructor.
26
+ */
27
+ constructor( count, itemSize, typeClass = Float32Array ) {
6
28
 
7
- if ( ArrayBuffer.isView( array ) === false ) array = new typeClass( array * itemSize );
29
+ const array = ArrayBuffer.isView( count ) ? count : new typeClass( count * itemSize );
8
30
 
9
31
  super( array, itemSize );
10
32
 
33
+ /**
34
+ * This flag can be used for type testing.
35
+ *
36
+ * @type {Boolean}
37
+ * @readonly
38
+ * @default true
39
+ */
11
40
  this.isStorageBufferAttribute = true;
12
41
 
13
42
  }
@@ -1,13 +1,42 @@
1
1
  import { InstancedBufferAttribute } from '../../core/InstancedBufferAttribute.js';
2
2
 
3
+ /**
4
+ * This special type of instanced buffer attribute is intended for compute shaders.
5
+ * In earlier three.js versions it was only possible to update attribute data
6
+ * on the CPU via JavaScript and then upload the data to the GPU. With the
7
+ * new material system and renderer it is now possible to use compute shaders
8
+ * to compute the data for an attribute more efficiently on the GPU.
9
+ *
10
+ * The idea is to create an instance of this class and provide it as an input
11
+ * to {@link module:StorageBufferNode}.
12
+ *
13
+ * Note: This type of buffer attribute can only be used with `WebGPURenderer`.
14
+ *
15
+ * @augments InstancedBufferAttribute
16
+ */
3
17
  class StorageInstancedBufferAttribute extends InstancedBufferAttribute {
4
18
 
5
- constructor( array, itemSize, typeClass = Float32Array ) {
19
+ /**
20
+ * Constructs a new storage instanced buffer attribute.
21
+ *
22
+ * @param {Number|TypedArray} count - The item count. It is also valid to pass a typed array as an argument.
23
+ * The subsequent parameters are then obsolete.
24
+ * @param {Number} itemSize - The item size.
25
+ * @param {TypedArray.contructor} [typeClass=Float32Array] - A typed array constructor.
26
+ */
27
+ constructor( count, itemSize, typeClass = Float32Array ) {
6
28
 
7
- if ( ArrayBuffer.isView( array ) === false ) array = new typeClass( array * itemSize );
29
+ const array = ArrayBuffer.isView( count ) ? count : new typeClass( count * itemSize );
8
30
 
9
31
  super( array, itemSize );
10
32
 
33
+ /**
34
+ * This flag can be used for type testing.
35
+ *
36
+ * @type {Boolean}
37
+ * @readonly
38
+ * @default true
39
+ */
11
40
  this.isStorageInstancedBufferAttribute = true;
12
41
 
13
42
  }
@@ -1,17 +1,55 @@
1
1
  import { Texture } from '../../textures/Texture.js';
2
2
  import { LinearFilter } from '../../constants.js';
3
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
+ */
4
13
  class StorageTexture extends Texture {
5
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
+ */
6
21
  constructor( width = 1, height = 1 ) {
7
22
 
8
23
  super();
9
24
 
25
+ /**
26
+ * The image object which just represents the texture's dimension.
27
+ *
28
+ * @type {{width: Number, height:Number}}
29
+ */
10
30
  this.image = { width, height };
11
31
 
32
+ /**
33
+ * The default `magFilter` for storage textures is `THREE.LinearFilter`.
34
+ *
35
+ * @type {Number}
36
+ */
12
37
  this.magFilter = LinearFilter;
38
+
39
+ /**
40
+ * The default `minFilter` for storage textures is `THREE.LinearFilter`.
41
+ *
42
+ * @type {Number}
43
+ */
13
44
  this.minFilter = LinearFilter;
14
45
 
46
+ /**
47
+ * This flag can be used for type testing.
48
+ *
49
+ * @type {Boolean}
50
+ * @readonly
51
+ * @default true
52
+ */
15
53
  this.isStorageTexture = true;
16
54
 
17
55
  }