super-three 0.165.0 → 0.167.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 (370) hide show
  1. package/build/three.cjs +706 -383
  2. package/build/three.module.js +702 -384
  3. package/build/three.module.min.js +1 -1
  4. package/build/three.webgpu.js +76086 -0
  5. package/build/three.webgpu.min.js +6 -0
  6. package/examples/jsm/Addons.js +2 -1
  7. package/examples/jsm/csm/CSMShader.js +4 -4
  8. package/examples/jsm/exporters/GLTFExporter.js +7 -3
  9. package/examples/jsm/geometries/TeapotGeometry.js +1 -1
  10. package/examples/jsm/helpers/ViewHelper.js +51 -2
  11. package/examples/jsm/libs/tween.module.js +64 -75
  12. package/examples/jsm/lights/RectAreaLightTexturesLib.js +91 -0
  13. package/examples/jsm/lights/RectAreaLightUniformsLib.js +8 -63
  14. package/examples/jsm/lines/webgpu/Line2.js +20 -0
  15. package/examples/jsm/lines/webgpu/LineSegments2.js +376 -0
  16. package/examples/jsm/loaders/FBXLoader.js +23 -45
  17. package/examples/jsm/loaders/GLTFLoader.js +10 -4
  18. package/examples/jsm/loaders/MaterialXLoader.js +2 -9
  19. package/examples/jsm/loaders/USDZLoader.js +124 -76
  20. package/examples/jsm/loaders/UltraHDRLoader.js +583 -0
  21. package/examples/jsm/loaders/VTKLoader.js +76 -3
  22. package/examples/jsm/misc/GPUComputationRenderer.js +9 -19
  23. package/examples/jsm/modifiers/SimplifyModifier.js +2 -1
  24. package/examples/jsm/objects/InstancedPoints.js +2 -2
  25. package/examples/jsm/postprocessing/RenderTransitionPass.js +13 -38
  26. package/examples/jsm/postprocessing/SSAOPass.js +6 -9
  27. package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -4
  28. package/examples/jsm/shaders/ColorifyShader.js +1 -2
  29. package/examples/jsm/shaders/FXAAShader.js +0 -2
  30. package/examples/jsm/shaders/GTAOShader.js +1 -1
  31. package/examples/jsm/shaders/LuminosityHighPassShader.js +1 -3
  32. package/examples/jsm/transpiler/GLSLDecoder.js +46 -4
  33. package/examples/jsm/transpiler/TSLEncoder.js +17 -15
  34. package/package.json +7 -6
  35. package/src/Three.WebGPU.js +194 -0
  36. package/src/Three.js +2 -0
  37. package/src/constants.js +4 -1
  38. package/src/core/Object3D.js +22 -22
  39. package/src/extras/TextureUtils.js +210 -0
  40. package/src/lights/Light.js +1 -0
  41. package/src/lights/LightShadow.js +5 -0
  42. package/{examples/jsm/lights → src/lights/webgpu}/IESSpotLight.js +1 -1
  43. package/src/loaders/ObjectLoader.js +33 -2
  44. package/src/materials/Material.js +13 -4
  45. package/src/math/Box2.js +4 -4
  46. package/src/math/Box3.js +6 -6
  47. package/src/math/ColorManagement.js +10 -0
  48. package/src/math/Matrix2.js +54 -0
  49. package/src/math/Vector4.js +13 -0
  50. package/{examples/jsm → src}/nodes/Nodes.js +30 -12
  51. package/{examples/jsm → src}/nodes/accessors/BatchNode.js +28 -10
  52. package/{examples/jsm → src}/nodes/accessors/BufferAttributeNode.js +36 -1
  53. package/src/nodes/accessors/CameraNode.js +19 -0
  54. package/{examples/jsm → src}/nodes/accessors/CubeTextureNode.js +22 -5
  55. package/src/nodes/accessors/InstanceNode.js +140 -0
  56. package/{examples/jsm → src}/nodes/accessors/MaterialNode.js +22 -2
  57. package/{examples/jsm → src}/nodes/accessors/ModelNode.js +2 -1
  58. package/{examples/jsm → src}/nodes/accessors/MorphNode.js +24 -20
  59. package/{examples/jsm → src}/nodes/accessors/NormalNode.js +1 -1
  60. package/{examples/jsm → src}/nodes/accessors/Object3DNode.js +1 -1
  61. package/{examples/jsm → src}/nodes/accessors/ReferenceNode.js +1 -1
  62. package/{examples/jsm → src}/nodes/accessors/ReflectVectorNode.js +4 -0
  63. package/{examples/jsm → src}/nodes/accessors/StorageBufferNode.js +50 -1
  64. package/{examples/jsm → src}/nodes/accessors/StorageTextureNode.js +12 -3
  65. package/{examples/jsm → src}/nodes/accessors/TextureNode.js +55 -18
  66. package/{examples/jsm → src}/nodes/accessors/UniformsNode.js +7 -1
  67. package/{examples/jsm → src}/nodes/accessors/VertexColorNode.js +2 -1
  68. package/{examples/jsm → src}/nodes/code/ScriptableNode.js +14 -0
  69. package/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +2 -1
  70. package/{examples/jsm → src}/nodes/core/AttributeNode.js +20 -6
  71. package/{examples/jsm → src}/nodes/core/CacheNode.js +7 -10
  72. package/{examples/jsm → src}/nodes/core/IndexNode.js +6 -0
  73. package/{examples/jsm → src}/nodes/core/LightingModel.js +2 -2
  74. package/src/nodes/core/MRTNode.js +76 -0
  75. package/{examples/jsm → src}/nodes/core/Node.js +18 -12
  76. package/{examples/jsm → src}/nodes/core/NodeBuilder.js +175 -37
  77. package/src/nodes/core/NodeCache.js +36 -0
  78. package/{examples/jsm → src}/nodes/core/NodeFrame.js +42 -0
  79. package/{examples/jsm → src}/nodes/core/NodeFunction.js +2 -2
  80. package/{examples/jsm → src}/nodes/core/NodeUniform.js +1 -2
  81. package/{examples/jsm → src}/nodes/core/NodeUtils.js +6 -1
  82. package/{examples/jsm → src}/nodes/core/PropertyNode.js +1 -0
  83. package/{examples/jsm → src}/nodes/core/TempNode.js +2 -2
  84. package/{examples/jsm → src}/nodes/core/UniformGroupNode.js +20 -0
  85. package/{examples/jsm → src}/nodes/core/UniformNode.js +10 -1
  86. package/{examples/jsm → src}/nodes/core/VarNode.js +2 -6
  87. package/{examples/jsm → src}/nodes/core/VaryingNode.js +8 -0
  88. package/{examples/jsm → src}/nodes/display/AfterImageNode.js +19 -27
  89. package/{examples/jsm → src}/nodes/display/AnamorphicNode.js +18 -21
  90. package/src/nodes/display/BloomNode.js +333 -0
  91. package/{examples/jsm → src}/nodes/display/ColorAdjustmentNode.js +7 -2
  92. package/{examples/jsm → src}/nodes/display/ColorSpaceNode.js +1 -1
  93. package/src/nodes/display/DenoiseNode.js +198 -0
  94. package/src/nodes/display/DepthOfFieldNode.js +119 -0
  95. package/src/nodes/display/DotScreenNode.js +75 -0
  96. package/src/nodes/display/FXAANode.js +327 -0
  97. package/src/nodes/display/FilmNode.js +52 -0
  98. package/{examples/jsm → src}/nodes/display/FrontFacingNode.js +2 -1
  99. package/src/nodes/display/GTAONode.js +324 -0
  100. package/{examples/jsm → src}/nodes/display/GaussianBlurNode.js +34 -17
  101. package/src/nodes/display/Lut3DNode.js +53 -0
  102. package/{examples/jsm → src}/nodes/display/NormalMapNode.js +1 -1
  103. package/src/nodes/display/PassNode.js +291 -0
  104. package/src/nodes/display/PixelationPassNode.js +201 -0
  105. package/src/nodes/display/RGBShiftNode.js +49 -0
  106. package/src/nodes/display/RenderOutputNode.js +56 -0
  107. package/src/nodes/display/SobelOperatorNode.js +121 -0
  108. package/{examples/jsm → src}/nodes/display/ToneMappingNode.js +44 -5
  109. package/src/nodes/display/TransitionNode.js +76 -0
  110. package/{examples/jsm → src}/nodes/display/ViewportDepthNode.js +39 -16
  111. package/{examples/jsm → src}/nodes/display/ViewportDepthTextureNode.js +2 -1
  112. package/{examples/jsm → src}/nodes/display/ViewportNode.js +2 -1
  113. package/{examples/jsm → src}/nodes/display/ViewportSharedTextureNode.js +2 -1
  114. package/{examples/jsm → src}/nodes/display/ViewportTextureNode.js +5 -2
  115. package/src/nodes/functions/BSDF/LTC.js +131 -0
  116. package/src/nodes/functions/BasicLightingModel.js +78 -0
  117. package/{examples/jsm → src}/nodes/functions/PhongLightingModel.js +5 -3
  118. package/{examples/jsm → src}/nodes/functions/PhysicalLightingModel.js +42 -1
  119. package/{examples/jsm → src}/nodes/functions/ToonLightingModel.js +3 -1
  120. package/{examples/jsm → src}/nodes/geometry/RangeNode.js +19 -6
  121. package/{examples/jsm → src}/nodes/lighting/AONode.js +1 -4
  122. package/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +1 -1
  123. package/src/nodes/lighting/AnalyticLightNode.js +333 -0
  124. package/src/nodes/lighting/BasicEnvironmentNode.js +26 -0
  125. package/src/nodes/lighting/BasicLightMapNode.js +29 -0
  126. package/{examples/jsm → src}/nodes/lighting/DirectionalLightNode.js +2 -3
  127. package/{examples/jsm → src}/nodes/lighting/EnvironmentNode.js +5 -4
  128. package/{examples/jsm → src}/nodes/lighting/HemisphereLightNode.js +2 -1
  129. package/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +1 -1
  130. package/{examples/jsm → src}/nodes/lighting/LightingNode.js +2 -0
  131. package/{examples/jsm → src}/nodes/lighting/LightsNode.js +1 -3
  132. package/{examples/jsm → src}/nodes/lighting/PointLightNode.js +2 -3
  133. package/src/nodes/lighting/RectAreaLightNode.js +97 -0
  134. package/{examples/jsm → src}/nodes/lighting/SpotLightNode.js +2 -3
  135. package/{examples/jsm → src}/nodes/loaders/NodeLoader.js +3 -1
  136. package/{examples/jsm → src}/nodes/loaders/NodeMaterialLoader.js +2 -1
  137. package/{examples/jsm → src}/nodes/loaders/NodeObjectLoader.js +2 -1
  138. package/{examples/jsm → src}/nodes/materials/InstancedPointsNodeMaterial.js +3 -3
  139. package/{examples/jsm → src}/nodes/materials/Line2NodeMaterial.js +3 -3
  140. package/{examples/jsm → src}/nodes/materials/LineBasicNodeMaterial.js +3 -3
  141. package/{examples/jsm → src}/nodes/materials/LineDashedNodeMaterial.js +4 -3
  142. package/src/nodes/materials/MeshBasicNodeMaterial.js +73 -0
  143. package/{examples/jsm → src}/nodes/materials/MeshLambertNodeMaterial.js +12 -3
  144. package/{examples/jsm → src}/nodes/materials/MeshMatcapNodeMaterial.js +6 -5
  145. package/{examples/jsm → src}/nodes/materials/MeshNormalNodeMaterial.js +5 -3
  146. package/{examples/jsm → src}/nodes/materials/MeshPhongNodeMaterial.js +11 -3
  147. package/{examples/jsm → src}/nodes/materials/MeshPhysicalNodeMaterial.js +5 -4
  148. package/{examples/jsm → src}/nodes/materials/MeshStandardNodeMaterial.js +14 -3
  149. package/{examples/jsm → src}/nodes/materials/MeshToonNodeMaterial.js +3 -3
  150. package/{examples/jsm → src}/nodes/materials/NodeMaterial.js +85 -20
  151. package/{examples/jsm → src}/nodes/materials/PointsNodeMaterial.js +3 -3
  152. package/{examples/jsm → src}/nodes/materials/ShadowNodeMaterial.js +3 -3
  153. package/{examples/jsm → src}/nodes/materials/SpriteNodeMaterial.js +3 -3
  154. package/{examples/jsm → src}/nodes/materialx/lib/mx_hsv.js +9 -17
  155. package/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +474 -577
  156. package/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +2 -8
  157. package/{examples/jsm → src}/nodes/math/CondNode.js +13 -6
  158. package/{examples/jsm → src}/nodes/math/MathNode.js +14 -1
  159. package/{examples/jsm → src}/nodes/math/OperatorNode.js +6 -6
  160. package/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +7 -7
  161. package/{examples/jsm → src}/nodes/pmrem/PMREMNode.js +2 -1
  162. package/{examples/jsm → src}/nodes/shadernode/ShaderNode.js +2 -0
  163. package/{examples/jsm → src}/nodes/utils/DiscardNode.js +1 -0
  164. package/{examples/jsm → src}/nodes/utils/FunctionOverloadingNode.js +2 -0
  165. package/{examples/jsm → src}/nodes/utils/LoopNode.js +7 -6
  166. package/{examples/jsm → src}/nodes/utils/MaxMipLevelNode.js +8 -2
  167. package/src/nodes/utils/RTTNode.js +130 -0
  168. package/{examples/jsm → src}/nodes/utils/ReflectorNode.js +9 -1
  169. package/src/objects/BatchedMesh.js +168 -188
  170. package/src/objects/InstancedMesh.js +1 -1
  171. package/src/renderers/WebGLRenderer.js +38 -25
  172. package/{examples/jsm → src}/renderers/common/Attributes.js +2 -1
  173. package/{examples/jsm → src}/renderers/common/Backend.js +30 -27
  174. package/{examples/jsm → src}/renderers/common/Background.js +9 -3
  175. package/src/renderers/common/BindGroup.js +16 -0
  176. package/{examples/jsm → src}/renderers/common/Bindings.js +38 -23
  177. package/{examples/jsm → src}/renderers/common/ClippingContext.js +4 -2
  178. package/{examples/jsm → src}/renderers/common/Color4.js +1 -1
  179. package/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +7 -1
  180. package/{examples/jsm → src}/renderers/common/Geometries.js +37 -5
  181. package/{examples/jsm → src}/renderers/common/Info.js +34 -6
  182. package/src/renderers/common/PostProcessing.js +87 -0
  183. package/{examples/jsm/objects → src/renderers/common}/QuadMesh.js +6 -3
  184. package/{examples/jsm → src}/renderers/common/RenderContext.js +1 -1
  185. package/{examples/jsm → src}/renderers/common/RenderContexts.js +1 -1
  186. package/{examples/jsm → src}/renderers/common/RenderObject.js +44 -11
  187. package/{examples/jsm → src}/renderers/common/Renderer.js +84 -32
  188. package/{examples/jsm → src}/renderers/common/SampledTexture.js +2 -2
  189. package/{examples/jsm → src}/renderers/common/StorageBufferAttribute.js +1 -1
  190. package/{examples/jsm → src}/renderers/common/StorageInstancedBufferAttribute.js +1 -1
  191. package/{examples/jsm → src}/renderers/common/StorageTexture.js +2 -1
  192. package/{examples/jsm → src}/renderers/common/Textures.js +6 -2
  193. package/{examples/jsm → src}/renderers/common/Uniform.js +9 -4
  194. package/{examples/jsm → src}/renderers/common/UniformsGroup.js +69 -31
  195. package/{examples/jsm → src}/renderers/common/extras/PMREMGenerator.js +13 -12
  196. package/src/renderers/common/nodes/NodeBuilderState.js +58 -0
  197. package/{examples/jsm → src}/renderers/common/nodes/NodeSampledTexture.js +6 -5
  198. package/{examples/jsm → src}/renderers/common/nodes/NodeSampler.js +2 -1
  199. package/{examples/jsm → src}/renderers/common/nodes/NodeStorageBuffer.js +5 -1
  200. package/{examples/jsm → src}/renderers/common/nodes/NodeUniform.js +3 -3
  201. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformBuffer.js +2 -1
  202. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformsGroup.js +2 -8
  203. package/{examples/jsm → src}/renderers/common/nodes/Nodes.js +37 -16
  204. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +16 -1
  205. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
  206. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +1 -1
  207. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +0 -9
  208. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -10
  209. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  210. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
  211. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +7 -4
  212. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
  213. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
  214. package/src/renderers/shaders/ShaderLib/depth.glsl.js +8 -0
  215. package/src/renderers/shaders/UniformsLib.js +3 -0
  216. package/src/renderers/webgl/WebGLAttributes.js +2 -2
  217. package/src/renderers/webgl/WebGLBufferRenderer.js +6 -19
  218. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +6 -18
  219. package/src/renderers/webgl/WebGLLights.js +6 -0
  220. package/src/renderers/webgl/WebGLProgram.js +26 -0
  221. package/src/renderers/webgl/WebGLPrograms.js +1 -1
  222. package/src/renderers/webgl/WebGLTextures.js +14 -53
  223. package/src/renderers/webgl/WebGLUniforms.js +12 -2
  224. package/src/renderers/webgl/WebGLUniformsGroups.js +7 -7
  225. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBackend.js +156 -54
  226. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/nodes/GLSLNodeBuilder.js +178 -43
  227. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +2 -2
  228. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +1 -0
  229. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLExtensions.js +2 -0
  230. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +1 -1
  231. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLTextureUtils.js +34 -2
  232. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +1 -1
  233. package/{examples/jsm → src}/renderers/webgpu/WebGPUBackend.js +164 -76
  234. package/{examples/jsm → src}/renderers/webgpu/WebGPURenderer.js +2 -2
  235. package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeBuilder.js +194 -56
  236. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +159 -0
  237. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
  238. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUBindingUtils.js +20 -13
  239. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +3 -1
  240. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +28 -21
  241. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTextureUtils.js +40 -23
  242. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUUtils.js +24 -3
  243. package/src/renderers/webxr/WebXRDepthSensing.js +6 -0
  244. package/src/renderers/webxr/WebXRManager.js +6 -0
  245. package/src/textures/CompressedArrayTexture.js +1 -1
  246. package/examples/jsm/nodes/accessors/CameraNode.js +0 -12
  247. package/examples/jsm/nodes/accessors/InstanceNode.js +0 -94
  248. package/examples/jsm/nodes/core/NodeCache.js +0 -26
  249. package/examples/jsm/nodes/display/PassNode.js +0 -201
  250. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -256
  251. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
  252. package/examples/jsm/renderers/common/PostProcessing.js +0 -33
  253. package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
  254. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
  255. /package/{examples/jsm → src}/nodes/accessors/AccessorsUtils.js +0 -0
  256. /package/{examples/jsm → src}/nodes/accessors/BitangentNode.js +0 -0
  257. /package/{examples/jsm → src}/nodes/accessors/BufferNode.js +0 -0
  258. /package/{examples/jsm → src}/nodes/accessors/ClippingNode.js +0 -0
  259. /package/{examples/jsm → src}/nodes/accessors/InstancedPointsMaterialNode.js +0 -0
  260. /package/{examples/jsm → src}/nodes/accessors/MaterialReferenceNode.js +0 -0
  261. /package/{examples/jsm → src}/nodes/accessors/ModelViewProjectionNode.js +0 -0
  262. /package/{examples/jsm → src}/nodes/accessors/PointUVNode.js +0 -0
  263. /package/{examples/jsm → src}/nodes/accessors/PositionNode.js +0 -0
  264. /package/{examples/jsm → src}/nodes/accessors/RendererReferenceNode.js +0 -0
  265. /package/{examples/jsm → src}/nodes/accessors/SceneNode.js +0 -0
  266. /package/{examples/jsm → src}/nodes/accessors/SkinningNode.js +0 -0
  267. /package/{examples/jsm → src}/nodes/accessors/TangentNode.js +0 -0
  268. /package/{examples/jsm → src}/nodes/accessors/Texture3DNode.js +0 -0
  269. /package/{examples/jsm → src}/nodes/accessors/TextureBicubicNode.js +0 -0
  270. /package/{examples/jsm → src}/nodes/accessors/TextureSizeNode.js +0 -0
  271. /package/{examples/jsm → src}/nodes/accessors/UVNode.js +0 -0
  272. /package/{examples/jsm → src}/nodes/accessors/UserDataNode.js +0 -0
  273. /package/{examples/jsm → src}/nodes/code/CodeNode.js +0 -0
  274. /package/{examples/jsm → src}/nodes/code/ExpressionNode.js +0 -0
  275. /package/{examples/jsm → src}/nodes/code/FunctionCallNode.js +0 -0
  276. /package/{examples/jsm → src}/nodes/code/FunctionNode.js +0 -0
  277. /package/{examples/jsm → src}/nodes/core/AssignNode.js +0 -0
  278. /package/{examples/jsm → src}/nodes/core/BypassNode.js +0 -0
  279. /package/{examples/jsm → src}/nodes/core/ConstNode.js +0 -0
  280. /package/{examples/jsm → src}/nodes/core/ContextNode.js +0 -0
  281. /package/{examples/jsm → src}/nodes/core/InputNode.js +0 -0
  282. /package/{examples/jsm → src}/nodes/core/NodeAttribute.js +0 -0
  283. /package/{examples/jsm → src}/nodes/core/NodeCode.js +0 -0
  284. /package/{examples/jsm → src}/nodes/core/NodeFunctionInput.js +0 -0
  285. /package/{examples/jsm → src}/nodes/core/NodeKeywords.js +0 -0
  286. /package/{examples/jsm → src}/nodes/core/NodeParser.js +0 -0
  287. /package/{examples/jsm → src}/nodes/core/NodeVar.js +0 -0
  288. /package/{examples/jsm → src}/nodes/core/NodeVarying.js +0 -0
  289. /package/{examples/jsm → src}/nodes/core/OutputStructNode.js +0 -0
  290. /package/{examples/jsm → src}/nodes/core/ParameterNode.js +0 -0
  291. /package/{examples/jsm → src}/nodes/core/StackNode.js +0 -0
  292. /package/{examples/jsm → src}/nodes/core/StructTypeNode.js +0 -0
  293. /package/{examples/jsm → src}/nodes/core/UniformGroup.js +0 -0
  294. /package/{examples/jsm → src}/nodes/core/constants.js +0 -0
  295. /package/{examples/jsm → src}/nodes/display/BlendModeNode.js +0 -0
  296. /package/{examples/jsm → src}/nodes/display/BumpMapNode.js +0 -0
  297. /package/{examples/jsm → src}/nodes/display/PosterizeNode.js +0 -0
  298. /package/{examples/jsm → src}/nodes/fog/FogExp2Node.js +0 -0
  299. /package/{examples/jsm → src}/nodes/fog/FogNode.js +0 -0
  300. /package/{examples/jsm → src}/nodes/fog/FogRangeNode.js +0 -0
  301. /package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_GGX.js +0 -0
  302. /package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +0 -0
  303. /package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +0 -0
  304. /package/{examples/jsm → src}/nodes/functions/BSDF/DFGApprox.js +0 -0
  305. /package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +0 -0
  306. /package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX_Anisotropic.js +0 -0
  307. /package/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +0 -0
  308. /package/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +0 -0
  309. /package/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +0 -0
  310. /package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +0 -0
  311. /package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +0 -0
  312. /package/{examples/jsm → src}/nodes/functions/ShadowMaskModel.js +0 -0
  313. /package/{examples/jsm → src}/nodes/functions/material/getGeometryRoughness.js +0 -0
  314. /package/{examples/jsm → src}/nodes/functions/material/getRoughness.js +0 -0
  315. /package/{examples/jsm → src}/nodes/gpgpu/ComputeNode.js +0 -0
  316. /package/{examples/jsm → src}/nodes/lighting/IrradianceNode.js +0 -0
  317. /package/{examples/jsm → src}/nodes/lighting/LightNode.js +0 -0
  318. /package/{examples/jsm → src}/nodes/lighting/LightUtils.js +0 -0
  319. /package/{examples/jsm → src}/nodes/lighting/LightingContextNode.js +0 -0
  320. /package/{examples/jsm → src}/nodes/materials/Materials.js +0 -0
  321. /package/{examples/jsm → src}/nodes/materials/MeshSSSNodeMaterial.js +0 -0
  322. /package/{examples/jsm → src}/nodes/materials/VolumeNodeMaterial.js +0 -0
  323. /package/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
  324. /package/{examples/jsm → src}/nodes/materialx/MaterialXNodes.js +0 -0
  325. /package/{examples/jsm → src}/nodes/math/HashNode.js +0 -0
  326. /package/{examples/jsm → src}/nodes/math/MathUtils.js +0 -0
  327. /package/{examples/jsm → src}/nodes/math/TriNoise3D.js +0 -0
  328. /package/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +0 -0
  329. /package/{examples/jsm → src}/nodes/pmrem/PMREMUtils.js +0 -0
  330. /package/{examples/jsm → src}/nodes/procedural/CheckerNode.js +0 -0
  331. /package/{examples/jsm → src}/nodes/utils/ArrayElementNode.js +0 -0
  332. /package/{examples/jsm → src}/nodes/utils/ConvertNode.js +0 -0
  333. /package/{examples/jsm → src}/nodes/utils/EquirectUVNode.js +0 -0
  334. /package/{examples/jsm → src}/nodes/utils/JoinNode.js +0 -0
  335. /package/{examples/jsm → src}/nodes/utils/MatcapUVNode.js +0 -0
  336. /package/{examples/jsm → src}/nodes/utils/OscNode.js +0 -0
  337. /package/{examples/jsm → src}/nodes/utils/PackingNode.js +0 -0
  338. /package/{examples/jsm → src}/nodes/utils/RemapNode.js +0 -0
  339. /package/{examples/jsm → src}/nodes/utils/RotateNode.js +0 -0
  340. /package/{examples/jsm → src}/nodes/utils/RotateUVNode.js +0 -0
  341. /package/{examples/jsm → src}/nodes/utils/SetNode.js +0 -0
  342. /package/{examples/jsm → src}/nodes/utils/SplitNode.js +0 -0
  343. /package/{examples/jsm → src}/nodes/utils/SpriteSheetUVNode.js +0 -0
  344. /package/{examples/jsm → src}/nodes/utils/StorageArrayElementNode.js +0 -0
  345. /package/{examples/jsm → src}/nodes/utils/TimerNode.js +0 -0
  346. /package/{examples/jsm → src}/nodes/utils/TriplanarTexturesNode.js +0 -0
  347. /package/{examples/jsm → src}/renderers/common/Animation.js +0 -0
  348. /package/{examples/jsm → src}/renderers/common/Binding.js +0 -0
  349. /package/{examples/jsm → src}/renderers/common/Buffer.js +0 -0
  350. /package/{examples/jsm → src}/renderers/common/BufferUtils.js +0 -0
  351. /package/{examples/jsm → src}/renderers/common/ChainMap.js +0 -0
  352. /package/{examples/jsm → src}/renderers/common/ComputePipeline.js +0 -0
  353. /package/{examples/jsm → src}/renderers/common/Constants.js +0 -0
  354. /package/{examples/jsm → src}/renderers/common/DataMap.js +0 -0
  355. /package/{examples/jsm → src}/renderers/common/Pipeline.js +0 -0
  356. /package/{examples/jsm → src}/renderers/common/Pipelines.js +0 -0
  357. /package/{examples/jsm → src}/renderers/common/ProgrammableStage.js +0 -0
  358. /package/{examples/jsm → src}/renderers/common/RenderBundle.js +0 -0
  359. /package/{examples/jsm → src}/renderers/common/RenderBundles.js +0 -0
  360. /package/{examples/jsm → src}/renderers/common/RenderList.js +0 -0
  361. /package/{examples/jsm → src}/renderers/common/RenderLists.js +0 -0
  362. /package/{examples/jsm → src}/renderers/common/RenderObjects.js +0 -0
  363. /package/{examples/jsm → src}/renderers/common/RenderPipeline.js +0 -0
  364. /package/{examples/jsm → src}/renderers/common/Sampler.js +0 -0
  365. /package/{examples/jsm → src}/renderers/common/StorageBuffer.js +0 -0
  366. /package/{examples/jsm → src}/renderers/common/UniformBuffer.js +0 -0
  367. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBufferRenderer.js +0 -0
  368. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLCapabilities.js +0 -0
  369. /package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +0 -0
  370. /package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +0 -0
@@ -2,8 +2,6 @@
2
2
  import 'https://greggman.github.io/webgpu-avoid-redundant-state-setting/webgpu-check-redundant-state-setting.js';
3
3
  //*/
4
4
 
5
- import { WebGPUCoordinateSystem } from 'three';
6
-
7
5
  import { GPUFeatureName, GPUTextureFormat, GPULoadOp, GPUStoreOp, GPUIndexFormat, GPUTextureViewDimension } from './utils/WebGPUConstants.js';
8
6
 
9
7
  import WGSLNodeBuilder from './nodes/WGSLNodeBuilder.js';
@@ -15,6 +13,8 @@ import WebGPUBindingUtils from './utils/WebGPUBindingUtils.js';
15
13
  import WebGPUPipelineUtils from './utils/WebGPUPipelineUtils.js';
16
14
  import WebGPUTextureUtils from './utils/WebGPUTextureUtils.js';
17
15
 
16
+ import { WebGPUCoordinateSystem } from '../../constants.js';
17
+
18
18
  //
19
19
 
20
20
  class WebGPUBackend extends Backend {
@@ -28,18 +28,6 @@ class WebGPUBackend extends Backend {
28
28
  // some parameters require default values other than "undefined"
29
29
  this.parameters.alpha = ( parameters.alpha === undefined ) ? true : parameters.alpha;
30
30
 
31
- this.parameters.antialias = ( parameters.antialias === true );
32
-
33
- if ( this.parameters.antialias === true ) {
34
-
35
- this.parameters.sampleCount = ( parameters.sampleCount === undefined ) ? 4 : parameters.sampleCount;
36
-
37
- } else {
38
-
39
- this.parameters.sampleCount = 1;
40
-
41
- }
42
-
43
31
  this.parameters.requiredLimits = ( parameters.requiredLimits === undefined ) ? {} : parameters.requiredLimits;
44
32
 
45
33
  this.trackTimestamp = ( parameters.trackTimestamp === true );
@@ -153,8 +141,6 @@ class WebGPUBackend extends Backend {
153
141
 
154
142
  let descriptor = this.defaultRenderPassdescriptor;
155
143
 
156
- const antialias = this.parameters.antialias;
157
-
158
144
  if ( descriptor === null ) {
159
145
 
160
146
  const renderer = this.renderer;
@@ -170,7 +156,7 @@ class WebGPUBackend extends Backend {
170
156
 
171
157
  const colorAttachment = descriptor.colorAttachments[ 0 ];
172
158
 
173
- if ( antialias === true ) {
159
+ if ( this.renderer.samples > 0 ) {
174
160
 
175
161
  colorAttachment.view = this.colorBuffer.createView();
176
162
 
@@ -186,7 +172,7 @@ class WebGPUBackend extends Backend {
186
172
 
187
173
  const colorAttachment = descriptor.colorAttachments[ 0 ];
188
174
 
189
- if ( antialias === true ) {
175
+ if ( this.renderer.samples > 0 ) {
190
176
 
191
177
  colorAttachment.resolveTarget = this.context.getCurrentTexture().createView();
192
178
 
@@ -218,11 +204,24 @@ class WebGPUBackend extends Backend {
218
204
  if ( renderTargetData.width !== renderTarget.width ||
219
205
  renderTargetData.height !== renderTarget.height ||
220
206
  renderTargetData.activeMipmapLevel !== renderTarget.activeMipmapLevel ||
221
- renderTargetData.samples !== renderTarget.samples
207
+ renderTargetData.samples !== renderTarget.samples ||
208
+ descriptors.length !== renderTarget.textures.length
222
209
  ) {
223
210
 
224
211
  descriptors.length = 0;
225
212
 
213
+ // dispose
214
+
215
+ const onDispose = () => {
216
+
217
+ renderTarget.removeEventListener( 'dispose', onDispose );
218
+
219
+ this.delete( renderTarget );
220
+
221
+ };
222
+
223
+ renderTarget.addEventListener( 'dispose', onDispose );
224
+
226
225
  }
227
226
 
228
227
  let descriptor = descriptors[ renderContext.activeCubeFace ];
@@ -269,7 +268,7 @@ class WebGPUBackend extends Backend {
269
268
  const depthTextureData = this.get( renderContext.depthTexture );
270
269
 
271
270
  const depthStencilAttachment = {
272
- view: depthTextureData.texture.createView(),
271
+ view: depthTextureData.texture.createView()
273
272
  };
274
273
 
275
274
  descriptor = {
@@ -567,7 +566,7 @@ class WebGPUBackend extends Backend {
567
566
 
568
567
  for ( let i = 0; i < currentOcclusionQueryObjects.length; i ++ ) {
569
568
 
570
- if ( results[ i ] !== 0n ) {
569
+ if ( results[ i ] !== BigInt( 0 ) ) {
571
570
 
572
571
  occluded.add( currentOcclusionQueryObjects[ i ] );
573
572
 
@@ -766,12 +765,41 @@ class WebGPUBackend extends Backend {
766
765
  const pipelineGPU = this.get( pipeline ).pipeline;
767
766
  passEncoderGPU.setPipeline( pipelineGPU );
768
767
 
769
- // bind group
768
+ // bind groups
769
+
770
+ for ( let i = 0, l = bindings.length; i < l; i ++ ) {
771
+
772
+ const bindGroup = bindings[ i ];
773
+ const bindingsData = this.get( bindGroup );
770
774
 
771
- const bindGroupGPU = this.get( bindings ).group;
772
- passEncoderGPU.setBindGroup( 0, bindGroupGPU );
775
+ passEncoderGPU.setBindGroup( i, bindingsData.group );
776
+
777
+ }
773
778
 
774
- passEncoderGPU.dispatchWorkgroups( computeNode.dispatchCount );
779
+ const maxComputeWorkgroupsPerDimension = this.device.limits.maxComputeWorkgroupsPerDimension;
780
+
781
+ const computeNodeData = this.get( computeNode );
782
+
783
+ if ( computeNodeData.dispatchSize === undefined ) computeNodeData.dispatchSize = { x: 0, y: 1, z: 1 };
784
+
785
+ const { dispatchSize } = computeNodeData;
786
+
787
+ if ( computeNode.dispatchCount > maxComputeWorkgroupsPerDimension ) {
788
+
789
+ dispatchSize.x = Math.min( computeNode.dispatchCount, maxComputeWorkgroupsPerDimension );
790
+ dispatchSize.y = Math.ceil( computeNode.dispatchCount / maxComputeWorkgroupsPerDimension );
791
+
792
+ } else {
793
+
794
+ dispatchSize.x = computeNode.dispatchCount;
795
+
796
+ }
797
+
798
+ passEncoderGPU.dispatchWorkgroups(
799
+ dispatchSize.x,
800
+ dispatchSize.y,
801
+ dispatchSize.z
802
+ );
775
803
 
776
804
  }
777
805
 
@@ -793,7 +821,7 @@ class WebGPUBackend extends Backend {
793
821
 
794
822
  const { object, geometry, context, pipeline } = renderObject;
795
823
 
796
- const bindingsData = this.get( renderObject.getBindings() );
824
+ const bindings = renderObject.getBindings();
797
825
  const contextData = this.get( context );
798
826
  const pipelineGPU = this.get( pipeline ).pipeline;
799
827
  const currentSets = contextData.currentSets;
@@ -823,10 +851,16 @@ class WebGPUBackend extends Backend {
823
851
 
824
852
  }
825
853
 
826
- // bind group
854
+ // bind groups
855
+
856
+ for ( let i = 0, l = bindings.length; i < l; i ++ ) {
857
+
858
+ const bindGroup = bindings[ i ];
859
+ const bindingsData = this.get( bindGroup );
827
860
 
828
- const bindGroupGPU = bindingsData.group;
829
- passEncoderGPU.setBindGroup( 0, bindGroupGPU );
861
+ passEncoderGPU.setBindGroup( i, bindingsData.group );
862
+
863
+ }
830
864
 
831
865
  // attributes
832
866
 
@@ -906,7 +940,25 @@ class WebGPUBackend extends Backend {
906
940
  const instanceCount = this.getInstanceCount( renderObject );
907
941
  if ( instanceCount === 0 ) return;
908
942
 
909
- if ( hasIndex === true ) {
943
+ if ( object.isBatchedMesh === true ) {
944
+
945
+ const starts = object._multiDrawStarts;
946
+ const counts = object._multiDrawCounts;
947
+ const drawCount = object._multiDrawCount;
948
+ const drawInstances = object._multiDrawInstances;
949
+
950
+ const bytesPerElement = index.bytesPerElement || 1;
951
+
952
+ for ( let i = 0; i < drawCount; i ++ ) {
953
+
954
+ const count = drawInstances ? drawInstances[ i ] : 1;
955
+ const firstInstance = count > 1 ? 0 : i;
956
+
957
+ passEncoderGPU.drawIndexed( counts[ i ] / bytesPerElement, count, starts[ i ] / 4, 0, firstInstance );
958
+
959
+ }
960
+
961
+ } else if ( hasIndex === true ) {
910
962
 
911
963
  const indexCount = ( drawRange.count !== Infinity ) ? drawRange.count : index.count;
912
964
 
@@ -925,7 +977,6 @@ class WebGPUBackend extends Backend {
925
977
 
926
978
  }
927
979
 
928
-
929
980
  if ( this.renderer._currentRenderBundle ) {
930
981
 
931
982
  const renderBundle = passEncoderGPU.finish();
@@ -947,7 +998,7 @@ class WebGPUBackend extends Backend {
947
998
 
948
999
  const utils = this.utils;
949
1000
 
950
- const sampleCount = utils.getSampleCount( renderObject.context );
1001
+ const sampleCount = utils.getSampleCountRenderContext( renderObject.context );
951
1002
  const colorSpace = utils.getCurrentColorSpace( renderObject.context );
952
1003
  const colorFormat = utils.getCurrentColorFormat( renderObject.context );
953
1004
  const depthStencilFormat = utils.getCurrentDepthStencilFormat( renderObject.context );
@@ -1012,7 +1063,7 @@ class WebGPUBackend extends Backend {
1012
1063
  material.stencilFail, material.stencilZFail, material.stencilZPass,
1013
1064
  material.stencilFuncMask, material.stencilWriteMask,
1014
1065
  material.side,
1015
- utils.getSampleCount( renderContext ),
1066
+ utils.getSampleCountRenderContext( renderContext ),
1016
1067
  utils.getCurrentColorSpace( renderContext ), utils.getCurrentColorFormat( renderContext ), utils.getCurrentDepthStencilFormat( renderContext ),
1017
1068
  utils.getPrimitiveTopology( object, material ),
1018
1069
  renderObject.clippingContextVersion
@@ -1108,52 +1159,69 @@ class WebGPUBackend extends Backend {
1108
1159
  const renderContextData = this.get( renderContext );
1109
1160
 
1110
1161
  const size = 2 * BigInt64Array.BYTES_PER_ELEMENT;
1111
- const resolveBuffer = this.device.createBuffer( {
1112
- size,
1113
- usage: GPUBufferUsage.QUERY_RESOLVE | GPUBufferUsage.COPY_SRC,
1114
- } );
1115
1162
 
1116
- const resultBuffer = this.device.createBuffer( {
1117
- size,
1118
- usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
1119
- } );
1163
+ if ( renderContextData.currentTimestampQueryBuffers === undefined ) {
1164
+
1165
+ renderContextData.currentTimestampQueryBuffers = {
1166
+ resolveBuffer: this.device.createBuffer( {
1167
+ label: 'timestamp resolve buffer',
1168
+ size: size,
1169
+ usage: GPUBufferUsage.QUERY_RESOLVE | GPUBufferUsage.COPY_SRC,
1170
+ } ),
1171
+ resultBuffer: this.device.createBuffer( {
1172
+ label: 'timestamp result buffer',
1173
+ size: size,
1174
+ usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
1175
+ } ),
1176
+ isMappingPending: false,
1177
+ };
1178
+
1179
+ }
1180
+
1181
+ const { resolveBuffer, resultBuffer, isMappingPending } = renderContextData.currentTimestampQueryBuffers;
1182
+
1183
+ if ( isMappingPending === true ) return;
1120
1184
 
1121
1185
  encoder.resolveQuerySet( renderContextData.timeStampQuerySet, 0, 2, resolveBuffer, 0 );
1122
1186
  encoder.copyBufferToBuffer( resolveBuffer, 0, resultBuffer, 0, size );
1123
1187
 
1124
- renderContextData.currentTimestampQueryBuffer = resultBuffer;
1125
-
1126
1188
  }
1127
1189
 
1128
- async resolveTimestampAsync(renderContext, type = 'render') {
1129
- if (!this.hasFeature(GPUFeatureName.TimestampQuery) || !this.trackTimestamp) return;
1130
-
1131
- const renderContextData = this.get(renderContext);
1132
- const { currentTimestampQueryBuffer } = renderContextData;
1133
-
1134
- if (currentTimestampQueryBuffer === undefined) return;
1135
-
1136
- const buffer = currentTimestampQueryBuffer;
1137
-
1138
- try {
1139
- await buffer.mapAsync(GPUMapMode.READ);
1140
- const times = new BigUint64Array(buffer.getMappedRange());
1141
- const duration = Number(times[1] - times[0]) / 1000000;
1142
- this.renderer.info.updateTimestamp(type, duration);
1143
- } catch (error) {
1144
- console.error(`Error mapping buffer: ${error}`);
1145
- // Optionally handle the error, e.g., re-queue the buffer or skip it
1146
- } finally {
1147
- buffer.unmap();
1148
- }
1190
+ async resolveTimestampAsync( renderContext, type = 'render' ) {
1191
+
1192
+ if ( ! this.hasFeature( GPUFeatureName.TimestampQuery ) || ! this.trackTimestamp ) return;
1193
+
1194
+ const renderContextData = this.get( renderContext );
1195
+
1196
+ if ( renderContextData.currentTimestampQueryBuffers === undefined ) return;
1197
+
1198
+ const { resultBuffer, isMappingPending } = renderContextData.currentTimestampQueryBuffers;
1199
+
1200
+ if ( isMappingPending === true ) return;
1201
+
1202
+ renderContextData.currentTimestampQueryBuffers.isMappingPending = true;
1203
+
1204
+ resultBuffer.mapAsync( GPUMapMode.READ ).then( () => {
1205
+
1206
+ const times = new BigUint64Array( resultBuffer.getMappedRange() );
1207
+ const duration = Number( times[ 1 ] - times[ 0 ] ) / 1000000;
1208
+
1209
+
1210
+ this.renderer.info.updateTimestamp( type, duration );
1211
+
1212
+ resultBuffer.unmap();
1213
+
1214
+ renderContextData.currentTimestampQueryBuffers.isMappingPending = false;
1215
+
1216
+ } );
1217
+
1149
1218
  }
1150
-
1151
1219
 
1152
1220
  // node builder
1153
1221
 
1154
- createNodeBuilder( object, renderer, scene = null ) {
1222
+ createNodeBuilder( object, renderer ) {
1155
1223
 
1156
- return new WGSLNodeBuilder( object, renderer, scene );
1224
+ return new WGSLNodeBuilder( object, renderer );
1157
1225
 
1158
1226
  }
1159
1227
 
@@ -1198,15 +1266,15 @@ class WebGPUBackend extends Backend {
1198
1266
 
1199
1267
  // bindings
1200
1268
 
1201
- createBindings( bindings ) {
1269
+ createBindings( bindGroup ) {
1202
1270
 
1203
- this.bindingUtils.createBindings( bindings );
1271
+ this.bindingUtils.createBindings( bindGroup );
1204
1272
 
1205
1273
  }
1206
1274
 
1207
- updateBindings( bindings ) {
1275
+ updateBindings( bindGroup ) {
1208
1276
 
1209
- this.bindingUtils.createBindings( bindings );
1277
+ this.bindingUtils.createBindings( bindGroup );
1210
1278
 
1211
1279
  }
1212
1280
 
@@ -1276,13 +1344,28 @@ class WebGPUBackend extends Backend {
1276
1344
  let dstX = 0;
1277
1345
  let dstY = 0;
1278
1346
 
1347
+ let srcX = 0;
1348
+ let srcY = 0;
1349
+
1350
+ let srcWidth = srcTexture.image.width;
1351
+ let srcHeight = srcTexture.image.height;
1352
+
1353
+ if ( srcRegion !== null ) {
1354
+
1355
+ srcX = srcRegion.x;
1356
+ srcY = srcRegion.y;
1357
+ srcWidth = srcRegion.width;
1358
+ srcHeight = srcRegion.height;
1359
+
1360
+ }
1361
+
1279
1362
  if ( dstPosition !== null ) {
1280
1363
 
1281
1364
  dstX = dstPosition.x;
1282
1365
  dstY = dstPosition.y;
1283
1366
 
1284
1367
  }
1285
-
1368
+
1286
1369
  const encoder = this.device.createCommandEncoder( { label: 'copyTextureToTexture_' + srcTexture.id + '_' + dstTexture.id } );
1287
1370
 
1288
1371
  const sourceGPU = this.get( srcTexture ).texture;
@@ -1292,7 +1375,7 @@ class WebGPUBackend extends Backend {
1292
1375
  {
1293
1376
  texture: sourceGPU,
1294
1377
  mipLevel: level,
1295
- origin: { x: 0, y: 0, z: 0 }
1378
+ origin: { x: srcX, y: srcY, z: 0 }
1296
1379
  },
1297
1380
  {
1298
1381
  texture: destinationGPU,
@@ -1300,8 +1383,8 @@ class WebGPUBackend extends Backend {
1300
1383
  origin: { x: dstX, y: dstY, z: 0 }
1301
1384
  },
1302
1385
  [
1303
- srcTexture.image.width,
1304
- srcTexture.image.height
1386
+ srcWidth,
1387
+ srcHeight
1305
1388
  ]
1306
1389
  );
1307
1390
 
@@ -1371,7 +1454,12 @@ class WebGPUBackend extends Backend {
1371
1454
 
1372
1455
  if ( texture.generateMipmaps ) this.textureUtils.generateMipmaps( texture );
1373
1456
 
1374
- descriptor.colorAttachments[ 0 ].loadOp = GPULoadOp.Load;
1457
+ for ( let i = 0; i < descriptor.colorAttachments.length; i ++ ) {
1458
+
1459
+ descriptor.colorAttachments[ i ].loadOp = GPULoadOp.Load;
1460
+
1461
+ }
1462
+
1375
1463
  if ( renderContext.depth ) descriptor.depthStencilAttachment.depthLoadOp = GPULoadOp.Load;
1376
1464
  if ( renderContext.stencil ) descriptor.depthStencilAttachment.stencilLoadOp = GPULoadOp.Load;
1377
1465
 
@@ -1,7 +1,7 @@
1
- import WebGPU from '../../capabilities/WebGPU.js';
1
+ import WebGPU from '../../../examples/jsm/capabilities/WebGPU.js';
2
2
 
3
3
  import Renderer from '../common/Renderer.js';
4
- import WebGLBackend from '../webgl/WebGLBackend.js';
4
+ import WebGLBackend from '../webgl-fallback/WebGLBackend.js';
5
5
  import WebGPUBackend from './WebGPUBackend.js';
6
6
  /*
7
7
  const debugHandler = {