super-three 0.164.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 (416) hide show
  1. package/README.md +3 -3
  2. package/build/three.cjs +1273 -503
  3. package/build/three.module.js +1269 -504
  4. package/build/three.module.min.js +1 -1
  5. package/build/three.webgpu.js +76086 -0
  6. package/build/three.webgpu.min.js +6 -0
  7. package/examples/jsm/Addons.js +2 -1
  8. package/examples/jsm/controls/TransformControls.js +1 -1
  9. package/examples/jsm/csm/CSMShader.js +4 -4
  10. package/examples/jsm/environments/RoomEnvironment.js +1 -5
  11. package/examples/jsm/exporters/GLTFExporter.js +8 -4
  12. package/examples/jsm/exporters/USDZExporter.js +6 -4
  13. package/examples/jsm/geometries/TeapotGeometry.js +1 -1
  14. package/examples/jsm/helpers/ViewHelper.js +75 -61
  15. package/examples/jsm/lights/RectAreaLightTexturesLib.js +91 -0
  16. package/examples/jsm/lights/RectAreaLightUniformsLib.js +8 -63
  17. package/examples/jsm/lines/LineMaterial.js +1 -15
  18. package/examples/jsm/lines/LineSegments2.js +15 -0
  19. package/examples/jsm/lines/Wireframe.js +16 -1
  20. package/examples/jsm/lines/webgpu/Line2.js +20 -0
  21. package/examples/jsm/lines/webgpu/LineSegments2.js +376 -0
  22. package/examples/jsm/loaders/DRACOLoader.js +1 -1
  23. package/examples/jsm/loaders/FBXLoader.js +47 -58
  24. package/examples/jsm/loaders/GLTFLoader.js +12 -4
  25. package/examples/jsm/loaders/LDrawLoader.js +3 -2
  26. package/examples/jsm/loaders/MMDLoader.js +31 -12
  27. package/examples/jsm/loaders/MaterialXLoader.js +2 -9
  28. package/examples/jsm/loaders/USDZLoader.js +124 -76
  29. package/examples/jsm/loaders/UltraHDRLoader.js +583 -0
  30. package/examples/jsm/loaders/VTKLoader.js +76 -3
  31. package/examples/jsm/misc/GPUComputationRenderer.js +9 -19
  32. package/examples/jsm/modifiers/CurveModifier.js +11 -9
  33. package/examples/jsm/modifiers/SimplifyModifier.js +2 -1
  34. package/examples/jsm/objects/InstancedPoints.js +2 -2
  35. package/examples/jsm/objects/Lensflare.js +2 -2
  36. package/examples/jsm/postprocessing/RenderPass.js +1 -1
  37. package/examples/jsm/postprocessing/RenderTransitionPass.js +13 -38
  38. package/examples/jsm/postprocessing/SSAOPass.js +6 -9
  39. package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -4
  40. package/examples/jsm/renderers/CSS2DRenderer.js +25 -5
  41. package/examples/jsm/renderers/CSS3DRenderer.js +24 -3
  42. package/examples/jsm/shaders/ColorifyShader.js +1 -2
  43. package/examples/jsm/shaders/FXAAShader.js +0 -2
  44. package/examples/jsm/shaders/GTAOShader.js +1 -1
  45. package/examples/jsm/shaders/LuminosityHighPassShader.js +1 -3
  46. package/examples/jsm/transpiler/GLSLDecoder.js +46 -4
  47. package/examples/jsm/transpiler/TSLEncoder.js +17 -15
  48. package/examples/jsm/utils/BufferGeometryUtils.js +18 -16
  49. package/examples/jsm/utils/GPUStatsPanel.js +2 -0
  50. package/examples/jsm/utils/SortUtils.js +8 -5
  51. package/package.json +9 -7
  52. package/src/Three.WebGPU.js +194 -0
  53. package/src/Three.js +2 -0
  54. package/src/animation/tracks/BooleanKeyframeTrack.js +10 -1
  55. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -2
  56. package/src/animation/tracks/StringKeyframeTrack.js +10 -1
  57. package/src/constants.js +4 -1
  58. package/src/core/Object3D.js +24 -22
  59. package/src/core/Raycaster.js +6 -2
  60. package/src/extras/TextureUtils.js +210 -0
  61. package/src/lights/Light.js +1 -0
  62. package/src/lights/LightShadow.js +5 -0
  63. package/{examples/jsm/lights → src/lights/webgpu}/IESSpotLight.js +1 -1
  64. package/src/loaders/FileLoader.js +4 -0
  65. package/src/loaders/LoaderUtils.js +3 -1
  66. package/src/loaders/ObjectLoader.js +34 -2
  67. package/src/materials/Material.js +13 -4
  68. package/src/math/Box2.js +4 -4
  69. package/src/math/Box3.js +6 -6
  70. package/src/math/ColorManagement.js +10 -0
  71. package/src/math/Matrix2.js +54 -0
  72. package/src/math/Vector4.js +13 -0
  73. package/{examples/jsm → src}/nodes/Nodes.js +39 -20
  74. package/{examples/jsm → src}/nodes/accessors/BatchNode.js +28 -10
  75. package/src/nodes/accessors/BitangentNode.js +13 -0
  76. package/{examples/jsm → src}/nodes/accessors/BufferAttributeNode.js +36 -1
  77. package/{examples/jsm → src}/nodes/accessors/BufferNode.js +6 -0
  78. package/src/nodes/accessors/CameraNode.js +19 -0
  79. package/{examples/jsm → src}/nodes/accessors/CubeTextureNode.js +22 -5
  80. package/src/nodes/accessors/InstanceNode.js +140 -0
  81. package/{examples/jsm → src}/nodes/accessors/MaterialNode.js +24 -2
  82. package/{examples/jsm → src}/nodes/accessors/ModelNode.js +4 -0
  83. package/{examples/jsm → src}/nodes/accessors/MorphNode.js +24 -20
  84. package/src/nodes/accessors/NormalNode.js +14 -0
  85. package/{examples/jsm → src}/nodes/accessors/Object3DNode.js +1 -1
  86. package/src/nodes/accessors/PositionNode.js +10 -0
  87. package/{examples/jsm → src}/nodes/accessors/ReferenceNode.js +7 -1
  88. package/src/nodes/accessors/ReflectVectorNode.js +10 -0
  89. package/{examples/jsm → src}/nodes/accessors/StorageBufferNode.js +50 -1
  90. package/{examples/jsm/nodes/accessors/TextureStoreNode.js → src/nodes/accessors/StorageTextureNode.js} +28 -6
  91. package/src/nodes/accessors/TangentNode.js +23 -0
  92. package/src/nodes/accessors/Texture3DNode.js +100 -0
  93. package/{examples/jsm → src}/nodes/accessors/TextureNode.js +55 -18
  94. package/src/nodes/accessors/UVNode.js +3 -0
  95. package/{examples/jsm → src}/nodes/accessors/UniformsNode.js +7 -1
  96. package/{examples/jsm → src}/nodes/accessors/VertexColorNode.js +2 -1
  97. package/{examples/jsm → src}/nodes/code/ScriptableNode.js +14 -0
  98. package/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +2 -1
  99. package/{examples/jsm → src}/nodes/core/AttributeNode.js +34 -8
  100. package/{examples/jsm → src}/nodes/core/CacheNode.js +7 -10
  101. package/{examples/jsm → src}/nodes/core/ContextNode.js +6 -0
  102. package/{examples/jsm → src}/nodes/core/IndexNode.js +6 -0
  103. package/{examples/jsm → src}/nodes/core/LightingModel.js +2 -2
  104. package/src/nodes/core/MRTNode.js +76 -0
  105. package/{examples/jsm → src}/nodes/core/Node.js +33 -14
  106. package/{examples/jsm → src}/nodes/core/NodeBuilder.js +194 -45
  107. package/src/nodes/core/NodeCache.js +36 -0
  108. package/{examples/jsm → src}/nodes/core/NodeFrame.js +42 -0
  109. package/{examples/jsm → src}/nodes/core/NodeFunction.js +2 -2
  110. package/{examples/jsm → src}/nodes/core/NodeKeywords.js +1 -1
  111. package/{examples/jsm → src}/nodes/core/NodeUniform.js +1 -2
  112. package/{examples/jsm → src}/nodes/core/NodeUtils.js +6 -1
  113. package/{examples/jsm → src}/nodes/core/OutputStructNode.js +1 -5
  114. package/{examples/jsm → src}/nodes/core/PropertyNode.js +2 -0
  115. package/{examples/jsm → src}/nodes/core/TempNode.js +2 -2
  116. package/{examples/jsm → src}/nodes/core/UniformGroupNode.js +20 -0
  117. package/{examples/jsm → src}/nodes/core/UniformNode.js +10 -1
  118. package/{examples/jsm → src}/nodes/core/VarNode.js +2 -6
  119. package/src/nodes/core/VaryingNode.js +104 -0
  120. package/{examples/jsm → src}/nodes/display/AfterImageNode.js +24 -20
  121. package/{examples/jsm → src}/nodes/display/AnamorphicNode.js +18 -21
  122. package/src/nodes/display/BloomNode.js +333 -0
  123. package/{examples/jsm → src}/nodes/display/ColorAdjustmentNode.js +7 -2
  124. package/{examples/jsm → src}/nodes/display/ColorSpaceNode.js +1 -1
  125. package/src/nodes/display/DenoiseNode.js +198 -0
  126. package/src/nodes/display/DepthOfFieldNode.js +119 -0
  127. package/src/nodes/display/DotScreenNode.js +75 -0
  128. package/src/nodes/display/FXAANode.js +327 -0
  129. package/src/nodes/display/FilmNode.js +52 -0
  130. package/{examples/jsm → src}/nodes/display/FrontFacingNode.js +2 -1
  131. package/src/nodes/display/GTAONode.js +324 -0
  132. package/{examples/jsm → src}/nodes/display/GaussianBlurNode.js +34 -17
  133. package/src/nodes/display/Lut3DNode.js +53 -0
  134. package/{examples/jsm → src}/nodes/display/NormalMapNode.js +1 -1
  135. package/src/nodes/display/PassNode.js +291 -0
  136. package/src/nodes/display/PixelationPassNode.js +201 -0
  137. package/src/nodes/display/RGBShiftNode.js +49 -0
  138. package/src/nodes/display/RenderOutputNode.js +56 -0
  139. package/src/nodes/display/SobelOperatorNode.js +121 -0
  140. package/{examples/jsm → src}/nodes/display/ToneMappingNode.js +44 -5
  141. package/src/nodes/display/TransitionNode.js +76 -0
  142. package/{examples/jsm → src}/nodes/display/ViewportDepthNode.js +39 -16
  143. package/{examples/jsm → src}/nodes/display/ViewportDepthTextureNode.js +2 -1
  144. package/{examples/jsm → src}/nodes/display/ViewportNode.js +3 -2
  145. package/{examples/jsm → src}/nodes/display/ViewportSharedTextureNode.js +2 -1
  146. package/{examples/jsm → src}/nodes/display/ViewportTextureNode.js +5 -2
  147. package/src/nodes/functions/BSDF/LTC.js +131 -0
  148. package/src/nodes/functions/BasicLightingModel.js +78 -0
  149. package/{examples/jsm → src}/nodes/functions/PhongLightingModel.js +5 -3
  150. package/{examples/jsm → src}/nodes/functions/PhysicalLightingModel.js +103 -18
  151. package/src/nodes/functions/ToonLightingModel.js +51 -0
  152. package/{examples/jsm → src}/nodes/geometry/RangeNode.js +19 -6
  153. package/{examples/jsm → src}/nodes/lighting/AONode.js +1 -4
  154. package/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +1 -1
  155. package/src/nodes/lighting/AnalyticLightNode.js +333 -0
  156. package/src/nodes/lighting/BasicEnvironmentNode.js +26 -0
  157. package/src/nodes/lighting/BasicLightMapNode.js +29 -0
  158. package/{examples/jsm → src}/nodes/lighting/DirectionalLightNode.js +2 -3
  159. package/{examples/jsm → src}/nodes/lighting/EnvironmentNode.js +5 -4
  160. package/{examples/jsm → src}/nodes/lighting/HemisphereLightNode.js +2 -1
  161. package/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +1 -1
  162. package/{examples/jsm → src}/nodes/lighting/LightingNode.js +2 -0
  163. package/{examples/jsm → src}/nodes/lighting/LightsNode.js +18 -3
  164. package/{examples/jsm → src}/nodes/lighting/PointLightNode.js +2 -3
  165. package/src/nodes/lighting/RectAreaLightNode.js +97 -0
  166. package/{examples/jsm → src}/nodes/lighting/SpotLightNode.js +2 -3
  167. package/{examples/jsm → src}/nodes/loaders/NodeLoader.js +3 -1
  168. package/{examples/jsm → src}/nodes/loaders/NodeMaterialLoader.js +2 -1
  169. package/{examples/jsm → src}/nodes/loaders/NodeObjectLoader.js +2 -1
  170. package/{examples/jsm → src}/nodes/materials/InstancedPointsNodeMaterial.js +3 -3
  171. package/{examples/jsm → src}/nodes/materials/Line2NodeMaterial.js +4 -4
  172. package/{examples/jsm → src}/nodes/materials/LineBasicNodeMaterial.js +3 -3
  173. package/{examples/jsm → src}/nodes/materials/LineDashedNodeMaterial.js +4 -3
  174. package/{examples/jsm → src}/nodes/materials/Materials.js +3 -0
  175. package/src/nodes/materials/MeshBasicNodeMaterial.js +73 -0
  176. package/{examples/jsm → src}/nodes/materials/MeshLambertNodeMaterial.js +12 -3
  177. package/src/nodes/materials/MeshMatcapNodeMaterial.js +53 -0
  178. package/{examples/jsm → src}/nodes/materials/MeshNormalNodeMaterial.js +5 -3
  179. package/{examples/jsm → src}/nodes/materials/MeshPhongNodeMaterial.js +11 -3
  180. package/{examples/jsm → src}/nodes/materials/MeshPhysicalNodeMaterial.js +26 -8
  181. package/{examples/jsm → src}/nodes/materials/MeshStandardNodeMaterial.js +14 -3
  182. package/src/nodes/materials/MeshToonNodeMaterial.js +34 -0
  183. package/{examples/jsm → src}/nodes/materials/NodeMaterial.js +97 -24
  184. package/{examples/jsm → src}/nodes/materials/PointsNodeMaterial.js +3 -3
  185. package/{examples/jsm → src}/nodes/materials/ShadowNodeMaterial.js +3 -3
  186. package/{examples/jsm → src}/nodes/materials/SpriteNodeMaterial.js +3 -3
  187. package/src/nodes/materials/VolumeNodeMaterial.js +106 -0
  188. package/{examples/jsm → src}/nodes/materialx/lib/mx_hsv.js +9 -17
  189. package/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +474 -577
  190. package/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +2 -8
  191. package/{examples/jsm → src}/nodes/math/CondNode.js +13 -6
  192. package/{examples/jsm → src}/nodes/math/HashNode.js +2 -2
  193. package/{examples/jsm → src}/nodes/math/MathNode.js +14 -1
  194. package/{examples/jsm → src}/nodes/math/OperatorNode.js +6 -6
  195. package/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +7 -7
  196. package/{examples/jsm → src}/nodes/pmrem/PMREMNode.js +2 -1
  197. package/{examples/jsm → src}/nodes/shadernode/ShaderNode.js +57 -33
  198. package/{examples/jsm → src}/nodes/utils/ArrayElementNode.js +1 -1
  199. package/{examples/jsm → src}/nodes/utils/DiscardNode.js +1 -0
  200. package/{examples/jsm → src}/nodes/utils/FunctionOverloadingNode.js +2 -0
  201. package/{examples/jsm → src}/nodes/utils/LoopNode.js +7 -6
  202. package/{examples/jsm → src}/nodes/utils/MatcapUVNode.js +1 -1
  203. package/{examples/jsm → src}/nodes/utils/MaxMipLevelNode.js +8 -2
  204. package/src/nodes/utils/RTTNode.js +130 -0
  205. package/{examples/jsm → src}/nodes/utils/ReflectorNode.js +9 -1
  206. package/{examples/jsm → src}/nodes/utils/TimerNode.js +1 -1
  207. package/src/objects/BatchedMesh.js +232 -162
  208. package/src/objects/InstancedMesh.js +1 -1
  209. package/src/renderers/WebGLRenderer.js +312 -68
  210. package/{examples/jsm → src}/renderers/common/Attributes.js +4 -1
  211. package/{examples/jsm → src}/renderers/common/Backend.js +30 -27
  212. package/{examples/jsm → src}/renderers/common/Background.js +9 -3
  213. package/src/renderers/common/BindGroup.js +16 -0
  214. package/{examples/jsm → src}/renderers/common/Bindings.js +54 -22
  215. package/src/renderers/common/ChainMap.js +59 -0
  216. package/{examples/jsm → src}/renderers/common/ClippingContext.js +8 -6
  217. package/{examples/jsm → src}/renderers/common/Color4.js +1 -1
  218. package/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +7 -1
  219. package/{examples/jsm → src}/renderers/common/Geometries.js +37 -5
  220. package/{examples/jsm → src}/renderers/common/Info.js +34 -6
  221. package/{examples/jsm → src}/renderers/common/Pipelines.js +2 -2
  222. package/src/renderers/common/PostProcessing.js +87 -0
  223. package/{examples/jsm/objects → src/renderers/common}/QuadMesh.js +6 -3
  224. package/src/renderers/common/RenderBundle.js +18 -0
  225. package/src/renderers/common/RenderBundles.js +38 -0
  226. package/{examples/jsm → src}/renderers/common/RenderContext.js +1 -1
  227. package/{examples/jsm → src}/renderers/common/RenderContexts.js +1 -1
  228. package/{examples/jsm → src}/renderers/common/RenderList.js +9 -0
  229. package/{examples/jsm → src}/renderers/common/RenderObject.js +50 -11
  230. package/{examples/jsm → src}/renderers/common/Renderer.js +220 -40
  231. package/{examples/jsm → src}/renderers/common/SampledTexture.js +2 -2
  232. package/{examples/jsm → src}/renderers/common/StorageBufferAttribute.js +1 -1
  233. package/{examples/jsm → src}/renderers/common/StorageInstancedBufferAttribute.js +1 -1
  234. package/{examples/jsm → src}/renderers/common/StorageTexture.js +2 -1
  235. package/{examples/jsm → src}/renderers/common/Textures.js +6 -2
  236. package/{examples/jsm → src}/renderers/common/Uniform.js +10 -5
  237. package/{examples/jsm → src}/renderers/common/UniformsGroup.js +69 -31
  238. package/{examples/jsm → src}/renderers/common/extras/PMREMGenerator.js +13 -12
  239. package/src/renderers/common/nodes/NodeBuilderState.js +58 -0
  240. package/{examples/jsm → src}/renderers/common/nodes/NodeSampledTexture.js +19 -4
  241. package/{examples/jsm → src}/renderers/common/nodes/NodeSampler.js +8 -1
  242. package/{examples/jsm → src}/renderers/common/nodes/NodeStorageBuffer.js +5 -1
  243. package/{examples/jsm → src}/renderers/common/nodes/NodeUniform.js +3 -3
  244. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformBuffer.js +2 -1
  245. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformsGroup.js +2 -8
  246. package/{examples/jsm → src}/renderers/common/nodes/Nodes.js +37 -16
  247. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +31 -1
  248. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
  249. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -1
  250. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +9 -1
  251. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +0 -9
  252. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -10
  253. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  254. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +8 -22
  255. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +1 -1
  256. package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +1 -1
  257. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +3 -14
  258. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +10 -31
  259. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +3 -23
  260. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
  261. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +7 -4
  262. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
  263. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
  264. package/src/renderers/shaders/ShaderLib/depth.glsl.js +8 -0
  265. package/src/renderers/shaders/UniformsLib.js +3 -0
  266. package/src/renderers/webgl/WebGLAttributes.js +2 -2
  267. package/src/renderers/webgl/WebGLBackground.js +6 -0
  268. package/src/renderers/webgl/WebGLBufferRenderer.js +6 -19
  269. package/src/renderers/webgl/WebGLExtensions.js +3 -1
  270. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +6 -18
  271. package/src/renderers/webgl/WebGLLights.js +15 -12
  272. package/src/renderers/webgl/WebGLMaterials.js +1 -5
  273. package/src/renderers/webgl/WebGLMorphtargets.js +1 -2
  274. package/src/renderers/webgl/WebGLProgram.js +28 -31
  275. package/src/renderers/webgl/WebGLPrograms.js +15 -15
  276. package/src/renderers/webgl/WebGLRenderStates.js +2 -2
  277. package/src/renderers/webgl/WebGLTextures.js +100 -70
  278. package/src/renderers/webgl/WebGLUniforms.js +12 -2
  279. package/src/renderers/webgl/WebGLUniformsGroups.js +7 -7
  280. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBackend.js +156 -54
  281. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/nodes/GLSLNodeBuilder.js +188 -41
  282. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +2 -2
  283. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +1 -0
  284. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLExtensions.js +2 -0
  285. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +1 -1
  286. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLTextureUtils.js +126 -7
  287. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +1 -1
  288. package/{examples/jsm → src}/renderers/webgpu/WebGPUBackend.js +212 -78
  289. package/{examples/jsm → src}/renderers/webgpu/WebGPURenderer.js +2 -2
  290. package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeBuilder.js +245 -49
  291. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +159 -0
  292. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
  293. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUBindingUtils.js +30 -14
  294. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +9 -1
  295. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +74 -24
  296. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTextureUtils.js +101 -25
  297. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUUtils.js +24 -3
  298. package/src/renderers/webxr/WebXRDepthSensing.js +9 -3
  299. package/src/renderers/webxr/WebXRManager.js +12 -2
  300. package/src/textures/CompressedArrayTexture.js +14 -0
  301. package/src/textures/DataArrayTexture.js +14 -0
  302. package/src/textures/DepthTexture.js +1 -3
  303. package/src/utils.js +30 -1
  304. package/examples/jsm/nodes/accessors/BitangentNode.js +0 -89
  305. package/examples/jsm/nodes/accessors/CameraNode.js +0 -119
  306. package/examples/jsm/nodes/accessors/InstanceNode.js +0 -94
  307. package/examples/jsm/nodes/accessors/NormalNode.js +0 -106
  308. package/examples/jsm/nodes/accessors/PositionNode.js +0 -104
  309. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -35
  310. package/examples/jsm/nodes/accessors/TangentNode.js +0 -109
  311. package/examples/jsm/nodes/accessors/UVNode.js +0 -47
  312. package/examples/jsm/nodes/core/NodeCache.js +0 -26
  313. package/examples/jsm/nodes/core/VaryingNode.js +0 -65
  314. package/examples/jsm/nodes/display/PassNode.js +0 -199
  315. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -255
  316. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
  317. package/examples/jsm/renderers/common/ChainMap.js +0 -89
  318. package/examples/jsm/renderers/common/PostProcessing.js +0 -33
  319. package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
  320. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
  321. /package/{examples/jsm → src}/nodes/accessors/AccessorsUtils.js +0 -0
  322. /package/{examples/jsm → src}/nodes/accessors/ClippingNode.js +0 -0
  323. /package/{examples/jsm → src}/nodes/accessors/InstancedPointsMaterialNode.js +0 -0
  324. /package/{examples/jsm → src}/nodes/accessors/MaterialReferenceNode.js +0 -0
  325. /package/{examples/jsm → src}/nodes/accessors/ModelViewProjectionNode.js +0 -0
  326. /package/{examples/jsm → src}/nodes/accessors/PointUVNode.js +0 -0
  327. /package/{examples/jsm → src}/nodes/accessors/RendererReferenceNode.js +0 -0
  328. /package/{examples/jsm → src}/nodes/accessors/SceneNode.js +0 -0
  329. /package/{examples/jsm → src}/nodes/accessors/SkinningNode.js +0 -0
  330. /package/{examples/jsm → src}/nodes/accessors/TextureBicubicNode.js +0 -0
  331. /package/{examples/jsm → src}/nodes/accessors/TextureSizeNode.js +0 -0
  332. /package/{examples/jsm → src}/nodes/accessors/UserDataNode.js +0 -0
  333. /package/{examples/jsm → src}/nodes/code/CodeNode.js +0 -0
  334. /package/{examples/jsm → src}/nodes/code/ExpressionNode.js +0 -0
  335. /package/{examples/jsm → src}/nodes/code/FunctionCallNode.js +0 -0
  336. /package/{examples/jsm → src}/nodes/code/FunctionNode.js +0 -0
  337. /package/{examples/jsm → src}/nodes/core/AssignNode.js +0 -0
  338. /package/{examples/jsm → src}/nodes/core/BypassNode.js +0 -0
  339. /package/{examples/jsm → src}/nodes/core/ConstNode.js +0 -0
  340. /package/{examples/jsm → src}/nodes/core/InputNode.js +0 -0
  341. /package/{examples/jsm → src}/nodes/core/NodeAttribute.js +0 -0
  342. /package/{examples/jsm → src}/nodes/core/NodeCode.js +0 -0
  343. /package/{examples/jsm → src}/nodes/core/NodeFunctionInput.js +0 -0
  344. /package/{examples/jsm → src}/nodes/core/NodeParser.js +0 -0
  345. /package/{examples/jsm → src}/nodes/core/NodeVar.js +0 -0
  346. /package/{examples/jsm → src}/nodes/core/NodeVarying.js +0 -0
  347. /package/{examples/jsm → src}/nodes/core/ParameterNode.js +0 -0
  348. /package/{examples/jsm → src}/nodes/core/StackNode.js +0 -0
  349. /package/{examples/jsm → src}/nodes/core/StructTypeNode.js +0 -0
  350. /package/{examples/jsm → src}/nodes/core/UniformGroup.js +0 -0
  351. /package/{examples/jsm → src}/nodes/core/constants.js +0 -0
  352. /package/{examples/jsm → src}/nodes/display/BlendModeNode.js +0 -0
  353. /package/{examples/jsm → src}/nodes/display/BumpMapNode.js +0 -0
  354. /package/{examples/jsm → src}/nodes/display/PosterizeNode.js +0 -0
  355. /package/{examples/jsm → src}/nodes/fog/FogExp2Node.js +0 -0
  356. /package/{examples/jsm → src}/nodes/fog/FogNode.js +0 -0
  357. /package/{examples/jsm → src}/nodes/fog/FogRangeNode.js +0 -0
  358. /package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_GGX.js +0 -0
  359. /package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +0 -0
  360. /package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +0 -0
  361. /package/{examples/jsm → src}/nodes/functions/BSDF/DFGApprox.js +0 -0
  362. /package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +0 -0
  363. /package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX_Anisotropic.js +0 -0
  364. /package/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +0 -0
  365. /package/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +0 -0
  366. /package/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +0 -0
  367. /package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +0 -0
  368. /package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +0 -0
  369. /package/{examples/jsm → src}/nodes/functions/ShadowMaskModel.js +0 -0
  370. /package/{examples/jsm → src}/nodes/functions/material/getGeometryRoughness.js +0 -0
  371. /package/{examples/jsm → src}/nodes/functions/material/getRoughness.js +0 -0
  372. /package/{examples/jsm → src}/nodes/gpgpu/ComputeNode.js +0 -0
  373. /package/{examples/jsm → src}/nodes/lighting/IrradianceNode.js +0 -0
  374. /package/{examples/jsm → src}/nodes/lighting/LightNode.js +0 -0
  375. /package/{examples/jsm → src}/nodes/lighting/LightUtils.js +0 -0
  376. /package/{examples/jsm → src}/nodes/lighting/LightingContextNode.js +0 -0
  377. /package/{examples/jsm → src}/nodes/materials/MeshSSSNodeMaterial.js +0 -0
  378. /package/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
  379. /package/{examples/jsm → src}/nodes/materialx/MaterialXNodes.js +0 -0
  380. /package/{examples/jsm → src}/nodes/math/MathUtils.js +0 -0
  381. /package/{examples/jsm → src}/nodes/math/TriNoise3D.js +0 -0
  382. /package/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +0 -0
  383. /package/{examples/jsm → src}/nodes/pmrem/PMREMUtils.js +0 -0
  384. /package/{examples/jsm → src}/nodes/procedural/CheckerNode.js +0 -0
  385. /package/{examples/jsm → src}/nodes/utils/ConvertNode.js +0 -0
  386. /package/{examples/jsm → src}/nodes/utils/EquirectUVNode.js +0 -0
  387. /package/{examples/jsm → src}/nodes/utils/JoinNode.js +0 -0
  388. /package/{examples/jsm → src}/nodes/utils/OscNode.js +0 -0
  389. /package/{examples/jsm → src}/nodes/utils/PackingNode.js +0 -0
  390. /package/{examples/jsm → src}/nodes/utils/RemapNode.js +0 -0
  391. /package/{examples/jsm → src}/nodes/utils/RotateNode.js +0 -0
  392. /package/{examples/jsm → src}/nodes/utils/RotateUVNode.js +0 -0
  393. /package/{examples/jsm → src}/nodes/utils/SetNode.js +0 -0
  394. /package/{examples/jsm → src}/nodes/utils/SplitNode.js +0 -0
  395. /package/{examples/jsm → src}/nodes/utils/SpriteSheetUVNode.js +0 -0
  396. /package/{examples/jsm → src}/nodes/utils/StorageArrayElementNode.js +0 -0
  397. /package/{examples/jsm → src}/nodes/utils/TriplanarTexturesNode.js +0 -0
  398. /package/{examples/jsm → src}/renderers/common/Animation.js +0 -0
  399. /package/{examples/jsm → src}/renderers/common/Binding.js +0 -0
  400. /package/{examples/jsm → src}/renderers/common/Buffer.js +0 -0
  401. /package/{examples/jsm → src}/renderers/common/BufferUtils.js +0 -0
  402. /package/{examples/jsm → src}/renderers/common/ComputePipeline.js +0 -0
  403. /package/{examples/jsm → src}/renderers/common/Constants.js +0 -0
  404. /package/{examples/jsm → src}/renderers/common/DataMap.js +0 -0
  405. /package/{examples/jsm → src}/renderers/common/Pipeline.js +0 -0
  406. /package/{examples/jsm → src}/renderers/common/ProgrammableStage.js +0 -0
  407. /package/{examples/jsm → src}/renderers/common/RenderLists.js +0 -0
  408. /package/{examples/jsm → src}/renderers/common/RenderObjects.js +0 -0
  409. /package/{examples/jsm → src}/renderers/common/RenderPipeline.js +0 -0
  410. /package/{examples/jsm → src}/renderers/common/Sampler.js +0 -0
  411. /package/{examples/jsm → src}/renderers/common/StorageBuffer.js +0 -0
  412. /package/{examples/jsm → src}/renderers/common/UniformBuffer.js +0 -0
  413. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBufferRenderer.js +0 -0
  414. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLCapabilities.js +0 -0
  415. /package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +0 -0
  416. /package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +0 -0
@@ -12,17 +12,26 @@ import Background from './Background.js';
12
12
  import Nodes from './nodes/Nodes.js';
13
13
  import Color4 from './Color4.js';
14
14
  import ClippingContext from './ClippingContext.js';
15
- import { Scene, Frustum, Matrix4, Vector2, Vector3, Vector4, DoubleSide, BackSide, FrontSide, SRGBColorSpace, NoColorSpace, NoToneMapping, LinearFilter, LinearSRGBColorSpace, RenderTarget, HalfFloatType, RGBAFormat } from 'three';
15
+ import QuadMesh from './QuadMesh.js';
16
+ import RenderBundles from './RenderBundles.js';
17
+
16
18
  import { NodeMaterial } from '../../nodes/Nodes.js';
17
- import QuadMesh from '../../objects/QuadMesh.js';
18
19
 
19
- const _scene = new Scene();
20
- const _drawingBufferSize = new Vector2();
21
- const _screen = new Vector4();
22
- const _frustum = new Frustum();
23
- const _projScreenMatrix = new Matrix4();
24
- const _vector3 = new Vector3();
25
- const _quad = new QuadMesh( new NodeMaterial() );
20
+ import { Scene } from '../../scenes/Scene.js';
21
+ import { Frustum } from '../../math/Frustum.js';
22
+ import { Matrix4 } from '../../math/Matrix4.js';
23
+ import { Vector2 } from '../../math/Vector2.js';
24
+ import { Vector3 } from '../../math/Vector3.js';
25
+ import { Vector4 } from '../../math/Vector4.js';
26
+ import { RenderTarget } from '../../core/RenderTarget.js';
27
+ import { DoubleSide, BackSide, FrontSide, SRGBColorSpace, NoColorSpace, NoToneMapping, LinearFilter, LinearSRGBColorSpace, HalfFloatType, RGBAFormat, PCFShadowMap } from '../../constants.js';
28
+
29
+ const _scene = /*@__PURE__*/ new Scene();
30
+ const _drawingBufferSize = /*@__PURE__*/ new Vector2();
31
+ const _screen = /*@__PURE__*/ new Vector4();
32
+ const _frustum = /*@__PURE__*/ new Frustum();
33
+ const _projScreenMatrix = /*@__PURE__*/ new Matrix4();
34
+ const _vector3 = /*@__PURE__*/ new Vector3();
26
35
 
27
36
  class Renderer {
28
37
 
@@ -34,15 +43,18 @@ class Renderer {
34
43
 
35
44
  const {
36
45
  logarithmicDepthBuffer = false,
37
- alpha = true
46
+ alpha = true,
47
+ antialias = false,
48
+ samples = 0
38
49
  } = parameters;
39
50
 
40
51
  // public
41
-
42
52
  this.domElement = backend.getDomElement();
43
53
 
44
54
  this.backend = backend;
45
55
 
56
+ this.samples = samples || ( antialias === true ) ? 4 : 0;
57
+
46
58
  this.autoClear = true;
47
59
  this.autoClearColor = true;
48
60
  this.autoClearDepth = true;
@@ -66,10 +78,6 @@ class Renderer {
66
78
 
67
79
  this.info = new Info();
68
80
 
69
- // nodes
70
-
71
- this.toneMappingNode = null;
72
-
73
81
  // internals
74
82
 
75
83
  this._pixelRatio = 1;
@@ -87,11 +95,14 @@ class Renderer {
87
95
  this._bindings = null;
88
96
  this._objects = null;
89
97
  this._pipelines = null;
98
+ this._bundles = null;
90
99
  this._renderLists = null;
91
100
  this._renderContexts = null;
92
101
  this._textures = null;
93
102
  this._background = null;
94
103
 
104
+ this._quad = new QuadMesh( new NodeMaterial() );
105
+
95
106
  this._currentRenderContext = null;
96
107
 
97
108
  this._opaqueSort = null;
@@ -109,8 +120,11 @@ class Renderer {
109
120
  this._activeCubeFace = 0;
110
121
  this._activeMipmapLevel = 0;
111
122
 
123
+ this._mrt = null;
124
+
112
125
  this._renderObjectFunction = null;
113
126
  this._currentRenderObjectFunction = null;
127
+ this._currentRenderBundle = null;
114
128
 
115
129
  this._handleObjectFunction = this._renderObjectDirect;
116
130
 
@@ -119,17 +133,23 @@ class Renderer {
119
133
 
120
134
  this._compilationPromises = null;
121
135
 
122
- // backwards compatibility
136
+ this.transparent = true;
137
+ this.opaque = true;
123
138
 
124
139
  this.shadowMap = {
125
140
  enabled: false,
126
- type: null
141
+ type: PCFShadowMap
127
142
  };
128
143
 
129
144
  this.xr = {
130
145
  enabled: false
131
146
  };
132
147
 
148
+ this.debug = {
149
+ checkShaderErrors: true,
150
+ onShaderError: null
151
+ };
152
+
133
153
  }
134
154
 
135
155
  async init() {
@@ -171,6 +191,7 @@ class Renderer {
171
191
  this._bindings = new Bindings( backend, this._nodes, this._textures, this._attributes, this._pipelines, this.info );
172
192
  this._objects = new RenderObjects( this, this._nodes, this._geometries, this._pipelines, this._bindings, this.info );
173
193
  this._renderLists = new RenderLists();
194
+ this._bundles = new RenderBundles();
174
195
  this._renderContexts = new RenderContexts();
175
196
 
176
197
  //
@@ -297,8 +318,8 @@ class Renderer {
297
318
  const transparentObjects = renderList.transparent;
298
319
  const lightsNode = renderList.lightsNode;
299
320
 
300
- if ( opaqueObjects.length > 0 ) this._renderObjects( opaqueObjects, camera, sceneRef, lightsNode );
301
- if ( transparentObjects.length > 0 ) this._renderObjects( transparentObjects, camera, sceneRef, lightsNode );
321
+ if ( this.opaque === true && opaqueObjects.length > 0 ) this._renderObjects( opaqueObjects, camera, sceneRef, lightsNode );
322
+ if ( this.transparent === true && transparentObjects.length > 0 ) this._renderObjects( transparentObjects, camera, sceneRef, lightsNode );
302
323
 
303
324
  // restore render tree
304
325
 
@@ -326,6 +347,97 @@ class Renderer {
326
347
 
327
348
  }
328
349
 
350
+ setMRT( mrt ) {
351
+
352
+ this._mrt = mrt;
353
+
354
+ return this;
355
+
356
+ }
357
+
358
+ getMRT() {
359
+
360
+ return this._mrt;
361
+
362
+ }
363
+
364
+ _renderBundle( bundle, sceneRef, lightsNode ) {
365
+
366
+ const { object, camera, renderList } = bundle;
367
+
368
+ const renderContext = this._currentRenderContext;
369
+ const renderContextData = this.backend.get( renderContext );
370
+
371
+ //
372
+
373
+ const renderBundle = this._bundles.get( object, camera );
374
+
375
+ const renderBundleData = this.backend.get( renderBundle );
376
+ if ( renderBundleData.renderContexts === undefined ) renderBundleData.renderContexts = new Set();
377
+
378
+ //
379
+
380
+ const renderBundleNeedsUpdate = renderBundleData.renderContexts.has( renderContext ) === false || object.needsUpdate === true;
381
+
382
+ renderBundleData.renderContexts.add( renderContext );
383
+
384
+ if ( renderBundleNeedsUpdate ) {
385
+
386
+ if ( renderContextData.renderObjects === undefined || object.needsUpdate === true ) {
387
+
388
+ const nodeFrame = this._nodes.nodeFrame;
389
+
390
+ renderContextData.renderObjects = [];
391
+ renderContextData.renderBundles = [];
392
+ renderContextData.scene = sceneRef;
393
+ renderContextData.camera = camera;
394
+ renderContextData.renderId = nodeFrame.renderId;
395
+
396
+ renderContextData.registerBundlesPhase = true;
397
+
398
+ }
399
+
400
+ this._currentRenderBundle = renderBundle;
401
+
402
+ const opaqueObjects = renderList.opaque;
403
+
404
+ if ( opaqueObjects.length > 0 ) this._renderObjects( opaqueObjects, camera, sceneRef, lightsNode );
405
+
406
+ this._currentRenderBundle = null;
407
+
408
+ //
409
+
410
+ object.needsUpdate = false;
411
+
412
+ } else {
413
+
414
+ const renderContext = this._currentRenderContext;
415
+ const renderContextData = this.backend.get( renderContext );
416
+
417
+ for ( let i = 0, l = renderContextData.renderObjects.length; i < l; i ++ ) {
418
+
419
+ const renderObject = renderContextData.renderObjects[ i ];
420
+
421
+ this._nodes.updateBefore( renderObject );
422
+
423
+ //
424
+
425
+ renderObject.object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, renderObject.object.matrixWorld );
426
+ renderObject.object.normalMatrix.getNormalMatrix( renderObject.object.modelViewMatrix );
427
+
428
+ this._nodes.updateForRender( renderObject );
429
+ this._bindings.updateForRender( renderObject );
430
+
431
+ this.backend.draw( renderObject, this.info );
432
+
433
+ this._nodes.updateAfter( renderObject );
434
+
435
+ }
436
+
437
+ }
438
+
439
+ }
440
+
329
441
  render( scene, camera ) {
330
442
 
331
443
  if ( this._initialized === false ) {
@@ -344,8 +456,8 @@ class Renderer {
344
456
 
345
457
  const { currentColorSpace } = this;
346
458
 
347
- const useToneMapping = this._renderTarget === null && ( this.toneMapping !== NoToneMapping || this.toneMappingNode !== null );
348
- const useColorSpace = currentColorSpace !== LinearSRGBColorSpace && currentColorSpace !== NoColorSpace;
459
+ const useToneMapping = this._renderTarget === null && ( this.toneMapping !== NoToneMapping );
460
+ const useColorSpace = this._renderTarget === null && ( currentColorSpace !== LinearSRGBColorSpace && currentColorSpace !== NoColorSpace );
349
461
 
350
462
  if ( useToneMapping === false && useColorSpace === false ) return null;
351
463
 
@@ -365,7 +477,7 @@ class Renderer {
365
477
  generateMipmaps: false,
366
478
  minFilter: LinearFilter,
367
479
  magFilter: LinearFilter,
368
- samples: this.backend.parameters.antialias ? 4 : 0
480
+ samples: this.samples
369
481
  } );
370
482
 
371
483
  frameBufferTarget.isPostProcessingRenderTarget = true;
@@ -435,6 +547,7 @@ class Renderer {
435
547
 
436
548
  this.info.calls ++;
437
549
  this.info.render.calls ++;
550
+ this.info.render.frameCalls ++;
438
551
 
439
552
  nodeFrame.renderId = this.info.calls;
440
553
 
@@ -456,7 +569,6 @@ class Renderer {
456
569
 
457
570
  if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
458
571
 
459
-
460
572
  //
461
573
 
462
574
  let viewport = this._viewport;
@@ -564,10 +676,12 @@ class Renderer {
564
676
 
565
677
  const opaqueObjects = renderList.opaque;
566
678
  const transparentObjects = renderList.transparent;
679
+ const bundles = renderList.bundles;
567
680
  const lightsNode = renderList.lightsNode;
568
681
 
569
- if ( opaqueObjects.length > 0 ) this._renderObjects( opaqueObjects, camera, sceneRef, lightsNode );
570
- if ( transparentObjects.length > 0 ) this._renderObjects( transparentObjects, camera, sceneRef, lightsNode );
682
+ if ( bundles.length > 0 ) this._renderBundles( bundles, sceneRef, lightsNode );
683
+ if ( this.opaque === true && opaqueObjects.length > 0 ) this._renderObjects( opaqueObjects, camera, sceneRef, lightsNode );
684
+ if ( this.transparent === true && transparentObjects.length > 0 ) this._renderObjects( transparentObjects, camera, sceneRef, lightsNode );
571
685
 
572
686
  // finish render pass
573
687
 
@@ -586,9 +700,16 @@ class Renderer {
586
700
 
587
701
  this.setRenderTarget( outputRenderTarget, activeCubeFace, activeMipmapLevel );
588
702
 
589
- _quad.material.fragmentNode = this._nodes.getOutputNode( renderTarget.texture );
703
+ const quad = this._quad;
590
704
 
591
- this._renderScene( _quad, _quad.camera, false );
705
+ if ( this._nodes.hasOutputChange( renderTarget.texture ) ) {
706
+
707
+ quad.material.fragmentNode = this._nodes.getOutputNode( renderTarget.texture );
708
+ quad.material.needsUpdate = true;
709
+
710
+ }
711
+
712
+ this._renderScene( quad, quad.camera, false );
592
713
 
593
714
  }
594
715
 
@@ -628,14 +749,6 @@ class Renderer {
628
749
 
629
750
  }
630
751
 
631
- getArrayBuffer( attribute ) { // @deprecated, r155
632
-
633
- console.warn( 'THREE.Renderer: getArrayBuffer() is deprecated. Use getArrayBufferAsync() instead.' );
634
-
635
- return this.getArrayBufferAsync( attribute );
636
-
637
- }
638
-
639
752
  async getArrayBufferAsync( attribute ) {
640
753
 
641
754
  return await this.backend.getArrayBufferAsync( attribute );
@@ -872,6 +985,24 @@ class Renderer {
872
985
 
873
986
  this.backend.clear( color, depth, stencil, renderTargetData );
874
987
 
988
+ if ( renderTarget !== null && this._renderTarget === null ) {
989
+
990
+ // If a color space transform or tone mapping is required,
991
+ // the clear operation clears the intermediate renderTarget texture, but does not update the screen canvas.
992
+
993
+ const quad = this._quad;
994
+
995
+ if ( this._nodes.hasOutputChange( renderTarget.texture ) ) {
996
+
997
+ quad.material.fragmentNode = this._nodes.getOutputNode( renderTarget.texture );
998
+ quad.material.needsUpdate = true;
999
+
1000
+ }
1001
+
1002
+ this._renderScene( quad, quad.camera, false );
1003
+
1004
+ }
1005
+
875
1006
  }
876
1007
 
877
1008
  clearColor() {
@@ -990,7 +1121,7 @@ class Renderer {
990
1121
 
991
1122
  this.info.calls ++;
992
1123
  this.info.compute.calls ++;
993
- this.info.compute.computeCalls ++;
1124
+ this.info.compute.frameCalls ++;
994
1125
 
995
1126
  nodeFrame.renderId = this.info.calls;
996
1127
 
@@ -1000,6 +1131,7 @@ class Renderer {
1000
1131
  const pipelines = this._pipelines;
1001
1132
  const bindings = this._bindings;
1002
1133
  const nodes = this._nodes;
1134
+
1003
1135
  const computeList = Array.isArray( computeNodes ) ? computeNodes : [ computeNodes ];
1004
1136
 
1005
1137
  if ( computeList[ 0 ] === undefined || computeList[ 0 ].isComputeNode !== true ) {
@@ -1086,12 +1218,12 @@ class Renderer {
1086
1218
 
1087
1219
  }
1088
1220
 
1089
- copyTextureToTexture( position, srcTexture, dstTexture, level = 0 ) {
1221
+ copyTextureToTexture( srcTexture, dstTexture, srcRegion = null, dstPosition = null, level = 0 ) {
1090
1222
 
1091
1223
  this._textures.updateTexture( srcTexture );
1092
1224
  this._textures.updateTexture( dstTexture );
1093
1225
 
1094
- this.backend.copyTextureToTexture( position, srcTexture, dstTexture, level );
1226
+ this.backend.copyTextureToTexture( srcTexture, dstTexture, srcRegion, dstPosition, level );
1095
1227
 
1096
1228
  }
1097
1229
 
@@ -1194,6 +1326,25 @@ class Renderer {
1194
1326
 
1195
1327
  }
1196
1328
 
1329
+ if ( object.static === true ) {
1330
+
1331
+ const baseRenderList = renderList;
1332
+
1333
+ // replace render list
1334
+ renderList = this._renderLists.get( object, camera );
1335
+
1336
+ renderList.begin();
1337
+
1338
+ baseRenderList.pushBundle( {
1339
+ object,
1340
+ camera,
1341
+ renderList,
1342
+ } );
1343
+
1344
+ renderList.finish();
1345
+
1346
+ }
1347
+
1197
1348
  const children = object.children;
1198
1349
 
1199
1350
  for ( let i = 0, l = children.length; i < l; i ++ ) {
@@ -1204,6 +1355,16 @@ class Renderer {
1204
1355
 
1205
1356
  }
1206
1357
 
1358
+ _renderBundles( bundles, sceneRef, lightsNode ) {
1359
+
1360
+ for ( const bundle of bundles ) {
1361
+
1362
+ this._renderBundle( bundle, sceneRef, lightsNode );
1363
+
1364
+ }
1365
+
1366
+ }
1367
+
1207
1368
  _renderObjects( renderList, camera, scene, lightsNode ) {
1208
1369
 
1209
1370
  // process renderable objects
@@ -1264,8 +1425,6 @@ class Renderer {
1264
1425
 
1265
1426
  object.onBeforeRender( this, scene, camera, geometry, material, group );
1266
1427
 
1267
- material.onBeforeRender( this, scene, camera, geometry, material, group );
1268
-
1269
1428
  //
1270
1429
 
1271
1430
  if ( scene.overrideMaterial !== null ) {
@@ -1397,8 +1556,27 @@ class Renderer {
1397
1556
 
1398
1557
  //
1399
1558
 
1559
+ if ( this._currentRenderBundle !== null && this._currentRenderBundle.needsUpdate === true ) {
1560
+
1561
+ const renderObjectData = this.backend.get( renderObject );
1562
+
1563
+ renderObjectData.bundleEncoder = undefined;
1564
+ renderObjectData.lastPipelineGPU = undefined;
1565
+
1566
+ }
1567
+
1400
1568
  this.backend.draw( renderObject, this.info );
1401
1569
 
1570
+ if ( this._currentRenderBundle !== null ) {
1571
+
1572
+ const renderContextData = this.backend.get( this._currentRenderContext );
1573
+
1574
+ renderContextData.renderObjects.push( renderObject );
1575
+
1576
+ }
1577
+
1578
+ this._nodes.updateAfter( renderObject );
1579
+
1402
1580
  }
1403
1581
 
1404
1582
  _createObjectPipeline( object, material, scene, camera, lightsNode, passId ) {
@@ -1417,6 +1595,8 @@ class Renderer {
1417
1595
 
1418
1596
  this._pipelines.getForRender( renderObject, this._compilationPromises );
1419
1597
 
1598
+ this._nodes.updateAfter( renderObject );
1599
+
1420
1600
  }
1421
1601
 
1422
1602
  get compute() {
@@ -1,6 +1,6 @@
1
1
  import Binding from './Binding.js';
2
2
 
3
- let id = 0;
3
+ let _id = 0;
4
4
 
5
5
  class SampledTexture extends Binding {
6
6
 
@@ -8,7 +8,7 @@ class SampledTexture extends Binding {
8
8
 
9
9
  super( name );
10
10
 
11
- this.id = id ++;
11
+ this.id = _id ++;
12
12
 
13
13
  this.texture = texture;
14
14
  this.version = texture ? texture.version : 0;
@@ -1,4 +1,4 @@
1
- import { BufferAttribute } from 'three';
1
+ import { BufferAttribute } from '../../core/BufferAttribute.js';
2
2
 
3
3
  class StorageBufferAttribute extends BufferAttribute {
4
4
 
@@ -1,4 +1,4 @@
1
- import { InstancedBufferAttribute } from 'three';
1
+ import { InstancedBufferAttribute } from '../../core/InstancedBufferAttribute.js';
2
2
 
3
3
  class StorageInstancedBufferAttribute extends InstancedBufferAttribute {
4
4
 
@@ -1,4 +1,5 @@
1
- import { Texture, LinearFilter } from 'three';
1
+ import { Texture } from '../../textures/Texture.js';
2
+ import { LinearFilter } from '../../constants.js';
2
3
 
3
4
  class StorageTexture extends Texture {
4
5
 
@@ -1,8 +1,10 @@
1
1
  import DataMap from './DataMap.js';
2
2
 
3
- import { Vector3, DepthTexture, DepthStencilFormat, DepthFormat, UnsignedIntType, UnsignedInt248Type, LinearFilter, NearestFilter, EquirectangularReflectionMapping, EquirectangularRefractionMapping, CubeReflectionMapping, CubeRefractionMapping, UnsignedByteType } from 'three';
3
+ import { Vector3 } from '../../math/Vector3.js';
4
+ import { DepthTexture } from '../../textures/DepthTexture.js';
5
+ import { DepthStencilFormat, DepthFormat, UnsignedIntType, UnsignedInt248Type, LinearFilter, NearestFilter, EquirectangularReflectionMapping, EquirectangularRefractionMapping, CubeReflectionMapping, CubeRefractionMapping, UnsignedByteType } from '../../constants.js';
4
6
 
5
- const _size = new Vector3();
7
+ const _size = /*@__PURE__*/ new Vector3();
6
8
 
7
9
  class Textures extends DataMap {
8
10
 
@@ -117,6 +119,8 @@ class Textures extends DataMap {
117
119
 
118
120
  this._destroyTexture( depthTexture );
119
121
 
122
+ this.delete( renderTarget );
123
+
120
124
  };
121
125
 
122
126
  renderTarget.addEventListener( 'dispose', onDispose );
@@ -1,8 +1,13 @@
1
- import { Color, Matrix3, Matrix4, Vector2, Vector3, Vector4 } from 'three';
1
+ import { Color } from '../../math/Color.js';
2
+ import { Matrix3 } from '../../math/Matrix3.js';
3
+ import { Matrix4 } from '../../math/Matrix4.js';
4
+ import { Vector2 } from '../../math/Vector2.js';
5
+ import { Vector3 } from '../../math/Vector3.js';
6
+ import { Vector4 } from '../../math/Vector4.js';
2
7
 
3
8
  class Uniform {
4
9
 
5
- constructor( name, value = null ) {
10
+ constructor( name, value ) {
6
11
 
7
12
  this.name = name;
8
13
  this.value = value;
@@ -28,13 +33,13 @@ class Uniform {
28
33
 
29
34
  }
30
35
 
31
- class FloatUniform extends Uniform {
36
+ class NumberUniform extends Uniform {
32
37
 
33
38
  constructor( name, value = 0 ) {
34
39
 
35
40
  super( name, value );
36
41
 
37
- this.isFloatUniform = true;
42
+ this.isNumberUniform = true;
38
43
 
39
44
  this.boundary = 4;
40
45
  this.itemSize = 1;
@@ -134,7 +139,7 @@ class Matrix4Uniform extends Uniform {
134
139
  }
135
140
 
136
141
  export {
137
- FloatUniform,
142
+ NumberUniform,
138
143
  Vector2Uniform, Vector3Uniform, Vector4Uniform, ColorUniform,
139
144
  Matrix3Uniform, Matrix4Uniform
140
145
  };