super-three 0.184.0 → 0.185.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 (366) hide show
  1. package/build/three.cjs +1260 -927
  2. package/build/three.core.js +1104 -829
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +156 -98
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +11 -4
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +7538 -3367
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +7538 -3366
  11. package/build/three.webgpu.nodes.min.js +1 -1
  12. package/examples/jsm/Addons.js +3 -0
  13. package/examples/jsm/controls/ArcballControls.js +6 -2
  14. package/examples/jsm/controls/FirstPersonControls.js +79 -42
  15. package/examples/jsm/controls/TransformControls.js +68 -15
  16. package/examples/jsm/csm/CSMFrustum.js +31 -6
  17. package/examples/jsm/csm/CSMShadowNode.js +4 -1
  18. package/examples/jsm/effects/AsciiEffect.js +14 -1
  19. package/examples/jsm/exporters/DRACOExporter.js +27 -6
  20. package/examples/jsm/exporters/GLTFExporter.js +114 -12
  21. package/examples/jsm/exporters/PLYExporter.js +286 -73
  22. package/examples/jsm/exporters/USDZExporter.js +347 -112
  23. package/examples/jsm/generators/CityGenerator.js +346 -0
  24. package/examples/jsm/generators/ForestGenerator.js +347 -0
  25. package/examples/jsm/generators/TerrainGenerator.js +504 -0
  26. package/examples/jsm/generators/TreeGenerator.js +377 -0
  27. package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
  28. package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
  29. package/examples/jsm/geometries/LoftGeometry.js +355 -0
  30. package/examples/jsm/helpers/LightProbeGridHelper.js +1 -1
  31. package/examples/jsm/helpers/LightProbeHelper.js +5 -4
  32. package/examples/jsm/helpers/ViewHelper.js +16 -6
  33. package/examples/jsm/inspector/Inspector.js +53 -15
  34. package/examples/jsm/inspector/RendererInspector.js +152 -36
  35. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +1 -1
  36. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +1 -1
  37. package/examples/jsm/inspector/tabs/Console.js +200 -18
  38. package/examples/jsm/inspector/tabs/Memory.js +8 -0
  39. package/examples/jsm/inspector/tabs/Parameters.js +64 -4
  40. package/examples/jsm/inspector/tabs/Performance.js +21 -6
  41. package/examples/jsm/inspector/tabs/Settings.js +51 -9
  42. package/examples/jsm/inspector/tabs/Timeline.js +178 -93
  43. package/examples/jsm/inspector/tabs/Viewer.js +628 -16
  44. package/examples/jsm/inspector/ui/Graph.js +162 -25
  45. package/examples/jsm/inspector/ui/Item.js +92 -13
  46. package/examples/jsm/inspector/ui/List.js +1 -1
  47. package/examples/jsm/inspector/ui/Profiler.js +90 -45
  48. package/examples/jsm/inspector/ui/Style.js +1788 -1401
  49. package/examples/jsm/inspector/ui/Tab.js +5 -3
  50. package/examples/jsm/inspector/ui/Values.js +71 -6
  51. package/examples/jsm/inspector/ui/utils.js +130 -10
  52. package/examples/jsm/libs/basis/README.md +0 -1
  53. package/examples/jsm/libs/demuxer_mp4.js +3 -3
  54. package/examples/jsm/libs/draco/README.md +0 -1
  55. package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
  56. package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
  57. package/examples/jsm/libs/mikktspace.module.js +34 -9
  58. package/examples/jsm/lighting/ClusteredLighting.js +55 -0
  59. package/examples/jsm/lighting/LightProbeGrid.js +106 -76
  60. package/examples/jsm/lines/LineMaterial.js +38 -15
  61. package/examples/jsm/lines/LineSegments2.js +8 -0
  62. package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
  63. package/examples/jsm/loaders/3DMLoader.js +1 -1
  64. package/examples/jsm/loaders/DRACOLoader.js +46 -13
  65. package/examples/jsm/loaders/EXRLoader.js +27 -55
  66. package/examples/jsm/loaders/HDRLoader.js +6 -28
  67. package/examples/jsm/loaders/KTX2Loader.js +31 -12
  68. package/examples/jsm/loaders/LDrawLoader.js +8 -8
  69. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  70. package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
  71. package/examples/jsm/loaders/LWOLoader.js +4 -0
  72. package/examples/jsm/loaders/LottieLoader.js +1 -1
  73. package/examples/jsm/loaders/MaterialXLoader.js +31 -9
  74. package/examples/jsm/loaders/NRRDLoader.js +3 -3
  75. package/examples/jsm/loaders/PCDLoader.js +7 -7
  76. package/examples/jsm/loaders/PLYLoader.js +218 -55
  77. package/examples/jsm/loaders/SVGLoader.js +547 -495
  78. package/examples/jsm/loaders/TTFLoader.js +1 -1
  79. package/examples/jsm/loaders/USDLoader.js +33 -9
  80. package/examples/jsm/loaders/VRMLLoader.js +1 -1
  81. package/examples/jsm/loaders/usd/USDAParser.js +93 -20
  82. package/examples/jsm/loaders/usd/USDCParser.js +1 -1
  83. package/examples/jsm/loaders/usd/USDComposer.js +52 -19
  84. package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
  85. package/examples/jsm/misc/Volume.js +2 -2
  86. package/examples/jsm/objects/GroundedSkybox.js +1 -1
  87. package/examples/jsm/objects/Reflector.js +2 -3
  88. package/examples/jsm/objects/Water2Mesh.js +1 -1
  89. package/examples/jsm/physics/AmmoPhysics.js +15 -8
  90. package/examples/jsm/physics/RapierPhysics.js +27 -2
  91. package/examples/jsm/shaders/VolumeShader.js +31 -44
  92. package/examples/jsm/transpiler/GLSLDecoder.js +6 -6
  93. package/examples/jsm/transpiler/Linker.js +1 -1
  94. package/examples/jsm/tsl/display/BloomNode.js +59 -19
  95. package/examples/jsm/tsl/display/DepthOfFieldNode.js +2 -2
  96. package/examples/jsm/tsl/display/FXAANode.js +11 -12
  97. package/examples/jsm/tsl/display/GTAONode.js +34 -13
  98. package/examples/jsm/tsl/display/GodraysNode.js +1 -1
  99. package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
  100. package/examples/jsm/tsl/display/PixelationPassNode.js +2 -2
  101. package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
  102. package/examples/jsm/tsl/display/SSAAPassNode.js +13 -25
  103. package/examples/jsm/tsl/display/SSGINode.js +89 -39
  104. package/examples/jsm/tsl/display/SSRNode.js +829 -132
  105. package/examples/jsm/tsl/display/SSSNode.js +2 -2
  106. package/examples/jsm/tsl/display/TemporalReprojectNode.js +1023 -0
  107. package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +622 -0
  108. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +1 -1
  109. package/examples/jsm/tsl/math/curlNoise.js +107 -0
  110. package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
  111. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
  112. package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
  113. package/examples/jsm/tsl/utils/RNoise.js +51 -0
  114. package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
  115. package/examples/jsm/utils/BufferGeometryUtils.js +126 -59
  116. package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
  117. package/examples/jsm/utils/SceneOptimizer.js +1 -1
  118. package/examples/jsm/webxr/ARButton.js +1 -1
  119. package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
  120. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
  121. package/package.json +7 -7
  122. package/src/Three.TSL.js +10 -3
  123. package/src/Three.WebGPU.js +4 -0
  124. package/src/animation/AnimationAction.js +15 -11
  125. package/src/animation/AnimationClip.js +0 -139
  126. package/src/animation/KeyframeTrack.js +2 -2
  127. package/src/animation/PropertyBinding.js +2 -2
  128. package/src/cameras/Camera.js +2 -2
  129. package/src/cameras/StereoCamera.js +5 -2
  130. package/src/constants.js +1 -1
  131. package/src/core/BufferGeometry.js +29 -7
  132. package/src/core/Object3D.js +17 -7
  133. package/src/core/Raycaster.js +1 -1
  134. package/src/core/RenderTarget.js +15 -2
  135. package/src/extras/PMREMGenerator.js +6 -4
  136. package/src/extras/TextureUtils.js +1 -1
  137. package/src/extras/core/ShapePath.js +149 -160
  138. package/src/geometries/SphereGeometry.js +8 -3
  139. package/src/helpers/DirectionalLightHelper.js +2 -0
  140. package/src/helpers/HemisphereLightHelper.js +2 -0
  141. package/src/helpers/PointLightHelper.js +2 -0
  142. package/src/helpers/SpotLightHelper.js +1 -1
  143. package/src/loaders/DataTextureLoader.js +69 -38
  144. package/src/loaders/LoadingManager.js +5 -0
  145. package/src/loaders/MaterialLoader.js +36 -266
  146. package/src/loaders/ObjectLoader.js +3 -1
  147. package/src/materials/LineBasicMaterial.js +4 -0
  148. package/src/materials/Material.js +196 -1
  149. package/src/materials/MeshBasicMaterial.js +24 -0
  150. package/src/materials/MeshDepthMaterial.js +10 -0
  151. package/src/materials/MeshDistanceMaterial.js +10 -0
  152. package/src/materials/MeshLambertMaterial.js +40 -1
  153. package/src/materials/MeshMatcapMaterial.js +25 -1
  154. package/src/materials/MeshNormalMaterial.js +9 -1
  155. package/src/materials/MeshPhongMaterial.js +40 -1
  156. package/src/materials/MeshPhysicalMaterial.js +38 -0
  157. package/src/materials/MeshStandardMaterial.js +42 -1
  158. package/src/materials/MeshToonMaterial.js +34 -1
  159. package/src/materials/PointsMaterial.js +7 -0
  160. package/src/materials/ShaderMaterial.js +86 -0
  161. package/src/materials/SpriteMaterial.js +7 -0
  162. package/src/materials/nodes/Line2NodeMaterial.js +378 -322
  163. package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
  164. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  165. package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
  166. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +0 -30
  167. package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
  168. package/src/materials/nodes/MeshStandardNodeMaterial.js +0 -11
  169. package/src/materials/nodes/NodeMaterial.js +115 -71
  170. package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
  171. package/src/materials/nodes/manager/NodeMaterialObserver.js +49 -20
  172. package/src/math/Box3.js +5 -0
  173. package/src/math/FrustumArray.js +103 -133
  174. package/src/math/Interpolant.js +1 -1
  175. package/src/math/MathUtils.js +2 -2
  176. package/src/math/Matrix3.js +11 -0
  177. package/src/math/Matrix4.js +28 -3
  178. package/src/math/Vector2.js +2 -2
  179. package/src/math/Vector3.js +2 -2
  180. package/src/math/Vector4.js +2 -2
  181. package/src/math/interpolants/BezierInterpolant.js +4 -6
  182. package/src/nodes/Nodes.js +2 -5
  183. package/src/nodes/TSL.js +8 -6
  184. package/src/nodes/accessors/Arrays.js +4 -4
  185. package/src/nodes/accessors/Batch.js +108 -0
  186. package/src/nodes/accessors/Bitangent.js +2 -2
  187. package/src/nodes/accessors/BufferAttributeNode.js +13 -2
  188. package/src/nodes/accessors/Camera.js +7 -7
  189. package/src/nodes/accessors/ClippingNode.js +1 -1
  190. package/src/nodes/accessors/Instance.js +264 -0
  191. package/src/nodes/accessors/MaterialNode.js +18 -2
  192. package/src/nodes/accessors/MaterialProperties.js +4 -3
  193. package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
  194. package/src/nodes/accessors/Normal.js +13 -13
  195. package/src/nodes/accessors/Position.js +5 -1
  196. package/src/nodes/accessors/ReferenceNode.js +1 -0
  197. package/src/nodes/accessors/ReflectVector.js +3 -3
  198. package/src/nodes/accessors/SceneProperties.js +1 -1
  199. package/src/nodes/accessors/Skinning.js +263 -0
  200. package/src/nodes/accessors/StorageBufferNode.js +2 -2
  201. package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
  202. package/src/nodes/accessors/StorageTextureNode.js +39 -7
  203. package/src/nodes/accessors/Tangent.js +4 -4
  204. package/src/nodes/accessors/TextureNode.js +60 -5
  205. package/src/nodes/code/FunctionNode.js +2 -16
  206. package/src/nodes/core/MRTNode.js +7 -2
  207. package/src/nodes/core/Node.js +39 -2
  208. package/src/nodes/core/NodeBuilder.js +201 -41
  209. package/src/nodes/core/NodeUtils.js +13 -13
  210. package/src/nodes/core/OutputStructNode.js +1 -1
  211. package/src/nodes/core/OverrideContextNode.js +153 -0
  212. package/src/nodes/core/PropertyNode.js +51 -5
  213. package/src/nodes/core/StackNode.js +56 -34
  214. package/src/nodes/core/StructNode.js +4 -6
  215. package/src/nodes/core/StructTypeNode.js +6 -6
  216. package/src/nodes/core/VarNode.js +8 -0
  217. package/src/nodes/core/VaryingNode.js +12 -2
  218. package/src/nodes/display/BlendModes.js +1 -41
  219. package/src/nodes/display/BumpMapNode.js +6 -1
  220. package/src/nodes/display/ColorAdjustment.js +10 -9
  221. package/src/nodes/display/FrontFacingNode.js +38 -9
  222. package/src/nodes/display/NormalMapNode.js +2 -2
  223. package/src/nodes/display/PassNode.js +35 -43
  224. package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
  225. package/src/nodes/display/RenderOutputNode.js +12 -3
  226. package/src/nodes/functions/VolumetricLightingModel.js +40 -7
  227. package/src/nodes/gpgpu/WorkgroupInfoNode.js +1 -1
  228. package/src/nodes/lighting/EnvironmentNode.js +2 -2
  229. package/src/nodes/lighting/IESSpotLightNode.js +40 -2
  230. package/src/nodes/lighting/LightingContextNode.js +10 -2
  231. package/src/nodes/lighting/LightsNode.js +90 -37
  232. package/src/nodes/lighting/PointShadowNode.js +6 -1
  233. package/src/nodes/lighting/ShadowFilterNode.js +21 -52
  234. package/src/nodes/lighting/ShadowNode.js +34 -14
  235. package/src/nodes/materialx/lib/mx_noise.js +2 -2
  236. package/src/nodes/math/ConditionalNode.js +3 -3
  237. package/src/nodes/math/MathNode.js +39 -11
  238. package/src/nodes/math/OperatorNode.js +23 -23
  239. package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
  240. package/src/nodes/pmrem/PMREMNode.js +33 -2
  241. package/src/nodes/tsl/TSLCore.js +63 -18
  242. package/src/nodes/utils/EquirectUV.js +30 -5
  243. package/src/nodes/utils/FunctionOverloadingNode.js +1 -1
  244. package/src/nodes/utils/Packing.js +35 -4
  245. package/src/nodes/utils/RTTNode.js +40 -24
  246. package/src/nodes/utils/ReflectorNode.js +1 -0
  247. package/src/nodes/utils/StorageArrayElementNode.js +1 -1
  248. package/src/objects/BatchedMesh.js +22 -14
  249. package/src/objects/InstancedMesh.js +0 -11
  250. package/src/objects/Skeleton.js +0 -9
  251. package/src/renderers/WebGLRenderer.js +19 -15
  252. package/src/renderers/common/Backend.js +49 -5
  253. package/src/renderers/common/Bindings.js +114 -45
  254. package/src/renderers/common/Buffer.js +9 -0
  255. package/src/renderers/common/ClippingContext.js +10 -2
  256. package/src/renderers/common/Info.js +63 -22
  257. package/src/renderers/common/Lighting.js +53 -5
  258. package/src/renderers/common/RenderList.js +41 -4
  259. package/src/renderers/common/RenderObject.js +73 -13
  260. package/src/renderers/common/Renderer.js +281 -108
  261. package/src/renderers/common/Sampler.js +16 -48
  262. package/src/renderers/common/Textures.js +32 -5
  263. package/src/renderers/common/TimestampQueryPool.js +1 -1
  264. package/src/renderers/common/UniformsGroup.js +31 -9
  265. package/src/renderers/common/XRManager.js +340 -22
  266. package/src/renderers/common/extras/PMREMGenerator.js +15 -38
  267. package/src/renderers/common/nodes/NodeBuilderState.js +9 -1
  268. package/src/renderers/common/nodes/NodeLibrary.js +4 -4
  269. package/src/renderers/common/nodes/NodeManager.js +63 -14
  270. package/src/renderers/common/nodes/NodeUniformBuffer.js +13 -0
  271. package/src/renderers/shaders/ShaderChunk/common.glsl.js +13 -4
  272. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
  273. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
  274. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
  275. package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
  276. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +1 -1
  277. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +1 -1
  278. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -2
  279. package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -0
  280. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +1 -1
  281. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  282. package/src/renderers/shaders/ShaderLib/distance.glsl.js +1 -1
  283. package/src/renderers/webgl/WebGLOutput.js +2 -1
  284. package/src/renderers/webgl/WebGLProgram.js +5 -4
  285. package/src/renderers/webgl/WebGLPrograms.js +12 -5
  286. package/src/renderers/webgl/WebGLRenderLists.js +9 -1
  287. package/src/renderers/webgl/WebGLShaderCache.js +5 -11
  288. package/src/renderers/webgl/WebGLTextures.js +20 -7
  289. package/src/renderers/webgl/WebGLUniformsGroups.js +66 -38
  290. package/src/renderers/webgl-fallback/WebGLBackend.js +84 -25
  291. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +138 -8
  292. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +1 -1
  293. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +52 -22
  294. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +4 -2
  295. package/src/renderers/webgpu/WebGPUBackend.js +480 -169
  296. package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
  297. package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
  298. package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
  299. package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
  300. package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
  301. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
  302. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
  303. package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
  304. package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
  305. package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
  306. package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
  307. package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
  308. package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
  309. package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
  310. package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
  311. package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
  312. package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
  313. package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
  314. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
  315. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
  316. package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
  317. package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
  318. package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
  319. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
  320. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +164 -7
  321. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
  322. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +98 -38
  323. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +72 -68
  324. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +164 -69
  325. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +158 -95
  326. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +297 -141
  327. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +33 -18
  328. package/src/renderers/webgpu/utils/WebGPUUtils.js +38 -3
  329. package/src/textures/DepthTexture.js +1 -1
  330. package/src/textures/ExternalTexture.js +0 -3
  331. package/examples/fonts/LICENSE +0 -13
  332. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  333. package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
  334. package/examples/fonts/README.md +0 -11
  335. package/examples/fonts/droid/NOTICE +0 -190
  336. package/examples/fonts/droid/README.txt +0 -18
  337. package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
  338. package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
  339. package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
  340. package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
  341. package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
  342. package/examples/fonts/gentilis_bold.typeface.json +0 -1
  343. package/examples/fonts/gentilis_regular.typeface.json +0 -1
  344. package/examples/fonts/helvetiker_bold.typeface.json +0 -1
  345. package/examples/fonts/helvetiker_regular.typeface.json +0 -1
  346. package/examples/fonts/optimer_bold.typeface.json +0 -1
  347. package/examples/fonts/optimer_regular.typeface.json +0 -1
  348. package/examples/fonts/ttf/README.md +0 -9
  349. package/examples/fonts/ttf/kenpixel.ttf +0 -0
  350. package/examples/jsm/inspector/extensions/extensions.json +0 -6
  351. package/examples/jsm/libs/ammo.wasm.js +0 -822
  352. package/examples/jsm/libs/ammo.wasm.wasm +0 -0
  353. package/examples/jsm/libs/draco/draco_encoder.js +0 -33
  354. package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
  355. package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
  356. package/examples/jsm/libs/opentype.module.js +0 -14506
  357. package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
  358. package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
  359. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  360. package/examples/jsm/lighting/TiledLighting.js +0 -42
  361. package/examples/jsm/tsl/display/AnamorphicNode.js +0 -293
  362. package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
  363. package/src/nodes/accessors/BatchNode.js +0 -163
  364. package/src/nodes/accessors/InstanceNode.js +0 -349
  365. package/src/nodes/accessors/InstancedMeshNode.js +0 -50
  366. package/src/nodes/accessors/SkinningNode.js +0 -328
@@ -1,5 +1,27 @@
1
1
  import DataMap from '../../common/DataMap.js';
2
2
  import { GPUFilterMode, GPULoadOp, GPUStoreOp } from './WebGPUConstants.js';
3
+ import { submit } from './WebGPUUtils.js';
4
+ import GPUBindGroupDescriptor from '../descriptors/GPUBindGroupDescriptor.js';
5
+ import GPUBufferDescriptor from '../descriptors/GPUBufferDescriptor.js';
6
+ import GPUCommandEncoderDescriptor from '../descriptors/GPUCommandEncoderDescriptor.js';
7
+ import GPURenderBundleEncoderDescriptor from '../descriptors/GPURenderBundleEncoderDescriptor.js';
8
+ import GPURenderPassColorAttachment from '../descriptors/GPURenderPassColorAttachment.js';
9
+ import GPURenderPassDescriptor from '../descriptors/GPURenderPassDescriptor.js';
10
+ import GPURenderPipelineDescriptor from '../descriptors/GPURenderPipelineDescriptor.js';
11
+ import GPUShaderModuleDescriptor from '../descriptors/GPUShaderModuleDescriptor.js';
12
+ import GPUTextureDescriptor from '../descriptors/GPUTextureDescriptor.js';
13
+ import GPUTextureViewDescriptor from '../descriptors/GPUTextureViewDescriptor.js';
14
+
15
+ const _bindGroupDescriptor = new GPUBindGroupDescriptor();
16
+ const _bufferDescriptor = new GPUBufferDescriptor();
17
+ const _commandEncoderDescriptor = new GPUCommandEncoderDescriptor();
18
+ const _renderBundleEncoderDescriptor = new GPURenderBundleEncoderDescriptor();
19
+ const _renderPassDescriptor = new GPURenderPassDescriptor();
20
+ const _renderPipelineDescriptor = new GPURenderPipelineDescriptor();
21
+ const _colorAttachment = new GPURenderPassColorAttachment();
22
+ const _shaderModuleDescriptor = new GPUShaderModuleDescriptor();
23
+ const _textureDescriptor = new GPUTextureDescriptor();
24
+ const _viewDescriptor = new GPUTextureViewDescriptor();
3
25
 
4
26
  /**
5
27
  * A WebGPU backend utility module used by {@link WebGPUTextureUtils}.
@@ -118,20 +140,25 @@ fn main_cube( Varys: VarysStruct ) -> @location( 0 ) vec4<f32> {
118
140
  * flip uniform buffer
119
141
  * @type {GPUBuffer}
120
142
  */
121
- this.flipUniformBuffer = device.createBuffer( {
122
- size: 4,
123
- usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
124
- } );
143
+ _bufferDescriptor.size = 4;
144
+ _bufferDescriptor.usage = GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST;
145
+
146
+ this.flipUniformBuffer = device.createBuffer( _bufferDescriptor );
147
+
148
+ _bufferDescriptor.reset();
149
+
125
150
  device.queue.writeBuffer( this.flipUniformBuffer, 0, new Uint32Array( [ 1 ] ) );
126
151
 
127
152
  /**
128
153
  * no flip uniform buffer
129
154
  * @type {GPUBuffer}
130
155
  */
131
- this.noFlipUniformBuffer = device.createBuffer( {
132
- size: 4,
133
- usage: GPUBufferUsage.UNIFORM
134
- } );
156
+ _bufferDescriptor.size = 4;
157
+ _bufferDescriptor.usage = GPUBufferUsage.UNIFORM;
158
+
159
+ this.noFlipUniformBuffer = device.createBuffer( _bufferDescriptor );
160
+
161
+ _bufferDescriptor.reset();
135
162
 
136
163
  /**
137
164
  * A cache for GPU render pipelines used for copy/transfer passes.
@@ -146,10 +173,12 @@ fn main_cube( Varys: VarysStruct ) -> @location( 0 ) vec4<f32> {
146
173
  *
147
174
  * @type {GPUShaderModule}
148
175
  */
149
- this.mipmapShaderModule = device.createShaderModule( {
150
- label: 'mipmap',
151
- code: mipmapSource
152
- } );
176
+ _shaderModuleDescriptor.label = 'mipmap';
177
+ _shaderModuleDescriptor.code = mipmapSource;
178
+
179
+ this.mipmapShaderModule = device.createShaderModule( _shaderModuleDescriptor );
180
+
181
+ _shaderModuleDescriptor.reset();
153
182
 
154
183
  }
155
184
 
@@ -169,18 +198,18 @@ fn main_cube( Varys: VarysStruct ) -> @location( 0 ) vec4<f32> {
169
198
 
170
199
  if ( pipeline === undefined ) {
171
200
 
172
- pipeline = this.device.createRenderPipeline( {
173
- label: `mipmap-${ format }-${ textureBindingViewDimension }`,
174
- vertex: {
175
- module: this.mipmapShaderModule,
176
- },
177
- fragment: {
178
- module: this.mipmapShaderModule,
179
- entryPoint: `main_${ textureBindingViewDimension.replace( '-', '_' ) }`,
180
- targets: [ { format } ]
181
- },
182
- layout: 'auto'
183
- } );
201
+ _renderPipelineDescriptor.label = `mipmap-${ format }-${ textureBindingViewDimension }`;
202
+ _renderPipelineDescriptor.vertex = { module: this.mipmapShaderModule };
203
+ _renderPipelineDescriptor.fragment = {
204
+ module: this.mipmapShaderModule,
205
+ entryPoint: `main_${ textureBindingViewDimension.replace( '-', '_' ) }`,
206
+ targets: [ { format } ]
207
+ };
208
+ _renderPipelineDescriptor.layout = 'auto';
209
+
210
+ pipeline = this.device.createRenderPipeline( _renderPipelineDescriptor );
211
+
212
+ _renderPipelineDescriptor.reset();
184
213
 
185
214
  this.transferPipelines[ key ] = pipeline;
186
215
 
@@ -202,53 +231,67 @@ fn main_cube( Varys: VarysStruct ) -> @location( 0 ) vec4<f32> {
202
231
  const format = textureGPUDescriptor.format;
203
232
  const { width, height } = textureGPUDescriptor.size;
204
233
 
205
- const tempTexture = this.device.createTexture( {
206
- size: { width, height },
207
- format,
208
- usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING
209
- } );
234
+ _textureDescriptor.size.width = width;
235
+ _textureDescriptor.size.height = height;
236
+ _textureDescriptor.format = format;
237
+ _textureDescriptor.usage = GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING;
238
+
239
+ const tempTexture = this.device.createTexture( _textureDescriptor );
240
+
241
+ _textureDescriptor.reset();
210
242
 
211
243
  const copyTransferPipeline = this.getTransferPipeline( format, textureGPU.textureBindingViewDimension );
212
244
  const flipTransferPipeline = this.getTransferPipeline( format, tempTexture.textureBindingViewDimension );
213
245
 
214
- const commandEncoder = this.device.createCommandEncoder( {} );
246
+ const commandEncoder = this.device.createCommandEncoder( _commandEncoderDescriptor );
215
247
 
216
248
  const pass = ( pipeline, sourceTexture, sourceArrayLayer, destinationTexture, destinationArrayLayer, flipY ) => {
217
249
 
218
250
  const bindGroupLayout = pipeline.getBindGroupLayout( 0 ); // @TODO: Consider making this static.
219
251
 
220
- const bindGroup = this.device.createBindGroup( {
221
- layout: bindGroupLayout,
222
- entries: [ {
223
- binding: 0,
224
- resource: this.flipYSampler
225
- }, {
226
- binding: 1,
227
- resource: sourceTexture.createView( {
228
- dimension: sourceTexture.textureBindingViewDimension || '2d-array',
229
- baseMipLevel: 0,
230
- mipLevelCount: 1,
231
- } ),
232
- }, {
233
- binding: 2,
234
- resource: { buffer: flipY ? this.flipUniformBuffer : this.noFlipUniformBuffer }
235
- } ]
236
- } );
252
+ _viewDescriptor.dimension = sourceTexture.textureBindingViewDimension || '2d-array';
253
+ _viewDescriptor.mipLevelCount = 1;
254
+
255
+ const sourceView = sourceTexture.createView( _viewDescriptor );
256
+
257
+ _viewDescriptor.reset();
237
258
 
238
- const passEncoder = commandEncoder.beginRenderPass( {
239
- colorAttachments: [ {
240
- view: destinationTexture.createView( {
241
- dimension: '2d',
242
- baseMipLevel: 0,
243
- mipLevelCount: 1,
244
- baseArrayLayer: destinationArrayLayer,
245
- arrayLayerCount: 1,
246
- } ),
247
- loadOp: GPULoadOp.Clear,
248
- storeOp: GPUStoreOp.Store,
249
- } ]
259
+ _bindGroupDescriptor.layout = bindGroupLayout;
260
+ _bindGroupDescriptor.entries.push( {
261
+ binding: 0,
262
+ resource: this.flipYSampler
263
+ }, {
264
+ binding: 1,
265
+ resource: sourceView,
266
+ }, {
267
+ binding: 2,
268
+ resource: { buffer: flipY ? this.flipUniformBuffer : this.noFlipUniformBuffer }
250
269
  } );
251
270
 
271
+ const bindGroup = this.device.createBindGroup( _bindGroupDescriptor );
272
+
273
+ _bindGroupDescriptor.reset();
274
+
275
+ _viewDescriptor.dimension = '2d';
276
+ _viewDescriptor.mipLevelCount = 1;
277
+ _viewDescriptor.baseArrayLayer = destinationArrayLayer;
278
+ _viewDescriptor.arrayLayerCount = 1;
279
+
280
+ const destinationView = destinationTexture.createView( _viewDescriptor );
281
+
282
+ _viewDescriptor.reset();
283
+
284
+ _colorAttachment.view = destinationView;
285
+ _colorAttachment.loadOp = GPULoadOp.Clear;
286
+ _colorAttachment.storeOp = GPUStoreOp.Store;
287
+
288
+ _renderPassDescriptor.colorAttachments.push( _colorAttachment );
289
+
290
+ const passEncoder = commandEncoder.beginRenderPass( _renderPassDescriptor );
291
+
292
+ _renderPassDescriptor.reset();
293
+ _colorAttachment.reset();
294
+
252
295
  passEncoder.setPipeline( pipeline );
253
296
  passEncoder.setBindGroup( 0, bindGroup );
254
297
  passEncoder.draw( 3, 1, 0, sourceArrayLayer );
@@ -259,7 +302,7 @@ fn main_cube( Varys: VarysStruct ) -> @location( 0 ) vec4<f32> {
259
302
  pass( copyTransferPipeline, textureGPU, baseArrayLayer, tempTexture, 0, false );
260
303
  pass( flipTransferPipeline, tempTexture, 0, textureGPU, baseArrayLayer, true );
261
304
 
262
- this.device.queue.submit( [ commandEncoder.finish() ] );
305
+ submit( this.device, commandEncoder.finish() );
263
306
 
264
307
  tempTexture.destroy();
265
308
 
@@ -277,11 +320,19 @@ fn main_cube( Varys: VarysStruct ) -> @location( 0 ) vec4<f32> {
277
320
 
278
321
  const passes = textureData.layers || this._mipmapCreateBundles( textureGPU );
279
322
 
280
- const commandEncoder = encoder || this.device.createCommandEncoder( { label: 'mipmapEncoder' } );
323
+ let commandEncoder = encoder;
324
+
325
+ if ( commandEncoder === null ) {
326
+
327
+ _commandEncoderDescriptor.label = 'mipmapEncoder';
328
+ commandEncoder = this.device.createCommandEncoder( _commandEncoderDescriptor );
329
+ _commandEncoderDescriptor.reset();
330
+
331
+ }
281
332
 
282
333
  this._mipmapRunBundles( commandEncoder, passes );
283
334
 
284
- if ( encoder === null ) this.device.queue.submit( [ commandEncoder.finish() ] );
335
+ if ( encoder === null ) submit( this.device, commandEncoder.finish() );
285
336
 
286
337
  textureData.layers = passes;
287
338
 
@@ -307,42 +358,54 @@ fn main_cube( Varys: VarysStruct ) -> @location( 0 ) vec4<f32> {
307
358
 
308
359
  for ( let baseArrayLayer = 0; baseArrayLayer < textureGPU.depthOrArrayLayers; baseArrayLayer ++ ) {
309
360
 
310
- const bindGroup = this.device.createBindGroup( {
311
- layout: bindGroupLayout,
312
- entries: [ {
313
- binding: 0,
314
- resource: this.mipmapSampler
315
- }, {
316
- binding: 1,
317
- resource: textureGPU.createView( {
318
- dimension: textureBindingViewDimension,
319
- baseMipLevel: baseMipLevel - 1,
320
- mipLevelCount: 1,
321
- } ),
322
- }, {
323
- binding: 2,
324
- resource: { buffer: this.noFlipUniformBuffer }
325
- } ]
326
- } );
361
+ _viewDescriptor.dimension = textureBindingViewDimension;
362
+ _viewDescriptor.baseMipLevel = baseMipLevel - 1;
363
+ _viewDescriptor.mipLevelCount = 1;
364
+
365
+ const sourceView = textureGPU.createView( _viewDescriptor );
366
+
367
+ _viewDescriptor.reset();
327
368
 
328
- const passDescriptor = {
329
- colorAttachments: [ {
330
- view: textureGPU.createView( {
331
- dimension: '2d',
332
- baseMipLevel,
333
- mipLevelCount: 1,
334
- baseArrayLayer,
335
- arrayLayerCount: 1,
336
- } ),
337
- loadOp: GPULoadOp.Clear,
338
- storeOp: GPUStoreOp.Store,
339
- } ]
340
- };
341
-
342
- const passEncoder = this.device.createRenderBundleEncoder( {
343
- colorFormats: [ textureGPU.format ]
369
+ _bindGroupDescriptor.layout = bindGroupLayout;
370
+ _bindGroupDescriptor.entries.push( {
371
+ binding: 0,
372
+ resource: this.mipmapSampler
373
+ }, {
374
+ binding: 1,
375
+ resource: sourceView,
376
+ }, {
377
+ binding: 2,
378
+ resource: { buffer: this.noFlipUniformBuffer }
344
379
  } );
345
380
 
381
+ const bindGroup = this.device.createBindGroup( _bindGroupDescriptor );
382
+
383
+ _bindGroupDescriptor.reset();
384
+
385
+ _viewDescriptor.dimension = '2d';
386
+ _viewDescriptor.baseMipLevel = baseMipLevel;
387
+ _viewDescriptor.mipLevelCount = 1;
388
+ _viewDescriptor.baseArrayLayer = baseArrayLayer;
389
+ _viewDescriptor.arrayLayerCount = 1;
390
+
391
+ const destinationView = textureGPU.createView( _viewDescriptor );
392
+
393
+ _viewDescriptor.reset();
394
+
395
+ const passColorAttachment = new GPURenderPassColorAttachment();
396
+ passColorAttachment.view = destinationView;
397
+ passColorAttachment.loadOp = GPULoadOp.Clear;
398
+ passColorAttachment.storeOp = GPUStoreOp.Store;
399
+
400
+ const passDescriptor = new GPURenderPassDescriptor();
401
+ passDescriptor.colorAttachments.push( passColorAttachment );
402
+
403
+ _renderBundleEncoderDescriptor.colorFormats = [ textureGPU.format ];
404
+
405
+ const passEncoder = this.device.createRenderBundleEncoder( _renderBundleEncoderDescriptor );
406
+
407
+ _renderBundleEncoderDescriptor.reset();
408
+
346
409
  passEncoder.setPipeline( pipeline );
347
410
  passEncoder.setBindGroup( 0, bindGroup );
348
411
  passEncoder.draw( 3, 1, 0, baseArrayLayer );