@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.
- package/LICENSE +2 -1
- package/dist/adapter/helpers/accessor-to-format.js.map +1 -1
- package/dist/adapter/helpers/convert-texture-format.d.ts +1 -1
- package/dist/adapter/helpers/convert-texture-format.d.ts.map +1 -1
- package/dist/adapter/helpers/convert-texture-format.js.map +1 -1
- package/dist/adapter/helpers/get-bind-group.d.ts +1 -1
- package/dist/adapter/helpers/get-bind-group.d.ts.map +1 -1
- package/dist/adapter/helpers/get-bind-group.js +1 -1
- package/dist/adapter/helpers/get-bind-group.js.map +1 -1
- package/dist/adapter/helpers/get-vertex-buffer-layout.d.ts +1 -1
- package/dist/adapter/helpers/get-vertex-buffer-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-vertex-buffer-layout.js +10 -4
- package/dist/adapter/helpers/get-vertex-buffer-layout.js.map +1 -1
- package/dist/adapter/helpers/webgpu-parameters.d.ts +1 -1
- package/dist/adapter/helpers/webgpu-parameters.d.ts.map +1 -1
- package/dist/adapter/helpers/webgpu-parameters.js.map +1 -1
- package/dist/adapter/resources/webgpu-buffer.d.ts +1 -1
- package/dist/adapter/resources/webgpu-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-buffer.js +1 -1
- package/dist/adapter/resources/webgpu-buffer.js.map +1 -1
- package/dist/adapter/resources/webgpu-command-encoder.d.ts +1 -1
- package/dist/adapter/resources/webgpu-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-command-encoder.js +1 -1
- package/dist/adapter/resources/webgpu-command-encoder.js.map +1 -1
- package/dist/adapter/resources/webgpu-compute-pass.d.ts +1 -1
- package/dist/adapter/resources/webgpu-compute-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-compute-pass.js +1 -1
- package/dist/adapter/resources/webgpu-compute-pass.js.map +1 -1
- package/dist/adapter/resources/webgpu-compute-pipeline.d.ts +1 -1
- package/dist/adapter/resources/webgpu-compute-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-compute-pipeline.js +1 -1
- package/dist/adapter/resources/webgpu-compute-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgpu-external-texture.d.ts +1 -1
- package/dist/adapter/resources/webgpu-external-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-external-texture.js +1 -1
- package/dist/adapter/resources/webgpu-external-texture.js.map +1 -1
- package/dist/adapter/resources/webgpu-framebuffer.d.ts +2 -2
- package/dist/adapter/resources/webgpu-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-framebuffer.js +1 -1
- package/dist/adapter/resources/webgpu-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgpu-query.js.map +1 -1
- package/dist/adapter/resources/webgpu-render-pass.d.ts +2 -2
- package/dist/adapter/resources/webgpu-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-render-pass.js +1 -1
- package/dist/adapter/resources/webgpu-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgpu-render-pipeline.d.ts +2 -2
- package/dist/adapter/resources/webgpu-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-render-pipeline.js +3 -3
- package/dist/adapter/resources/webgpu-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgpu-sampler.d.ts +1 -1
- package/dist/adapter/resources/webgpu-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-sampler.js +1 -1
- package/dist/adapter/resources/webgpu-sampler.js.map +1 -1
- package/dist/adapter/resources/webgpu-shader.d.ts +2 -2
- package/dist/adapter/resources/webgpu-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-shader.js +1 -1
- package/dist/adapter/resources/webgpu-shader.js.map +1 -1
- package/dist/adapter/resources/webgpu-texture.d.ts +1 -1
- package/dist/adapter/resources/webgpu-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-texture.js +1 -1
- package/dist/adapter/resources/webgpu-texture.js.map +1 -1
- package/dist/adapter/webgpu-canvas-context.d.ts +3 -3
- package/dist/adapter/webgpu-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgpu-canvas-context.js +1 -1
- package/dist/adapter/webgpu-canvas-context.js.map +1 -1
- package/dist/adapter/webgpu-device.d.ts +2 -2
- package/dist/adapter/webgpu-device.d.ts.map +1 -1
- package/dist/adapter/webgpu-device.js +1 -1
- package/dist/adapter/webgpu-device.js.map +1 -1
- package/dist/dist.dev.js +41 -26
- package/dist/index.cjs +77 -71
- package/dist.min.js +4 -4
- package/package.json +3 -3
- package/src/adapter/helpers/accessor-to-format.ts +1 -1
- package/src/adapter/helpers/convert-texture-format.ts +1 -1
- package/src/adapter/helpers/get-bind-group.ts +2 -2
- package/src/adapter/helpers/get-vertex-buffer-layout.ts +13 -5
- package/src/adapter/helpers/webgpu-parameters.ts +1 -1
- package/src/adapter/resources/webgpu-buffer.ts +1 -1
- package/src/adapter/resources/webgpu-command-encoder.ts +1 -1
- package/src/adapter/resources/webgpu-compute-pass.ts +1 -1
- package/src/adapter/resources/webgpu-compute-pipeline.ts +1 -1
- package/src/adapter/resources/webgpu-external-texture.ts +1 -1
- package/src/adapter/resources/webgpu-framebuffer.ts +2 -2
- package/src/adapter/resources/webgpu-query.ts +1 -1
- package/src/adapter/resources/webgpu-render-pass.ts +2 -2
- package/src/adapter/resources/webgpu-render-pipeline.ts +4 -4
- package/src/adapter/resources/webgpu-sampler.ts +1 -1
- package/src/adapter/resources/webgpu-shader.ts +2 -2
- package/src/adapter/resources/webgpu-texture.ts +1 -1
- package/src/adapter/webgpu-canvas-context.ts +2 -2
- 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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
// ../
|
|
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
|
-
|
|
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
|
-
// ../
|
|
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
|
}
|