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,6 +9,8 @@ class UniformsGroup extends UniformBuffer {
9
9
 
10
10
  this.isUniformsGroup = true;
11
11
 
12
+ this._values = null;
13
+
12
14
  // the order of uniforms in this array must match the order of uniforms in the shader
13
15
 
14
16
  this.uniforms = [];
@@ -37,6 +39,18 @@ class UniformsGroup extends UniformBuffer {
37
39
 
38
40
  }
39
41
 
42
+ get values() {
43
+
44
+ if ( this._values === null ) {
45
+
46
+ this._values = Array.from( this.buffer );
47
+
48
+ }
49
+
50
+ return this._values;
51
+
52
+ }
53
+
40
54
  get buffer() {
41
55
 
42
56
  let buffer = this._buffer;
@@ -116,7 +130,7 @@ class UniformsGroup extends UniformBuffer {
116
130
 
117
131
  updateByType( uniform ) {
118
132
 
119
- if ( uniform.isFloatUniform ) return this.updateNumber( uniform );
133
+ if ( uniform.isNumberUniform ) return this.updateNumber( uniform );
120
134
  if ( uniform.isVector2Uniform ) return this.updateVector2( uniform );
121
135
  if ( uniform.isVector3Uniform ) return this.updateVector3( uniform );
122
136
  if ( uniform.isVector4Uniform ) return this.updateVector4( uniform );
@@ -132,13 +146,15 @@ class UniformsGroup extends UniformBuffer {
132
146
 
133
147
  let updated = false;
134
148
 
135
- const a = this.buffer;
149
+ const a = this.values;
136
150
  const v = uniform.getValue();
137
151
  const offset = uniform.offset;
138
152
 
139
153
  if ( a[ offset ] !== v ) {
140
154
 
141
- a[ offset ] = v;
155
+ const b = this.buffer;
156
+
157
+ b[ offset ] = a[ offset ] = v;
142
158
  updated = true;
143
159
 
144
160
  }
@@ -151,14 +167,16 @@ class UniformsGroup extends UniformBuffer {
151
167
 
152
168
  let updated = false;
153
169
 
154
- const a = this.buffer;
170
+ const a = this.values;
155
171
  const v = uniform.getValue();
156
172
  const offset = uniform.offset;
157
173
 
158
174
  if ( a[ offset + 0 ] !== v.x || a[ offset + 1 ] !== v.y ) {
159
175
 
160
- a[ offset + 0 ] = v.x;
161
- a[ offset + 1 ] = v.y;
176
+ const b = this.buffer;
177
+
178
+ b[ offset + 0 ] = a[ offset + 0 ] = v.x;
179
+ b[ offset + 1 ] = a[ offset + 1 ] = v.y;
162
180
 
163
181
  updated = true;
164
182
 
@@ -172,15 +190,17 @@ class UniformsGroup extends UniformBuffer {
172
190
 
173
191
  let updated = false;
174
192
 
175
- const a = this.buffer;
193
+ const a = this.values;
176
194
  const v = uniform.getValue();
177
195
  const offset = uniform.offset;
178
196
 
179
197
  if ( a[ offset + 0 ] !== v.x || a[ offset + 1 ] !== v.y || a[ offset + 2 ] !== v.z ) {
180
198
 
181
- a[ offset + 0 ] = v.x;
182
- a[ offset + 1 ] = v.y;
183
- a[ offset + 2 ] = v.z;
199
+ const b = this.buffer;
200
+
201
+ b[ offset + 0 ] = a[ offset + 0 ] = v.x;
202
+ b[ offset + 1 ] = a[ offset + 1 ] = v.y;
203
+ b[ offset + 2 ] = a[ offset + 2 ] = v.z;
184
204
 
185
205
  updated = true;
186
206
 
@@ -194,16 +214,18 @@ class UniformsGroup extends UniformBuffer {
194
214
 
195
215
  let updated = false;
196
216
 
197
- const a = this.buffer;
217
+ const a = this.values;
198
218
  const v = uniform.getValue();
199
219
  const offset = uniform.offset;
200
220
 
201
221
  if ( a[ offset + 0 ] !== v.x || a[ offset + 1 ] !== v.y || a[ offset + 2 ] !== v.z || a[ offset + 4 ] !== v.w ) {
202
222
 
203
- a[ offset + 0 ] = v.x;
204
- a[ offset + 1 ] = v.y;
205
- a[ offset + 2 ] = v.z;
206
- a[ offset + 3 ] = v.w;
223
+ const b = this.buffer;
224
+
225
+ b[ offset + 0 ] = a[ offset + 0 ] = v.x;
226
+ b[ offset + 1 ] = a[ offset + 1 ] = v.y;
227
+ b[ offset + 2 ] = a[ offset + 2 ] = v.z;
228
+ b[ offset + 3 ] = a[ offset + 3 ] = v.w;
207
229
 
208
230
  updated = true;
209
231
 
@@ -217,15 +239,17 @@ class UniformsGroup extends UniformBuffer {
217
239
 
218
240
  let updated = false;
219
241
 
220
- const a = this.buffer;
242
+ const a = this.values;
221
243
  const c = uniform.getValue();
222
244
  const offset = uniform.offset;
223
245
 
224
246
  if ( a[ offset + 0 ] !== c.r || a[ offset + 1 ] !== c.g || a[ offset + 2 ] !== c.b ) {
225
247
 
226
- a[ offset + 0 ] = c.r;
227
- a[ offset + 1 ] = c.g;
228
- a[ offset + 2 ] = c.b;
248
+ const b = this.buffer;
249
+
250
+ b[ offset + 0 ] = a[ offset + 0 ] = c.r;
251
+ b[ offset + 1 ] = a[ offset + 1 ] = c.g;
252
+ b[ offset + 2 ] = a[ offset + 2 ] = c.b;
229
253
 
230
254
  updated = true;
231
255
 
@@ -239,7 +263,7 @@ class UniformsGroup extends UniformBuffer {
239
263
 
240
264
  let updated = false;
241
265
 
242
- const a = this.buffer;
266
+ const a = this.values;
243
267
  const e = uniform.getValue().elements;
244
268
  const offset = uniform.offset;
245
269
 
@@ -247,15 +271,17 @@ class UniformsGroup extends UniformBuffer {
247
271
  a[ offset + 4 ] !== e[ 3 ] || a[ offset + 5 ] !== e[ 4 ] || a[ offset + 6 ] !== e[ 5 ] ||
248
272
  a[ offset + 8 ] !== e[ 6 ] || a[ offset + 9 ] !== e[ 7 ] || a[ offset + 10 ] !== e[ 8 ] ) {
249
273
 
250
- a[ offset + 0 ] = e[ 0 ];
251
- a[ offset + 1 ] = e[ 1 ];
252
- a[ offset + 2 ] = e[ 2 ];
253
- a[ offset + 4 ] = e[ 3 ];
254
- a[ offset + 5 ] = e[ 4 ];
255
- a[ offset + 6 ] = e[ 5 ];
256
- a[ offset + 8 ] = e[ 6 ];
257
- a[ offset + 9 ] = e[ 7 ];
258
- a[ offset + 10 ] = e[ 8 ];
274
+ const b = this.buffer;
275
+
276
+ b[ offset + 0 ] = a[ offset + 0 ] = e[ 0 ];
277
+ b[ offset + 1 ] = a[ offset + 1 ] = e[ 1 ];
278
+ b[ offset + 2 ] = a[ offset + 2 ] = e[ 2 ];
279
+ b[ offset + 4 ] = a[ offset + 4 ] = e[ 3 ];
280
+ b[ offset + 5 ] = a[ offset + 5 ] = e[ 4 ];
281
+ b[ offset + 6 ] = a[ offset + 6 ] = e[ 5 ];
282
+ b[ offset + 8 ] = a[ offset + 8 ] = e[ 6 ];
283
+ b[ offset + 9 ] = a[ offset + 9 ] = e[ 7 ];
284
+ b[ offset + 10 ] = a[ offset + 10 ] = e[ 8 ];
259
285
 
260
286
  updated = true;
261
287
 
@@ -269,13 +295,15 @@ class UniformsGroup extends UniformBuffer {
269
295
 
270
296
  let updated = false;
271
297
 
272
- const a = this.buffer;
298
+ const a = this.values;
273
299
  const e = uniform.getValue().elements;
274
300
  const offset = uniform.offset;
275
301
 
276
302
  if ( arraysEqual( a, e, offset ) === false ) {
277
303
 
278
- a.set( e, offset );
304
+ const b = this.buffer;
305
+ b.set( e, offset );
306
+ setArray( a, e, offset );
279
307
  updated = true;
280
308
 
281
309
  }
@@ -286,6 +314,16 @@ class UniformsGroup extends UniformBuffer {
286
314
 
287
315
  }
288
316
 
317
+ function setArray( a, b, offset ) {
318
+
319
+ for ( let i = 0, l = b.length; i < l; i ++ ) {
320
+
321
+ a[ offset + i ] = b[ i ];
322
+
323
+ }
324
+
325
+ }
326
+
289
327
  function arraysEqual( a, b, offset ) {
290
328
 
291
329
  for ( let i = 0, l = b.length; i < l; i ++ ) {
@@ -8,14 +8,18 @@ import { cubeTexture } from '../../../nodes/accessors/CubeTextureNode.js';
8
8
  import { float, vec3 } from '../../../nodes/shadernode/ShaderNode.js';
9
9
  import { uv } from '../../../nodes/accessors/UVNode.js';
10
10
  import { attribute } from '../../../nodes/core/AttributeNode.js';
11
+
12
+ import { OrthographicCamera } from '../../../cameras/OrthographicCamera.js';
13
+ import { Color } from '../../../math/Color.js';
14
+ import { Vector3 } from '../../../math/Vector3.js';
15
+ import { BufferGeometry } from '../../../core/BufferGeometry.js';
16
+ import { BufferAttribute } from '../../../core/BufferAttribute.js';
17
+ import { RenderTarget } from '../../../core/RenderTarget.js';
18
+ import { Mesh } from '../../../objects/Mesh.js';
19
+ import { PerspectiveCamera } from '../../../cameras/PerspectiveCamera.js';
20
+ import { MeshBasicMaterial } from '../../../materials/MeshBasicMaterial.js';
21
+ import { BoxGeometry } from '../../../geometries/BoxGeometry.js';
11
22
  import {
12
- OrthographicCamera,
13
- Color,
14
- Vector3,
15
- BufferGeometry,
16
- BufferAttribute,
17
- RenderTarget,
18
- Mesh,
19
23
  CubeReflectionMapping,
20
24
  CubeRefractionMapping,
21
25
  CubeUVReflectionMapping,
@@ -24,11 +28,8 @@ import {
24
28
  RGBAFormat,
25
29
  HalfFloatType,
26
30
  BackSide,
27
- LinearSRGBColorSpace,
28
- PerspectiveCamera,
29
- MeshBasicMaterial,
30
- BoxGeometry
31
- } from 'three';
31
+ LinearSRGBColorSpace
32
+ } from '../../../constants.js';
32
33
 
33
34
  const LOD_MIN = 4;
34
35
 
@@ -0,0 +1,58 @@
1
+ import BindGroup from '../BindGroup.js';
2
+
3
+ class NodeBuilderState {
4
+
5
+ constructor( vertexShader, fragmentShader, computeShader, nodeAttributes, bindings, updateNodes, updateBeforeNodes, updateAfterNodes, instanceBindGroups = true, transforms = [] ) {
6
+
7
+ this.vertexShader = vertexShader;
8
+ this.fragmentShader = fragmentShader;
9
+ this.computeShader = computeShader;
10
+ this.transforms = transforms;
11
+
12
+ this.nodeAttributes = nodeAttributes;
13
+ this.bindings = bindings;
14
+
15
+ this.updateNodes = updateNodes;
16
+ this.updateBeforeNodes = updateBeforeNodes;
17
+ this.updateAfterNodes = updateAfterNodes;
18
+
19
+ this.instanceBindGroups = instanceBindGroups;
20
+
21
+ this.usedTimes = 0;
22
+
23
+ }
24
+
25
+ createBindings() {
26
+
27
+ const bindings = [];
28
+
29
+ for ( const instanceGroup of this.bindings ) {
30
+
31
+ const shared = this.instanceBindGroups && instanceGroup.bindings[ 0 ].groupNode.shared;
32
+
33
+ if ( shared !== true ) {
34
+
35
+ const bindingsGroup = new BindGroup( instanceGroup.name );
36
+ bindings.push( bindingsGroup );
37
+
38
+ for ( const instanceBinding of instanceGroup.bindings ) {
39
+
40
+ bindingsGroup.bindings.push( instanceBinding.clone() );
41
+
42
+ }
43
+
44
+ } else {
45
+
46
+ bindings.push( instanceGroup );
47
+
48
+ }
49
+
50
+ }
51
+
52
+ return bindings;
53
+
54
+ }
55
+
56
+ }
57
+
58
+ export default NodeBuilderState;
@@ -2,11 +2,12 @@ import { SampledTexture } from '../SampledTexture.js';
2
2
 
3
3
  class NodeSampledTexture extends SampledTexture {
4
4
 
5
- constructor( name, textureNode, access = null ) {
5
+ constructor( name, textureNode, groupNode, access = null ) {
6
6
 
7
7
  super( name, textureNode ? textureNode.value : null );
8
8
 
9
9
  this.textureNode = textureNode;
10
+ this.groupNode = groupNode;
10
11
 
11
12
  this.access = access;
12
13
 
@@ -38,9 +39,9 @@ class NodeSampledTexture extends SampledTexture {
38
39
 
39
40
  class NodeSampledCubeTexture extends NodeSampledTexture {
40
41
 
41
- constructor( name, textureNode, access ) {
42
+ constructor( name, textureNode, groupNode, access ) {
42
43
 
43
- super( name, textureNode, access );
44
+ super( name, textureNode, groupNode, access );
44
45
 
45
46
  this.isSampledCubeTexture = true;
46
47
 
@@ -50,9 +51,9 @@ class NodeSampledCubeTexture extends NodeSampledTexture {
50
51
 
51
52
  class NodeSampledTexture3D extends NodeSampledTexture {
52
53
 
53
- constructor( name, textureNode, access ) {
54
+ constructor( name, textureNode, groupNode, access ) {
54
55
 
55
- super( name, textureNode, access );
56
+ super( name, textureNode, groupNode, access );
56
57
 
57
58
  this.isSampledTexture3D = true;
58
59
 
@@ -2,11 +2,12 @@ import Sampler from '../Sampler.js';
2
2
 
3
3
  class NodeSampler extends Sampler {
4
4
 
5
- constructor( name, textureNode ) {
5
+ constructor( name, textureNode, groupNode ) {
6
6
 
7
7
  super( name, textureNode ? textureNode.value : null );
8
8
 
9
9
  this.textureNode = textureNode;
10
+ this.groupNode = groupNode;
10
11
 
11
12
  }
12
13
 
@@ -1,14 +1,18 @@
1
1
  import StorageBuffer from '../StorageBuffer.js';
2
+ import { GPUBufferBindingType } from '../../webgpu/utils/WebGPUConstants.js';
2
3
 
3
4
  let _id = 0;
4
5
 
5
6
  class NodeStorageBuffer extends StorageBuffer {
6
7
 
7
- constructor( nodeUniform ) {
8
+ constructor( nodeUniform, groupNode ) {
8
9
 
9
10
  super( 'StorageBuffer_' + _id ++, nodeUniform ? nodeUniform.value : null );
10
11
 
11
12
  this.nodeUniform = nodeUniform;
13
+ this.access = nodeUniform ? nodeUniform.access : GPUBufferBindingType.Storage;
14
+ this.groupNode = groupNode;
15
+
12
16
 
13
17
  }
14
18
 
@@ -1,9 +1,9 @@
1
1
  import {
2
- FloatUniform, Vector2Uniform, Vector3Uniform, Vector4Uniform,
2
+ NumberUniform, Vector2Uniform, Vector3Uniform, Vector4Uniform,
3
3
  ColorUniform, Matrix3Uniform, Matrix4Uniform
4
4
  } from '../Uniform.js';
5
5
 
6
- class FloatNodeUniform extends FloatUniform {
6
+ class NumberNodeUniform extends NumberUniform {
7
7
 
8
8
  constructor( nodeUniform ) {
9
9
 
@@ -130,6 +130,6 @@ class Matrix4NodeUniform extends Matrix4Uniform {
130
130
  }
131
131
 
132
132
  export {
133
- FloatNodeUniform, Vector2NodeUniform, Vector3NodeUniform, Vector4NodeUniform,
133
+ NumberNodeUniform, Vector2NodeUniform, Vector3NodeUniform, Vector4NodeUniform,
134
134
  ColorNodeUniform, Matrix3NodeUniform, Matrix4NodeUniform
135
135
  };
@@ -4,11 +4,12 @@ let _id = 0;
4
4
 
5
5
  class NodeUniformBuffer extends UniformBuffer {
6
6
 
7
- constructor( nodeUniform ) {
7
+ constructor( nodeUniform, groupNode ) {
8
8
 
9
9
  super( 'UniformBuffer_' + _id ++, nodeUniform ? nodeUniform.value : null );
10
10
 
11
11
  this.nodeUniform = nodeUniform;
12
+ this.groupNode = groupNode;
12
13
 
13
14
  }
14
15
 
@@ -1,6 +1,6 @@
1
1
  import UniformsGroup from '../UniformsGroup.js';
2
2
 
3
- let id = 0;
3
+ let _id = 0;
4
4
 
5
5
  class NodeUniformsGroup extends UniformsGroup {
6
6
 
@@ -8,19 +8,13 @@ class NodeUniformsGroup extends UniformsGroup {
8
8
 
9
9
  super( name );
10
10
 
11
- this.id = id ++;
11
+ this.id = _id ++;
12
12
  this.groupNode = groupNode;
13
13
 
14
14
  this.isNodeUniformsGroup = true;
15
15
 
16
16
  }
17
17
 
18
- get shared() {
19
-
20
- return this.groupNode.shared;
21
-
22
- }
23
-
24
18
  getNodes() {
25
19
 
26
20
  const nodes = [];
@@ -1,8 +1,11 @@
1
1
  import DataMap from '../DataMap.js';
2
2
  import ChainMap from '../ChainMap.js';
3
3
  import NodeBuilderState from './NodeBuilderState.js';
4
- import { EquirectangularReflectionMapping, EquirectangularRefractionMapping, NoToneMapping, SRGBColorSpace } from 'three';
5
- import { NodeFrame, vec4, objectGroup, renderGroup, frameGroup, cubeTexture, texture, rangeFog, densityFog, reference, viewportBottomLeft, normalWorld, pmremTexture, viewportTopLeft } from '../../../nodes/Nodes.js';
4
+ import { NodeFrame, objectGroup, renderGroup, frameGroup, cubeTexture, texture, rangeFog, densityFog, reference, viewportBottomLeft, normalWorld, pmremTexture, viewportTopLeft } from '../../../nodes/Nodes.js';
5
+
6
+ import { EquirectangularReflectionMapping, EquirectangularRefractionMapping } from '../../../constants.js';
7
+
8
+ const outputNodeMap = new WeakMap();
6
9
 
7
10
  class Nodes extends DataMap {
8
11
 
@@ -107,8 +110,10 @@ class Nodes extends DataMap {
107
110
 
108
111
  if ( nodeBuilderState === undefined ) {
109
112
 
110
- const nodeBuilder = this.backend.createNodeBuilder( renderObject.object, this.renderer, renderObject.scene );
113
+ const nodeBuilder = this.backend.createNodeBuilder( renderObject.object, this.renderer );
114
+ nodeBuilder.scene = renderObject.scene;
111
115
  nodeBuilder.material = renderObject.material;
116
+ nodeBuilder.camera = renderObject.camera;
112
117
  nodeBuilder.context.material = renderObject.material;
113
118
  nodeBuilder.lightsNode = renderObject.lightsNode;
114
119
  nodeBuilder.environmentNode = this.getEnvironmentNode( renderObject.scene );
@@ -182,6 +187,8 @@ class Nodes extends DataMap {
182
187
  nodeBuilder.getBindings(),
183
188
  nodeBuilder.updateNodes,
184
189
  nodeBuilder.updateBeforeNodes,
190
+ nodeBuilder.updateAfterNodes,
191
+ nodeBuilder.instanceBindGroups,
185
192
  nodeBuilder.transforms
186
193
  );
187
194
 
@@ -219,7 +226,7 @@ class Nodes extends DataMap {
219
226
 
220
227
  const cacheKey = [];
221
228
 
222
- if ( lightsNode ) cacheKey.push( lightsNode.getCacheKey() );
229
+ if ( lightsNode ) cacheKey.push( lightsNode.getCacheKey( true ) );
223
230
  if ( environmentNode ) cacheKey.push( environmentNode.getCacheKey() );
224
231
  if ( fogNode ) cacheKey.push( fogNode.getCacheKey() );
225
232
 
@@ -386,29 +393,30 @@ class Nodes extends DataMap {
386
393
 
387
394
  }
388
395
 
389
- getOutputNode( outputTexture ) {
396
+ getOutputCacheKey() {
390
397
 
391
- let output = texture( outputTexture, viewportTopLeft );
398
+ const renderer = this.renderer;
392
399
 
393
- if ( this.isToneMappingState ) {
400
+ return renderer.toneMapping + ',' + renderer.currentColorSpace;
394
401
 
395
- if ( this.renderer.toneMappingNode ) {
402
+ }
396
403
 
397
- output = vec4( this.renderer.toneMappingNode.context( { color: output.rgb } ), output.a );
404
+ hasOutputChange( outputTarget ) {
398
405
 
399
- } else if ( this.renderer.toneMapping !== NoToneMapping ) {
406
+ const cacheKey = outputNodeMap.get( outputTarget );
400
407
 
401
- output = output.toneMapping( this.renderer.toneMapping );
408
+ return cacheKey !== this.getOutputCacheKey();
402
409
 
403
- }
410
+ }
404
411
 
405
- }
412
+ getOutputNode( outputTexture ) {
406
413
 
407
- if ( this.renderer.currentColorSpace === SRGBColorSpace ) {
414
+ const renderer = this.renderer;
415
+ const cacheKey = this.getOutputCacheKey();
408
416
 
409
- output = output.linearToColorSpace( this.renderer.currentColorSpace );
417
+ const output = texture( outputTexture, viewportTopLeft ).renderOutput( renderer.toneMapping, renderer.currentColorSpace );
410
418
 
411
- }
419
+ outputNodeMap.set( outputTexture, cacheKey );
412
420
 
413
421
  return output;
414
422
 
@@ -427,6 +435,19 @@ class Nodes extends DataMap {
427
435
 
428
436
  }
429
437
 
438
+ updateAfter( renderObject ) {
439
+
440
+ const nodeFrame = this.getNodeFrameForRender( renderObject );
441
+ const nodeBuilder = renderObject.getNodeBuilderState();
442
+
443
+ for ( const node of nodeBuilder.updateAfterNodes ) {
444
+
445
+ nodeFrame.updateAfterNode( node );
446
+
447
+ }
448
+
449
+ }
450
+
430
451
  updateForCompute( computeNode ) {
431
452
 
432
453
  const nodeFrame = this.getNodeFrame();
@@ -1,7 +1,12 @@
1
1
  export default /* glsl */`
2
2
  #ifdef USE_BATCHING
3
- attribute float batchId;
3
+ #if ! defined( GL_ANGLE_multi_draw )
4
+ #define gl_DrawID _gl_DrawID
5
+ uniform int _gl_DrawID;
6
+ #endif
7
+
4
8
  uniform highp sampler2D batchingTexture;
9
+ uniform highp usampler2D batchingIdTexture;
5
10
  mat4 getBatchingMatrix( const in float i ) {
6
11
 
7
12
  int size = textureSize( batchingTexture, 0 ).x;
@@ -15,6 +20,16 @@ export default /* glsl */`
15
20
  return mat4( v1, v2, v3, v4 );
16
21
 
17
22
  }
23
+
24
+ float getIndirectIndex( const in int i ) {
25
+
26
+ int size = textureSize( batchingIdTexture, 0 ).x;
27
+ int x = i % size;
28
+ int y = i / size;
29
+ return float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r );
30
+
31
+ }
32
+
18
33
  #endif
19
34
 
20
35
  #ifdef USE_BATCHING_COLOR
@@ -1,5 +1,5 @@
1
1
  export default /* glsl */`
2
2
  #ifdef USE_BATCHING
3
- mat4 batchingMatrix = getBatchingMatrix( batchId );
3
+ mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) );
4
4
  #endif
5
5
  `;
@@ -23,7 +23,7 @@ export default /* glsl */`
23
23
 
24
24
  #ifdef USE_BATCHING_COLOR
25
25
 
26
- vec3 batchingColor = getBatchingColor( batchId );
26
+ vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );
27
27
 
28
28
  vColor.xyz *= batchingColor.xyz;
29
29
 
@@ -32,13 +32,4 @@ vec4 sRGBTransferOETF( in vec4 value ) {
32
32
  return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );
33
33
  }
34
34
 
35
- // @deprecated, r156
36
- vec4 LinearToLinear( in vec4 value ) {
37
- return value;
38
- }
39
-
40
- // @deprecated, r156
41
- vec4 LinearTosRGB( in vec4 value ) {
42
- return sRGBTransferOETF( value );
43
- }
44
35
  `;
@@ -85,16 +85,6 @@ mat3 transposeMat3( const in mat3 m ) {
85
85
 
86
86
  }
87
87
 
88
- float luminance( const in vec3 rgb ) {
89
-
90
- // assumes rgb is in linear color space with sRGB primaries and D65 white point
91
-
92
- const vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );
93
-
94
- return dot( weights, rgb );
95
-
96
- }
97
-
98
88
  bool isPerspectiveMatrix( mat4 m ) {
99
89
 
100
90
  return m[ 2 ][ 3 ] == - 1.0;
@@ -68,7 +68,7 @@ IncidentLight directLight;
68
68
 
69
69
  #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )
70
70
  pointLightShadow = pointLightShadows[ i ];
71
- directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;
71
+ directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;
72
72
  #endif
73
73
 
74
74
  RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
@@ -116,7 +116,7 @@ IncidentLight directLight;
116
116
 
117
117
  #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
118
118
  spotLightShadow = spotLightShadows[ i ];
119
- directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
119
+ directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
120
120
  #endif
121
121
 
122
122
  RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
@@ -142,7 +142,7 @@ IncidentLight directLight;
142
142
 
143
143
  #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )
144
144
  directionalLightShadow = directionalLightShadows[ i ];
145
- directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
145
+ directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
146
146
  #endif
147
147
 
148
148
  RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );