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
@@ -1,7 +1,8 @@
1
1
  import {
2
- GPUTextureAspect, GPUTextureViewDimension, GPUBufferBindingType, GPUTextureSampleType
2
+ GPUTextureAspect, GPUTextureViewDimension, GPUTextureSampleType
3
3
  } from './WebGPUConstants.js';
4
- import { FloatType, IntType, UnsignedIntType } from 'three';
4
+
5
+ import { FloatType, IntType, UnsignedIntType } from '../../../constants.js';
5
6
 
6
7
  class WebGPUBindingUtils {
7
8
 
@@ -11,7 +12,7 @@ class WebGPUBindingUtils {
11
12
 
12
13
  }
13
14
 
14
- createBindingsLayout( bindings ) {
15
+ createBindingsLayout( bindGroup ) {
15
16
 
16
17
  const backend = this.backend;
17
18
  const device = backend.device;
@@ -20,7 +21,7 @@ class WebGPUBindingUtils {
20
21
 
21
22
  let index = 0;
22
23
 
23
- for ( const binding of bindings ) {
24
+ for ( const binding of bindGroup.bindings ) {
24
25
 
25
26
  const bindingGPU = {
26
27
  binding: index ++,
@@ -33,7 +34,7 @@ class WebGPUBindingUtils {
33
34
 
34
35
  if ( binding.isStorageBuffer ) {
35
36
 
36
- buffer.type = GPUBufferBindingType.Storage;
37
+ buffer.type = binding.access;
37
38
 
38
39
  }
39
40
 
@@ -70,11 +71,17 @@ class WebGPUBindingUtils {
70
71
 
71
72
  const texture = {}; // GPUTextureBindingLayout
72
73
 
74
+ if ( binding.texture.isMultisampleRenderTargetTexture === true ) {
75
+
76
+ texture.multisampled = true;
77
+
78
+ }
79
+
73
80
  if ( binding.texture.isDepthTexture ) {
74
81
 
75
82
  texture.sampleType = GPUTextureSampleType.Depth;
76
83
 
77
- } else if ( binding.texture.isDataTexture ) {
84
+ } else if ( binding.texture.isDataTexture || binding.texture.isDataArrayTexture || binding.texture.isData3DTexture ) {
78
85
 
79
86
  const type = binding.texture.type;
80
87
 
@@ -126,19 +133,18 @@ class WebGPUBindingUtils {
126
133
 
127
134
  }
128
135
 
129
- createBindings( bindings ) {
136
+ createBindings( bindGroup ) {
130
137
 
131
138
  const backend = this.backend;
132
- const bindingsData = backend.get( bindings );
139
+ const bindingsData = backend.get( bindGroup );
133
140
 
134
141
  // setup (static) binding layout and (dynamic) binding group
135
142
 
136
- const bindLayoutGPU = this.createBindingsLayout( bindings );
137
- const bindGroupGPU = this.createBindGroup( bindings, bindLayoutGPU );
143
+ const bindLayoutGPU = this.createBindingsLayout( bindGroup );
144
+ const bindGroupGPU = this.createBindGroup( bindGroup, bindLayoutGPU );
138
145
 
139
146
  bindingsData.layout = bindLayoutGPU;
140
147
  bindingsData.group = bindGroupGPU;
141
- bindingsData.bindings = bindings;
142
148
 
143
149
  }
144
150
 
@@ -154,7 +160,7 @@ class WebGPUBindingUtils {
154
160
 
155
161
  }
156
162
 
157
- createBindGroup( bindings, layoutGPU ) {
163
+ createBindGroup( bindGroup, layoutGPU ) {
158
164
 
159
165
  const backend = this.backend;
160
166
  const device = backend.device;
@@ -162,7 +168,7 @@ class WebGPUBindingUtils {
162
168
  let bindingPoint = 0;
163
169
  const entriesGPU = [];
164
170
 
165
- for ( const binding of bindings ) {
171
+ for ( const binding of bindGroup.bindings ) {
166
172
 
167
173
  if ( binding.isUniformBuffer ) {
168
174
 
@@ -256,6 +262,7 @@ class WebGPUBindingUtils {
256
262
  }
257
263
 
258
264
  return device.createBindGroup( {
265
+ label: 'bindGroup_' + bindGroup.name,
259
266
  layout: layoutGPU,
260
267
  entries: entriesGPU
261
268
  } );
@@ -326,5 +326,7 @@ export const GPUFeatureName = {
326
326
  ShaderF16: 'shader-f16',
327
327
  RG11B10UFloat: 'rg11b10ufloat-renderable',
328
328
  BGRA8UNormStorage: 'bgra8unorm-storage',
329
- Float32Filterable: 'float32-filterable'
329
+ Float32Filterable: 'float32-filterable',
330
+ ClipDistances: 'clip-distances',
331
+ DualSourceBlending: 'dual-source-blending'
330
332
  };
@@ -13,7 +13,7 @@ import {
13
13
  AddEquation, SubtractEquation, ReverseSubtractEquation, MinEquation, MaxEquation,
14
14
  KeepStencilOp, ZeroStencilOp, ReplaceStencilOp, InvertStencilOp, IncrementStencilOp, DecrementStencilOp, IncrementWrapStencilOp, DecrementWrapStencilOp,
15
15
  NeverStencilFunc, AlwaysStencilFunc, LessStencilFunc, LessEqualStencilFunc, EqualStencilFunc, GreaterEqualStencilFunc, GreaterStencilFunc, NotEqualStencilFunc
16
- } from 'three';
16
+ } from '../../../constants.js';
17
17
 
18
18
  class WebGPUPipelineUtils {
19
19
 
@@ -25,22 +25,7 @@ class WebGPUPipelineUtils {
25
25
 
26
26
  _getSampleCount( renderObjectContext ) {
27
27
 
28
- let sampleCount = this.backend.utils.getSampleCount( renderObjectContext );
29
-
30
- if ( sampleCount > 1 ) {
31
-
32
- // WebGPU only supports power-of-two sample counts and 2 is not a valid value
33
- sampleCount = Math.pow( 2, Math.floor( Math.log2( sampleCount ) ) );
34
-
35
- if ( sampleCount === 2 ) {
36
-
37
- sampleCount = 4;
38
-
39
- }
40
-
41
- }
42
-
43
- return sampleCount;
28
+ return this.backend.utils.getSampleCountRenderContext( renderObjectContext );
44
29
 
45
30
  }
46
31
 
@@ -54,7 +39,18 @@ class WebGPUPipelineUtils {
54
39
  const utils = backend.utils;
55
40
 
56
41
  const pipelineData = backend.get( pipeline );
57
- const bindingsData = backend.get( renderObject.getBindings() );
42
+
43
+ // bind group layouts
44
+
45
+ const bindGroupLayouts = [];
46
+
47
+ for ( const bindGroup of renderObject.getBindings() ) {
48
+
49
+ const bindingsData = backend.get( bindGroup );
50
+
51
+ bindGroupLayouts.push( bindingsData.layout );
52
+
53
+ }
58
54
 
59
55
  // vertex buffers
60
56
 
@@ -145,7 +141,7 @@ class WebGPUPipelineUtils {
145
141
  alphaToCoverageEnabled: material.alphaToCoverage
146
142
  },
147
143
  layout: device.createPipelineLayout( {
148
- bindGroupLayouts: [ bindingsData.layout ]
144
+ bindGroupLayouts
149
145
  } )
150
146
  };
151
147
 
@@ -209,12 +205,23 @@ class WebGPUPipelineUtils {
209
205
  const computeProgram = backend.get( pipeline.computeProgram ).module;
210
206
 
211
207
  const pipelineGPU = backend.get( pipeline );
212
- const bindingsData = backend.get( bindings );
208
+
209
+ // bind group layouts
210
+
211
+ const bindGroupLayouts = [];
212
+
213
+ for ( const bindingsGroup of bindings ) {
214
+
215
+ const bindingsData = backend.get( bindingsGroup );
216
+
217
+ bindGroupLayouts.push( bindingsData.layout );
218
+
219
+ }
213
220
 
214
221
  pipelineGPU.pipeline = device.createComputePipeline( {
215
222
  compute: computeProgram,
216
223
  layout: device.createPipelineLayout( {
217
- bindGroupLayouts: [ bindingsData.layout ]
224
+ bindGroupLayouts
218
225
  } )
219
226
  } );
220
227
 
@@ -2,20 +2,22 @@ import {
2
2
  GPUTextureFormat, GPUAddressMode, GPUFilterMode, GPUTextureDimension, GPUFeatureName
3
3
  } from './WebGPUConstants.js';
4
4
 
5
+ import WebGPUTexturePassUtils from './WebGPUTexturePassUtils.js';
6
+
5
7
  import {
6
- ByteType, ShortType, CubeTexture, Texture,
8
+ ByteType, ShortType,
7
9
  NearestFilter, NearestMipmapNearestFilter, NearestMipmapLinearFilter,
8
10
  RepeatWrapping, MirroredRepeatWrapping,
9
11
  RGB_ETC2_Format, RGBA_ETC2_EAC_Format,
10
12
  RGBAFormat, RGBFormat, RedFormat, RGFormat, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, UnsignedByteType, FloatType, HalfFloatType, SRGBColorSpace, DepthFormat, DepthStencilFormat,
11
13
  RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format,
12
14
  RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, UnsignedIntType, UnsignedShortType, UnsignedInt248Type, UnsignedInt5999Type,
13
- NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare, IntType, RedIntegerFormat, RGIntegerFormat, RGBAIntegerFormat
14
- } from 'three';
15
-
16
- import { CubeReflectionMapping, CubeRefractionMapping, EquirectangularReflectionMapping, EquirectangularRefractionMapping, DepthTexture } from 'three';
17
-
18
- import WebGPUTexturePassUtils from './WebGPUTexturePassUtils.js';
15
+ NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare, IntType, RedIntegerFormat, RGIntegerFormat, RGBAIntegerFormat,
16
+ CubeReflectionMapping, CubeRefractionMapping, EquirectangularReflectionMapping, EquirectangularRefractionMapping
17
+ } from '../../../constants.js';
18
+ import { CubeTexture } from '../../../textures/CubeTexture.js';
19
+ import { DepthTexture } from '../../../textures/DepthTexture.js';
20
+ import { Texture } from '../../../textures/Texture.js';
19
21
 
20
22
  const _compareToWebGPU = {
21
23
  [ NeverCompare ]: 'never',
@@ -40,6 +42,7 @@ class WebGPUTextureUtils {
40
42
 
41
43
  this.defaultTexture = {};
42
44
  this.defaultCubeTexture = {};
45
+ this.defaultVideoFrame = null;
43
46
 
44
47
  this.colorBuffer = null;
45
48
 
@@ -85,6 +88,10 @@ class WebGPUTextureUtils {
85
88
 
86
89
  textureGPU = this._getDefaultCubeTextureGPU( format );
87
90
 
91
+ } else if ( texture.isVideoTexture ) {
92
+
93
+ this.backend.get( texture ).externalTexture = this._getDefaultVideoFrame();
94
+
88
95
  } else {
89
96
 
90
97
  textureGPU = this._getDefaultTextureGPU( format );
@@ -117,20 +124,9 @@ class WebGPUTextureUtils {
117
124
 
118
125
  let sampleCount = options.sampleCount !== undefined ? options.sampleCount : 1;
119
126
 
120
- if ( sampleCount > 1 ) {
121
-
122
- // WebGPU only supports power-of-two sample counts and 2 is not a valid value
123
- sampleCount = Math.pow( 2, Math.floor( Math.log2( sampleCount ) ) );
124
-
125
- if ( sampleCount === 2 ) {
127
+ sampleCount = backend.utils.getSampleCount( sampleCount );
126
128
 
127
- sampleCount = 4;
128
-
129
- }
130
-
131
- }
132
-
133
- const primarySampleCount = texture.isRenderTargetTexture ? 1 : sampleCount;
129
+ const primarySampleCount = texture.isRenderTargetTexture && ! texture.isMultisampleRenderTargetTexture ? 1 : sampleCount;
134
130
 
135
131
  let usage = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC;
136
132
 
@@ -188,7 +184,7 @@ class WebGPUTextureUtils {
188
184
 
189
185
  }
190
186
 
191
- if ( texture.isRenderTargetTexture && sampleCount > 1 ) {
187
+ if ( texture.isRenderTargetTexture && sampleCount > 1 && ! texture.isMultisampleRenderTargetTexture ) {
192
188
 
193
189
  const msaaTextureDescriptorGPU = Object.assign( {}, textureDescriptorGPU );
194
190
 
@@ -261,7 +257,7 @@ class WebGPUTextureUtils {
261
257
  height: height,
262
258
  depthOrArrayLayers: 1
263
259
  },
264
- sampleCount: backend.parameters.sampleCount,
260
+ sampleCount: backend.utils.getSampleCount( backend.renderer.samples ),
265
261
  format: GPUTextureFormat.BGRA8Unorm,
266
262
  usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC
267
263
  } );
@@ -310,7 +306,7 @@ class WebGPUTextureUtils {
310
306
  depthTexture.image.width = width;
311
307
  depthTexture.image.height = height;
312
308
 
313
- this.createTexture( depthTexture, { sampleCount: backend.parameters.sampleCount, width, height } );
309
+ this.createTexture( depthTexture, { sampleCount: backend.utils.getSampleCount( backend.renderer.samples ), width, height } );
314
310
 
315
311
  return backend.get( depthTexture ).texture;
316
312
 
@@ -464,6 +460,27 @@ class WebGPUTextureUtils {
464
460
 
465
461
  }
466
462
 
463
+ _getDefaultVideoFrame() {
464
+
465
+ let defaultVideoFrame = this.defaultVideoFrame;
466
+
467
+ if ( defaultVideoFrame === null ) {
468
+
469
+ const init = {
470
+ timestamp: 0,
471
+ codedWidth: 1,
472
+ codedHeight: 1,
473
+ format: 'RGBA',
474
+ };
475
+
476
+ this.defaultVideoFrame = defaultVideoFrame = new VideoFrame( new Uint8Array( [ 0, 0, 0, 0xff ] ), init );
477
+
478
+ }
479
+
480
+ return defaultVideoFrame;
481
+
482
+ }
483
+
467
484
  _copyCubeMapToTexture( images, textureGPU, textureDescriptorGPU, flipY ) {
468
485
 
469
486
  for ( let i = 0; i < 6; i ++ ) {
@@ -76,15 +76,36 @@ class WebGPUUtils {
76
76
 
77
77
  }
78
78
 
79
- getSampleCount( renderContext ) {
79
+ getSampleCount( sampleCount ) {
80
+
81
+ let count = 1;
82
+
83
+ if ( sampleCount > 1 ) {
84
+
85
+ // WebGPU only supports power-of-two sample counts and 2 is not a valid value
86
+ count = Math.pow( 2, Math.floor( Math.log2( sampleCount ) ) );
87
+
88
+ if ( count === 2 ) {
89
+
90
+ count = 4;
91
+
92
+ }
93
+
94
+ }
95
+
96
+ return count;
97
+
98
+ }
99
+
100
+ getSampleCountRenderContext( renderContext ) {
80
101
 
81
102
  if ( renderContext.textures !== null ) {
82
103
 
83
- return renderContext.sampleCount;
104
+ return this.getSampleCount( renderContext.sampleCount );
84
105
 
85
106
  }
86
107
 
87
- return this.backend.parameters.sampleCount;
108
+ return this.getSampleCount( this.backend.renderer.samples );
88
109
 
89
110
  }
90
111
 
@@ -99,6 +99,12 @@ class WebXRDepthSensing {
99
99
 
100
100
  }
101
101
 
102
+ getDepthTexture() {
103
+
104
+ return this.texture;
105
+
106
+ }
107
+
102
108
  }
103
109
 
104
110
  export { WebXRDepthSensing };
@@ -433,6 +433,12 @@ class WebXRManager extends EventDispatcher {
433
433
  session.updateRenderState( { layers: layersCopy } );
434
434
  }
435
435
 
436
+ this.getDepthTexture = function () {
437
+
438
+ return depthSensing.getDepthTexture();
439
+
440
+ };
441
+
436
442
  function onInputSourcesChange( event ) {
437
443
 
438
444
  // Notify disconnected
@@ -15,7 +15,7 @@ class CompressedArrayTexture extends CompressedTexture {
15
15
 
16
16
  }
17
17
 
18
- addLayerUpdates( layerIndex ) {
18
+ addLayerUpdate( layerIndex ) {
19
19
 
20
20
  this.layerUpdates.add( layerIndex );
21
21
 
@@ -1,12 +0,0 @@
1
- import { uniform } from '../core/UniformNode.js';
2
- import { Vector3 } from 'three';
3
-
4
- export const cameraNear = /*#__PURE__*/ uniform( 'float' ).onRenderUpdate( ( { camera } ) => camera.near );
5
- export const cameraFar = /*#__PURE__*/ uniform( 'float' ).onRenderUpdate( ( { camera } ) => camera.far );
6
- export const cameraLogDepth = /*#__PURE__*/ uniform( 'float' ).onRenderUpdate( ( { camera } ) => 2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );
7
- export const cameraProjectionMatrix = /*#__PURE__*/ uniform( 'mat4' ).onRenderUpdate( ( { camera } ) => camera.projectionMatrix );
8
- export const cameraProjectionMatrixInverse = /*#__PURE__*/ uniform( 'mat4' ).onRenderUpdate( ( { camera } ) => camera.projectionMatrixInverse );
9
- export const cameraViewMatrix = /*#__PURE__*/ uniform( 'mat4' ).onRenderUpdate( ( { camera } ) => camera.matrixWorldInverse );
10
- export const cameraWorldMatrix = /*#__PURE__*/ uniform( 'mat4' ).onRenderUpdate( ( { camera } ) => camera.matrixWorld );
11
- export const cameraNormalMatrix = /*#__PURE__*/ uniform( 'mat3' ).onRenderUpdate( ( { camera } ) => camera.normalMatrix );
12
- export const cameraPosition = /*#__PURE__*/ uniform( new Vector3() ).onRenderUpdate( ( { camera }, self ) => self.value.setFromMatrixPosition( camera.matrixWorld ) );
@@ -1,94 +0,0 @@
1
- import Node, { addNodeClass } from '../core/Node.js';
2
- import { varyingProperty } from '../core/PropertyNode.js';
3
- import { instancedBufferAttribute, instancedDynamicBufferAttribute } from './BufferAttributeNode.js';
4
- import { normalLocal } from './NormalNode.js';
5
- import { positionLocal } from './PositionNode.js';
6
- import { nodeProxy, vec3, mat3, mat4 } from '../shadernode/ShaderNode.js';
7
- import { DynamicDrawUsage, InstancedInterleavedBuffer, InstancedBufferAttribute } from 'three';
8
-
9
- class InstanceNode extends Node {
10
-
11
- constructor( instanceMesh ) {
12
-
13
- super( 'void' );
14
-
15
- this.instanceMesh = instanceMesh;
16
-
17
- this.instanceMatrixNode = null;
18
-
19
- this.instanceColorNode = null;
20
-
21
- }
22
-
23
- setup( /*builder*/ ) {
24
-
25
- let instanceMatrixNode = this.instanceMatrixNode;
26
-
27
- const instanceMesh = this.instanceMesh;
28
-
29
- if ( instanceMatrixNode === null ) {
30
-
31
- const instanceAttribute = instanceMesh.instanceMatrix;
32
- const buffer = new InstancedInterleavedBuffer( instanceAttribute.array, 16, 1 );
33
-
34
- const bufferFn = instanceAttribute.usage === DynamicDrawUsage ? instancedDynamicBufferAttribute : instancedBufferAttribute;
35
-
36
- const instanceBuffers = [
37
- // F.Signature -> bufferAttribute( array, type, stride, offset )
38
- bufferFn( buffer, 'vec4', 16, 0 ),
39
- bufferFn( buffer, 'vec4', 16, 4 ),
40
- bufferFn( buffer, 'vec4', 16, 8 ),
41
- bufferFn( buffer, 'vec4', 16, 12 )
42
- ];
43
-
44
- instanceMatrixNode = mat4( ...instanceBuffers );
45
-
46
- this.instanceMatrixNode = instanceMatrixNode;
47
-
48
- }
49
-
50
- const instanceColorAttribute = instanceMesh.instanceColor;
51
-
52
- if ( instanceColorAttribute && this.instanceColorNode === null ) {
53
-
54
- const buffer = new InstancedBufferAttribute( instanceColorAttribute.array, 3 );
55
- const bufferFn = instanceColorAttribute.usage === DynamicDrawUsage ? instancedDynamicBufferAttribute : instancedBufferAttribute;
56
-
57
- this.instanceColorNode = vec3( bufferFn( buffer, 'vec3', 3, 0 ) );
58
-
59
- }
60
-
61
- // POSITION
62
-
63
- const instancePosition = instanceMatrixNode.mul( positionLocal ).xyz;
64
-
65
- // NORMAL
66
-
67
- const m = mat3( instanceMatrixNode[ 0 ].xyz, instanceMatrixNode[ 1 ].xyz, instanceMatrixNode[ 2 ].xyz );
68
-
69
- const transformedNormal = normalLocal.div( vec3( m[ 0 ].dot( m[ 0 ] ), m[ 1 ].dot( m[ 1 ] ), m[ 2 ].dot( m[ 2 ] ) ) );
70
-
71
- const instanceNormal = m.mul( transformedNormal ).xyz;
72
-
73
- // ASSIGNS
74
-
75
- positionLocal.assign( instancePosition );
76
- normalLocal.assign( instanceNormal );
77
-
78
- // COLOR
79
-
80
- if ( this.instanceColorNode !== null ) {
81
-
82
- varyingProperty( 'vec3', 'vInstanceColor' ).assign( this.instanceColorNode );
83
-
84
- }
85
-
86
- }
87
-
88
- }
89
-
90
- export default InstanceNode;
91
-
92
- export const instance = nodeProxy( InstanceNode );
93
-
94
- addNodeClass( 'InstanceNode', InstanceNode );
@@ -1,26 +0,0 @@
1
- let id = 0;
2
-
3
- class NodeCache {
4
-
5
- constructor() {
6
-
7
- this.id = id ++;
8
- this.nodesData = new WeakMap();
9
-
10
- }
11
-
12
- getNodeData( node ) {
13
-
14
- return this.nodesData.get( node );
15
-
16
- }
17
-
18
- setNodeData( node, data ) {
19
-
20
- this.nodesData.set( node, data );
21
-
22
- }
23
-
24
- }
25
-
26
- export default NodeCache;