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
@@ -207,7 +207,7 @@ class InstancedMesh extends Mesh {
207
207
 
208
208
  if ( this.instanceColor === null ) {
209
209
 
210
- this.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );
210
+ this.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ).fill( 1 ), 3 );
211
211
 
212
212
  }
213
213
 
@@ -56,7 +56,7 @@ import { WebVRManager } from './webvr/WebVRManager.js';
56
56
  import { WebXRManager } from './webxr/WebXRManager.js';
57
57
  import { WebGLMaterials } from './webgl/WebGLMaterials.js';
58
58
  import { WebGLUniformsGroups } from './webgl/WebGLUniformsGroups.js';
59
- import { createCanvasElement, probeAsync } from '../utils.js';
59
+ import { createCanvasElement, probeAsync, warnOnce } from '../utils.js';
60
60
  import { ColorManagement } from '../math/ColorManagement.js';
61
61
 
62
62
  class WebGLRenderer {
@@ -203,6 +203,8 @@ class WebGLRenderer {
203
203
 
204
204
  const _vector3 = new Vector3();
205
205
 
206
+ const _vector4 = new Vector4();
207
+
206
208
  const _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };
207
209
 
208
210
  let _renderBackground = false;
@@ -862,7 +864,25 @@ class WebGLRenderer {
862
864
 
863
865
  } else {
864
866
 
865
- renderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );
867
+ if ( ! extensions.get( 'WEBGL_multi_draw' ) ) {
868
+
869
+ const starts = object._multiDrawStarts;
870
+ const counts = object._multiDrawCounts;
871
+ const drawCount = object._multiDrawCount;
872
+ const bytesPerElement = index ? attributes.get( index ).bytesPerElement : 1;
873
+ const uniforms = properties.get( material ).currentProgram.getUniforms();
874
+ for ( let i = 0; i < drawCount; i ++ ) {
875
+
876
+ uniforms.setValue( _gl, '_gl_DrawID', i );
877
+ renderer.render( starts[ i ] / bytesPerElement, counts[ i ] );
878
+
879
+ }
880
+
881
+ } else {
882
+
883
+ renderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );
884
+
885
+ }
866
886
 
867
887
  }
868
888
 
@@ -1335,7 +1355,7 @@ class WebGLRenderer {
1335
1355
 
1336
1356
  if ( sortObjects ) {
1337
1357
 
1338
- _vector3.setFromMatrixPosition( object.matrixWorld )
1358
+ _vector4.setFromMatrixPosition( object.matrixWorld )
1339
1359
  .applyMatrix4( _projScreenMatrix );
1340
1360
 
1341
1361
  }
@@ -1345,7 +1365,7 @@ class WebGLRenderer {
1345
1365
 
1346
1366
  if ( material.visible ) {
1347
1367
 
1348
- currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );
1368
+ currentRenderList.push( object, geometry, material, groupOrder, _vector4.z, null );
1349
1369
 
1350
1370
  }
1351
1371
 
@@ -1363,16 +1383,16 @@ class WebGLRenderer {
1363
1383
  if ( object.boundingSphere !== undefined ) {
1364
1384
 
1365
1385
  if ( object.boundingSphere === null ) object.computeBoundingSphere();
1366
- _vector3.copy( object.boundingSphere.center );
1386
+ _vector4.copy( object.boundingSphere.center );
1367
1387
 
1368
1388
  } else {
1369
1389
 
1370
1390
  if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();
1371
- _vector3.copy( geometry.boundingSphere.center );
1391
+ _vector4.copy( geometry.boundingSphere.center );
1372
1392
 
1373
1393
  }
1374
1394
 
1375
- _vector3
1395
+ _vector4
1376
1396
  .applyMatrix4( object.matrixWorld )
1377
1397
  .applyMatrix4( _projScreenMatrix );
1378
1398
 
@@ -1389,7 +1409,7 @@ class WebGLRenderer {
1389
1409
 
1390
1410
  if ( groupMaterial && groupMaterial.visible ) {
1391
1411
 
1392
- currentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );
1412
+ currentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector4.z, group );
1393
1413
 
1394
1414
  }
1395
1415
 
@@ -1397,7 +1417,7 @@ class WebGLRenderer {
1397
1417
 
1398
1418
  } else if ( material.visible ) {
1399
1419
 
1400
- currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );
1420
+ currentRenderList.push( object, geometry, material, groupOrder, _vector4.z, null );
1401
1421
 
1402
1422
  }
1403
1423
 
@@ -1492,15 +1512,9 @@ class WebGLRenderer {
1492
1512
  _currentClearAlpha = _this.getClearAlpha();
1493
1513
  if ( _currentClearAlpha < 1 ) _this.setClearColor( 0xffffff, 0.5 );
1494
1514
 
1495
- if ( _renderBackground ) {
1496
-
1497
- background.render( scene );
1515
+ _this.clear();
1498
1516
 
1499
- } else {
1500
-
1501
- _this.clear();
1502
-
1503
- }
1517
+ if ( _renderBackground ) background.render( scene );
1504
1518
 
1505
1519
  // Turn off the features which can affect the frag color for opaque objects pass.
1506
1520
  // Otherwise they are applied twice in opaque objects pass and transmission objects pass.
@@ -1601,8 +1615,6 @@ class WebGLRenderer {
1601
1615
  object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );
1602
1616
  object.normalMatrix.getNormalMatrix( object.modelViewMatrix );
1603
1617
 
1604
- material.onBeforeRender( _this, scene, camera, geometry, object, group );
1605
-
1606
1618
  if ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {
1607
1619
 
1608
1620
  material.side = BackSide;
@@ -1677,8 +1689,6 @@ class WebGLRenderer {
1677
1689
 
1678
1690
  parameters.uniforms = programCache.getUniforms( material );
1679
1691
 
1680
- material.onBuild( object, parameters, _this );
1681
-
1682
1692
  material.onBeforeCompile( parameters, _this );
1683
1693
 
1684
1694
  program = programCache.acquireProgram( parameters, programCacheKey );
@@ -2063,6 +2073,9 @@ class WebGLRenderer {
2063
2073
  p_uniforms.setOptional( _gl, object, 'batchingTexture' );
2064
2074
  p_uniforms.setValue( _gl, 'batchingTexture', object._matricesTexture, textures );
2065
2075
 
2076
+ p_uniforms.setOptional( _gl, object, 'batchingIdTexture' );
2077
+ p_uniforms.setValue( _gl, 'batchingIdTexture', object._indirectTexture, textures );
2078
+
2066
2079
  p_uniforms.setOptional( _gl, object, 'batchingColorTexture' );
2067
2080
  if ( object._colorsTexture !== null ) {
2068
2081
 
@@ -2550,7 +2563,7 @@ class WebGLRenderer {
2550
2563
  if ( texture.isTexture !== true ) {
2551
2564
 
2552
2565
  // @deprecated, r165
2553
- console.warn( 'WebGLRenderer: copyFramebufferToTexture function signature has changed.' );
2566
+ warnOnce( 'WebGLRenderer: copyFramebufferToTexture function signature has changed.' );
2554
2567
 
2555
2568
  position = arguments[ 0 ] || null;
2556
2569
  texture = arguments[ 1 ];
@@ -2578,7 +2591,7 @@ class WebGLRenderer {
2578
2591
  if ( srcTexture.isTexture !== true ) {
2579
2592
 
2580
2593
  // @deprecated, r165
2581
- console.warn( 'WebGLRenderer: copyTextureToTexture function signature has changed.' );
2594
+ warnOnce( 'WebGLRenderer: copyTextureToTexture function signature has changed.' );
2582
2595
 
2583
2596
  dstPosition = arguments[ 0 ] || null;
2584
2597
  srcTexture = arguments[ 1 ];
@@ -2654,7 +2667,7 @@ class WebGLRenderer {
2654
2667
 
2655
2668
  } else {
2656
2669
 
2657
- _gl.texSubImage2D( _gl.TEXTURE_2D, level, dstX, dstY, glFormat, glType, image );
2670
+ _gl.texSubImage2D( _gl.TEXTURE_2D, level, dstX, dstY, width, height, glFormat, glType, image );
2658
2671
 
2659
2672
  }
2660
2673
 
@@ -2679,7 +2692,7 @@ class WebGLRenderer {
2679
2692
  if ( srcTexture.isTexture !== true ) {
2680
2693
 
2681
2694
  // @deprecated, r165
2682
- console.warn( 'WebGLRenderer: copyTextureToTexture3D function signature has changed.' );
2695
+ warnOnce( 'WebGLRenderer: copyTextureToTexture3D function signature has changed.' );
2683
2696
 
2684
2697
  srcRegion = arguments[ 0 ] || null;
2685
2698
  dstPosition = arguments[ 1 ] || null;
@@ -1,6 +1,7 @@
1
1
  import DataMap from './DataMap.js';
2
2
  import { AttributeType } from './Constants.js';
3
- import { DynamicDrawUsage } from 'three';
3
+
4
+ import { DynamicDrawUsage } from '../../constants.js';
4
5
 
5
6
  class Attributes extends DataMap {
6
7
 
@@ -3,7 +3,10 @@ let vector4 = null;
3
3
  let color4 = null;
4
4
 
5
5
  import Color4 from './Color4.js';
6
- import { Vector2, Vector4, REVISION, createCanvasElement } from 'three';
6
+ import { Vector2 } from '../../math/Vector2.js';
7
+ import { Vector4 } from '../../math/Vector4.js';
8
+ import { createCanvasElement } from '../../utils.js';
9
+ import { REVISION } from '../../constants.js';
7
10
 
8
11
  class Backend {
9
12
 
@@ -24,63 +27,63 @@ class Backend {
24
27
 
25
28
  // render context
26
29
 
27
- begin( renderContext ) { }
30
+ begin( /*renderContext*/ ) { }
28
31
 
29
- finish( renderContext ) { }
32
+ finish( /*renderContext*/ ) { }
30
33
 
31
34
  // render object
32
35
 
33
- draw( renderObject, info ) { }
36
+ draw( /*renderObject, info*/ ) { }
34
37
 
35
38
  // program
36
39
 
37
- createProgram( program ) { }
40
+ createProgram( /*program*/ ) { }
38
41
 
39
- destroyProgram( program ) { }
42
+ destroyProgram( /*program*/ ) { }
40
43
 
41
44
  // bindings
42
45
 
43
- createBindings( renderObject ) { }
46
+ createBindings( /*renderObject*/ ) { }
44
47
 
45
- updateBindings( renderObject ) { }
48
+ updateBindings( /*renderObject*/ ) { }
46
49
 
47
50
  // pipeline
48
51
 
49
- createRenderPipeline( renderObject ) { }
52
+ createRenderPipeline( /*renderObject*/ ) { }
50
53
 
51
- createComputePipeline( computeNode, pipeline ) { }
54
+ createComputePipeline( /*computeNode, pipeline*/ ) { }
52
55
 
53
- destroyPipeline( pipeline ) { }
56
+ destroyPipeline( /*pipeline*/ ) { }
54
57
 
55
58
  // cache key
56
59
 
57
- needsRenderUpdate( renderObject ) { } // return Boolean ( fast test )
60
+ needsRenderUpdate( /*renderObject*/ ) { } // return Boolean ( fast test )
58
61
 
59
- getRenderCacheKey( renderObject ) { } // return String
62
+ getRenderCacheKey( /*renderObject*/ ) { } // return String
60
63
 
61
64
  // node builder
62
65
 
63
- createNodeBuilder( renderObject ) { } // return NodeBuilder (ADD IT)
66
+ createNodeBuilder( /*renderObject*/ ) { } // return NodeBuilder (ADD IT)
64
67
 
65
68
  // textures
66
69
 
67
- createSampler( texture ) { }
70
+ createSampler( /*texture*/ ) { }
68
71
 
69
- createDefaultTexture( texture ) { }
72
+ createDefaultTexture( /*texture*/ ) { }
70
73
 
71
- createTexture( texture ) { }
74
+ createTexture( /*texture*/ ) { }
72
75
 
73
- copyTextureToBuffer( texture, x, y, width, height ) {}
76
+ copyTextureToBuffer( /*texture, x, y, width, height*/ ) {}
74
77
 
75
78
  // attributes
76
79
 
77
- createAttribute( attribute ) { }
80
+ createAttribute( /*attribute*/ ) { }
78
81
 
79
- createIndexAttribute( attribute ) { }
82
+ createIndexAttribute( /*attribute*/ ) { }
80
83
 
81
- updateAttribute( attribute ) { }
84
+ updateAttribute( /*attribute*/ ) { }
82
85
 
83
- destroyAttribute( attribute ) { }
86
+ destroyAttribute( /*attribute*/ ) { }
84
87
 
85
88
  // canvas
86
89
 
@@ -90,17 +93,17 @@ class Backend {
90
93
 
91
94
  // utils
92
95
 
93
- resolveTimestampAsync( renderContext, type ) { }
96
+ resolveTimestampAsync( /*renderContext, type*/ ) { }
94
97
 
95
- hasFeatureAsync( name ) { } // return Boolean
98
+ hasFeatureAsync( /*name*/ ) { } // return Boolean
96
99
 
97
- hasFeature( name ) { } // return Boolean
100
+ hasFeature( /*name*/ ) { } // return Boolean
98
101
 
99
102
  getInstanceCount( renderObject ) {
100
103
 
101
104
  const { object, geometry } = renderObject;
102
105
 
103
- return geometry.isInstancedBufferGeometry ? geometry.instanceCount : ( object.isInstancedMesh ? object.count : 1 );
106
+ return geometry.isInstancedBufferGeometry ? geometry.instanceCount : ( object.count > 1 ? object.count : 1 );
104
107
 
105
108
  }
106
109
 
@@ -120,7 +123,7 @@ class Backend {
120
123
 
121
124
  }
122
125
 
123
- setScissorTest( boolean ) { }
126
+ setScissorTest( /*boolean*/ ) { }
124
127
 
125
128
  getClearColor() {
126
129
 
@@ -1,9 +1,12 @@
1
1
  import DataMap from './DataMap.js';
2
2
  import Color4 from './Color4.js';
3
- import { Mesh, SphereGeometry, BackSide, LinearSRGBColorSpace } from 'three';
4
3
  import { vec4, context, normalWorld, backgroundBlurriness, backgroundIntensity, NodeMaterial, modelViewProjection } from '../../nodes/Nodes.js';
5
4
 
6
- const _clearColor = new Color4();
5
+ import { Mesh } from '../../objects/Mesh.js';
6
+ import { SphereGeometry } from '../../geometries/SphereGeometry.js';
7
+ import { BackSide, LinearSRGBColorSpace } from '../../constants.js';
8
+
9
+ const _clearColor = /*@__PURE__*/ new Color4();
7
10
 
8
11
  class Background extends DataMap {
9
12
 
@@ -60,16 +63,19 @@ class Background extends DataMap {
60
63
  viewProj = viewProj.setZ( viewProj.w );
61
64
 
62
65
  const nodeMaterial = new NodeMaterial();
66
+ nodeMaterial.name = 'Background.material';
63
67
  nodeMaterial.side = BackSide;
64
68
  nodeMaterial.depthTest = false;
65
69
  nodeMaterial.depthWrite = false;
66
70
  nodeMaterial.fog = false;
71
+ nodeMaterial.lights = false;
67
72
  nodeMaterial.vertexNode = viewProj;
68
- nodeMaterial.fragmentNode = backgroundMeshNode;
73
+ nodeMaterial.colorNode = backgroundMeshNode;
69
74
 
70
75
  sceneData.backgroundMeshNode = backgroundMeshNode;
71
76
  sceneData.backgroundMesh = backgroundMesh = new Mesh( new SphereGeometry( 1, 32, 32 ), nodeMaterial );
72
77
  backgroundMesh.frustumCulled = false;
78
+ backgroundMesh.name = 'Background.mesh';
73
79
 
74
80
  backgroundMesh.onBeforeRender = function ( renderer, scene, camera ) {
75
81
 
@@ -0,0 +1,16 @@
1
+ let _id = 0;
2
+
3
+ class BindGroup {
4
+
5
+ constructor( name = '', bindings = [] ) {
6
+
7
+ this.name = name;
8
+ this.bindings = bindings;
9
+
10
+ this.id = _id ++;
11
+
12
+ }
13
+
14
+ }
15
+
16
+ export default BindGroup;
@@ -22,61 +22,77 @@ class Bindings extends DataMap {
22
22
 
23
23
  const bindings = renderObject.getBindings();
24
24
 
25
- const data = this.get( renderObject );
25
+ for ( const bindGroup of bindings ) {
26
26
 
27
- if ( data.bindings !== bindings ) {
27
+ const groupData = this.get( bindGroup );
28
28
 
29
- // each object defines an array of bindings (ubos, textures, samplers etc.)
29
+ if ( groupData.bindGroup === undefined ) {
30
30
 
31
- data.bindings = bindings;
31
+ // each object defines an array of bindings (ubos, textures, samplers etc.)
32
32
 
33
- this._init( bindings );
33
+ this._init( bindGroup );
34
34
 
35
- this.backend.createBindings( bindings );
35
+ this.backend.createBindings( bindGroup, bindings );
36
+
37
+ groupData.bindGroup = bindGroup;
38
+
39
+ }
36
40
 
37
41
  }
38
42
 
39
- return data.bindings;
43
+ return bindings;
40
44
 
41
45
  }
42
46
 
43
47
  getForCompute( computeNode ) {
44
48
 
45
- const data = this.get( computeNode );
49
+ const bindings = this.nodes.getForCompute( computeNode ).bindings;
46
50
 
47
- if ( data.bindings === undefined ) {
51
+ for ( const bindGroup of bindings ) {
48
52
 
49
- const nodeBuilderState = this.nodes.getForCompute( computeNode );
53
+ const groupData = this.get( bindGroup );
50
54
 
51
- const bindings = nodeBuilderState.bindings;
55
+ if ( groupData.bindGroup === undefined ) {
52
56
 
53
- data.bindings = bindings;
57
+ this._init( bindGroup );
54
58
 
55
- this._init( bindings );
59
+ this.backend.createBindings( bindGroup, bindings );
56
60
 
57
- this.backend.createBindings( bindings );
61
+ groupData.bindGroup = bindGroup;
62
+
63
+ }
58
64
 
59
65
  }
60
66
 
61
- return data.bindings;
67
+ return bindings;
62
68
 
63
69
  }
64
70
 
65
71
  updateForCompute( computeNode ) {
66
72
 
67
- this._update( computeNode, this.getForCompute( computeNode ) );
73
+ this._updateBindings( computeNode, this.getForCompute( computeNode ) );
68
74
 
69
75
  }
70
76
 
71
77
  updateForRender( renderObject ) {
72
78
 
73
- this._update( renderObject, this.getForRender( renderObject ) );
79
+ this._updateBindings( renderObject, this.getForRender( renderObject ) );
74
80
 
75
81
  }
76
82
 
77
- _init( bindings ) {
83
+ _updateBindings( object, bindings ) {
84
+
85
+ for ( const bindGroup of bindings ) {
78
86
 
79
- for ( const binding of bindings ) {
87
+ this._update( object, bindGroup, bindings );
88
+
89
+ }
90
+
91
+ }
92
+
93
+ _init( bindGroup ) {
94
+
95
+ for ( const binding of bindGroup.bindings ) {
80
96
 
81
97
  if ( binding.isSampledTexture ) {
82
98
 
@@ -94,7 +110,7 @@ class Bindings extends DataMap {
94
110
 
95
111
  }
96
112
 
97
- _update( object, bindings ) {
113
+ _update( object, bindGroup, bindings ) {
98
114
 
99
115
  const { backend } = this;
100
116
 
@@ -102,7 +118,7 @@ class Bindings extends DataMap {
102
118
 
103
119
  // iterate over all bindings and check if buffer updates or a new binding group is required
104
120
 
105
- for ( const binding of bindings ) {
121
+ for ( const binding of bindGroup.bindings ) {
106
122
 
107
123
  if ( binding.isNodeUniformsGroup ) {
108
124
 
@@ -152,7 +168,6 @@ class Bindings extends DataMap {
152
168
 
153
169
  }
154
170
 
155
-
156
171
  if ( texture.isStorageTexture === true ) {
157
172
 
158
173
  const textureData = this.get( texture );
@@ -179,7 +194,7 @@ class Bindings extends DataMap {
179
194
 
180
195
  const pipeline = this.pipelines.getForRender( object );
181
196
 
182
- this.backend.updateBindings( bindings, pipeline );
197
+ this.backend.updateBindings( bindGroup, bindings, pipeline );
183
198
 
184
199
  }
185
200
 
@@ -1,6 +1,8 @@
1
- import { Matrix3, Plane, Vector4 } from 'three';
1
+ import { Matrix3 } from '../../math/Matrix3.js';
2
+ import { Plane } from '../../math/Plane.js';
3
+ import { Vector4 } from '../../math/Vector4.js';
2
4
 
3
- const _plane = new Plane();
5
+ const _plane = /*@__PURE__*/ new Plane();
4
6
 
5
7
  let _clippingContextVersion = 0;
6
8
 
@@ -1,4 +1,4 @@
1
- import { Color } from 'three';
1
+ import { Color } from '../../math/Color.js';
2
2
 
3
3
  class Color4 extends Color {
4
4
 
@@ -1,9 +1,15 @@
1
- import { WebGLCubeRenderTarget, Scene, CubeCamera, BoxGeometry, Mesh, BackSide, NoBlending, LinearFilter, LinearMipmapLinearFilter } from 'three';
2
1
  import { equirectUV } from '../../nodes/utils/EquirectUVNode.js';
3
2
  import { texture as TSL_Texture } from '../../nodes/accessors/TextureNode.js';
4
3
  import { positionWorldDirection } from '../../nodes/accessors/PositionNode.js';
5
4
  import { createNodeMaterialFromType } from '../../nodes/materials/NodeMaterial.js';
6
5
 
6
+ import { WebGLCubeRenderTarget } from '../../renderers/WebGLCubeRenderTarget.js';
7
+ import { Scene } from '../../scenes/Scene.js';
8
+ import { CubeCamera } from '../../cameras/CubeCamera.js';
9
+ import { BoxGeometry } from '../../geometries/BoxGeometry.js';
10
+ import { Mesh } from '../../objects/Mesh.js';
11
+ import { BackSide, NoBlending, LinearFilter, LinearMipmapLinearFilter } from '../../constants.js';
12
+
7
13
  // @TODO: Consider rename WebGLCubeRenderTarget to just CubeRenderTarget
8
14
 
9
15
  class CubeRenderTarget extends WebGLCubeRenderTarget {
@@ -1,6 +1,7 @@
1
1
  import DataMap from './DataMap.js';
2
2
  import { AttributeType } from './Constants.js';
3
- import { Uint32BufferAttribute, Uint16BufferAttribute } from 'three';
3
+
4
+ import { Uint16BufferAttribute, Uint32BufferAttribute } from '../../core/BufferAttribute.js';
4
5
 
5
6
  function arrayNeedsUint32( array ) {
6
7
 
@@ -76,6 +77,7 @@ class Geometries extends DataMap {
76
77
  this.info = info;
77
78
 
78
79
  this.wireframes = new WeakMap();
80
+
79
81
  this.attributeCall = new WeakMap();
80
82
 
81
83
  }
@@ -146,7 +148,15 @@ class Geometries extends DataMap {
146
148
 
147
149
  for ( const attribute of attributes ) {
148
150
 
149
- this.updateAttribute( attribute, AttributeType.VERTEX );
151
+ if ( attribute.isStorageBufferAttribute || attribute.isStorageInstancedBufferAttribute ) {
152
+
153
+ this.updateAttribute( attribute, AttributeType.STORAGE );
154
+
155
+ } else {
156
+
157
+ this.updateAttribute( attribute, AttributeType.VERTEX );
158
+
159
+ }
150
160
 
151
161
  }
152
162
 
@@ -164,11 +174,33 @@ class Geometries extends DataMap {
164
174
 
165
175
  const callId = this.info.render.calls;
166
176
 
167
- if ( this.attributeCall.get( attribute ) !== callId ) {
177
+ if ( ! attribute.isInterleavedBufferAttribute ) {
178
+
179
+ if ( this.attributeCall.get( attribute ) !== callId ) {
180
+
181
+ this.attributes.update( attribute, type );
182
+
183
+ this.attributeCall.set( attribute, callId );
168
184
 
169
- this.attributes.update( attribute, type );
185
+ }
186
+
187
+ } else {
188
+
189
+ if ( this.attributeCall.get( attribute ) === undefined ) {
190
+
191
+ this.attributes.update( attribute, type );
192
+
193
+ this.attributeCall.set( attribute, callId );
170
194
 
171
- this.attributeCall.set( attribute, callId );
195
+ } else if ( this.attributeCall.get( attribute.data ) !== callId ) {
196
+
197
+ this.attributes.update( attribute, type );
198
+
199
+ this.attributeCall.set( attribute.data, callId );
200
+
201
+ this.attributeCall.set( attribute, callId );
202
+
203
+ }
172
204
 
173
205
  }
174
206