@luma.gl/webgpu 9.0.0-alpha.29 → 9.0.0-alpha.30

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 (92) hide show
  1. package/LICENSE +2 -1
  2. package/dist/adapter/helpers/accessor-to-format.js.map +1 -1
  3. package/dist/adapter/helpers/convert-texture-format.d.ts +1 -1
  4. package/dist/adapter/helpers/convert-texture-format.d.ts.map +1 -1
  5. package/dist/adapter/helpers/convert-texture-format.js.map +1 -1
  6. package/dist/adapter/helpers/get-bind-group.d.ts +1 -1
  7. package/dist/adapter/helpers/get-bind-group.d.ts.map +1 -1
  8. package/dist/adapter/helpers/get-bind-group.js +1 -1
  9. package/dist/adapter/helpers/get-bind-group.js.map +1 -1
  10. package/dist/adapter/helpers/get-vertex-buffer-layout.d.ts +1 -1
  11. package/dist/adapter/helpers/get-vertex-buffer-layout.d.ts.map +1 -1
  12. package/dist/adapter/helpers/get-vertex-buffer-layout.js +10 -4
  13. package/dist/adapter/helpers/get-vertex-buffer-layout.js.map +1 -1
  14. package/dist/adapter/helpers/webgpu-parameters.d.ts +1 -1
  15. package/dist/adapter/helpers/webgpu-parameters.d.ts.map +1 -1
  16. package/dist/adapter/helpers/webgpu-parameters.js.map +1 -1
  17. package/dist/adapter/resources/webgpu-buffer.d.ts +1 -1
  18. package/dist/adapter/resources/webgpu-buffer.d.ts.map +1 -1
  19. package/dist/adapter/resources/webgpu-buffer.js +1 -1
  20. package/dist/adapter/resources/webgpu-buffer.js.map +1 -1
  21. package/dist/adapter/resources/webgpu-command-encoder.d.ts +1 -1
  22. package/dist/adapter/resources/webgpu-command-encoder.d.ts.map +1 -1
  23. package/dist/adapter/resources/webgpu-command-encoder.js +1 -1
  24. package/dist/adapter/resources/webgpu-command-encoder.js.map +1 -1
  25. package/dist/adapter/resources/webgpu-compute-pass.d.ts +1 -1
  26. package/dist/adapter/resources/webgpu-compute-pass.d.ts.map +1 -1
  27. package/dist/adapter/resources/webgpu-compute-pass.js +1 -1
  28. package/dist/adapter/resources/webgpu-compute-pass.js.map +1 -1
  29. package/dist/adapter/resources/webgpu-compute-pipeline.d.ts +1 -1
  30. package/dist/adapter/resources/webgpu-compute-pipeline.d.ts.map +1 -1
  31. package/dist/adapter/resources/webgpu-compute-pipeline.js +1 -1
  32. package/dist/adapter/resources/webgpu-compute-pipeline.js.map +1 -1
  33. package/dist/adapter/resources/webgpu-external-texture.d.ts +1 -1
  34. package/dist/adapter/resources/webgpu-external-texture.d.ts.map +1 -1
  35. package/dist/adapter/resources/webgpu-external-texture.js +1 -1
  36. package/dist/adapter/resources/webgpu-external-texture.js.map +1 -1
  37. package/dist/adapter/resources/webgpu-framebuffer.d.ts +2 -2
  38. package/dist/adapter/resources/webgpu-framebuffer.d.ts.map +1 -1
  39. package/dist/adapter/resources/webgpu-framebuffer.js +1 -1
  40. package/dist/adapter/resources/webgpu-framebuffer.js.map +1 -1
  41. package/dist/adapter/resources/webgpu-query.js.map +1 -1
  42. package/dist/adapter/resources/webgpu-render-pass.d.ts +2 -2
  43. package/dist/adapter/resources/webgpu-render-pass.d.ts.map +1 -1
  44. package/dist/adapter/resources/webgpu-render-pass.js +1 -1
  45. package/dist/adapter/resources/webgpu-render-pass.js.map +1 -1
  46. package/dist/adapter/resources/webgpu-render-pipeline.d.ts +2 -2
  47. package/dist/adapter/resources/webgpu-render-pipeline.d.ts.map +1 -1
  48. package/dist/adapter/resources/webgpu-render-pipeline.js +3 -3
  49. package/dist/adapter/resources/webgpu-render-pipeline.js.map +1 -1
  50. package/dist/adapter/resources/webgpu-sampler.d.ts +1 -1
  51. package/dist/adapter/resources/webgpu-sampler.d.ts.map +1 -1
  52. package/dist/adapter/resources/webgpu-sampler.js +1 -1
  53. package/dist/adapter/resources/webgpu-sampler.js.map +1 -1
  54. package/dist/adapter/resources/webgpu-shader.d.ts +2 -2
  55. package/dist/adapter/resources/webgpu-shader.d.ts.map +1 -1
  56. package/dist/adapter/resources/webgpu-shader.js +1 -1
  57. package/dist/adapter/resources/webgpu-shader.js.map +1 -1
  58. package/dist/adapter/resources/webgpu-texture.d.ts +1 -1
  59. package/dist/adapter/resources/webgpu-texture.d.ts.map +1 -1
  60. package/dist/adapter/resources/webgpu-texture.js +1 -1
  61. package/dist/adapter/resources/webgpu-texture.js.map +1 -1
  62. package/dist/adapter/webgpu-canvas-context.d.ts +3 -3
  63. package/dist/adapter/webgpu-canvas-context.d.ts.map +1 -1
  64. package/dist/adapter/webgpu-canvas-context.js +1 -1
  65. package/dist/adapter/webgpu-canvas-context.js.map +1 -1
  66. package/dist/adapter/webgpu-device.d.ts +2 -2
  67. package/dist/adapter/webgpu-device.d.ts.map +1 -1
  68. package/dist/adapter/webgpu-device.js +1 -1
  69. package/dist/adapter/webgpu-device.js.map +1 -1
  70. package/dist/dist.dev.js +41 -26
  71. package/dist/index.cjs +77 -71
  72. package/dist.min.js +4 -4
  73. package/package.json +3 -3
  74. package/src/adapter/helpers/accessor-to-format.ts +1 -1
  75. package/src/adapter/helpers/convert-texture-format.ts +1 -1
  76. package/src/adapter/helpers/get-bind-group.ts +2 -2
  77. package/src/adapter/helpers/get-vertex-buffer-layout.ts +13 -5
  78. package/src/adapter/helpers/webgpu-parameters.ts +1 -1
  79. package/src/adapter/resources/webgpu-buffer.ts +1 -1
  80. package/src/adapter/resources/webgpu-command-encoder.ts +1 -1
  81. package/src/adapter/resources/webgpu-compute-pass.ts +1 -1
  82. package/src/adapter/resources/webgpu-compute-pipeline.ts +1 -1
  83. package/src/adapter/resources/webgpu-external-texture.ts +1 -1
  84. package/src/adapter/resources/webgpu-framebuffer.ts +2 -2
  85. package/src/adapter/resources/webgpu-query.ts +1 -1
  86. package/src/adapter/resources/webgpu-render-pass.ts +2 -2
  87. package/src/adapter/resources/webgpu-render-pipeline.ts +4 -4
  88. package/src/adapter/resources/webgpu-sampler.ts +1 -1
  89. package/src/adapter/resources/webgpu-shader.ts +2 -2
  90. package/src/adapter/resources/webgpu-texture.ts +1 -1
  91. package/src/adapter/webgpu-canvas-context.ts +2 -2
  92. package/src/adapter/webgpu-device.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"webgpu-device.js","names":["Device","CanvasContext","log","uid","WebGPUBuffer","WebGPUTexture","WebGPUExternalTexture","WebGPUSampler","WebGPUShader","WebGPURenderPipeline","WebGPUComputePipeline","WebGPURenderPass","WebGPUComputePass","WebGPUCanvasContext","WebGPUDevice","isSupported","Boolean","navigator","gpu","create","props","Error","groupCollapsed","adapter","requestAdapter","powerPreference","adapterInfo","requestAdapterInfo","probe","gpuDevice","requestDevice","requiredFeatures","features","canvas","pageLoaded","device","info","table","groupEnd","constructor","id","_defineProperty","handle","_info","type","vendor","__brand","renderer","version","shadingLanguages","shadingLanguageVersions","glsl","wgsl","vendorMasked","rendererMasked","lost","Promise","resolve","lostInfo","_isLost","reason","message","canvasContext","_getFeatures","destroy","limits","isTextureFormatSupported","format","includes","isTextureFormatFilterable","isTextureFormatRenderable","isLost","createBuffer","newProps","_getBufferProps","_createTexture","createExternalTexture","createShader","createSampler","createRenderPipeline","createFramebuffer","createComputePipeline","beginRenderPass","commandEncoder","createCommandEncoder","beginComputePass","createCanvasContext","getDefaultRenderPass","_this$canvasContext","renderPass","framebuffer","getCurrentFramebuffer","submit","_this$renderPass","_this$commandEncoder","end","commandBuffer","finish","queue","Set","has","delete","add","copyExternalImageToTexture","options","_this$handle","source","sourceX","sourceY","texture","mipLevel","aspect","colorSpace","premultipliedAlpha","width","height","depth","webGpuTexture","origin"],"sources":["../../src/adapter/webgpu-device.ts"],"sourcesContent":["// prettier-ignore\n// / <reference types=\"@webgpu/types\" />\n\nimport type {\n DeviceProps,\n DeviceInfo,\n DeviceLimits,\n DeviceFeature,\n CanvasContextProps,\n BufferProps,\n SamplerProps,\n ShaderProps,\n Texture,\n TextureProps,\n TextureFormat,\n ExternalTextureProps,\n FramebufferProps,\n RenderPipelineProps,\n ComputePipelineProps,\n RenderPassProps,\n ComputePassProps,\n // CommandEncoderProps\n} from '@luma.gl/api';\nimport {Device, CanvasContext, log, uid} from '@luma.gl/api';\nimport {WebGPUBuffer} from './resources/webgpu-buffer';\nimport {WebGPUTexture} from './resources/webgpu-texture';\nimport {WebGPUExternalTexture} from './resources/webgpu-external-texture';\nimport {WebGPUSampler} from './resources/webgpu-sampler';\nimport {WebGPUShader} from './resources/webgpu-shader';\nimport {WebGPURenderPipeline} from './resources/webgpu-render-pipeline';\nimport {WebGPUFramebuffer} from './resources/webgpu-framebuffer';\nimport {WebGPUComputePipeline} from './resources/webgpu-compute-pipeline';\nimport {WebGPURenderPass} from './resources/webgpu-render-pass';\nimport {WebGPUComputePass} from './resources/webgpu-compute-pass';\n// import {WebGPUCommandEncoder} from './resources/webgpu-command-encoder';\n\nimport {WebGPUCanvasContext} from './webgpu-canvas-context';\n// import {loadGlslangModule} from '../glsl/glslang';\n\n/** WebGPU Device implementation */\nexport class WebGPUDevice extends Device {\n readonly handle: GPUDevice;\n readonly adapter: GPUAdapter;\n readonly lost: Promise<{reason: 'destroyed'; message: string}>;\n canvasContext: WebGPUCanvasContext | null = null;\n\n commandEncoder: GPUCommandEncoder | null = null;\n renderPass: WebGPURenderPass | null = null;\n\n private _info: DeviceInfo;\n private _isLost: boolean = false;\n\n static type: string = 'webgpu';\n\n /** Check if WebGPU is available */\n static isSupported(): boolean {\n return Boolean(typeof navigator !== 'undefined' && navigator.gpu);\n }\n\n static async create(props: DeviceProps): Promise<WebGPUDevice> {\n if (!navigator.gpu) {\n throw new Error(\n 'WebGPU not available. Open in Chrome Canary and turn on chrome://flags/#enable-unsafe-webgpu'\n );\n }\n log.groupCollapsed(1, 'WebGPUDevice created')();\n const adapter = await navigator.gpu.requestAdapter({\n powerPreference: 'high-performance'\n // forceSoftware: false\n });\n if (!adapter) {\n throw new Error('Failed to request WebGPU adapter');\n }\n\n const adapterInfo = await adapter.requestAdapterInfo();\n log.probe(1, 'Adapter available', adapterInfo)();\n\n const gpuDevice = await adapter.requestDevice({\n requiredFeatures: adapter.features as ReadonlySet<GPUFeatureName>\n // TODO ensure we obtain best limits\n // requiredLimits: adapter.limits\n });\n log.probe(1, 'GPUDevice available')();\n\n if (typeof props.canvas === 'string') {\n await CanvasContext.pageLoaded;\n log.probe(1, 'DOM is loaded')();\n }\n\n const device = new WebGPUDevice(gpuDevice, adapter, props);\n log.probe(1, 'Device created', device.info)();\n log.table(1, device.info)();\n log.groupEnd(1)();\n return device;\n }\n\n constructor(device: GPUDevice, adapter: GPUAdapter, props: DeviceProps) {\n super({...props, id: props.id || uid('webgpu-device')});\n this.handle = device;\n this.adapter = adapter;\n\n this._info = {\n type: 'webgpu',\n vendor: this.adapter.__brand,\n renderer: '',\n version: '',\n gpu: 'unknown', // 'nvidia' | 'amd' | 'intel' | 'apple' | 'unknown',\n shadingLanguages: ['glsl', 'wgsl'],\n shadingLanguageVersions: {\n glsl: '450',\n wgsl: '100'\n },\n vendorMasked: '',\n rendererMasked: ''\n };\n\n // \"Context\" loss handling\n this.lost = new Promise<{reason: 'destroyed'; message: string}>(async (resolve) => {\n const lostInfo = await this.handle.lost;\n this._isLost = true;\n resolve({reason: 'destroyed', message: lostInfo.message});\n });\n\n // Note: WebGPU devices can be created without a canvas, for compute shader purposes\n if (props.canvas) {\n this.canvasContext = new WebGPUCanvasContext(this, this.adapter, {canvas: props.canvas});\n }\n\n this.features = this._getFeatures();\n }\n\n // TODO\n // Load the glslang module now so that it is available synchronously when compiling shaders\n // const {glsl = true} = props;\n // this.glslang = glsl && await loadGlslangModule();\n\n destroy(): void {\n this.handle.destroy();\n }\n\n get info(): DeviceInfo {\n return this._info;\n }\n\n features: Set<DeviceFeature>;\n\n get limits(): DeviceLimits {\n return this.handle.limits;\n }\n\n isTextureFormatSupported(format: TextureFormat): boolean {\n return !format.includes('webgl');\n }\n\n /** @todo implement proper check? */\n isTextureFormatFilterable(format: TextureFormat): boolean {\n return this.isTextureFormatSupported(format);\n }\n\n /** @todo implement proper check? */\n isTextureFormatRenderable(format: TextureFormat): boolean {\n return this.isTextureFormatSupported(format);\n }\n\n get isLost(): boolean {\n return this._isLost;\n }\n\n createBuffer(props: BufferProps | ArrayBuffer | ArrayBufferView): WebGPUBuffer {\n const newProps = this._getBufferProps(props);\n return new WebGPUBuffer(this, newProps);\n }\n\n _createTexture(props: TextureProps): WebGPUTexture {\n return new WebGPUTexture(this, props);\n }\n\n createExternalTexture(props: ExternalTextureProps): WebGPUExternalTexture {\n return new WebGPUExternalTexture(this, props);\n }\n\n createShader(props: ShaderProps): WebGPUShader {\n return new WebGPUShader(this, props);\n }\n\n createSampler(props: SamplerProps): WebGPUSampler {\n return new WebGPUSampler(this, props);\n }\n\n createRenderPipeline(props: RenderPipelineProps): WebGPURenderPipeline {\n return new WebGPURenderPipeline(this, props);\n }\n\n createFramebuffer(props: FramebufferProps): WebGPUFramebuffer {\n throw new Error('Not implemented');\n }\n\n createComputePipeline(props: ComputePipelineProps): WebGPUComputePipeline {\n return new WebGPUComputePipeline(this, props);\n }\n\n // WebGPU specifics\n\n /**\n * Allows a render pass to begin against a canvas context\n * @todo need to support a \"Framebuffer\" equivalent (aka preconfigured RenderPassDescriptors?).\n */\n beginRenderPass(props: RenderPassProps): WebGPURenderPass {\n this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();\n return new WebGPURenderPass(this, props);\n }\n\n beginComputePass(props: ComputePassProps): WebGPUComputePass {\n this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();\n return new WebGPUComputePass(this, props);\n }\n\n // createCommandEncoder(props: CommandEncoderProps): WebGPUCommandEncoder {\n // return new WebGPUCommandEncoder(this, props);\n // }\n\n createCanvasContext(props: CanvasContextProps): WebGPUCanvasContext {\n return new WebGPUCanvasContext(this, this.adapter, props);\n }\n\n /**\n * Gets default renderpass encoder.\n * Creates a new encoder against default canvasContext if not already created\n * @note Called internally by Model.\n */\n getDefaultRenderPass(): WebGPURenderPass {\n this.renderPass =\n this.renderPass ||\n this.beginRenderPass({\n framebuffer: this.canvasContext?.getCurrentFramebuffer()\n });\n return this.renderPass;\n }\n\n submit(): void {\n this.renderPass?.end();\n const commandBuffer = this.commandEncoder?.finish();\n if (commandBuffer) {\n this.handle.queue.submit([commandBuffer]);\n }\n this.commandEncoder = null;\n this.renderPass = null;\n }\n\n _getFeatures() {\n // WebGPU Features\n const features = new Set<DeviceFeature>(this.handle.features as Set<DeviceFeature>);\n\n // Fixups for pre-standard names: https://github.com/webgpu-native/webgpu-headers/issues/133\n // @ts-expect-error Chrome Canary v99\n if (features.has('depth-clamping')) {\n // @ts-expect-error Chrome Canary v99\n features.delete('depth-clamping');\n features.add('depth-clip-control');\n }\n\n // Add subsets\n if (features.has('texture-compression-bc')) {\n features.add('texture-compression-bc5-webgl');\n }\n\n features.add('webgpu');\n\n features.add('timer-query-webgl');\n\n // WEBGL1 SUPPORT\n features.add('vertex-array-object-webgl1');\n features.add('instanced-rendering-webgl1');\n features.add('multiple-render-targets-webgl1');\n features.add('index-uint32-webgl1');\n features.add('blend-minmax-webgl1');\n features.add('texture-blend-float-webgl1');\n\n // TEXTURES, RENDERBUFFERS\n features.add('texture-formats-srgb-webgl1');\n\n // TEXTURES\n features.add('texture-formats-depth-webgl1');\n features.add('texture-formats-float32-webgl1');\n features.add('texture-formats-float16-webgl1');\n\n features.add('texture-filter-linear-float32-webgl');\n features.add('texture-filter-linear-float16-webgl');\n features.add('texture-filter-anisotropic-webgl');\n\n // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS\n features.add('texture-renderable-rgba32float-webgl');\n features.add('texture-renderable-float32-webgl');\n features.add('texture-renderable-float16-webgl');\n\n // GLSL extensions\n features.add('glsl-frag-data');\n features.add('glsl-frag-depth');\n features.add('glsl-derivatives');\n features.add('glsl-texture-lod');\n\n return features;\n }\n\n copyExternalImageToTexture(options: {\n texture: Texture;\n mipLevel?: number;\n aspect?: 'all' | 'stencil-only' | 'depth-only';\n colorSpace?: 'display-p3' | 'srgb';\n premultipliedAlpha?: boolean;\n\n source: ImageBitmap | HTMLVideoElement | HTMLCanvasElement | OffscreenCanvas;\n sourceX?: number;\n sourceY?: number;\n\n width?: number;\n height?: number;\n depth?: number;\n }): void {\n const {\n source,\n sourceX = 0,\n sourceY = 0,\n\n texture,\n mipLevel = 0,\n aspect = 'all',\n colorSpace = 'display-p3',\n premultipliedAlpha = false,\n // destinationX,\n // destinationY,\n // desitnationZ,\n\n width = texture.width,\n height = texture.height,\n depth = 1\n } = options;\n\n const webGpuTexture = texture as WebGPUTexture;\n\n this.handle?.queue.copyExternalImageToTexture(\n // source: GPUImageCopyExternalImage\n {\n source,\n origin: [sourceX, sourceY]\n },\n // destination: GPUImageCopyTextureTagged\n {\n texture: webGpuTexture.handle,\n origin: [0, 0, 0], // [x, y, z],\n mipLevel,\n aspect,\n colorSpace,\n premultipliedAlpha\n },\n // copySize: GPUExtent3D\n [\n width,\n height,\n depth\n ]\n )\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"webgpu-device.js","names":["Device","CanvasContext","log","uid","WebGPUBuffer","WebGPUTexture","WebGPUExternalTexture","WebGPUSampler","WebGPUShader","WebGPURenderPipeline","WebGPUComputePipeline","WebGPURenderPass","WebGPUComputePass","WebGPUCanvasContext","WebGPUDevice","isSupported","Boolean","navigator","gpu","create","props","Error","groupCollapsed","adapter","requestAdapter","powerPreference","adapterInfo","requestAdapterInfo","probe","gpuDevice","requestDevice","requiredFeatures","features","canvas","pageLoaded","device","info","table","groupEnd","constructor","id","_defineProperty","handle","_info","type","vendor","__brand","renderer","version","shadingLanguages","shadingLanguageVersions","glsl","wgsl","vendorMasked","rendererMasked","lost","Promise","resolve","lostInfo","_isLost","reason","message","canvasContext","_getFeatures","destroy","limits","isTextureFormatSupported","format","includes","isTextureFormatFilterable","isTextureFormatRenderable","isLost","createBuffer","newProps","_getBufferProps","_createTexture","createExternalTexture","createShader","createSampler","createRenderPipeline","createFramebuffer","createComputePipeline","beginRenderPass","commandEncoder","createCommandEncoder","beginComputePass","createCanvasContext","getDefaultRenderPass","_this$canvasContext","renderPass","framebuffer","getCurrentFramebuffer","submit","_this$renderPass","_this$commandEncoder","end","commandBuffer","finish","queue","Set","has","delete","add","copyExternalImageToTexture","options","_this$handle","source","sourceX","sourceY","texture","mipLevel","aspect","colorSpace","premultipliedAlpha","width","height","depth","webGpuTexture","origin"],"sources":["../../src/adapter/webgpu-device.ts"],"sourcesContent":["// prettier-ignore\n// / <reference types=\"@webgpu/types\" />\n\nimport type {\n DeviceProps,\n DeviceInfo,\n DeviceLimits,\n DeviceFeature,\n CanvasContextProps,\n BufferProps,\n SamplerProps,\n ShaderProps,\n Texture,\n TextureProps,\n TextureFormat,\n ExternalTextureProps,\n FramebufferProps,\n RenderPipelineProps,\n ComputePipelineProps,\n RenderPassProps,\n ComputePassProps,\n // CommandEncoderProps\n} from '@luma.gl/core';\nimport {Device, CanvasContext, log, uid} from '@luma.gl/core';\nimport {WebGPUBuffer} from './resources/webgpu-buffer';\nimport {WebGPUTexture} from './resources/webgpu-texture';\nimport {WebGPUExternalTexture} from './resources/webgpu-external-texture';\nimport {WebGPUSampler} from './resources/webgpu-sampler';\nimport {WebGPUShader} from './resources/webgpu-shader';\nimport {WebGPURenderPipeline} from './resources/webgpu-render-pipeline';\nimport {WebGPUFramebuffer} from './resources/webgpu-framebuffer';\nimport {WebGPUComputePipeline} from './resources/webgpu-compute-pipeline';\nimport {WebGPURenderPass} from './resources/webgpu-render-pass';\nimport {WebGPUComputePass} from './resources/webgpu-compute-pass';\n// import {WebGPUCommandEncoder} from './resources/webgpu-command-encoder';\n\nimport {WebGPUCanvasContext} from './webgpu-canvas-context';\n// import {loadGlslangModule} from '../glsl/glslang';\n\n/** WebGPU Device implementation */\nexport class WebGPUDevice extends Device {\n readonly handle: GPUDevice;\n readonly adapter: GPUAdapter;\n readonly lost: Promise<{reason: 'destroyed'; message: string}>;\n canvasContext: WebGPUCanvasContext | null = null;\n\n commandEncoder: GPUCommandEncoder | null = null;\n renderPass: WebGPURenderPass | null = null;\n\n private _info: DeviceInfo;\n private _isLost: boolean = false;\n\n static type: string = 'webgpu';\n\n /** Check if WebGPU is available */\n static isSupported(): boolean {\n return Boolean(typeof navigator !== 'undefined' && navigator.gpu);\n }\n\n static async create(props: DeviceProps): Promise<WebGPUDevice> {\n if (!navigator.gpu) {\n throw new Error(\n 'WebGPU not available. Open in Chrome Canary and turn on chrome://flags/#enable-unsafe-webgpu'\n );\n }\n log.groupCollapsed(1, 'WebGPUDevice created')();\n const adapter = await navigator.gpu.requestAdapter({\n powerPreference: 'high-performance'\n // forceSoftware: false\n });\n if (!adapter) {\n throw new Error('Failed to request WebGPU adapter');\n }\n\n const adapterInfo = await adapter.requestAdapterInfo();\n log.probe(1, 'Adapter available', adapterInfo)();\n\n const gpuDevice = await adapter.requestDevice({\n requiredFeatures: adapter.features as ReadonlySet<GPUFeatureName>\n // TODO ensure we obtain best limits\n // requiredLimits: adapter.limits\n });\n log.probe(1, 'GPUDevice available')();\n\n if (typeof props.canvas === 'string') {\n await CanvasContext.pageLoaded;\n log.probe(1, 'DOM is loaded')();\n }\n\n const device = new WebGPUDevice(gpuDevice, adapter, props);\n log.probe(1, 'Device created', device.info)();\n log.table(1, device.info)();\n log.groupEnd(1)();\n return device;\n }\n\n constructor(device: GPUDevice, adapter: GPUAdapter, props: DeviceProps) {\n super({...props, id: props.id || uid('webgpu-device')});\n this.handle = device;\n this.adapter = adapter;\n\n this._info = {\n type: 'webgpu',\n vendor: this.adapter.__brand,\n renderer: '',\n version: '',\n gpu: 'unknown', // 'nvidia' | 'amd' | 'intel' | 'apple' | 'unknown',\n shadingLanguages: ['glsl', 'wgsl'],\n shadingLanguageVersions: {\n glsl: '450',\n wgsl: '100'\n },\n vendorMasked: '',\n rendererMasked: ''\n };\n\n // \"Context\" loss handling\n this.lost = new Promise<{reason: 'destroyed'; message: string}>(async (resolve) => {\n const lostInfo = await this.handle.lost;\n this._isLost = true;\n resolve({reason: 'destroyed', message: lostInfo.message});\n });\n\n // Note: WebGPU devices can be created without a canvas, for compute shader purposes\n if (props.canvas) {\n this.canvasContext = new WebGPUCanvasContext(this, this.adapter, {canvas: props.canvas});\n }\n\n this.features = this._getFeatures();\n }\n\n // TODO\n // Load the glslang module now so that it is available synchronously when compiling shaders\n // const {glsl = true} = props;\n // this.glslang = glsl && await loadGlslangModule();\n\n destroy(): void {\n this.handle.destroy();\n }\n\n get info(): DeviceInfo {\n return this._info;\n }\n\n features: Set<DeviceFeature>;\n\n get limits(): DeviceLimits {\n return this.handle.limits;\n }\n\n isTextureFormatSupported(format: TextureFormat): boolean {\n return !format.includes('webgl');\n }\n\n /** @todo implement proper check? */\n isTextureFormatFilterable(format: TextureFormat): boolean {\n return this.isTextureFormatSupported(format);\n }\n\n /** @todo implement proper check? */\n isTextureFormatRenderable(format: TextureFormat): boolean {\n return this.isTextureFormatSupported(format);\n }\n\n get isLost(): boolean {\n return this._isLost;\n }\n\n createBuffer(props: BufferProps | ArrayBuffer | ArrayBufferView): WebGPUBuffer {\n const newProps = this._getBufferProps(props);\n return new WebGPUBuffer(this, newProps);\n }\n\n _createTexture(props: TextureProps): WebGPUTexture {\n return new WebGPUTexture(this, props);\n }\n\n createExternalTexture(props: ExternalTextureProps): WebGPUExternalTexture {\n return new WebGPUExternalTexture(this, props);\n }\n\n createShader(props: ShaderProps): WebGPUShader {\n return new WebGPUShader(this, props);\n }\n\n createSampler(props: SamplerProps): WebGPUSampler {\n return new WebGPUSampler(this, props);\n }\n\n createRenderPipeline(props: RenderPipelineProps): WebGPURenderPipeline {\n return new WebGPURenderPipeline(this, props);\n }\n\n createFramebuffer(props: FramebufferProps): WebGPUFramebuffer {\n throw new Error('Not implemented');\n }\n\n createComputePipeline(props: ComputePipelineProps): WebGPUComputePipeline {\n return new WebGPUComputePipeline(this, props);\n }\n\n // WebGPU specifics\n\n /**\n * Allows a render pass to begin against a canvas context\n * @todo need to support a \"Framebuffer\" equivalent (aka preconfigured RenderPassDescriptors?).\n */\n beginRenderPass(props: RenderPassProps): WebGPURenderPass {\n this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();\n return new WebGPURenderPass(this, props);\n }\n\n beginComputePass(props: ComputePassProps): WebGPUComputePass {\n this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();\n return new WebGPUComputePass(this, props);\n }\n\n // createCommandEncoder(props: CommandEncoderProps): WebGPUCommandEncoder {\n // return new WebGPUCommandEncoder(this, props);\n // }\n\n createCanvasContext(props: CanvasContextProps): WebGPUCanvasContext {\n return new WebGPUCanvasContext(this, this.adapter, props);\n }\n\n /**\n * Gets default renderpass encoder.\n * Creates a new encoder against default canvasContext if not already created\n * @note Called internally by Model.\n */\n getDefaultRenderPass(): WebGPURenderPass {\n this.renderPass =\n this.renderPass ||\n this.beginRenderPass({\n framebuffer: this.canvasContext?.getCurrentFramebuffer()\n });\n return this.renderPass;\n }\n\n submit(): void {\n this.renderPass?.end();\n const commandBuffer = this.commandEncoder?.finish();\n if (commandBuffer) {\n this.handle.queue.submit([commandBuffer]);\n }\n this.commandEncoder = null;\n this.renderPass = null;\n }\n\n _getFeatures() {\n // WebGPU Features\n const features = new Set<DeviceFeature>(this.handle.features as Set<DeviceFeature>);\n\n // Fixups for pre-standard names: https://github.com/webgpu-native/webgpu-headers/issues/133\n // @ts-expect-error Chrome Canary v99\n if (features.has('depth-clamping')) {\n // @ts-expect-error Chrome Canary v99\n features.delete('depth-clamping');\n features.add('depth-clip-control');\n }\n\n // Add subsets\n if (features.has('texture-compression-bc')) {\n features.add('texture-compression-bc5-webgl');\n }\n\n features.add('webgpu');\n\n features.add('timer-query-webgl');\n\n // WEBGL1 SUPPORT\n features.add('vertex-array-object-webgl1');\n features.add('instanced-rendering-webgl1');\n features.add('multiple-render-targets-webgl1');\n features.add('index-uint32-webgl1');\n features.add('blend-minmax-webgl1');\n features.add('texture-blend-float-webgl1');\n\n // TEXTURES, RENDERBUFFERS\n features.add('texture-formats-srgb-webgl1');\n\n // TEXTURES\n features.add('texture-formats-depth-webgl1');\n features.add('texture-formats-float32-webgl1');\n features.add('texture-formats-float16-webgl1');\n\n features.add('texture-filter-linear-float32-webgl');\n features.add('texture-filter-linear-float16-webgl');\n features.add('texture-filter-anisotropic-webgl');\n\n // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS\n features.add('texture-renderable-rgba32float-webgl');\n features.add('texture-renderable-float32-webgl');\n features.add('texture-renderable-float16-webgl');\n\n // GLSL extensions\n features.add('glsl-frag-data');\n features.add('glsl-frag-depth');\n features.add('glsl-derivatives');\n features.add('glsl-texture-lod');\n\n return features;\n }\n\n copyExternalImageToTexture(options: {\n texture: Texture;\n mipLevel?: number;\n aspect?: 'all' | 'stencil-only' | 'depth-only';\n colorSpace?: 'display-p3' | 'srgb';\n premultipliedAlpha?: boolean;\n\n source: ImageBitmap | HTMLVideoElement | HTMLCanvasElement | OffscreenCanvas;\n sourceX?: number;\n sourceY?: number;\n\n width?: number;\n height?: number;\n depth?: number;\n }): void {\n const {\n source,\n sourceX = 0,\n sourceY = 0,\n\n texture,\n mipLevel = 0,\n aspect = 'all',\n colorSpace = 'display-p3',\n premultipliedAlpha = false,\n // destinationX,\n // destinationY,\n // desitnationZ,\n\n width = texture.width,\n height = texture.height,\n depth = 1\n } = options;\n\n const webGpuTexture = texture as WebGPUTexture;\n\n this.handle?.queue.copyExternalImageToTexture(\n // source: GPUImageCopyExternalImage\n {\n source,\n origin: [sourceX, sourceY]\n },\n // destination: GPUImageCopyTextureTagged\n {\n texture: webGpuTexture.handle,\n origin: [0, 0, 0], // [x, y, z],\n mipLevel,\n aspect,\n colorSpace,\n premultipliedAlpha\n },\n // copySize: GPUExtent3D\n [\n width,\n height,\n depth\n ]\n )\n }\n}\n"],"mappings":"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"}
package/dist/dist.dev.js CHANGED
@@ -566,7 +566,7 @@ var __exports__ = (() => {
566
566
  id: "@probe.gl/log"
567
567
  });
568
568
 
569
- // ../api/src/lib/utils/log.ts
569
+ // ../core/src/lib/utils/log.ts
570
570
  var log = new Log({
571
571
  id: "luma.gl"
572
572
  });
@@ -762,7 +762,7 @@ var __exports__ = (() => {
762
762
  }
763
763
  };
764
764
 
765
- // ../api/src/lib/utils/stats-manager.ts
765
+ // ../core/src/lib/utils/stats-manager.ts
766
766
  var StatsManager = class {
767
767
  stats = /* @__PURE__ */ new Map();
768
768
  getStats(name) {
@@ -779,7 +779,7 @@ var __exports__ = (() => {
779
779
  };
780
780
  var lumaStats = new StatsManager();
781
781
 
782
- // ../api/src/init.ts
782
+ // ../core/src/init.ts
783
783
  function initializeLuma() {
784
784
  const VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "untranspiled source";
785
785
  const STARTUP_MESSAGE = "set luma.log.level=1 (or higher) to trace rendering";
@@ -803,7 +803,7 @@ var __exports__ = (() => {
803
803
  }
804
804
  var VERSION2 = initializeLuma();
805
805
 
806
- // ../api/src/lib/utils/utils.ts
806
+ // ../core/src/lib/utils/utils.ts
807
807
  var uidCounters = {};
808
808
  function uid(id = "id") {
809
809
  uidCounters[id] = uidCounters[id] || 1;
@@ -819,7 +819,7 @@ var __exports__ = (() => {
819
819
  return isEmpty;
820
820
  }
821
821
 
822
- // ../api/src/adapter/resources/resource.ts
822
+ // ../core/src/adapter/resources/resource.ts
823
823
  var DEFAULT_RESOURCE_PROPS = {
824
824
  id: "undefined",
825
825
  handle: void 0,
@@ -949,7 +949,7 @@ var __exports__ = (() => {
949
949
  return mergedProps;
950
950
  }
951
951
 
952
- // ../api/src/adapter/resources/buffer.ts
952
+ // ../core/src/adapter/resources/buffer.ts
953
953
  var DEFAULT_BUFFER_PROPS = {
954
954
  ...DEFAULT_RESOURCE_PROPS,
955
955
  usage: 0,
@@ -1046,7 +1046,7 @@ var __exports__ = (() => {
1046
1046
  __publicField(Buffer2, "INDIRECT", 256);
1047
1047
  __publicField(Buffer2, "QUERY_RESOLVE", 512);
1048
1048
 
1049
- // ../api/src/adapter/device.ts
1049
+ // ../core/src/adapter/device.ts
1050
1050
  var DEFAULT_DEVICE_PROPS = {
1051
1051
  id: null,
1052
1052
  type: "best-available",
@@ -1151,7 +1151,7 @@ var __exports__ = (() => {
1151
1151
  };
1152
1152
  __publicField(Device, "VERSION", VERSION2);
1153
1153
 
1154
- // ../api/src/adapter/canvas-context.ts
1154
+ // ../core/src/adapter/canvas-context.ts
1155
1155
  var isPage = isBrowser() && typeof document !== "undefined";
1156
1156
  var isPageLoaded = () => isPage && document.readyState === "complete";
1157
1157
  var DEFAULT_CANVAS_CONTEXT_PROPS = {
@@ -1430,7 +1430,7 @@ var __exports__ = (() => {
1430
1430
  return yInvert ? Math.max(0, height - 1 - Math.round(y * ratio)) : Math.min(Math.round(y * ratio), height - 1);
1431
1431
  }
1432
1432
 
1433
- // ../api/src/adapter/resources/texture.ts
1433
+ // ../core/src/adapter/resources/texture.ts
1434
1434
  var DEFAULT_TEXTURE_PROPS = {
1435
1435
  ...DEFAULT_RESOURCE_PROPS,
1436
1436
  data: null,
@@ -1474,7 +1474,7 @@ var __exports__ = (() => {
1474
1474
  __publicField(Texture, "STORAGE_BINDING", 8);
1475
1475
  __publicField(Texture, "RENDER_ATTACHMENT", 16);
1476
1476
 
1477
- // ../api/src/adapter/resources/external-texture.ts
1477
+ // ../core/src/adapter/resources/external-texture.ts
1478
1478
  var DEFAULT_TEXTURE_PROPS2 = {
1479
1479
  ...DEFAULT_RESOURCE_PROPS,
1480
1480
  source: null,
@@ -1489,7 +1489,7 @@ var __exports__ = (() => {
1489
1489
  }
1490
1490
  };
1491
1491
 
1492
- // ../api/src/adapter/resources/shader.ts
1492
+ // ../core/src/adapter/resources/shader.ts
1493
1493
  var DEFAULT_SHADER_PROPS = {
1494
1494
  ...DEFAULT_RESOURCE_PROPS,
1495
1495
  stage: "vertex",
@@ -1509,7 +1509,7 @@ var __exports__ = (() => {
1509
1509
  }
1510
1510
  };
1511
1511
 
1512
- // ../api/src/adapter/resources/sampler.ts
1512
+ // ../core/src/adapter/resources/sampler.ts
1513
1513
  var DEFAULT_SAMPLER_PROPS = {
1514
1514
  ...DEFAULT_RESOURCE_PROPS,
1515
1515
  type: "color-sampler",
@@ -1534,7 +1534,7 @@ var __exports__ = (() => {
1534
1534
  }
1535
1535
  };
1536
1536
 
1537
- // ../api/src/adapter/resources/framebuffer.ts
1537
+ // ../core/src/adapter/resources/framebuffer.ts
1538
1538
  var DEFAULT_FRAMEBUFFER_PROPS = {
1539
1539
  ...DEFAULT_RESOURCE_PROPS,
1540
1540
  width: 1,
@@ -1722,7 +1722,7 @@ var __exports__ = (() => {
1722
1722
  */
1723
1723
  };
1724
1724
 
1725
- // ../api/src/adapter/resources/render-pipeline.ts
1725
+ // ../core/src/adapter/resources/render-pipeline.ts
1726
1726
  var DEFAULT_RENDER_PIPELINE_PROPS = {
1727
1727
  ...DEFAULT_RESOURCE_PROPS,
1728
1728
  vs: null,
@@ -1764,7 +1764,7 @@ var __exports__ = (() => {
1764
1764
  /** Private "export" for Model class */
1765
1765
  __publicField(RenderPipeline, "_DEFAULT_PROPS", DEFAULT_RENDER_PIPELINE_PROPS);
1766
1766
 
1767
- // ../api/src/adapter/resources/compute-pipeline.ts
1767
+ // ../core/src/adapter/resources/compute-pipeline.ts
1768
1768
  var DEFAULT_COMPUTE_PIPELINE_PROPS = {
1769
1769
  ...DEFAULT_RESOURCE_PROPS,
1770
1770
  // cs: undefined,
@@ -1782,7 +1782,7 @@ var __exports__ = (() => {
1782
1782
  }
1783
1783
  };
1784
1784
 
1785
- // ../api/src/adapter/resources/render-pass.ts
1785
+ // ../core/src/adapter/resources/render-pass.ts
1786
1786
  var _RenderPass = class extends Resource {
1787
1787
  get [Symbol.toStringTag]() {
1788
1788
  return "RenderPass";
@@ -1839,7 +1839,7 @@ var __exports__ = (() => {
1839
1839
  discard: false
1840
1840
  });
1841
1841
 
1842
- // ../api/src/adapter/resources/compute-pass.ts
1842
+ // ../core/src/adapter/resources/compute-pass.ts
1843
1843
  var ComputePass = class extends Resource {
1844
1844
  get [Symbol.toStringTag]() {
1845
1845
  return "ComputePass";
@@ -1865,7 +1865,7 @@ var __exports__ = (() => {
1865
1865
  // endPipelineStatisticsQuery(querySet: GPUQuerySet, queryIndex: number): void;
1866
1866
  };
1867
1867
 
1868
- // ../api/src/adapter/utils/decode-data-type.ts
1868
+ // ../core/src/adapter/utils/decode-data-type.ts
1869
1869
  function decodeVertexType(type) {
1870
1870
  const dataType = TYPE_MAP[type];
1871
1871
  const bytes = getDataTypeBytes(dataType);
@@ -1909,13 +1909,18 @@ var __exports__ = (() => {
1909
1909
  sint32: 4
1910
1910
  };
1911
1911
 
1912
- // ../api/src/adapter/utils/decode-vertex-format.ts
1912
+ // ../core/src/adapter/utils/decode-vertex-format.ts
1913
1913
  function decodeVertexFormat(format) {
1914
+ let webglOnly;
1915
+ if (format.endsWith("-webgl")) {
1916
+ format.replace("-webgl", "");
1917
+ webglOnly = true;
1918
+ }
1914
1919
  const [type_, count] = format.split("x");
1915
1920
  const type = type_;
1916
1921
  const components = count ? parseInt(count) : 1;
1917
1922
  const decodedType = decodeVertexType(type);
1918
- return {
1923
+ const result = {
1919
1924
  type,
1920
1925
  components,
1921
1926
  byteLength: decodedType.byteLength * components,
@@ -1923,9 +1928,13 @@ var __exports__ = (() => {
1923
1928
  signed: decodedType.signed,
1924
1929
  normalized: decodedType.normalized
1925
1930
  };
1931
+ if (webglOnly) {
1932
+ result.webglOnly = true;
1933
+ }
1934
+ return result;
1926
1935
  }
1927
1936
 
1928
- // ../api/src/lib/utils/cast.ts
1937
+ // ../core/src/lib/utils/cast.ts
1929
1938
  function cast(value) {
1930
1939
  return value;
1931
1940
  }
@@ -2510,6 +2519,12 @@ var __exports__ = (() => {
2510
2519
  }
2511
2520
 
2512
2521
  // src/adapter/helpers/get-vertex-buffer-layout.ts
2522
+ function getWebGPUVertexFormat(format) {
2523
+ if (format.endsWith("-webgl")) {
2524
+ throw new Error(`WebGPU does not support vertex format ${format}`);
2525
+ }
2526
+ return format;
2527
+ }
2513
2528
  function getVertexBufferLayout(layout, bufferMap) {
2514
2529
  const vertexBufferLayouts = [];
2515
2530
  const usedAttributes = /* @__PURE__ */ new Set();
@@ -2523,7 +2538,7 @@ var __exports__ = (() => {
2523
2538
  const attributeLayout = findAttributeLayout(layout, interleaved.name, usedAttributes);
2524
2539
  stepMode = attributeLayout.stepMode || "vertex";
2525
2540
  vertexAttributes.push({
2526
- format: attributeLayout.format,
2541
+ format: getWebGPUVertexFormat(attributeLayout.format),
2527
2542
  offset: byteOffset + byteStride,
2528
2543
  shaderLocation: attributeLayout.location
2529
2544
  });
@@ -2534,7 +2549,7 @@ var __exports__ = (() => {
2534
2549
  byteStride = decodeVertexFormat(attributeLayout.format).byteLength;
2535
2550
  stepMode = attributeLayout.stepMode || "vertex";
2536
2551
  vertexAttributes.push({
2537
- format: attributeLayout.format,
2552
+ format: getWebGPUVertexFormat(attributeLayout.format),
2538
2553
  offset: byteOffset,
2539
2554
  shaderLocation: attributeLayout.location
2540
2555
  });
@@ -2551,7 +2566,7 @@ var __exports__ = (() => {
2551
2566
  arrayStride: decodeVertexFormat(attribute.format).byteLength,
2552
2567
  stepMode: attribute.stepMode || "vertex",
2553
2568
  attributes: [{
2554
- format: attribute.format,
2569
+ format: getWebGPUVertexFormat(attribute.format),
2555
2570
  offset: 0,
2556
2571
  shaderLocation: attribute.location
2557
2572
  }]
@@ -2677,8 +2692,8 @@ var __exports__ = (() => {
2677
2692
  };
2678
2693
  }
2679
2694
  switch (this.props.topology) {
2680
- case "triangle-fan":
2681
- case "line-loop":
2695
+ case "triangle-fan-webgl":
2696
+ case "line-loop-webgl":
2682
2697
  throw new Error(`WebGPU does not support primitive topology ${this.props.topology}`);
2683
2698
  default:
2684
2699
  }