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
@@ -9,17 +9,22 @@ class Info {
9
9
 
10
10
  this.render = {
11
11
  calls: 0,
12
+ frameCalls: 0,
12
13
  drawCalls: 0,
13
14
  triangles: 0,
14
15
  points: 0,
15
16
  lines: 0,
16
- timestamp: 0
17
+ timestamp: 0,
18
+ previousFrameCalls: 0,
19
+ timestampCalls: 0
17
20
  };
18
21
 
19
22
  this.compute = {
20
23
  calls: 0,
21
- computeCalls: 0,
22
- timestamp: 0
24
+ frameCalls: 0,
25
+ timestamp: 0,
26
+ previousFrameCalls: 0,
27
+ timestampCalls: 0
23
28
  };
24
29
 
25
30
  this.memory = {
@@ -59,21 +64,44 @@ class Info {
59
64
 
60
65
  updateTimestamp( type, time ) {
61
66
 
67
+ if ( this[ type ].timestampCalls === 0 ) {
68
+
69
+ this[ type ].timestamp = 0;
70
+
71
+ }
72
+
73
+
62
74
  this[ type ].timestamp += time;
63
75
 
76
+ this[ type ].timestampCalls ++;
77
+
78
+
79
+ if ( this[ type ].timestampCalls >= this[ type ].previousFrameCalls ) {
80
+
81
+ this[ type ].timestampCalls = 0;
82
+
83
+ }
84
+
85
+
64
86
  }
65
87
 
66
88
  reset() {
67
89
 
90
+ const previousRenderFrameCalls = this.render.frameCalls;
91
+ this.render.previousFrameCalls = previousRenderFrameCalls;
92
+
93
+ const previousComputeFrameCalls = this.compute.frameCalls;
94
+ this.compute.previousFrameCalls = previousComputeFrameCalls;
95
+
96
+
68
97
  this.render.drawCalls = 0;
69
- this.compute.computeCalls = 0;
98
+ this.render.frameCalls = 0;
99
+ this.compute.frameCalls = 0;
70
100
 
71
101
  this.render.triangles = 0;
72
102
  this.render.points = 0;
73
103
  this.render.lines = 0;
74
104
 
75
- this.render.timestamp = 0;
76
- this.compute.timestamp = 0;
77
105
 
78
106
  }
79
107
 
@@ -0,0 +1,87 @@
1
+ import { vec4, renderOutput, NodeMaterial } from '../../nodes/Nodes.js';
2
+ import { LinearSRGBColorSpace, NoToneMapping } from '../../constants.js';
3
+ import QuadMesh from '../../renderers/common/QuadMesh.js';
4
+
5
+ const _material = /*@__PURE__*/ new NodeMaterial();
6
+ const _quadMesh = /*@__PURE__*/ new QuadMesh( _material );
7
+
8
+ class PostProcessing {
9
+
10
+ constructor( renderer, outputNode = vec4( 0, 0, 1, 1 ) ) {
11
+
12
+ this.renderer = renderer;
13
+ this.outputNode = outputNode;
14
+
15
+ this.outputColorTransform = true;
16
+
17
+ this.needsUpdate = true;
18
+
19
+ }
20
+
21
+ render() {
22
+
23
+ this.update();
24
+
25
+ const renderer = this.renderer;
26
+
27
+ const toneMapping = renderer.toneMapping;
28
+ const outputColorSpace = renderer.outputColorSpace;
29
+
30
+ renderer.toneMapping = NoToneMapping;
31
+ renderer.outputColorSpace = LinearSRGBColorSpace;
32
+
33
+ //
34
+
35
+ _quadMesh.render( renderer );
36
+
37
+ //
38
+
39
+ renderer.toneMapping = toneMapping;
40
+ renderer.outputColorSpace = outputColorSpace;
41
+
42
+ }
43
+
44
+ update() {
45
+
46
+ if ( this.needsUpdate === true ) {
47
+
48
+ const renderer = this.renderer;
49
+
50
+ const toneMapping = renderer.toneMapping;
51
+ const outputColorSpace = renderer.outputColorSpace;
52
+
53
+ _quadMesh.material.fragmentNode = this.outputColorTransform === true ? renderOutput( this.outputNode, toneMapping, outputColorSpace ) : this.outputNode.context( { toneMapping, outputColorSpace } );
54
+ _quadMesh.material.needsUpdate = true;
55
+
56
+ this.needsUpdate = false;
57
+
58
+ }
59
+
60
+ }
61
+
62
+ async renderAsync() {
63
+
64
+ this.update();
65
+
66
+ const renderer = this.renderer;
67
+
68
+ const toneMapping = renderer.toneMapping;
69
+ const outputColorSpace = renderer.outputColorSpace;
70
+
71
+ renderer.toneMapping = NoToneMapping;
72
+ renderer.outputColorSpace = LinearSRGBColorSpace;
73
+
74
+ //
75
+
76
+ await _quadMesh.renderAsync( renderer );
77
+
78
+ //
79
+
80
+ renderer.toneMapping = toneMapping;
81
+ renderer.outputColorSpace = outputColorSpace;
82
+
83
+ }
84
+
85
+ }
86
+
87
+ export default PostProcessing;
@@ -1,8 +1,11 @@
1
- import { BufferGeometry, Float32BufferAttribute, Mesh, OrthographicCamera } from 'three';
1
+ import { BufferGeometry } from '../../core/BufferGeometry.js';
2
+ import { Float32BufferAttribute } from '../../core/BufferAttribute.js';
3
+ import { Mesh } from '../../objects/Mesh.js';
4
+ import { OrthographicCamera } from '../../cameras/OrthographicCamera.js';
2
5
 
3
6
  // Helper for passes that need to fill the viewport with a single quad.
4
7
 
5
- const _camera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
8
+ const _camera = /*@__PURE__*/ new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
6
9
 
7
10
  // https://github.com/mrdoob/three.js/pull/21358
8
11
 
@@ -21,7 +24,7 @@ class QuadGeometry extends BufferGeometry {
21
24
 
22
25
  }
23
26
 
24
- const _geometry = new QuadGeometry();
27
+ const _geometry = /*@__PURE__*/ new QuadGeometry();
25
28
 
26
29
  class QuadMesh extends Mesh {
27
30
 
@@ -1,4 +1,4 @@
1
- import { Vector4 } from 'three';
1
+ import { Vector4 } from '../../math/Vector4.js';
2
2
 
3
3
  let id = 0;
4
4
 
@@ -22,7 +22,7 @@ class RenderContexts {
22
22
  } else {
23
23
 
24
24
  const format = renderTarget.texture.format;
25
- const count = renderTarget.count;
25
+ const count = renderTarget.textures.length;
26
26
 
27
27
  attachmentState = `${ count }:${ format }:${ renderTarget.samples }:${ renderTarget.depthBuffer }:${ renderTarget.stencilBuffer }`;
28
28
 
@@ -1,6 +1,6 @@
1
1
  import ClippingContext from './ClippingContext.js';
2
2
 
3
- let id = 0;
3
+ let _id = 0;
4
4
 
5
5
  function getKeys( obj ) {
6
6
 
@@ -43,7 +43,7 @@ export default class RenderObject {
43
43
  this._nodes = nodes;
44
44
  this._geometries = geometries;
45
45
 
46
- this.id = id ++;
46
+ this.id = _id ++;
47
47
 
48
48
  this.renderer = renderer;
49
49
  this.object = object;
@@ -66,7 +66,7 @@ export default class RenderObject {
66
66
 
67
67
  this.clippingContextVersion = this.clippingContext.version;
68
68
 
69
- this.initialNodesCacheKey = this.getNodesCacheKey();
69
+ this.initialNodesCacheKey = this.getDynamicCacheKey();
70
70
  this.initialCacheKey = this.getCacheKey();
71
71
 
72
72
  this._nodeBuilderState = null;
@@ -193,18 +193,45 @@ export default class RenderObject {
193
193
 
194
194
  if ( /^(is[A-Z]|_)|^(visible|version|uuid|name|opacity|userData)$/.test( property ) ) continue;
195
195
 
196
- let value = material[ property ];
196
+ const value = material[ property ];
197
+
198
+ let valueKey;
197
199
 
198
200
  if ( value !== null ) {
199
201
 
202
+ // some material values require a formatting
203
+
200
204
  const type = typeof value;
201
205
 
202
- if ( type === 'number' ) value = value !== 0 ? '1' : '0'; // Convert to on/off, important for clearcoat, transmission, etc
203
- else if ( type === 'object' ) value = '{}';
206
+ if ( type === 'number' ) {
207
+
208
+ valueKey = value !== 0 ? '1' : '0'; // Convert to on/off, important for clearcoat, transmission, etc
209
+
210
+ } else if ( type === 'object' ) {
211
+
212
+ valueKey = '{';
213
+
214
+ if ( value.isTexture ) {
215
+
216
+ valueKey += value.mapping;
217
+
218
+ }
219
+
220
+ valueKey += '}';
221
+
222
+ } else {
223
+
224
+ valueKey = String( value );
225
+
226
+ }
227
+
228
+ } else {
229
+
230
+ valueKey = String( value );
204
231
 
205
232
  }
206
233
 
207
- cacheKey += /*property + ':' +*/ value + ',';
234
+ cacheKey += /*property + ':' +*/ valueKey + ',';
208
235
 
209
236
  }
210
237
 
@@ -234,27 +261,33 @@ export default class RenderObject {
234
261
 
235
262
  }
236
263
 
264
+ if ( object.count > 1 ) {
265
+
266
+ cacheKey += object.count + ',';
267
+
268
+ }
269
+
237
270
  return cacheKey;
238
271
 
239
272
  }
240
273
 
241
274
  get needsUpdate() {
242
275
 
243
- return this.initialNodesCacheKey !== this.getNodesCacheKey() || this.clippingNeedsUpdate;
276
+ return this.initialNodesCacheKey !== this.getDynamicCacheKey() || this.clippingNeedsUpdate;
244
277
 
245
278
  }
246
279
 
247
- getNodesCacheKey() {
280
+ getDynamicCacheKey() {
248
281
 
249
282
  // Environment Nodes Cache Key
250
283
 
251
- return this._nodes.getCacheKey( this.scene, this.lightsNode );
284
+ return this.object.receiveShadow + ',' + this._nodes.getCacheKey( this.scene, this.lightsNode );
252
285
 
253
286
  }
254
287
 
255
288
  getCacheKey() {
256
289
 
257
- return this.getMaterialCacheKey() + ',' + this.getNodesCacheKey();
290
+ return this.getMaterialCacheKey() + ',' + this.getDynamicCacheKey();
258
291
 
259
292
  }
260
293
 
@@ -12,18 +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';
16
- import { NodeMaterial } from '../../nodes/Nodes.js';
17
- import QuadMesh from '../../objects/QuadMesh.js';
15
+ import QuadMesh from './QuadMesh.js';
18
16
  import RenderBundles from './RenderBundles.js';
19
17
 
20
- const _scene = new Scene();
21
- const _drawingBufferSize = new Vector2();
22
- const _screen = new Vector4();
23
- const _frustum = new Frustum();
24
- const _projScreenMatrix = new Matrix4();
25
- const _vector3 = new Vector3();
26
- const _quad = new QuadMesh( new NodeMaterial() );
18
+ import { NodeMaterial } from '../../nodes/Nodes.js';
19
+
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();
27
35
 
28
36
  class Renderer {
29
37
 
@@ -35,15 +43,18 @@ class Renderer {
35
43
 
36
44
  const {
37
45
  logarithmicDepthBuffer = false,
38
- alpha = true
46
+ alpha = true,
47
+ antialias = false,
48
+ samples = 0
39
49
  } = parameters;
40
50
 
41
51
  // public
42
-
43
52
  this.domElement = backend.getDomElement();
44
53
 
45
54
  this.backend = backend;
46
55
 
56
+ this.samples = samples || ( antialias === true ) ? 4 : 0;
57
+
47
58
  this.autoClear = true;
48
59
  this.autoClearColor = true;
49
60
  this.autoClearDepth = true;
@@ -67,10 +78,6 @@ class Renderer {
67
78
 
68
79
  this.info = new Info();
69
80
 
70
- // nodes
71
-
72
- this.toneMappingNode = null;
73
-
74
81
  // internals
75
82
 
76
83
  this._pixelRatio = 1;
@@ -94,6 +101,8 @@ class Renderer {
94
101
  this._textures = null;
95
102
  this._background = null;
96
103
 
104
+ this._quad = new QuadMesh( new NodeMaterial() );
105
+
97
106
  this._currentRenderContext = null;
98
107
 
99
108
  this._opaqueSort = null;
@@ -111,6 +120,8 @@ class Renderer {
111
120
  this._activeCubeFace = 0;
112
121
  this._activeMipmapLevel = 0;
113
122
 
123
+ this._mrt = null;
124
+
114
125
  this._renderObjectFunction = null;
115
126
  this._currentRenderObjectFunction = null;
116
127
  this._currentRenderBundle = null;
@@ -122,17 +133,23 @@ class Renderer {
122
133
 
123
134
  this._compilationPromises = null;
124
135
 
125
- // backwards compatibility
136
+ this.transparent = true;
137
+ this.opaque = true;
126
138
 
127
139
  this.shadowMap = {
128
140
  enabled: false,
129
- type: null
141
+ type: PCFShadowMap
130
142
  };
131
143
 
132
144
  this.xr = {
133
145
  enabled: false
134
146
  };
135
147
 
148
+ this.debug = {
149
+ checkShaderErrors: true,
150
+ onShaderError: null
151
+ };
152
+
136
153
  }
137
154
 
138
155
  async init() {
@@ -301,8 +318,8 @@ class Renderer {
301
318
  const transparentObjects = renderList.transparent;
302
319
  const lightsNode = renderList.lightsNode;
303
320
 
304
- if ( opaqueObjects.length > 0 ) this._renderObjects( opaqueObjects, camera, sceneRef, lightsNode );
305
- 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 );
306
323
 
307
324
  // restore render tree
308
325
 
@@ -330,6 +347,20 @@ class Renderer {
330
347
 
331
348
  }
332
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
+
333
364
  _renderBundle( bundle, sceneRef, lightsNode ) {
334
365
 
335
366
  const { object, camera, renderList } = bundle;
@@ -399,6 +430,8 @@ class Renderer {
399
430
 
400
431
  this.backend.draw( renderObject, this.info );
401
432
 
433
+ this._nodes.updateAfter( renderObject );
434
+
402
435
  }
403
436
 
404
437
  }
@@ -423,8 +456,8 @@ class Renderer {
423
456
 
424
457
  const { currentColorSpace } = this;
425
458
 
426
- const useToneMapping = this._renderTarget === null && ( this.toneMapping !== NoToneMapping || this.toneMappingNode !== null );
427
- 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 );
428
461
 
429
462
  if ( useToneMapping === false && useColorSpace === false ) return null;
430
463
 
@@ -444,7 +477,7 @@ class Renderer {
444
477
  generateMipmaps: false,
445
478
  minFilter: LinearFilter,
446
479
  magFilter: LinearFilter,
447
- samples: this.backend.parameters.antialias ? 4 : 0
480
+ samples: this.samples
448
481
  } );
449
482
 
450
483
  frameBufferTarget.isPostProcessingRenderTarget = true;
@@ -514,6 +547,7 @@ class Renderer {
514
547
 
515
548
  this.info.calls ++;
516
549
  this.info.render.calls ++;
550
+ this.info.render.frameCalls ++;
517
551
 
518
552
  nodeFrame.renderId = this.info.calls;
519
553
 
@@ -646,8 +680,8 @@ class Renderer {
646
680
  const lightsNode = renderList.lightsNode;
647
681
 
648
682
  if ( bundles.length > 0 ) this._renderBundles( bundles, sceneRef, lightsNode );
649
- if ( opaqueObjects.length > 0 ) this._renderObjects( opaqueObjects, camera, sceneRef, lightsNode );
650
- if ( transparentObjects.length > 0 ) this._renderObjects( transparentObjects, camera, 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 );
651
685
 
652
686
  // finish render pass
653
687
 
@@ -666,9 +700,16 @@ class Renderer {
666
700
 
667
701
  this.setRenderTarget( outputRenderTarget, activeCubeFace, activeMipmapLevel );
668
702
 
669
- _quad.material.fragmentNode = this._nodes.getOutputNode( renderTarget.texture );
703
+ const quad = this._quad;
704
+
705
+ if ( this._nodes.hasOutputChange( renderTarget.texture ) ) {
670
706
 
671
- this._renderScene( _quad, _quad.camera, false );
707
+ quad.material.fragmentNode = this._nodes.getOutputNode( renderTarget.texture );
708
+ quad.material.needsUpdate = true;
709
+
710
+ }
711
+
712
+ this._renderScene( quad, quad.camera, false );
672
713
 
673
714
  }
674
715
 
@@ -949,8 +990,16 @@ class Renderer {
949
990
  // If a color space transform or tone mapping is required,
950
991
  // the clear operation clears the intermediate renderTarget texture, but does not update the screen canvas.
951
992
 
952
- _quad.material.fragmentNode = this._nodes.getOutputNode( renderTarget.texture );
953
- this._renderScene( _quad, _quad.camera, false );
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 );
954
1003
 
955
1004
  }
956
1005
 
@@ -1072,7 +1121,7 @@ class Renderer {
1072
1121
 
1073
1122
  this.info.calls ++;
1074
1123
  this.info.compute.calls ++;
1075
- this.info.compute.computeCalls ++;
1124
+ this.info.compute.frameCalls ++;
1076
1125
 
1077
1126
  nodeFrame.renderId = this.info.calls;
1078
1127
 
@@ -1082,6 +1131,7 @@ class Renderer {
1082
1131
  const pipelines = this._pipelines;
1083
1132
  const bindings = this._bindings;
1084
1133
  const nodes = this._nodes;
1134
+
1085
1135
  const computeList = Array.isArray( computeNodes ) ? computeNodes : [ computeNodes ];
1086
1136
 
1087
1137
  if ( computeList[ 0 ] === undefined || computeList[ 0 ].isComputeNode !== true ) {
@@ -1375,8 +1425,6 @@ class Renderer {
1375
1425
 
1376
1426
  object.onBeforeRender( this, scene, camera, geometry, material, group );
1377
1427
 
1378
- material.onBeforeRender( this, scene, camera, geometry, material, group );
1379
-
1380
1428
  //
1381
1429
 
1382
1430
  if ( scene.overrideMaterial !== null ) {
@@ -1527,6 +1575,8 @@ class Renderer {
1527
1575
 
1528
1576
  }
1529
1577
 
1578
+ this._nodes.updateAfter( renderObject );
1579
+
1530
1580
  }
1531
1581
 
1532
1582
  _createObjectPipeline( object, material, scene, camera, lightsNode, passId ) {
@@ -1545,6 +1595,8 @@ class Renderer {
1545
1595
 
1546
1596
  this._pipelines.getForRender( renderObject, this._compilationPromises );
1547
1597
 
1598
+ this._nodes.updateAfter( renderObject );
1599
+
1548
1600
  }
1549
1601
 
1550
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,4 +1,9 @@
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
 
@@ -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
  };