super-three 0.152.0 → 0.154.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 (339) hide show
  1. package/build/three.cjs +779 -557
  2. package/build/three.js +779 -557
  3. package/build/three.min.js +2 -1
  4. package/build/three.module.js +770 -539
  5. package/build/three.module.min.js +2 -1
  6. package/examples/jsm/cameras/CinematicCamera.js +1 -2
  7. package/examples/jsm/capabilities/WebGPU.js +15 -1
  8. package/examples/jsm/controls/ArcballControls.js +2 -1
  9. package/examples/jsm/controls/FlyControls.js +25 -9
  10. package/examples/jsm/controls/OrbitControls.js +5 -1
  11. package/examples/jsm/csm/CSM.js +1 -3
  12. package/examples/jsm/effects/AnaglyphEffect.js +6 -20
  13. package/examples/jsm/effects/OutlineEffect.js +1 -1
  14. package/examples/jsm/effects/ParallaxBarrierEffect.js +3 -0
  15. package/examples/jsm/environments/RoomEnvironment.js +6 -2
  16. package/examples/jsm/exporters/GLTFExporter.js +74 -2
  17. package/examples/jsm/exporters/USDZExporter.js +170 -129
  18. package/examples/jsm/helpers/ViewHelper.js +1 -1
  19. package/examples/jsm/lines/LineMaterial.js +1 -1
  20. package/examples/jsm/loaders/3DMLoader.js +1 -1
  21. package/examples/jsm/loaders/3MFLoader.js +5 -1
  22. package/examples/jsm/loaders/AMFLoader.js +5 -1
  23. package/examples/jsm/loaders/ColladaLoader.js +4 -1
  24. package/examples/jsm/loaders/DRACOLoader.js +2 -0
  25. package/examples/jsm/loaders/FBXLoader.js +9 -2
  26. package/examples/jsm/loaders/GLTFLoader.js +230 -94
  27. package/examples/jsm/loaders/KTX2Loader.js +106 -47
  28. package/examples/jsm/loaders/LDrawLoader.js +4 -7
  29. package/examples/jsm/loaders/MMDLoader.js +40 -13
  30. package/examples/jsm/loaders/PCDLoader.js +25 -10
  31. package/examples/jsm/loaders/PDBLoader.js +7 -2
  32. package/examples/jsm/loaders/PLYLoader.js +30 -8
  33. package/examples/jsm/loaders/STLLoader.js +8 -3
  34. package/examples/jsm/loaders/VRMLLoader.js +55 -7
  35. package/examples/jsm/loaders/VTKLoader.js +12 -4
  36. package/examples/jsm/loaders/XYZLoader.js +9 -3
  37. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -2
  38. package/examples/jsm/math/Lut.js +5 -4
  39. package/examples/jsm/math/MeshSurfaceSampler.js +82 -37
  40. package/examples/jsm/misc/GPUComputationRenderer.js +1 -0
  41. package/examples/jsm/misc/VolumeSlice.js +3 -1
  42. package/examples/jsm/nodes/Nodes.js +22 -16
  43. package/examples/jsm/nodes/accessors/BufferAttributeNode.js +99 -0
  44. package/examples/jsm/nodes/accessors/BufferNode.js +2 -2
  45. package/examples/jsm/nodes/accessors/CameraNode.js +25 -4
  46. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +7 -1
  47. package/examples/jsm/nodes/accessors/InstanceNode.js +29 -12
  48. package/examples/jsm/nodes/accessors/MaterialNode.js +55 -47
  49. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +2 -2
  50. package/examples/jsm/nodes/accessors/ModelNode.js +3 -1
  51. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +4 -9
  52. package/examples/jsm/nodes/accessors/MorphNode.js +70 -0
  53. package/examples/jsm/nodes/accessors/NormalNode.js +3 -2
  54. package/examples/jsm/nodes/accessors/Object3DNode.js +10 -2
  55. package/examples/jsm/nodes/accessors/ReferenceNode.js +2 -2
  56. package/examples/jsm/nodes/accessors/SceneNode.js +46 -0
  57. package/examples/jsm/nodes/accessors/SkinningNode.js +43 -62
  58. package/examples/jsm/nodes/accessors/StorageBufferNode.js +2 -2
  59. package/examples/jsm/nodes/accessors/TangentNode.js +2 -2
  60. package/examples/jsm/nodes/accessors/TextureBicubicNode.js +94 -0
  61. package/examples/jsm/nodes/accessors/TextureNode.js +68 -6
  62. package/examples/jsm/nodes/accessors/TextureSizeNode.js +35 -0
  63. package/examples/jsm/nodes/accessors/UVNode.js +1 -1
  64. package/examples/jsm/nodes/code/CodeNode.js +3 -0
  65. package/examples/jsm/nodes/code/FunctionNode.js +25 -4
  66. package/examples/jsm/nodes/core/AttributeNode.js +1 -1
  67. package/examples/jsm/nodes/core/BypassNode.js +2 -2
  68. package/examples/jsm/nodes/core/ContextNode.js +2 -0
  69. package/examples/jsm/nodes/core/IndexNode.js +66 -0
  70. package/examples/jsm/nodes/core/LightingModel.js +2 -1
  71. package/examples/jsm/nodes/core/Node.js +13 -16
  72. package/examples/jsm/nodes/core/NodeAttribute.js +2 -1
  73. package/examples/jsm/nodes/core/NodeBuilder.js +86 -8
  74. package/examples/jsm/nodes/core/NodeUtils.js +10 -0
  75. package/examples/jsm/nodes/core/PropertyNode.js +6 -2
  76. package/examples/jsm/nodes/core/StackNode.js +8 -1
  77. package/examples/jsm/nodes/core/UniformNode.js +1 -1
  78. package/examples/jsm/nodes/core/VarNode.js +1 -3
  79. package/examples/jsm/nodes/display/BlendModeNode.js +9 -9
  80. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +7 -7
  81. package/examples/jsm/nodes/display/ColorSpaceNode.js +50 -49
  82. package/examples/jsm/nodes/display/NormalMapNode.js +3 -3
  83. package/examples/jsm/nodes/display/ToneMappingNode.js +24 -15
  84. package/examples/jsm/nodes/display/ViewportDepthNode.js +69 -0
  85. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +34 -0
  86. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +7 -6
  87. package/examples/jsm/nodes/display/ViewportTextureNode.js +33 -19
  88. package/examples/jsm/nodes/functions/BSDF/BRDF_BlinnPhong.js +5 -5
  89. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +10 -8
  90. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  91. package/examples/jsm/nodes/functions/BSDF/BRDF_Sheen.js +43 -0
  92. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +4 -4
  93. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +2 -2
  94. package/examples/jsm/nodes/functions/BSDF/EnvironmentBRDF.js +13 -0
  95. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +2 -4
  96. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
  97. package/examples/jsm/nodes/functions/PhongLightingModel.js +7 -7
  98. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +132 -19
  99. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +2 -2
  100. package/examples/jsm/nodes/functions/material/getRoughness.js +3 -3
  101. package/examples/jsm/nodes/geometry/RangeNode.js +33 -51
  102. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +6 -3
  103. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +2 -2
  104. package/examples/jsm/nodes/lighting/EnvironmentNode.js +107 -62
  105. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +2 -2
  106. package/examples/jsm/nodes/lighting/LightUtils.js +2 -2
  107. package/examples/jsm/nodes/lighting/LightingContextNode.js +17 -15
  108. package/examples/jsm/nodes/lighting/PointLightNode.js +3 -3
  109. package/examples/jsm/nodes/lighting/SpotLightNode.js +3 -3
  110. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -15
  111. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -15
  112. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -10
  113. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -9
  114. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +41 -0
  115. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +1 -14
  116. package/examples/jsm/nodes/materials/NodeMaterial.js +119 -29
  117. package/examples/jsm/nodes/materials/PointsNodeMaterial.js +0 -9
  118. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -7
  119. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +3 -3
  120. package/examples/jsm/nodes/materialx/lib/mx_noise.js +14 -14
  121. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +4 -4
  122. package/examples/jsm/nodes/math/MathNode.js +6 -0
  123. package/examples/jsm/nodes/math/OperatorNode.js +1 -1
  124. package/examples/jsm/nodes/procedural/CheckerNode.js +3 -3
  125. package/examples/jsm/nodes/shadernode/ShaderNode.js +60 -33
  126. package/examples/jsm/nodes/utils/EquirectUVNode.js +2 -3
  127. package/examples/jsm/nodes/utils/LoopNode.js +186 -0
  128. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +1 -1
  129. package/examples/jsm/objects/GroundProjectedSkybox.js +1 -1
  130. package/examples/jsm/objects/Lensflare.js +3 -4
  131. package/examples/jsm/objects/MarchingCubes.js +5 -1
  132. package/examples/jsm/objects/Reflector.js +4 -1
  133. package/examples/jsm/objects/Refractor.js +1 -1
  134. package/examples/jsm/objects/Sky.js +1 -1
  135. package/examples/jsm/objects/Water.js +2 -1
  136. package/examples/jsm/objects/Water2.js +1 -1
  137. package/examples/jsm/offscreen/scene.js +1 -0
  138. package/examples/jsm/physics/RapierPhysics.js +93 -133
  139. package/examples/jsm/postprocessing/AfterimagePass.js +3 -0
  140. package/examples/jsm/postprocessing/BloomPass.js +7 -2
  141. package/examples/jsm/postprocessing/BokehPass.js +3 -2
  142. package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
  143. package/examples/jsm/postprocessing/EffectComposer.js +4 -1
  144. package/examples/jsm/postprocessing/FilmPass.js +1 -0
  145. package/examples/jsm/postprocessing/OutlinePass.js +8 -9
  146. package/examples/jsm/postprocessing/OutputPass.js +72 -0
  147. package/examples/jsm/postprocessing/RenderPixelatedPass.js +4 -3
  148. package/examples/jsm/postprocessing/SAOPass.js +4 -2
  149. package/examples/jsm/postprocessing/SMAAPass.js +5 -2
  150. package/examples/jsm/postprocessing/SSAARenderPass.js +5 -13
  151. package/examples/jsm/postprocessing/SSAOPass.js +4 -2
  152. package/examples/jsm/postprocessing/SSRPass.js +3 -1
  153. package/examples/jsm/postprocessing/SavePass.js +5 -2
  154. package/examples/jsm/postprocessing/ShaderPass.js +1 -0
  155. package/examples/jsm/postprocessing/TAARenderPass.js +17 -4
  156. package/examples/jsm/postprocessing/TexturePass.js +2 -1
  157. package/examples/jsm/postprocessing/UnrealBloomPass.js +13 -13
  158. package/examples/jsm/renderers/{webgpu/WebGPUAnimation.js → common/Animation.js} +2 -2
  159. package/examples/jsm/renderers/common/Attributes.js +75 -0
  160. package/examples/jsm/renderers/common/Backend.js +162 -0
  161. package/examples/jsm/renderers/common/Background.js +134 -0
  162. package/examples/jsm/renderers/common/Binding.js +11 -0
  163. package/examples/jsm/renderers/common/Bindings.js +169 -0
  164. package/examples/jsm/renderers/common/Buffer.js +38 -0
  165. package/examples/jsm/renderers/{webgpu/WebGPUBufferUtils.js → common/BufferUtils.js} +2 -2
  166. package/examples/jsm/renderers/{webgpu/WebGPUWeakMap.js → common/ChainMap.js} +11 -5
  167. package/examples/jsm/renderers/common/ComputePipeline.js +17 -0
  168. package/examples/jsm/renderers/common/Constants.js +14 -0
  169. package/examples/jsm/renderers/common/CubeRenderTarget.js +65 -0
  170. package/examples/jsm/renderers/common/DataMap.js +54 -0
  171. package/examples/jsm/renderers/{webgpu/WebGPUGeometries.js → common/Geometries.js} +38 -37
  172. package/examples/jsm/renderers/{webgpu/WebGPUInfo.js → common/Info.js} +2 -3
  173. package/examples/jsm/renderers/common/Pipeline.js +13 -0
  174. package/examples/jsm/renderers/common/Pipelines.js +321 -0
  175. package/examples/jsm/renderers/common/ProgrammableStage.js +18 -0
  176. package/examples/jsm/renderers/common/RenderContext.js +37 -0
  177. package/examples/jsm/renderers/common/RenderContexts.js +38 -0
  178. package/examples/jsm/renderers/{webgpu/WebGPURenderLists.js → common/RenderList.js} +2 -39
  179. package/examples/jsm/renderers/common/RenderLists.js +38 -0
  180. package/examples/jsm/renderers/common/RenderObject.js +113 -0
  181. package/examples/jsm/renderers/common/RenderObjects.js +92 -0
  182. package/examples/jsm/renderers/common/RenderPipeline.js +16 -0
  183. package/examples/jsm/renderers/{webgpu/WebGPURenderTarget.js → common/RenderTarget.js} +2 -2
  184. package/examples/jsm/renderers/common/Renderer.js +864 -0
  185. package/examples/jsm/renderers/common/SampledTexture.js +80 -0
  186. package/examples/jsm/renderers/common/Sampler.js +18 -0
  187. package/examples/jsm/renderers/common/StorageBuffer.js +17 -0
  188. package/examples/jsm/renderers/common/Textures.js +206 -0
  189. package/examples/jsm/renderers/{webgpu/WebGPUUniform.js → common/Uniform.js} +13 -9
  190. package/examples/jsm/renderers/common/UniformBuffer.js +15 -0
  191. package/examples/jsm/renderers/{webgpu/WebGPUUniformsGroup.js → common/UniformsGroup.js} +13 -13
  192. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodes.js → common/nodes/NodeRender.js} +3 -3
  193. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeSampledTexture.js → common/nodes/NodeSampledTexture.js} +4 -4
  194. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeSampler.js → common/nodes/NodeSampler.js} +3 -3
  195. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeUniform.js → common/nodes/NodeUniform.js} +1 -1
  196. package/examples/jsm/renderers/common/nodes/Nodes.js +319 -0
  197. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +340 -0
  198. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +23 -19
  199. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +847 -0
  200. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +15 -1131
  201. package/examples/jsm/renderers/webgpu/nodes/{WebGPUNodeBuilder.js → WGSLNodeBuilder.js} +75 -45
  202. package/examples/jsm/{nodes/parsers → renderers/webgpu/nodes}/WGSLNodeFunction.js +2 -2
  203. package/examples/jsm/{nodes/parsers → renderers/webgpu/nodes}/WGSLNodeParser.js +1 -1
  204. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +255 -0
  205. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +145 -0
  206. package/examples/jsm/renderers/webgpu/{constants.js → utils/WebGPUConstants.js} +6 -7
  207. package/examples/jsm/renderers/webgpu/{WebGPURenderPipeline.js → utils/WebGPUPipelineUtils.js} +154 -247
  208. package/examples/jsm/renderers/webgpu/{WebGPUTextureUtils.js → utils/WebGPUTextureMipmapUtils.js} +3 -25
  209. package/examples/jsm/renderers/webgpu/{WebGPUTextures.js → utils/WebGPUTextureUtils.js} +392 -505
  210. package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +92 -0
  211. package/examples/jsm/shaders/BleachBypassShader.js +2 -0
  212. package/examples/jsm/shaders/BlendShader.js +1 -2
  213. package/examples/jsm/shaders/BokehShader2.js +3 -0
  214. package/examples/jsm/shaders/ColorifyShader.js +2 -0
  215. package/examples/jsm/shaders/ConvolutionShader.js +2 -0
  216. package/examples/jsm/shaders/CopyShader.js +4 -2
  217. package/examples/jsm/shaders/DotScreenShader.js +2 -0
  218. package/examples/jsm/shaders/ExposureShader.js +44 -0
  219. package/examples/jsm/shaders/FilmShader.js +2 -0
  220. package/examples/jsm/shaders/GammaCorrectionShader.js +2 -0
  221. package/examples/jsm/shaders/HorizontalBlurShader.js +2 -0
  222. package/examples/jsm/shaders/OutputShader.js +61 -0
  223. package/examples/jsm/shaders/RGBShiftShader.js +2 -0
  224. package/examples/jsm/shaders/SepiaShader.js +2 -0
  225. package/examples/jsm/shaders/ToonShader.js +13 -5
  226. package/examples/jsm/shaders/VerticalBlurShader.js +2 -0
  227. package/examples/jsm/shaders/VignetteShader.js +2 -0
  228. package/examples/jsm/shaders/WaterRefractionShader.js +5 -2
  229. package/examples/jsm/utils/BufferGeometryUtils.js +17 -1
  230. package/examples/jsm/utils/TextureUtils.js +86 -0
  231. package/examples/jsm/webxr/OculusHandPointerModel.js +34 -13
  232. package/examples/jsm/webxr/XRHandPrimitiveModel.js +1 -0
  233. package/examples/jsm/webxr/XRPlanes.js +100 -0
  234. package/package.json +3 -1
  235. package/src/Three.Legacy.js +0 -228
  236. package/src/audio/PositionalAudio.js +8 -0
  237. package/src/cameras/Camera.js +5 -0
  238. package/src/cameras/CubeCamera.js +76 -13
  239. package/src/cameras/OrthographicCamera.js +1 -1
  240. package/src/cameras/PerspectiveCamera.js +1 -1
  241. package/src/constants.js +13 -1
  242. package/src/core/BufferAttribute.js +3 -25
  243. package/src/core/BufferGeometry.js +1 -8
  244. package/src/core/Object3D.js +1 -1
  245. package/src/extras/core/Curve.js +1 -1
  246. package/src/loaders/CubeTextureLoader.js +2 -0
  247. package/src/loaders/Loader.js +2 -0
  248. package/src/loaders/MaterialLoader.js +5 -0
  249. package/src/loaders/ObjectLoader.js +1 -0
  250. package/src/materials/Material.js +13 -1
  251. package/src/materials/MeshPhysicalMaterial.js +32 -6
  252. package/src/math/Color.js +16 -11
  253. package/src/math/Frustum.js +16 -2
  254. package/src/math/MathUtils.js +16 -0
  255. package/src/math/Matrix3.js +26 -6
  256. package/src/math/Matrix4.js +74 -19
  257. package/src/objects/InstancedMesh.js +3 -0
  258. package/src/objects/Mesh.js +14 -10
  259. package/src/objects/Skeleton.js +1 -3
  260. package/src/objects/SkinnedMesh.js +36 -8
  261. package/src/renderers/WebGLRenderer.js +126 -21
  262. package/src/renderers/shaders/ShaderChunk/alphahash_fragment.glsl.js +7 -0
  263. package/src/renderers/shaders/ShaderChunk/alphahash_pars_fragment.glsl.js +68 -0
  264. package/src/renderers/shaders/ShaderChunk/begin_vertex.glsl.js +6 -0
  265. package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -0
  266. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +26 -3
  267. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +9 -1
  268. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +26 -0
  269. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -2
  270. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +10 -2
  271. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +1 -1
  272. package/src/renderers/shaders/ShaderChunk/{output_fragment.glsl.js → opaque_fragment.glsl.js} +1 -2
  273. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
  274. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +3 -3
  275. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +10 -5
  276. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +6 -1
  277. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +7 -1
  278. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +6 -1
  279. package/src/renderers/shaders/ShaderChunk.js +10 -6
  280. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
  281. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -1
  282. package/src/renderers/shaders/ShaderLib/cube.glsl.js +1 -1
  283. package/src/renderers/shaders/ShaderLib/depth.glsl.js +2 -0
  284. package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
  285. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -1
  286. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -2
  287. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +4 -2
  288. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +4 -2
  289. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +4 -2
  290. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +4 -2
  291. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +12 -2
  292. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +4 -2
  293. package/src/renderers/shaders/ShaderLib/points.glsl.js +4 -2
  294. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  295. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +4 -2
  296. package/src/renderers/shaders/ShaderLib.js +4 -1
  297. package/src/renderers/shaders/UniformsLib.js +2 -0
  298. package/src/renderers/webgl/WebGLBindingStates.js +13 -5
  299. package/src/renderers/webgl/WebGLGeometries.js +12 -0
  300. package/src/renderers/webgl/WebGLInfo.js +0 -1
  301. package/src/renderers/webgl/WebGLMaterials.js +18 -0
  302. package/src/renderers/webgl/WebGLObjects.js +23 -3
  303. package/src/renderers/webgl/WebGLProgram.js +43 -5
  304. package/src/renderers/webgl/WebGLPrograms.js +19 -7
  305. package/src/renderers/webgl/WebGLTextures.js +19 -1
  306. package/src/renderers/webvr/WebVRManager.js +12 -0
  307. package/src/renderers/webxr/WebXRManager.js +39 -99
  308. package/src/scenes/Scene.js +0 -14
  309. package/src/textures/DepthTexture.js +22 -0
  310. package/src/textures/FramebufferTexture.js +1 -3
  311. package/src/textures/Source.js +4 -0
  312. package/src/textures/Texture.js +1 -1
  313. package/examples/jsm/exporters/ColladaExporter.js +0 -725
  314. package/examples/jsm/geometries/LightningStrike.js +0 -1017
  315. package/examples/jsm/loaders/PRWMLoader.js +0 -299
  316. package/examples/jsm/nodes/core/InstanceIndexNode.js +0 -26
  317. package/examples/jsm/objects/LightningStorm.js +0 -245
  318. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +0 -361
  319. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +0 -197
  320. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +0 -190
  321. package/examples/jsm/renderers/webgpu/WebGPUBinding.js +0 -22
  322. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +0 -270
  323. package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +0 -43
  324. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +0 -78
  325. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +0 -22
  326. package/examples/jsm/renderers/webgpu/WebGPUProperties.js +0 -44
  327. package/examples/jsm/renderers/webgpu/WebGPURenderObject.js +0 -40
  328. package/examples/jsm/renderers/webgpu/WebGPURenderObjects.js +0 -50
  329. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +0 -274
  330. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +0 -54
  331. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +0 -75
  332. package/examples/jsm/renderers/webgpu/WebGPUSampler.js +0 -29
  333. package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +0 -20
  334. package/examples/jsm/renderers/webgpu/WebGPUTextureRenderer.js +0 -38
  335. package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +0 -18
  336. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +0 -88
  337. package/examples/jsm/shaders/ToneMapShader.js +0 -73
  338. /package/src/renderers/shaders/ShaderChunk/{encodings_fragment.glsl.js → colorspace_fragment.glsl.js} +0 -0
  339. /package/src/renderers/shaders/ShaderChunk/{encodings_pars_fragment.glsl.js → colorspace_pars_fragment.glsl.js} +0 -0
@@ -1,57 +1,42 @@
1
- import { GPUIndexFormat, GPUCompareFunction, GPUFrontFace, GPUCullMode, GPUBlendFactor, GPUBlendOperation, BlendColorFactor, OneMinusBlendColorFactor, GPUColorWriteFlags, GPUStencilOperation, GPUInputStepMode } from './constants.js';
1
+ import { BlendColorFactor, OneMinusBlendColorFactor, } from '../../common/Constants.js';
2
+
3
+ import {
4
+ GPUFrontFace, GPUCullMode, GPUColorWriteFlags, GPUCompareFunction, GPUBlendFactor, GPUBlendOperation, GPUIndexFormat, GPUStencilOperation
5
+ } from './WebGPUConstants.js';
6
+
2
7
  import {
3
- Float16BufferAttribute,
4
8
  FrontSide, BackSide, DoubleSide,
5
9
  NeverDepth, AlwaysDepth, LessDepth, LessEqualDepth, EqualDepth, GreaterEqualDepth, GreaterDepth, NotEqualDepth,
6
- NeverStencilFunc, AlwaysStencilFunc, LessStencilFunc, LessEqualStencilFunc, EqualStencilFunc, GreaterEqualStencilFunc, GreaterStencilFunc, NotEqualStencilFunc,
7
- KeepStencilOp, ZeroStencilOp, ReplaceStencilOp, InvertStencilOp, IncrementStencilOp, DecrementStencilOp, IncrementWrapStencilOp, DecrementWrapStencilOp,
8
10
  NoBlending, NormalBlending, AdditiveBlending, SubtractiveBlending, MultiplyBlending, CustomBlending,
11
+ ZeroFactor, OneFactor, SrcColorFactor, OneMinusSrcColorFactor, SrcAlphaFactor, OneMinusSrcAlphaFactor, DstColorFactor,
12
+ OneMinusDstColorFactor, DstAlphaFactor, OneMinusDstAlphaFactor, SrcAlphaSaturateFactor,
9
13
  AddEquation, SubtractEquation, ReverseSubtractEquation, MinEquation, MaxEquation,
10
- ZeroFactor, OneFactor, SrcColorFactor, OneMinusSrcColorFactor, SrcAlphaFactor, OneMinusSrcAlphaFactor, DstAlphaFactor, OneMinusDstAlphaFactor, DstColorFactor, OneMinusDstColorFactor, SrcAlphaSaturateFactor
14
+ KeepStencilOp, ZeroStencilOp, ReplaceStencilOp, InvertStencilOp, IncrementStencilOp, DecrementStencilOp, IncrementWrapStencilOp, DecrementWrapStencilOp,
15
+ NeverStencilFunc, AlwaysStencilFunc, LessStencilFunc, LessEqualStencilFunc, EqualStencilFunc, GreaterEqualStencilFunc, GreaterStencilFunc, NotEqualStencilFunc
11
16
  } from 'three';
12
17
 
13
- const typedArraysToVertexFormatPrefix = new Map( [
14
- [ Int8Array, [ 'sint8', 'snorm8' ]],
15
- [ Uint8Array, [ 'uint8', 'unorm8' ]],
16
- [ Int16Array, [ 'sint16', 'snorm16' ]],
17
- [ Uint16Array, [ 'uint16', 'unorm16' ]],
18
- [ Int32Array, [ 'sint32', 'snorm32' ]],
19
- [ Uint32Array, [ 'uint32', 'unorm32' ]],
20
- [ Float32Array, [ 'float32', ]],
21
- ] );
22
-
23
- const typedAttributeToVertexFormatPrefix = new Map( [
24
- [ Float16BufferAttribute, [ 'float16', ]],
25
- ] );
18
+ class WebGPUPipelineUtils {
26
19
 
27
- const typeArraysToVertexFormatPrefixForItemSize1 = new Map( [
28
- [ Int32Array, 'sint32' ],
29
- [ Uint32Array, 'uint32' ],
30
- [ Float32Array, 'float32' ]
31
- ] );
20
+ constructor( backend ) {
32
21
 
33
- class WebGPURenderPipeline {
22
+ this.backend = backend;
34
23
 
35
- constructor( device, utils ) {
36
-
37
- this.cacheKey = null;
38
- this.shaderAttributes = null;
39
- this.stageVertex = null;
40
- this.stageFragment = null;
41
- this.usedTimes = 0;
24
+ }
42
25
 
43
- this._device = device;
44
- this._utils = utils;
26
+ createRenderPipeline( renderObject ) {
45
27
 
46
- }
28
+ const { object, material, geometry, pipeline } = renderObject;
29
+ const { vertexProgram, fragmentProgram } = pipeline;
47
30
 
48
- init( cacheKey, stageVertex, stageFragment, renderObject, nodeBuilder ) {
31
+ const backend = this.backend;
32
+ const device = backend.device;
33
+ const utils = backend.utils;
49
34
 
50
- const { object, material, geometry } = renderObject;
35
+ const pipelineData = backend.get( pipeline );
51
36
 
52
37
  // determine shader attributes
53
38
 
54
- const shaderAttributes = this._getShaderAttributes( nodeBuilder, geometry );
39
+ const shaderAttributes = backend.attributeUtils.createShaderAttributes( renderObject );
55
40
 
56
41
  // vertex buffers
57
42
 
@@ -59,32 +44,24 @@ class WebGPURenderPipeline {
59
44
 
60
45
  for ( const attribute of shaderAttributes ) {
61
46
 
62
- const name = attribute.name;
63
- const geometryAttribute = geometry.getAttribute( name );
64
- const stepMode = ( geometryAttribute !== undefined && geometryAttribute.isInstancedBufferAttribute ) ? GPUInputStepMode.Instance : GPUInputStepMode.Vertex;
65
-
66
47
  vertexBuffers.push( {
67
48
  arrayStride: attribute.arrayStride,
68
49
  attributes: [ { shaderLocation: attribute.slot, offset: attribute.offset, format: attribute.format } ],
69
- stepMode: stepMode
50
+ stepMode: attribute.stepMode
70
51
  } );
71
52
 
72
53
  }
73
54
 
74
- this.cacheKey = cacheKey;
75
- this.shaderAttributes = shaderAttributes;
76
- this.stageVertex = stageVertex;
77
- this.stageFragment = stageFragment;
78
-
79
55
  // blending
80
56
 
81
- let alphaBlend = {};
82
- let colorBlend = {};
57
+ let blending;
83
58
 
84
59
  if ( material.transparent === true && material.blending !== NoBlending ) {
85
60
 
86
- alphaBlend = this._getAlphaBlend( material );
87
- colorBlend = this._getColorBlend( material );
61
+ blending = {
62
+ alpha: this._getAlphaBlend( material ),
63
+ color: this._getColorBlend( material )
64
+ };
88
65
 
89
66
  }
90
67
 
@@ -105,21 +82,21 @@ class WebGPURenderPipeline {
105
82
 
106
83
  //
107
84
 
85
+ const vertexModule = backend.get( vertexProgram ).module;
86
+ const fragmentModule = backend.get( fragmentProgram ).module;
87
+
108
88
  const primitiveState = this._getPrimitiveState( object, geometry, material );
109
89
  const colorWriteMask = this._getColorWriteMask( material );
110
90
  const depthCompare = this._getDepthCompare( material );
111
- const colorFormat = this._utils.getCurrentColorFormat();
112
- const depthStencilFormat = this._utils.getCurrentDepthStencilFormat();
113
- const sampleCount = this._utils.getSampleCount();
91
+ const colorFormat = utils.getCurrentColorFormat( renderObject.context );
92
+ const depthStencilFormat = utils.getCurrentDepthStencilFormat( renderObject.context );
93
+ const sampleCount = utils.getSampleCount( renderObject.context );
114
94
 
115
- this.pipeline = this._device.createRenderPipeline( {
116
- vertex: Object.assign( {}, stageVertex.stage, { buffers: vertexBuffers } ),
117
- fragment: Object.assign( {}, stageFragment.stage, { targets: [ {
95
+ pipelineData.pipeline = device.createRenderPipeline( {
96
+ vertex: Object.assign( {}, vertexModule, { buffers: vertexBuffers } ),
97
+ fragment: Object.assign( {}, fragmentModule, { targets: [ {
118
98
  format: colorFormat,
119
- blend: {
120
- alpha: alphaBlend,
121
- color: colorBlend
122
- },
99
+ blend: blending,
123
100
  writeMask: colorWriteMask
124
101
  } ] } ),
125
102
  primitive: primitiveState,
@@ -140,6 +117,22 @@ class WebGPURenderPipeline {
140
117
 
141
118
  }
142
119
 
120
+ createComputePipeline( pipeline ) {
121
+
122
+ const backend = this.backend;
123
+ const device = backend.device;
124
+
125
+ const computeProgram = backend.get( pipeline.computeProgram ).module;
126
+
127
+ const pipelineGPU = backend.get( pipeline );
128
+
129
+ pipelineGPU.pipeline = device.createComputePipeline( {
130
+ compute: computeProgram,
131
+ layout: 'auto'
132
+ } );
133
+
134
+ }
135
+
143
136
  _getAlphaBlend( material ) {
144
137
 
145
138
  const blending = material.blending;
@@ -286,7 +279,6 @@ class WebGPURenderPipeline {
286
279
  blendFactor = GPUBlendFactor.OneMinusBlendColor;
287
280
  break;
288
281
 
289
-
290
282
  default:
291
283
  console.error( 'THREE.WebGPURenderer: Blend factor not supported.', blend );
292
284
 
@@ -296,41 +288,6 @@ class WebGPURenderPipeline {
296
288
 
297
289
  }
298
290
 
299
- _getBlendOperation( blendEquation ) {
300
-
301
- let blendOperation;
302
-
303
- switch ( blendEquation ) {
304
-
305
- case AddEquation:
306
- blendOperation = GPUBlendOperation.Add;
307
- break;
308
-
309
- case SubtractEquation:
310
- blendOperation = GPUBlendOperation.Subtract;
311
- break;
312
-
313
- case ReverseSubtractEquation:
314
- blendOperation = GPUBlendOperation.ReverseSubtract;
315
- break;
316
-
317
- case MinEquation:
318
- blendOperation = GPUBlendOperation.Min;
319
- break;
320
-
321
- case MaxEquation:
322
- blendOperation = GPUBlendOperation.Max;
323
- break;
324
-
325
- default:
326
- console.error( 'THREE.WebGPURenderer: Blend equation not supported.', blendEquation );
327
-
328
- }
329
-
330
- return blendOperation;
331
-
332
- }
333
-
334
291
  _getColorBlend( material ) {
335
292
 
336
293
  const blending = material.blending;
@@ -383,109 +340,6 @@ class WebGPURenderPipeline {
383
340
 
384
341
  }
385
342
 
386
- _getColorWriteMask( material ) {
387
-
388
- return ( material.colorWrite === true ) ? GPUColorWriteFlags.All : GPUColorWriteFlags.None;
389
-
390
- }
391
-
392
- _getDepthCompare( material ) {
393
-
394
- let depthCompare;
395
-
396
- if ( material.depthTest === false ) {
397
-
398
- depthCompare = GPUCompareFunction.Always;
399
-
400
- } else {
401
-
402
- const depthFunc = material.depthFunc;
403
-
404
- switch ( depthFunc ) {
405
-
406
- case NeverDepth:
407
- depthCompare = GPUCompareFunction.Never;
408
- break;
409
-
410
- case AlwaysDepth:
411
- depthCompare = GPUCompareFunction.Always;
412
- break;
413
-
414
- case LessDepth:
415
- depthCompare = GPUCompareFunction.Less;
416
- break;
417
-
418
- case LessEqualDepth:
419
- depthCompare = GPUCompareFunction.LessEqual;
420
- break;
421
-
422
- case EqualDepth:
423
- depthCompare = GPUCompareFunction.Equal;
424
- break;
425
-
426
- case GreaterEqualDepth:
427
- depthCompare = GPUCompareFunction.GreaterEqual;
428
- break;
429
-
430
- case GreaterDepth:
431
- depthCompare = GPUCompareFunction.Greater;
432
- break;
433
-
434
- case NotEqualDepth:
435
- depthCompare = GPUCompareFunction.NotEqual;
436
- break;
437
-
438
- default:
439
- console.error( 'THREE.WebGPURenderer: Invalid depth function.', depthFunc );
440
-
441
- }
442
-
443
- }
444
-
445
- return depthCompare;
446
-
447
- }
448
-
449
- _getPrimitiveState( object, geometry, material ) {
450
-
451
- const descriptor = {};
452
-
453
- descriptor.topology = this._utils.getPrimitiveTopology( object, material );
454
-
455
- if ( object.isLine === true && object.isLineSegments !== true ) {
456
-
457
- const count = ( geometry.index ) ? geometry.index.count : geometry.attributes.position.count;
458
- descriptor.stripIndexFormat = ( count > 65535 ) ? GPUIndexFormat.Uint32 : GPUIndexFormat.Uint16; // define data type for primitive restart value
459
-
460
- }
461
-
462
- switch ( material.side ) {
463
-
464
- case FrontSide:
465
- descriptor.frontFace = GPUFrontFace.CW;
466
- descriptor.cullMode = GPUCullMode.Front;
467
- break;
468
-
469
- case BackSide:
470
- descriptor.frontFace = GPUFrontFace.CW;
471
- descriptor.cullMode = GPUCullMode.Back;
472
- break;
473
-
474
- case DoubleSide:
475
- descriptor.frontFace = GPUFrontFace.CW;
476
- descriptor.cullMode = GPUCullMode.None;
477
- break;
478
-
479
- default:
480
- console.error( 'THREE.WebGPURenderer: Unknown Material.side value.', material.side );
481
- break;
482
-
483
- }
484
-
485
- return descriptor;
486
-
487
- }
488
-
489
343
  _getStencilCompare( material ) {
490
344
 
491
345
  let stencilCompare;
@@ -582,92 +436,145 @@ class WebGPURenderPipeline {
582
436
 
583
437
  }
584
438
 
585
- _getVertexFormat( geometryAttribute ) {
439
+ _getBlendOperation( blendEquation ) {
440
+
441
+ let blendOperation;
442
+
443
+ switch ( blendEquation ) {
586
444
 
587
- const { itemSize, normalized } = geometryAttribute;
588
- const ArrayType = geometryAttribute.array.constructor;
589
- const AttributeType = geometryAttribute.constructor;
445
+ case AddEquation:
446
+ blendOperation = GPUBlendOperation.Add;
447
+ break;
590
448
 
591
- let format;
449
+ case SubtractEquation:
450
+ blendOperation = GPUBlendOperation.Subtract;
451
+ break;
592
452
 
593
- if ( itemSize == 1 ) {
453
+ case ReverseSubtractEquation:
454
+ blendOperation = GPUBlendOperation.ReverseSubtract;
455
+ break;
594
456
 
595
- format = typeArraysToVertexFormatPrefixForItemSize1.get( ArrayType );
457
+ case MinEquation:
458
+ blendOperation = GPUBlendOperation.Min;
459
+ break;
596
460
 
597
- } else {
461
+ case MaxEquation:
462
+ blendOperation = GPUBlendOperation.Max;
463
+ break;
598
464
 
599
- const prefixOptions = typedAttributeToVertexFormatPrefix.get( AttributeType ) || typedArraysToVertexFormatPrefix.get( ArrayType );
600
- const prefix = prefixOptions[ normalized ? 1 : 0 ];
465
+ default:
466
+ console.error( 'THREE.WebGPUPipelineUtils: Blend equation not supported.', blendEquation );
601
467
 
602
- if ( prefix ) {
468
+ }
603
469
 
604
- const bytesPerUnit = ArrayType.BYTES_PER_ELEMENT * itemSize;
605
- const paddedBytesPerUnit = Math.floor( ( bytesPerUnit + 3 ) / 4 ) * 4;
606
- const paddedItemSize = paddedBytesPerUnit / ArrayType.BYTES_PER_ELEMENT;
470
+ return blendOperation;
607
471
 
608
- if ( paddedItemSize % 1 ) {
472
+ }
609
473
 
610
- throw new Error( 'THREE.WebGPURenderer: Bad vertex format item size.' );
474
+ _getPrimitiveState( object, geometry, material ) {
611
475
 
612
- }
476
+ const descriptor = {};
477
+ const utils = this.backend.utils;
613
478
 
614
- format = `${prefix}x${paddedItemSize}`;
479
+ descriptor.topology = utils.getPrimitiveTopology( object, material );
615
480
 
616
- }
481
+ if ( object.isLine === true && object.isLineSegments !== true ) {
482
+
483
+ const count = ( geometry.index ) ? geometry.index.count : geometry.attributes.position.count;
484
+ descriptor.stripIndexFormat = ( count > 65535 ) ? GPUIndexFormat.Uint32 : GPUIndexFormat.Uint16; // define data type for primitive restart value
617
485
 
618
486
  }
619
487
 
620
- if ( ! format ) {
488
+ switch ( material.side ) {
489
+
490
+ case FrontSide:
491
+ descriptor.frontFace = GPUFrontFace.CW;
492
+ descriptor.cullMode = GPUCullMode.Front;
493
+ break;
494
+
495
+ case BackSide:
496
+ descriptor.frontFace = GPUFrontFace.CW;
497
+ descriptor.cullMode = GPUCullMode.Back;
498
+ break;
499
+
500
+ case DoubleSide:
501
+ descriptor.frontFace = GPUFrontFace.CW;
502
+ descriptor.cullMode = GPUCullMode.None;
503
+ break;
621
504
 
622
- console.error( 'THREE.WebGPURenderer: Vertex format not supported yet.' );
505
+ default:
506
+ console.error( 'THREE.WebGPUPipelineUtils: Unknown material.side value.', material.side );
507
+ break;
623
508
 
624
509
  }
625
510
 
626
- return format;
511
+ return descriptor;
627
512
 
628
513
  }
629
514
 
630
- _getShaderAttributes( nodeBuilder, geometry ) {
515
+ _getColorWriteMask( material ) {
631
516
 
632
- const nodeAttributes = nodeBuilder.attributes;
633
- const attributes = [];
517
+ return ( material.colorWrite === true ) ? GPUColorWriteFlags.All : GPUColorWriteFlags.None;
634
518
 
635
- for ( let slot = 0; slot < nodeAttributes.length; slot ++ ) {
519
+ }
636
520
 
637
- const nodeAttribute = nodeAttributes[ slot ];
638
- const name = nodeAttribute.name;
521
+ _getDepthCompare( material ) {
639
522
 
640
- const geometryAttribute = geometry.getAttribute( name );
641
- const bytesPerElement = geometryAttribute.array.BYTES_PER_ELEMENT;
523
+ let depthCompare;
642
524
 
643
- const format = this._getVertexFormat( geometryAttribute );
525
+ if ( material.depthTest === false ) {
644
526
 
645
- let arrayStride = geometryAttribute.itemSize * bytesPerElement;
646
- let offset = 0;
527
+ depthCompare = GPUCompareFunction.Always;
647
528
 
648
- if ( geometryAttribute.isInterleavedBufferAttribute === true ) {
529
+ } else {
649
530
 
650
- // @TODO: It can be optimized for "vertexBuffers" on RenderPipeline
531
+ const depthFunc = material.depthFunc;
651
532
 
652
- arrayStride = geometryAttribute.data.stride * bytesPerElement;
653
- offset = geometryAttribute.offset * bytesPerElement;
533
+ switch ( depthFunc ) {
654
534
 
655
- }
535
+ case NeverDepth:
536
+ depthCompare = GPUCompareFunction.Never;
537
+ break;
656
538
 
657
- attributes.push( {
658
- name,
659
- arrayStride,
660
- offset,
661
- format,
662
- slot
663
- } );
539
+ case AlwaysDepth:
540
+ depthCompare = GPUCompareFunction.Always;
541
+ break;
542
+
543
+ case LessDepth:
544
+ depthCompare = GPUCompareFunction.Less;
545
+ break;
546
+
547
+ case LessEqualDepth:
548
+ depthCompare = GPUCompareFunction.LessEqual;
549
+ break;
550
+
551
+ case EqualDepth:
552
+ depthCompare = GPUCompareFunction.Equal;
553
+ break;
554
+
555
+ case GreaterEqualDepth:
556
+ depthCompare = GPUCompareFunction.GreaterEqual;
557
+ break;
558
+
559
+ case GreaterDepth:
560
+ depthCompare = GPUCompareFunction.Greater;
561
+ break;
562
+
563
+ case NotEqualDepth:
564
+ depthCompare = GPUCompareFunction.NotEqual;
565
+ break;
566
+
567
+ default:
568
+ console.error( 'THREE.WebGPUPipelineUtils: Invalid depth function.', depthFunc );
569
+
570
+ }
664
571
 
665
572
  }
666
573
 
667
- return attributes;
574
+ return depthCompare;
668
575
 
669
576
  }
670
577
 
671
578
  }
672
579
 
673
- export default WebGPURenderPipeline;
580
+ export default WebGPUPipelineUtils;
@@ -1,28 +1,6 @@
1
- // Copyright 2020 Brandon Jones
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
1
+ import { GPUTextureViewDimension, GPUIndexFormat, GPUFilterMode, GPUPrimitiveTopology, GPULoadOp, GPUStoreOp } from './WebGPUConstants.js';
9
2
 
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
-
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
- // SOFTWARE.
20
-
21
- import { GPUTextureViewDimension, GPUIndexFormat, GPUFilterMode, GPUPrimitiveTopology, GPULoadOp, GPUStoreOp } from './constants.js';
22
-
23
- // ported from https://github.com/toji/web-texture-tool/blob/master/src/webgpu-mipmap-generator.js
24
-
25
- class WebGPUTextureUtils {
3
+ class WebGPUTextureMipmapUtils {
26
4
 
27
5
  constructor( device ) {
28
6
 
@@ -182,4 +160,4 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
182
160
 
183
161
  }
184
162
 
185
- export default WebGPUTextureUtils;
163
+ export default WebGPUTextureMipmapUtils;