@luma.gl/core 9.0.0-beta.1 → 9.0.0-beta.3

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.
@@ -192,7 +192,7 @@ export declare abstract class Device {
192
192
  sourceType?: number;
193
193
  }): Uint8Array | Uint16Array | Float32Array;
194
194
  /** @deprecated - will be removed - should use command encoder */
195
- readPixelsToBufferWebGL2(source: Framebuffer | Texture, options?: {
195
+ readPixelsToBufferWebGL(source: Framebuffer | Texture, options?: {
196
196
  sourceX?: number;
197
197
  sourceY?: number;
198
198
  sourceFormat?: number;
@@ -202,6 +202,19 @@ export declare abstract class Device {
202
202
  sourceHeight?: number;
203
203
  sourceType?: number;
204
204
  }): Buffer;
205
+ /** @deprecated - will be removed - should use WebGPU parameters (pipeline) */
206
+ setParametersWebGL(parameters: any): void;
207
+ /** @deprecated - will be removed - should use WebGPU parameters (pipeline) */
208
+ getParametersWebGL(parameters: any): void;
209
+ /** @deprecated - will be removed - should use WebGPU parameters (pipeline) */
210
+ withParametersWebGL(parameters: any, func: any): any;
211
+ /** @deprecated - will be removed - should use clear arguments in RenderPass */
212
+ clearWebGL(options?: {
213
+ framebuffer?: Framebuffer;
214
+ color?: any;
215
+ depth?: any;
216
+ stencil?: any;
217
+ }): void;
205
218
  protected _getBufferProps(props: BufferProps | ArrayBuffer | ArrayBufferView): BufferProps;
206
219
  }
207
220
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/adapter/device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/adapter/device.ts"],"names":[],"mappings":"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"}
@@ -48,7 +48,19 @@ export class Device {
48
48
  readPixelsToArrayWebGL(source, options) {
49
49
  throw new Error('not implemented');
50
50
  }
51
- readPixelsToBufferWebGL2(source, options) {
51
+ readPixelsToBufferWebGL(source, options) {
52
+ throw new Error('not implemented');
53
+ }
54
+ setParametersWebGL(parameters) {
55
+ throw new Error('not implemented');
56
+ }
57
+ getParametersWebGL(parameters) {
58
+ throw new Error('not implemented');
59
+ }
60
+ withParametersWebGL(parameters, func) {
61
+ throw new Error('not implemented');
62
+ }
63
+ clearWebGL(options) {
52
64
  throw new Error('not implemented');
53
65
  }
54
66
  _getBufferProps(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"device.js","names":["VERSION","lumaStats","log","uid","Buffer","_Symbol$toStringTag","Symbol","toStringTag","Device","constructor","props","id","statsManager","userData","_lumaData","info","lost","canvasContext","defaultProps","toLowerCase","loseDevice","getCanvasContext","Error","createTexture","Promise","data","_createTexture","createCommandEncoder","arguments","length","undefined","readPixelsToArrayWebGL","source","options","readPixelsToBufferWebGL2","_getBufferProps","ArrayBuffer","isView","newProps","usage","INDEX","indexType","Uint32Array","Uint16Array","warn","type","canvas","container","webgl2","webgl1","manageState","width","height","debug","Boolean","get","break","gl"],"sources":["../../src/adapter/device.ts"],"sourcesContent":["// luma.gl, MIT license\nimport {VERSION} from '../init';\nimport {StatsManager, lumaStats} from '../utils/stats-manager';\nimport {log} from '../utils/log';\nimport {uid} from '../utils/utils';\nimport type {TextureFormat} from './types/texture-formats';\nimport type {CanvasContext, CanvasContextProps} from './canvas-context';\nimport type {BufferProps} from './resources/buffer';\nimport {Buffer} from './resources/buffer';\nimport type {RenderPipeline, RenderPipelineProps} from './resources/render-pipeline';\nimport type {ComputePipeline, ComputePipelineProps} from './resources/compute-pipeline';\nimport type {Sampler, SamplerProps} from './resources/sampler';\nimport type {Shader, ShaderProps} from './resources/shader';\nimport type {Texture, TextureProps, TextureData} from './resources/texture';\nimport type {ExternalTexture, ExternalTextureProps} from './resources/external-texture';\nimport type {Framebuffer, FramebufferProps} from './resources/framebuffer';\nimport type {RenderPass, RenderPassProps} from './resources/render-pass';\nimport type {ComputePass, ComputePassProps} from './resources/compute-pass';\nimport type {CommandEncoder, CommandEncoderProps} from './resources/command-encoder';\nimport type {VertexArray, VertexArrayProps} from './resources/vertex-array';\nimport type {TransformFeedback, TransformFeedbackProps} from './resources/transform-feedback';\n\n/** Device properties */\nexport type DeviceProps = {\n id?: string;\n\n type?: 'webgl' | 'webgl1' | 'webgl2' | 'webgpu' | 'best-available';\n\n // Common parameters\n canvas?: HTMLCanvasElement | OffscreenCanvas | string | null; // A canvas element or a canvas string id\n container?: HTMLElement | string | null;\n width?: number /** width is only used when creating a new canvas */;\n height?: number /** height is only used when creating a new canvas */;\n\n // WebGLDevice parameters\n webgl2?: boolean; // Set to false to not create a WebGL2 context (force webgl1)\n webgl1?: boolean; // set to false to not create a WebGL1 context (fails if webgl2 not available)\n\n // WebGLContext PARAMETERS - Can only be set on context creation...\n // alpha?: boolean; // Default render target has an alpha buffer.\n // depth?: boolean; // Default render target has a depth buffer of at least 16 bits.\n // stencil?: boolean; // Default render target has a stencil buffer of at least 8 bits.\n // antialias?: boolean; // Boolean that indicates whether or not to perform anti-aliasing.\n // premultipliedAlpha?: boolean; // Boolean that indicates that the page compositor will assume the drawing buffer contains colors with pre-multiplied alpha.\n // preserveDrawingBuffer?: boolean; // Default render target buffers will not be automatically cleared and will preserve their values until cleared or overwritten\n // failIfMajorPerformanceCaveat?: boolean; // Do not create if the system performance is low.\n\n // Unclear if these are still supported\n debug?: boolean; // Instrument context (at the expense of performance)\n manageState?: boolean; // Set to false to disable WebGL state management instrumentation\n break?: string[]; // TODO: types\n\n // @deprecated Attach to existing context\n gl?: WebGLRenderingContext | WebGL2RenderingContext | null;\n};\n\n/**\n * Identifies the GPU vendor and driver.\n * @note Chrome WebGPU does not provide much information, though more can be enabled with\n * @see https://developer.chrome.com/blog/new-in-webgpu-120#adapter_information_updates\n * chrome://flags/#enable-webgpu-developer-features\n */\nexport type DeviceInfo = {\n /** Type of device */\n type: 'webgl' | 'webgl2' | 'webgpu';\n /** Vendor (name of GPU vendor, Apple, nVidia etc */\n vendor: string;\n /** Renderer (usually driver name) */\n renderer: string;\n /** version of driver */\n version: string;\n /** family of GPU */\n gpu: 'nvidia' | 'amd' | 'intel' | 'apple' | 'software' | 'unknown';\n /** Type of GPU () */\n gpuType: 'discrete' | 'integrated' | 'cpu' | 'unknown';\n /** GPU architecture */\n gpuArchitecture?: string; // 'common-3' on Apple\n /** GPU driver backend. Can sometimes be sniffed */\n gpuBackend?: 'opengl' | 'opengles' | 'metal' | 'd3d11' | 'd3d12' | 'vulkan' | 'unknown';\n /** If this is a fallback adapter */\n fallback?: boolean;\n /** Shader language supported by device.createShader() */\n shadingLanguage: 'wgsl' | 'glsl';\n /** Highest supported shader language version (GLSL 3.00 = 300, GLSL 1.00 = 100) */\n shadingLanguageVersion: number;\n};\n\n/** Limits for a device */\nexport type DeviceLimits = {\n readonly maxTextureDimension1D?: number;\n readonly maxTextureDimension2D?: number;\n readonly maxTextureDimension3D?: number;\n readonly maxTextureArrayLayers?: number;\n readonly maxBindGroups: number;\n readonly maxDynamicUniformBuffersPerPipelineLayout: number;\n readonly maxDynamicStorageBuffersPerPipelineLayout: number;\n readonly maxSampledTexturesPerShaderStage: number;\n readonly maxSamplersPerShaderStage: number;\n readonly maxStorageBuffersPerShaderStage: number;\n readonly maxStorageTexturesPerShaderStage: number;\n readonly maxUniformBuffersPerShaderStage: number;\n readonly maxUniformBufferBindingSize: number;\n readonly maxStorageBufferBindingSize?: number;\n readonly minUniformBufferOffsetAlignment?: number;\n readonly minStorageBufferOffsetAlignment?: number;\n readonly maxVertexBuffers?: number;\n readonly maxVertexAttributes: number;\n readonly maxVertexBufferArrayStride?: number;\n readonly maxInterStageShaderComponents?: number;\n readonly maxComputeWorkgroupStorageSize?: number;\n readonly maxComputeInvocationsPerWorkgroup?: number;\n readonly maxComputeWorkgroupSizeX?: number;\n readonly maxComputeWorkgroupSizeY?: number;\n readonly maxComputeWorkgroupSizeZ?: number;\n readonly maxComputeWorkgroupsPerDimension?: number;\n};\n\nexport type WebGPUDeviceFeature =\n | 'depth-clip-control'\n | 'depth24unorm-stencil8'\n | 'depth32float-stencil8'\n | 'timestamp-query'\n | 'indirect-first-instance'\n | 'texture-compression-bc'\n | 'texture-compression-etc2'\n | 'texture-compression-astc';\n\n// obsolete...\n// 'depth-clamping' |\n// 'depth24unorm-stencil8' |\n// 'depth32float-stencil8' |\n// 'pipeline-statistics-query' |\n// 'timestamp-query' |\n// 'texture-compression-bc'\n\nexport type WebGLDeviceFeature =\n | 'webgpu'\n | 'webgl2'\n | 'webgl'\n\n // api support (unify with WebGPU timestamp-query?)\n | 'timer-query-webgl'\n | 'uniform-buffers-webgl'\n | 'uniforms-webgl'\n\n // texture filtering\n | 'texture-filter-linear-float32-webgl'\n | 'texture-filter-linear-float16-webgl'\n | 'texture-filter-anisotropic-webgl'\n\n // texture rendering\n | 'texture-renderable-float32-webgl'\n | 'texture-renderable-float16-webgl'\n | 'texture-renderable-rgba32float-webgl' // TODO - remove\n\n // texture blending\n | 'texture-blend-float-webgl1'\n\n // texture format support\n | 'texture-formats-norm16-webgl'\n | 'texture-formats-srgb-webgl1'\n | 'texture-formats-depth-webgl1'\n | 'texture-formats-float32-webgl1'\n | 'texture-formats-float16-webgl1'\n\n // api support\n | 'vertex-array-object-webgl1'\n | 'instanced-rendering-webgl1'\n | 'multiple-render-targets-webgl1'\n | 'index-uint32-webgl1'\n | 'blend-minmax-webgl1'\n | 'transform-feedback-webgl2'\n\n // glsl extensions\n | 'glsl-frag-data'\n | 'glsl-frag-depth'\n | 'glsl-derivatives'\n | 'glsl-texture-lod';\n\ntype WebGLCompressedTextureFeatures =\n | 'texture-compression-bc5-webgl'\n | 'texture-compression-etc1-webgl'\n | 'texture-compression-pvrtc-webgl'\n | 'texture-compression-atc-webgl';\n\n/** Valid feature strings */\nexport type DeviceFeature =\n | WebGPUDeviceFeature\n | WebGLDeviceFeature\n | WebGLCompressedTextureFeatures;\n\n/**\n * WebGPU Device/WebGL context abstraction\n */\nexport abstract class Device {\n\n static defaultProps: Required<DeviceProps> = {\n id: null!,\n type: 'best-available',\n canvas: null,\n container: null,\n webgl2: true, // Attempt to create a WebGL2 context\n webgl1: true, // Attempt to create a WebGL1 context (false to fail if webgl2 not available)\n manageState: true,\n width: 800, // width are height are only used by headless gl\n height: 600,\n debug: Boolean(log.get('debug')), // Instrument context (at the expense of performance)\n break: [],\n \n // alpha: undefined,\n // depth: undefined,\n // stencil: undefined,\n // antialias: undefined,\n // premultipliedAlpha: undefined,\n // preserveDrawingBuffer: undefined,\n // failIfMajorPerformanceCaveat: undefined\n \n gl: null\n };\n \n\n get [Symbol.toStringTag](): string {\n return 'Device';\n }\n\n static VERSION = VERSION;\n\n constructor(props: DeviceProps) {\n this.props = {...Device.defaultProps, ...props};\n this.id = this.props.id || uid(this[Symbol.toStringTag].toLowerCase());\n }\n\n /** id of this device, primarily for debugging */\n readonly id: string;\n /** stats */\n readonly statsManager: StatsManager = lumaStats;\n /** A copy of the device props */\n readonly props: Required<DeviceProps>;\n /** Available for the application to store data on the device */\n userData: {[key: string]: unknown} = {};\n /** Used by other luma.gl modules to store data on the device */\n _lumaData: {[key: string]: unknown} = {};\n\n abstract destroy(): void;\n\n // Capabilities\n\n /** Information about the device (vendor, versions etc) */\n abstract info: DeviceInfo;\n\n /** Optional capability discovery */\n abstract get features(): Set<DeviceFeature>;\n\n /** WebGPU style device limits */\n abstract get limits(): DeviceLimits;\n\n /** Check if device supports a specific texture format (creation and `nearest` sampling) */\n abstract isTextureFormatSupported(format: TextureFormat): boolean;\n\n /** Check if linear filtering (sampler interpolation) is supported for a specific texture format */\n abstract isTextureFormatFilterable(format: TextureFormat): boolean;\n\n /** Check if device supports rendering to a specific texture format */\n abstract isTextureFormatRenderable(format: TextureFormat): boolean;\n\n // Device loss\n\n /** `true` if device is already lost */\n abstract get isLost(): boolean;\n\n /** Promise that resolves when device is lost */\n abstract readonly lost: Promise<{reason: 'destroyed'; message: string}>;\n\n /**\n * Trigger device loss.\n * @returns `true` if context loss could actually be triggered.\n * @note primarily intended for testing how application reacts to device loss\n */\n loseDevice(): boolean {\n return false;\n }\n\n // Canvas context\n\n /** Default / primary canvas context. Can be null as WebGPU devices can be created without a CanvasContext */\n abstract canvasContext: CanvasContext | null;\n\n /** Returns the default / primary canvas context. Throws an error if no canvas context is available (a WebGPU compute device) */\n getCanvasContext(): CanvasContext {\n if (!this.canvasContext) {\n throw new Error('Device has no CanvasContext');\n }\n return this.canvasContext;\n }\n\n /** Creates a new CanvasContext (WebGPU only) */\n abstract createCanvasContext(props?: CanvasContextProps): CanvasContext;\n\n /** Call after rendering a frame (necessary e.g. on WebGL OffscreenCanvas) */\n abstract submit(): void;\n\n // Resource creation\n\n /** Create a buffer */\n abstract createBuffer(props: BufferProps | ArrayBuffer | ArrayBufferView): Buffer;\n\n /** Create a texture */\n abstract _createTexture(props: TextureProps): Texture;\n createTexture(props: TextureProps): Texture;\n createTexture(data: Promise<TextureData>): Texture;\n createTexture(url: string): Texture;\n\n createTexture(props: TextureProps | Promise<TextureData> | string): Texture {\n // Signature: new Texture2D(gl, url | Promise)\n if (props instanceof Promise || typeof props === 'string') {\n props = {data: props};\n }\n return this._createTexture(props);\n }\n\n /** Create a temporary texture view of a video source */\n abstract createExternalTexture(props: ExternalTextureProps): ExternalTexture;\n\n /** Create a sampler */\n abstract createSampler(props: SamplerProps): Sampler;\n\n /** Create a Framebuffer. Must have at least one attachment. */\n abstract createFramebuffer(props: FramebufferProps): Framebuffer;\n\n /** Create a shader */\n abstract createShader(props: ShaderProps): Shader;\n\n /** Create a render pipeline (aka program) */\n abstract createRenderPipeline(props: RenderPipelineProps): RenderPipeline;\n\n /** Create a compute pipeline (aka program). WebGPU only. */\n abstract createComputePipeline(props: ComputePipelineProps): ComputePipeline;\n\n /** Create a vertex array */\n abstract createVertexArray(props: VertexArrayProps): VertexArray;\n\n /** Create a RenderPass */\n abstract beginRenderPass(props?: RenderPassProps): RenderPass;\n\n /** Create a ComputePass */\n abstract beginComputePass(props?: ComputePassProps): ComputePass;\n\n /** Get a renderpass that is set up to render to the primary CanvasContext */\n abstract getDefaultRenderPass(): RenderPass;\n\n /** Create a transform feedback (immutable set of output buffer bindings). WebGL 2 only. */\n abstract createTransformFeedback(props: TransformFeedbackProps): TransformFeedback;\n\n createCommandEncoder(props: CommandEncoderProps = {}): CommandEncoder {\n throw new Error('not implemented');\n }\n\n // HACKS - until we have a better way to handle these\n\n /** @deprecated - will be removed - should use command encoder */\n readPixelsToArrayWebGL(\n source: Framebuffer | Texture,\n options?: {\n sourceX?: number;\n sourceY?: number;\n sourceFormat?: number;\n sourceAttachment?: number;\n target?: Uint8Array | Uint16Array | Float32Array;\n // following parameters are auto deduced if not provided\n sourceWidth?: number;\n sourceHeight?: number;\n sourceType?: number;\n }\n ): Uint8Array | Uint16Array | Float32Array {\n throw new Error('not implemented');\n }\n \n /** @deprecated - will be removed - should use command encoder */\n readPixelsToBufferWebGL2(\n source: Framebuffer | Texture,\n options?: {\n sourceX?: number;\n sourceY?: number;\n sourceFormat?: number;\n target?: Buffer; // A new Buffer object is created when not provided.\n targetByteOffset?: number; // byte offset in buffer object\n // following parameters are auto deduced if not provided\n sourceWidth?: number;\n sourceHeight?: number;\n sourceType?: number;\n }\n ): Buffer {\n throw new Error('not implemented');\n }\n\n // Implementation\n\n protected _getBufferProps(props: BufferProps | ArrayBuffer | ArrayBufferView): BufferProps {\n if (props instanceof ArrayBuffer || ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n // TODO - fragile, as this is done before we merge with default options\n // inside the Buffer constructor\n\n const newProps = {...props};\n // Deduce indexType\n if ((props.usage || 0) & Buffer.INDEX && !props.indexType) {\n if (props.data instanceof Uint32Array) {\n newProps.indexType = 'uint32';\n } else if (props.data instanceof Uint16Array) {\n newProps.indexType = 'uint16';\n } else {\n log.warn('indices buffer content must be of integer type')();\n }\n }\n return newProps;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"device.js","names":["VERSION","lumaStats","log","uid","Buffer","_Symbol$toStringTag","Symbol","toStringTag","Device","constructor","props","id","statsManager","userData","_lumaData","info","lost","canvasContext","defaultProps","toLowerCase","loseDevice","getCanvasContext","Error","createTexture","Promise","data","_createTexture","createCommandEncoder","arguments","length","undefined","readPixelsToArrayWebGL","source","options","readPixelsToBufferWebGL","setParametersWebGL","parameters","getParametersWebGL","withParametersWebGL","func","clearWebGL","_getBufferProps","ArrayBuffer","isView","newProps","usage","INDEX","indexType","Uint32Array","Uint16Array","warn","type","canvas","container","webgl2","webgl1","manageState","width","height","debug","Boolean","get","break","gl"],"sources":["../../src/adapter/device.ts"],"sourcesContent":["// luma.gl, MIT license\nimport {VERSION} from '../init';\nimport {StatsManager, lumaStats} from '../utils/stats-manager';\nimport {log} from '../utils/log';\nimport {uid} from '../utils/utils';\nimport type {TextureFormat} from './types/texture-formats';\nimport type {CanvasContext, CanvasContextProps} from './canvas-context';\nimport type {BufferProps} from './resources/buffer';\nimport {Buffer} from './resources/buffer';\nimport type {RenderPipeline, RenderPipelineProps} from './resources/render-pipeline';\nimport type {ComputePipeline, ComputePipelineProps} from './resources/compute-pipeline';\nimport type {Sampler, SamplerProps} from './resources/sampler';\nimport type {Shader, ShaderProps} from './resources/shader';\nimport type {Texture, TextureProps, TextureData} from './resources/texture';\nimport type {ExternalTexture, ExternalTextureProps} from './resources/external-texture';\nimport type {Framebuffer, FramebufferProps} from './resources/framebuffer';\nimport type {RenderPass, RenderPassProps} from './resources/render-pass';\nimport type {ComputePass, ComputePassProps} from './resources/compute-pass';\nimport type {CommandEncoder, CommandEncoderProps} from './resources/command-encoder';\nimport type {VertexArray, VertexArrayProps} from './resources/vertex-array';\nimport type {TransformFeedback, TransformFeedbackProps} from './resources/transform-feedback';\n\n/** Device properties */\nexport type DeviceProps = {\n id?: string;\n\n type?: 'webgl' | 'webgl1' | 'webgl2' | 'webgpu' | 'best-available';\n\n // Common parameters\n canvas?: HTMLCanvasElement | OffscreenCanvas | string | null; // A canvas element or a canvas string id\n container?: HTMLElement | string | null;\n width?: number /** width is only used when creating a new canvas */;\n height?: number /** height is only used when creating a new canvas */;\n\n // WebGLDevice parameters\n webgl2?: boolean; // Set to false to not create a WebGL2 context (force webgl1)\n webgl1?: boolean; // set to false to not create a WebGL1 context (fails if webgl2 not available)\n\n // WebGLContext PARAMETERS - Can only be set on context creation...\n // alpha?: boolean; // Default render target has an alpha buffer.\n // depth?: boolean; // Default render target has a depth buffer of at least 16 bits.\n // stencil?: boolean; // Default render target has a stencil buffer of at least 8 bits.\n // antialias?: boolean; // Boolean that indicates whether or not to perform anti-aliasing.\n // premultipliedAlpha?: boolean; // Boolean that indicates that the page compositor will assume the drawing buffer contains colors with pre-multiplied alpha.\n // preserveDrawingBuffer?: boolean; // Default render target buffers will not be automatically cleared and will preserve their values until cleared or overwritten\n // failIfMajorPerformanceCaveat?: boolean; // Do not create if the system performance is low.\n\n // Unclear if these are still supported\n debug?: boolean; // Instrument context (at the expense of performance)\n manageState?: boolean; // Set to false to disable WebGL state management instrumentation\n break?: string[]; // TODO: types\n\n // @deprecated Attach to existing context\n gl?: WebGLRenderingContext | WebGL2RenderingContext | null;\n};\n\n/**\n * Identifies the GPU vendor and driver.\n * @note Chrome WebGPU does not provide much information, though more can be enabled with\n * @see https://developer.chrome.com/blog/new-in-webgpu-120#adapter_information_updates\n * chrome://flags/#enable-webgpu-developer-features\n */\nexport type DeviceInfo = {\n /** Type of device */\n type: 'webgl' | 'webgl2' | 'webgpu';\n /** Vendor (name of GPU vendor, Apple, nVidia etc */\n vendor: string;\n /** Renderer (usually driver name) */\n renderer: string;\n /** version of driver */\n version: string;\n /** family of GPU */\n gpu: 'nvidia' | 'amd' | 'intel' | 'apple' | 'software' | 'unknown';\n /** Type of GPU () */\n gpuType: 'discrete' | 'integrated' | 'cpu' | 'unknown';\n /** GPU architecture */\n gpuArchitecture?: string; // 'common-3' on Apple\n /** GPU driver backend. Can sometimes be sniffed */\n gpuBackend?: 'opengl' | 'opengles' | 'metal' | 'd3d11' | 'd3d12' | 'vulkan' | 'unknown';\n /** If this is a fallback adapter */\n fallback?: boolean;\n /** Shader language supported by device.createShader() */\n shadingLanguage: 'wgsl' | 'glsl';\n /** Highest supported shader language version (GLSL 3.00 = 300, GLSL 1.00 = 100) */\n shadingLanguageVersion: number;\n};\n\n/** Limits for a device */\nexport type DeviceLimits = {\n readonly maxTextureDimension1D?: number;\n readonly maxTextureDimension2D?: number;\n readonly maxTextureDimension3D?: number;\n readonly maxTextureArrayLayers?: number;\n readonly maxBindGroups: number;\n readonly maxDynamicUniformBuffersPerPipelineLayout: number;\n readonly maxDynamicStorageBuffersPerPipelineLayout: number;\n readonly maxSampledTexturesPerShaderStage: number;\n readonly maxSamplersPerShaderStage: number;\n readonly maxStorageBuffersPerShaderStage: number;\n readonly maxStorageTexturesPerShaderStage: number;\n readonly maxUniformBuffersPerShaderStage: number;\n readonly maxUniformBufferBindingSize: number;\n readonly maxStorageBufferBindingSize?: number;\n readonly minUniformBufferOffsetAlignment?: number;\n readonly minStorageBufferOffsetAlignment?: number;\n readonly maxVertexBuffers?: number;\n readonly maxVertexAttributes: number;\n readonly maxVertexBufferArrayStride?: number;\n readonly maxInterStageShaderComponents?: number;\n readonly maxComputeWorkgroupStorageSize?: number;\n readonly maxComputeInvocationsPerWorkgroup?: number;\n readonly maxComputeWorkgroupSizeX?: number;\n readonly maxComputeWorkgroupSizeY?: number;\n readonly maxComputeWorkgroupSizeZ?: number;\n readonly maxComputeWorkgroupsPerDimension?: number;\n};\n\nexport type WebGPUDeviceFeature =\n | 'depth-clip-control'\n | 'depth24unorm-stencil8'\n | 'depth32float-stencil8'\n | 'timestamp-query'\n | 'indirect-first-instance'\n | 'texture-compression-bc'\n | 'texture-compression-etc2'\n | 'texture-compression-astc';\n\n// obsolete...\n// 'depth-clamping' |\n// 'depth24unorm-stencil8' |\n// 'depth32float-stencil8' |\n// 'pipeline-statistics-query' |\n// 'timestamp-query' |\n// 'texture-compression-bc'\n\nexport type WebGLDeviceFeature =\n | 'webgpu'\n | 'webgl2'\n | 'webgl'\n\n // api support (unify with WebGPU timestamp-query?)\n | 'timer-query-webgl'\n | 'uniform-buffers-webgl'\n | 'uniforms-webgl'\n\n // texture filtering\n | 'texture-filter-linear-float32-webgl'\n | 'texture-filter-linear-float16-webgl'\n | 'texture-filter-anisotropic-webgl'\n\n // texture rendering\n | 'texture-renderable-float32-webgl'\n | 'texture-renderable-float16-webgl'\n | 'texture-renderable-rgba32float-webgl' // TODO - remove\n\n // texture blending\n | 'texture-blend-float-webgl1'\n\n // texture format support\n | 'texture-formats-norm16-webgl'\n | 'texture-formats-srgb-webgl1'\n | 'texture-formats-depth-webgl1'\n | 'texture-formats-float32-webgl1'\n | 'texture-formats-float16-webgl1'\n\n // api support\n | 'vertex-array-object-webgl1'\n | 'instanced-rendering-webgl1'\n | 'multiple-render-targets-webgl1'\n | 'index-uint32-webgl1'\n | 'blend-minmax-webgl1'\n | 'transform-feedback-webgl2'\n\n // glsl extensions\n | 'glsl-frag-data'\n | 'glsl-frag-depth'\n | 'glsl-derivatives'\n | 'glsl-texture-lod';\n\ntype WebGLCompressedTextureFeatures =\n | 'texture-compression-bc5-webgl'\n | 'texture-compression-etc1-webgl'\n | 'texture-compression-pvrtc-webgl'\n | 'texture-compression-atc-webgl';\n\n/** Valid feature strings */\nexport type DeviceFeature =\n | WebGPUDeviceFeature\n | WebGLDeviceFeature\n | WebGLCompressedTextureFeatures;\n\n/**\n * WebGPU Device/WebGL context abstraction\n */\nexport abstract class Device {\n\n static defaultProps: Required<DeviceProps> = {\n id: null!,\n type: 'best-available',\n canvas: null,\n container: null,\n webgl2: true, // Attempt to create a WebGL2 context\n webgl1: true, // Attempt to create a WebGL1 context (false to fail if webgl2 not available)\n manageState: true,\n width: 800, // width are height are only used by headless gl\n height: 600,\n debug: Boolean(log.get('debug')), // Instrument context (at the expense of performance)\n break: [],\n \n // alpha: undefined,\n // depth: undefined,\n // stencil: undefined,\n // antialias: undefined,\n // premultipliedAlpha: undefined,\n // preserveDrawingBuffer: undefined,\n // failIfMajorPerformanceCaveat: undefined\n \n gl: null\n };\n \n\n get [Symbol.toStringTag](): string {\n return 'Device';\n }\n\n static VERSION = VERSION;\n\n constructor(props: DeviceProps) {\n this.props = {...Device.defaultProps, ...props};\n this.id = this.props.id || uid(this[Symbol.toStringTag].toLowerCase());\n }\n\n /** id of this device, primarily for debugging */\n readonly id: string;\n /** stats */\n readonly statsManager: StatsManager = lumaStats;\n /** A copy of the device props */\n readonly props: Required<DeviceProps>;\n /** Available for the application to store data on the device */\n userData: {[key: string]: unknown} = {};\n /** Used by other luma.gl modules to store data on the device */\n _lumaData: {[key: string]: unknown} = {};\n\n abstract destroy(): void;\n\n // Capabilities\n\n /** Information about the device (vendor, versions etc) */\n abstract info: DeviceInfo;\n\n /** Optional capability discovery */\n abstract get features(): Set<DeviceFeature>;\n\n /** WebGPU style device limits */\n abstract get limits(): DeviceLimits;\n\n /** Check if device supports a specific texture format (creation and `nearest` sampling) */\n abstract isTextureFormatSupported(format: TextureFormat): boolean;\n\n /** Check if linear filtering (sampler interpolation) is supported for a specific texture format */\n abstract isTextureFormatFilterable(format: TextureFormat): boolean;\n\n /** Check if device supports rendering to a specific texture format */\n abstract isTextureFormatRenderable(format: TextureFormat): boolean;\n\n // Device loss\n\n /** `true` if device is already lost */\n abstract get isLost(): boolean;\n\n /** Promise that resolves when device is lost */\n abstract readonly lost: Promise<{reason: 'destroyed'; message: string}>;\n\n /**\n * Trigger device loss.\n * @returns `true` if context loss could actually be triggered.\n * @note primarily intended for testing how application reacts to device loss\n */\n loseDevice(): boolean {\n return false;\n }\n\n // Canvas context\n\n /** Default / primary canvas context. Can be null as WebGPU devices can be created without a CanvasContext */\n abstract canvasContext: CanvasContext | null;\n\n /** Returns the default / primary canvas context. Throws an error if no canvas context is available (a WebGPU compute device) */\n getCanvasContext(): CanvasContext {\n if (!this.canvasContext) {\n throw new Error('Device has no CanvasContext');\n }\n return this.canvasContext;\n }\n\n /** Creates a new CanvasContext (WebGPU only) */\n abstract createCanvasContext(props?: CanvasContextProps): CanvasContext;\n\n /** Call after rendering a frame (necessary e.g. on WebGL OffscreenCanvas) */\n abstract submit(): void;\n\n // Resource creation\n\n /** Create a buffer */\n abstract createBuffer(props: BufferProps | ArrayBuffer | ArrayBufferView): Buffer;\n\n /** Create a texture */\n abstract _createTexture(props: TextureProps): Texture;\n createTexture(props: TextureProps): Texture;\n createTexture(data: Promise<TextureData>): Texture;\n createTexture(url: string): Texture;\n\n createTexture(props: TextureProps | Promise<TextureData> | string): Texture {\n // Signature: new Texture2D(gl, url | Promise)\n if (props instanceof Promise || typeof props === 'string') {\n props = {data: props};\n }\n return this._createTexture(props);\n }\n\n /** Create a temporary texture view of a video source */\n abstract createExternalTexture(props: ExternalTextureProps): ExternalTexture;\n\n /** Create a sampler */\n abstract createSampler(props: SamplerProps): Sampler;\n\n /** Create a Framebuffer. Must have at least one attachment. */\n abstract createFramebuffer(props: FramebufferProps): Framebuffer;\n\n /** Create a shader */\n abstract createShader(props: ShaderProps): Shader;\n\n /** Create a render pipeline (aka program) */\n abstract createRenderPipeline(props: RenderPipelineProps): RenderPipeline;\n\n /** Create a compute pipeline (aka program). WebGPU only. */\n abstract createComputePipeline(props: ComputePipelineProps): ComputePipeline;\n\n /** Create a vertex array */\n abstract createVertexArray(props: VertexArrayProps): VertexArray;\n\n /** Create a RenderPass */\n abstract beginRenderPass(props?: RenderPassProps): RenderPass;\n\n /** Create a ComputePass */\n abstract beginComputePass(props?: ComputePassProps): ComputePass;\n\n /** Get a renderpass that is set up to render to the primary CanvasContext */\n abstract getDefaultRenderPass(): RenderPass;\n\n /** Create a transform feedback (immutable set of output buffer bindings). WebGL 2 only. */\n abstract createTransformFeedback(props: TransformFeedbackProps): TransformFeedback;\n\n createCommandEncoder(props: CommandEncoderProps = {}): CommandEncoder {\n throw new Error('not implemented');\n }\n\n // WebGL specific HACKS - enables app to remove webgl import\n // Use until we have a better way to handle these\n\n /** @deprecated - will be removed - should use command encoder */\n readPixelsToArrayWebGL(\n source: Framebuffer | Texture,\n options?: {\n sourceX?: number;\n sourceY?: number;\n sourceFormat?: number;\n sourceAttachment?: number;\n target?: Uint8Array | Uint16Array | Float32Array;\n // following parameters are auto deduced if not provided\n sourceWidth?: number;\n sourceHeight?: number;\n sourceType?: number;\n }\n ): Uint8Array | Uint16Array | Float32Array {\n throw new Error('not implemented');\n }\n \n /** @deprecated - will be removed - should use command encoder */\n readPixelsToBufferWebGL(\n source: Framebuffer | Texture,\n options?: {\n sourceX?: number;\n sourceY?: number;\n sourceFormat?: number;\n target?: Buffer; // A new Buffer object is created when not provided.\n targetByteOffset?: number; // byte offset in buffer object\n // following parameters are auto deduced if not provided\n sourceWidth?: number;\n sourceHeight?: number;\n sourceType?: number;\n }\n ): Buffer {\n throw new Error('not implemented');\n }\n\n /** @deprecated - will be removed - should use WebGPU parameters (pipeline) */\n setParametersWebGL(parameters: any): void {\n throw new Error('not implemented');\n }\n\n /** @deprecated - will be removed - should use WebGPU parameters (pipeline) */\n getParametersWebGL(parameters: any): void {\n throw new Error('not implemented');\n }\n\n /** @deprecated - will be removed - should use WebGPU parameters (pipeline) */\n withParametersWebGL(parameters: any, func: any): any {\n throw new Error('not implemented');\n }\n\n /** @deprecated - will be removed - should use clear arguments in RenderPass */\n clearWebGL(options?: {framebuffer?: Framebuffer; color?: any; depth?: any; stencil?: any}): void {\n throw new Error('not implemented');\n }\n\n // Implementation\n\n protected _getBufferProps(props: BufferProps | ArrayBuffer | ArrayBufferView): BufferProps {\n if (props instanceof ArrayBuffer || ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n // TODO - fragile, as this is done before we merge with default options\n // inside the Buffer constructor\n\n const newProps = {...props};\n // Deduce indexType\n if ((props.usage || 0) & Buffer.INDEX && !props.indexType) {\n if (props.data instanceof Uint32Array) {\n newProps.indexType = 'uint32';\n } else if (props.data instanceof Uint16Array) {\n newProps.indexType = 'uint16';\n } else {\n log.warn('indices buffer content must be of integer type')();\n }\n }\n return newProps;\n }\n}\n"],"mappings":"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"}
@@ -69,6 +69,8 @@ export declare abstract class RenderPipeline extends Resource<RenderPipelineProp
69
69
  renderPass?: RenderPass;
70
70
  /** vertex attributes */
71
71
  vertexArray: VertexArray;
72
+ /** Number of "rows" in index buffer */
73
+ indexCount?: number;
72
74
  /** Number of "rows" in 'vertex' buffers */
73
75
  vertexCount?: number;
74
76
  /** Number of "rows" in 'instance' buffers */
@@ -1 +1 @@
1
- {"version":3,"file":"render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/render-pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/render-pipeline.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"render-pipeline.js","names":["Resource","_Symbol$toStringTag","Symbol","toStringTag","RenderPipeline","constructor","device","props","defaultProps","hash","vs","fs","shaderLayout","bufferLayout","vsEntryPoint","vsConstants","fsEntryPoint","fsConstants","topology","parameters","vertexCount","instanceCount","bindings","uniforms"],"sources":["../../../src/adapter/resources/render-pipeline.ts"],"sourcesContent":["// luma.gl, MIT license\nimport type {Device} from '../device';\nimport type {UniformValue} from '../types/types';\nimport type {PrimitiveTopology, RenderPipelineParameters} from '../types/parameters';\nimport type {ShaderLayout, Binding} from '../types/shader-layout';\nimport type {BufferLayout} from '../types/buffer-layout';\n// import {normalizeAttributeMap} from '../helpers/attribute-bindings';\nimport {Resource, ResourceProps} from './resource';\nimport type {Shader} from './shader';\nimport type {RenderPass} from './render-pass';\nimport {VertexArray} from './vertex-array';\nimport {TransformFeedback} from './transform-feedback';\n\nexport type RenderPipelineProps = ResourceProps & {\n // Shaders and shader layout\n\n /** Compiled vertex shader */\n vs?: Shader | null;\n /** Vertex shader entry point (defaults to 'main'). WGSL only */\n vsEntryPoint?: string; //\n /** Constants to apply to compiled vertex shader (WGSL only) */\n vsConstants?: Record<string, number>; // WGSL only\n /** Compiled fragment shader */\n fs?: Shader | null;\n /** Fragment shader entry point (defaults to 'main'). WGSL only */\n fsEntryPoint?: string; // WGSL only\n /** Constants to apply to compiled fragment shader (WGSL only) */\n fsConstants?: Record<string, number>;\n\n /** Describes the attributes and bindings exposed by the pipeline shader(s). */\n shaderLayout?: ShaderLayout | null;\n /**\n * Describes the buffers accepted by this pipeline and how they are mapped to shader attributes.\n * A default mapping of one buffer per attribute is always created.\n */\n bufferLayout?: BufferLayout[]; // Record<string, Omit<BufferLayout, 'name'>\n\n /** Determines how vertices are read from the 'vertex' attributes */\n topology?: PrimitiveTopology;\n /** Parameters that are controlled by pipeline */\n parameters?: RenderPipelineParameters;\n\n // Can be changed after creation\n // TODO make pipeline immutable? these could be supplied to draw as parameters, in WebGPU they are set on the render pass\n\n /** Number of vertices */\n vertexCount?: number;\n /** Number of instances */\n instanceCount?: number;\n\n /** Buffers, Textures, Samplers for the shader bindings */\n bindings?: Record<string, Binding>;\n /** @deprecated uniforms (WebGL only) */\n uniforms?: Record<string, UniformValue>;\n};\n\n/**\n * A compiled and linked shader program\n */\nexport abstract class RenderPipeline extends Resource<RenderPipelineProps> {\n static override defaultProps: Required<RenderPipelineProps> = {\n ...Resource.defaultProps,\n\n vs: null,\n vsEntryPoint: '', // main\n vsConstants: {},\n\n fs: null,\n fsEntryPoint: '', // main\n fsConstants: {},\n\n shaderLayout: null,\n bufferLayout: [],\n topology: 'triangle-list',\n parameters: {},\n\n vertexCount: 0,\n instanceCount: 0,\n\n bindings: {},\n uniforms: {}\n };\n\n override get [Symbol.toStringTag](): string {\n return 'RenderPipeline';\n }\n\n hash: string = '';\n abstract readonly vs: Shader;\n abstract readonly fs: Shader | null;\n /** The merged layout */\n shaderLayout: ShaderLayout;\n /** Buffer map describing buffer interleaving etc */\n readonly bufferLayout: BufferLayout[];\n\n constructor(device: Device, props: RenderPipelineProps) {\n super(device, props, RenderPipeline.defaultProps);\n this.shaderLayout = this.props.shaderLayout;\n this.bufferLayout = this.props.bufferLayout || [];\n }\n\n /** Set bindings (stored on pipeline and set before each call) */\n abstract setBindings(bindings: Record<string, Binding>): void;\n /** Uniforms\n * @deprecated Only supported on WebGL devices.\n * @note textures, samplers and uniform buffers should be set via `setBindings()`, these are not considered uniforms.\n * @note In WebGL uniforms have a performance penalty, they are reset before each call to enable pipeline sharing.\n */\n abstract setUniforms(bindings: Record<string, UniformValue>): void;\n\n /** Draw call */\n abstract draw(options: {\n /** Render pass to draw into (targeting screen or framebuffer) */\n renderPass?: RenderPass;\n /** vertex attributes */\n vertexArray: VertexArray;\n /** Number of \"rows\" in 'vertex' buffers */\n vertexCount?: number;\n /** Number of \"rows\" in 'instance' buffers */\n instanceCount?: number;\n /** First vertex to draw from */\n firstVertex?: number;\n /** First index to draw from */\n firstIndex?: number;\n /** First instance to draw from */\n firstInstance?: number;\n baseVertex?: number;\n /** Transform feedback. WebGL 2 only. */\n transformFeedback?: TransformFeedback;\n }): void;\n}\n"],"mappings":";SAOQA,QAAQ;AAAAC,mBAAA,GA4EAC,MAAM,CAACC,WAAW;AAxBlC,OAAO,MAAeC,cAAc,SAASJ,QAAQ,CAAsB;EAwBzE,KAAAC,mBAAA,IAA4C;IAC1C,OAAO,gBAAgB;EACzB;EAUAI,WAAWA,CAACC,MAAc,EAAEC,KAA0B,EAAE;IACtD,KAAK,CAACD,MAAM,EAAEC,KAAK,EAAEH,cAAc,CAACI,YAAY,CAAC;IAAC,KATpDC,IAAI,GAAW,EAAE;IAAA,KACCC,EAAE;IAAA,KACFC,EAAE;IAAA,KAEpBC,YAAY;IAAA,KAEHC,YAAY;IAInB,IAAI,CAACD,YAAY,GAAG,IAAI,CAACL,KAAK,CAACK,YAAY;IAC3C,IAAI,CAACC,YAAY,GAAG,IAAI,CAACN,KAAK,CAACM,YAAY,IAAI,EAAE;EACnD;AA+BF;AAvEsBT,cAAc,CAClBI,YAAY,GAAkC;EAC5D,GAAGR,QAAQ,CAACQ,YAAY;EAExBE,EAAE,EAAE,IAAI;EACRI,YAAY,EAAE,EAAE;EAChBC,WAAW,EAAE,CAAC,CAAC;EAEfJ,EAAE,EAAE,IAAI;EACRK,YAAY,EAAE,EAAE;EAChBC,WAAW,EAAE,CAAC,CAAC;EAEfL,YAAY,EAAE,IAAI;EAClBC,YAAY,EAAE,EAAE;EAChBK,QAAQ,EAAE,eAAe;EACzBC,UAAU,EAAE,CAAC,CAAC;EAEdC,WAAW,EAAE,CAAC;EACdC,aAAa,EAAE,CAAC;EAEhBC,QAAQ,EAAE,CAAC,CAAC;EACZC,QAAQ,EAAE,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"render-pipeline.js","names":["Resource","_Symbol$toStringTag","Symbol","toStringTag","RenderPipeline","constructor","device","props","defaultProps","hash","vs","fs","shaderLayout","bufferLayout","vsEntryPoint","vsConstants","fsEntryPoint","fsConstants","topology","parameters","vertexCount","instanceCount","bindings","uniforms"],"sources":["../../../src/adapter/resources/render-pipeline.ts"],"sourcesContent":["// luma.gl, MIT license\nimport type {Device} from '../device';\nimport type {UniformValue} from '../types/types';\nimport type {PrimitiveTopology, RenderPipelineParameters} from '../types/parameters';\nimport type {ShaderLayout, Binding} from '../types/shader-layout';\nimport type {BufferLayout} from '../types/buffer-layout';\n// import {normalizeAttributeMap} from '../helpers/attribute-bindings';\nimport {Resource, ResourceProps} from './resource';\nimport type {Shader} from './shader';\nimport type {RenderPass} from './render-pass';\nimport {VertexArray} from './vertex-array';\nimport {TransformFeedback} from './transform-feedback';\n\nexport type RenderPipelineProps = ResourceProps & {\n // Shaders and shader layout\n\n /** Compiled vertex shader */\n vs?: Shader | null;\n /** Vertex shader entry point (defaults to 'main'). WGSL only */\n vsEntryPoint?: string; //\n /** Constants to apply to compiled vertex shader (WGSL only) */\n vsConstants?: Record<string, number>; // WGSL only\n /** Compiled fragment shader */\n fs?: Shader | null;\n /** Fragment shader entry point (defaults to 'main'). WGSL only */\n fsEntryPoint?: string; // WGSL only\n /** Constants to apply to compiled fragment shader (WGSL only) */\n fsConstants?: Record<string, number>;\n\n /** Describes the attributes and bindings exposed by the pipeline shader(s). */\n shaderLayout?: ShaderLayout | null;\n /**\n * Describes the buffers accepted by this pipeline and how they are mapped to shader attributes.\n * A default mapping of one buffer per attribute is always created.\n */\n bufferLayout?: BufferLayout[]; // Record<string, Omit<BufferLayout, 'name'>\n\n /** Determines how vertices are read from the 'vertex' attributes */\n topology?: PrimitiveTopology;\n /** Parameters that are controlled by pipeline */\n parameters?: RenderPipelineParameters;\n\n // Can be changed after creation\n // TODO make pipeline immutable? these could be supplied to draw as parameters, in WebGPU they are set on the render pass\n\n /** Number of vertices */\n vertexCount?: number;\n /** Number of instances */\n instanceCount?: number;\n\n /** Buffers, Textures, Samplers for the shader bindings */\n bindings?: Record<string, Binding>;\n /** @deprecated uniforms (WebGL only) */\n uniforms?: Record<string, UniformValue>;\n};\n\n/**\n * A compiled and linked shader program\n */\nexport abstract class RenderPipeline extends Resource<RenderPipelineProps> {\n static override defaultProps: Required<RenderPipelineProps> = {\n ...Resource.defaultProps,\n\n vs: null,\n vsEntryPoint: '', // main\n vsConstants: {},\n\n fs: null,\n fsEntryPoint: '', // main\n fsConstants: {},\n\n shaderLayout: null,\n bufferLayout: [],\n topology: 'triangle-list',\n parameters: {},\n\n vertexCount: 0,\n instanceCount: 0,\n\n bindings: {},\n uniforms: {}\n };\n\n override get [Symbol.toStringTag](): string {\n return 'RenderPipeline';\n }\n\n hash: string = '';\n abstract readonly vs: Shader;\n abstract readonly fs: Shader | null;\n /** The merged layout */\n shaderLayout: ShaderLayout;\n /** Buffer map describing buffer interleaving etc */\n readonly bufferLayout: BufferLayout[];\n\n constructor(device: Device, props: RenderPipelineProps) {\n super(device, props, RenderPipeline.defaultProps);\n this.shaderLayout = this.props.shaderLayout;\n this.bufferLayout = this.props.bufferLayout || [];\n }\n\n /** Set bindings (stored on pipeline and set before each call) */\n abstract setBindings(bindings: Record<string, Binding>): void;\n /** Uniforms\n * @deprecated Only supported on WebGL devices.\n * @note textures, samplers and uniform buffers should be set via `setBindings()`, these are not considered uniforms.\n * @note In WebGL uniforms have a performance penalty, they are reset before each call to enable pipeline sharing.\n */\n abstract setUniforms(bindings: Record<string, UniformValue>): void;\n\n /** Draw call */\n abstract draw(options: {\n /** Render pass to draw into (targeting screen or framebuffer) */\n renderPass?: RenderPass;\n /** vertex attributes */\n vertexArray: VertexArray;\n /** Number of \"rows\" in index buffer */\n indexCount?: number;\n /** Number of \"rows\" in 'vertex' buffers */\n vertexCount?: number;\n /** Number of \"rows\" in 'instance' buffers */\n instanceCount?: number;\n /** First vertex to draw from */\n firstVertex?: number;\n /** First index to draw from */\n firstIndex?: number;\n /** First instance to draw from */\n firstInstance?: number;\n baseVertex?: number;\n /** Transform feedback. WebGL 2 only. */\n transformFeedback?: TransformFeedback;\n }): void;\n}\n"],"mappings":";SAOQA,QAAQ;AAAAC,mBAAA,GA4EAC,MAAM,CAACC,WAAW;AAxBlC,OAAO,MAAeC,cAAc,SAASJ,QAAQ,CAAsB;EAwBzE,KAAAC,mBAAA,IAA4C;IAC1C,OAAO,gBAAgB;EACzB;EAUAI,WAAWA,CAACC,MAAc,EAAEC,KAA0B,EAAE;IACtD,KAAK,CAACD,MAAM,EAAEC,KAAK,EAAEH,cAAc,CAACI,YAAY,CAAC;IAAC,KATpDC,IAAI,GAAW,EAAE;IAAA,KACCC,EAAE;IAAA,KACFC,EAAE;IAAA,KAEpBC,YAAY;IAAA,KAEHC,YAAY;IAInB,IAAI,CAACD,YAAY,GAAG,IAAI,CAACL,KAAK,CAACK,YAAY;IAC3C,IAAI,CAACC,YAAY,GAAG,IAAI,CAACN,KAAK,CAACM,YAAY,IAAI,EAAE;EACnD;AAiCF;AAzEsBT,cAAc,CAClBI,YAAY,GAAkC;EAC5D,GAAGR,QAAQ,CAACQ,YAAY;EAExBE,EAAE,EAAE,IAAI;EACRI,YAAY,EAAE,EAAE;EAChBC,WAAW,EAAE,CAAC,CAAC;EAEfJ,EAAE,EAAE,IAAI;EACRK,YAAY,EAAE,EAAE;EAChBC,WAAW,EAAE,CAAC,CAAC;EAEfL,YAAY,EAAE,IAAI;EAClBC,YAAY,EAAE,EAAE;EAChBK,QAAQ,EAAE,eAAe;EACzBC,UAAU,EAAE,CAAC,CAAC;EAEdC,WAAW,EAAE,CAAC;EACdC,aAAa,EAAE,CAAC;EAEhBC,QAAQ,EAAE,CAAC,CAAC;EACZC,QAAQ,EAAE,CAAC;AACb,CAAC"}
@@ -36,7 +36,7 @@ export declare abstract class Shader extends Resource<ShaderProps> {
36
36
  /** Get compiler log asynchronously */
37
37
  abstract getCompilationInfo(): Promise<readonly CompilerMessage[]>;
38
38
  /** Get compiler log synchronously (WebGL only) */
39
- getCompilationInfoSync(): (readonly CompilerMessage[]) | null;
39
+ getCompilationInfoSync(): readonly CompilerMessage[] | null;
40
40
  /** In browser logging of errors */
41
41
  debugShader(): Promise<void>;
42
42
  /** In-browser UI logging of errors */
@@ -1 +1 @@
1
- {"version":3,"file":"shader.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/shader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAC,eAAe,EAAC,MAAM,yCAAyC,CAAC;AAIxE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG;IACxC,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,0EAA0E;IAC1E,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;CACpD,CAAC;AAEF;;;GAGG;AACH,8BAAsB,MAAO,SAAQ,QAAQ,CAAC,WAAW,CAAC;IACxD,OAAgB,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,CAQjD;IAEF,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAqB;IAEhE,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAClD,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oGAAoG;IACpG,iBAAiB,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAa;IAE/D,mCAAmC;gBACvB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;IAM9C,sCAAsC;IACtC,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAElE,kDAAkD;IAClD,sBAAsB,IAAI,CAAC,SAAS,eAAe,EAAE,CAAC,GAAG,IAAI;IAM7D,mCAAmC;IAC7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBlC,sCAAsC;IACtC,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,IAAI;CAuCxE"}
1
+ {"version":3,"file":"shader.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/shader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAC,eAAe,EAAC,MAAM,yCAAyC,CAAC;AAIxE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG;IACxC,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,0EAA0E;IAC1E,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;CACpD,CAAC;AAEF;;;GAGG;AACH,8BAAsB,MAAO,SAAQ,QAAQ,CAAC,WAAW,CAAC;IACxD,OAAgB,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,CAQjD;IAEF,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAE1C;IAED,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAClD,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oGAAoG;IACpG,iBAAiB,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAa;IAE/D,mCAAmC;gBACvB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;IAM9C,sCAAsC;IACtC,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAElE,kDAAkD;IAClD,sBAAsB,IAAI,SAAS,eAAe,EAAE,GAAG,IAAI;IAM3D,mCAAmC;IAC7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBlC,sCAAsC;IACtC,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,IAAI;CAuCxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"shader.js","names":["Resource","uid","formatCompilerLog","getShaderInfo","_Symbol$toStringTag","Symbol","toStringTag","Shader","constructor","device","props","id","getShaderIdFromProps","defaultProps","stage","source","compilationStatus","getCompilationInfoSync","debugShader","debug","messages","getCompilationInfo","length","_displayShaderLog","_document","_errors$","document","createElement","shaderName","name","shaderTitle","htmlLog","showSourceCode","html","button","innerHTML","style","top","left","position","zIndex","width","textAlign","body","appendChild","errors","getElementsByClassName","scrollIntoView","onclick","dataURI","encodeURIComponent","navigator","clipboard","writeText","language","sourceMap","entryPoint"],"sources":["../../../src/adapter/resources/shader.ts"],"sourcesContent":["// luma.gl, MIT license\nimport type {Device} from '../device';\nimport {Resource, ResourceProps} from './resource';\n// import { log } from '../../utils/log';\nimport {uid} from '../../utils/utils';\nimport {CompilerMessage} from '../../lib/compiler-log/compiler-message';\nimport {formatCompilerLog} from '../../lib/compiler-log/format-compiler-log';\nimport {getShaderInfo} from '../../lib/compiler-log/get-shader-info';\n\n/**\n * Properties for a Shader\n */\nexport type ShaderProps = ResourceProps & {\n /** Shader language (defaults to auto) */ \n language?: 'glsl' | 'wgsl' | 'auto';\n /** Which stage are we compiling? Required by WebGL and GLSL transpiler */\n stage: 'vertex' | 'fragment' | 'compute';\n /** Shader source code */\n source: string;\n /** Optional shader source map (WebGPU only) */\n sourceMap?: string | null;\n /** Optional shader entry point (WebGPU only) */\n entryPoint?: string;\n /** Show shader source in browser? */\n debug?: 'never' | 'errors' | 'warnings' | 'always';\n};\n\n/**\n * Immutable Shader object\n * In WebGPU the handle can be copied between threads\n */\nexport abstract class Shader extends Resource<ShaderProps> {\n static override defaultProps: Required<ShaderProps> = {\n ...Resource.defaultProps,\n language: 'auto',\n stage: 'vertex',\n source: '',\n sourceMap: null,\n entryPoint: 'main',\n debug: 'errors'\n };\n\n override get [Symbol.toStringTag](): string { return 'Shader'; }\n\n /** The stage of this shader */\n readonly stage: 'vertex' | 'fragment' | 'compute';\n /** The source code of this shader */\n readonly source: string;\n /** The compilation status of this shader. May be 'pending' if compilation is done asynchronously */\n compilationStatus: 'success' | 'error' | 'pending' = 'pending';\n\n /** Create a new Shader instance */\n constructor(device: Device, props: ShaderProps) {\n super(device, {id: getShaderIdFromProps(props), ...props}, Shader.defaultProps);\n this.stage = this.props.stage;\n this.source = this.props.source;\n }\n\n /** Get compiler log asynchronously */\n abstract getCompilationInfo(): Promise<readonly CompilerMessage[]>;\n\n /** Get compiler log synchronously (WebGL only) */\n getCompilationInfoSync(): (readonly CompilerMessage[]) | null {\n return null;\n }\n\n // PORTABLE HELPERS\n\n /** In browser logging of errors */\n async debugShader(): Promise<void> {\n switch (this.props.debug) {\n case 'never':\n return;\n case 'errors':\n // On WebGL - Don't extract the log unless errors\n if (this.compilationStatus === 'success') {\n return;\n }\n break;\n case 'warnings':\n case 'always':\n break;\n }\n\n const messages = await this.getCompilationInfo();\n if (this.props.debug === 'warnings' && messages?.length === 0) {\n return;\n }\n this._displayShaderLog(messages);\n }\n\n // PRIVATE\n\n /** In-browser UI logging of errors */\n protected _displayShaderLog(messages: readonly CompilerMessage[]): void {\n // Return if under Node.js / incomplete `document` polyfills\n if (typeof document === 'undefined' || !document?.createElement) {\n return;\n }\n\n const shaderName: string = getShaderInfo(this.source).name;\n const shaderTitle: string = `${this.stage} ${shaderName}`;\n const htmlLog = formatCompilerLog(messages, this.source, {showSourceCode: 'all', html: true});\n\n // Make it clickable so we can copy to clipboard \n const button = document.createElement('Button');\n button.innerHTML = `\n<h1>Shader Compilation Error in ${shaderTitle}</h1><br /><br />\n<code style=\"user-select:text;\"><pre>\n${htmlLog}\n</pre></code>`;\n button.style.top = '10px';\n button.style.left = '10px';\n button.style.position = 'absolute';\n button.style.zIndex = '9999';\n button.style.width = '100%';\n button.style.textAlign = 'left';\n document.body.appendChild(button);\n\n const errors = document.getElementsByClassName('luma-compiler-log-error');\n if (errors[0]?.scrollIntoView) {\n errors[0].scrollIntoView();\n }\n\n // TODO - add a small embedded copy button (instead of main button)\n button.onclick = () => {\n // const source = this.source.replaceAll('\\n', '<br />');\n const dataURI = `data:text/plain,${encodeURIComponent(this.source)}`;\n navigator.clipboard.writeText(dataURI);\n };\n\n // TODO - add a small embedded close button\n }\n}\n\n// HELPERS\n\n/** Deduce an id, from shader source, or supplied id, or shader type */\nfunction getShaderIdFromProps(props: ShaderProps): string {\n return getShaderInfo(props.source).name || props.id || uid(`unnamed ${props.stage}-shader`);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"shader.js","names":["Resource","uid","formatCompilerLog","getShaderInfo","_Symbol$toStringTag","Symbol","toStringTag","Shader","constructor","device","props","id","getShaderIdFromProps","defaultProps","stage","source","compilationStatus","getCompilationInfoSync","debugShader","debug","messages","getCompilationInfo","length","_displayShaderLog","_document","_errors$","document","createElement","shaderName","name","shaderTitle","htmlLog","showSourceCode","html","button","innerHTML","style","top","left","position","zIndex","width","textAlign","body","appendChild","errors","getElementsByClassName","scrollIntoView","onclick","dataURI","encodeURIComponent","navigator","clipboard","writeText","language","sourceMap","entryPoint"],"sources":["../../../src/adapter/resources/shader.ts"],"sourcesContent":["// luma.gl, MIT license\nimport type {Device} from '../device';\nimport {Resource, ResourceProps} from './resource';\n// import { log } from '../../utils/log';\nimport {uid} from '../../utils/utils';\nimport {CompilerMessage} from '../../lib/compiler-log/compiler-message';\nimport {formatCompilerLog} from '../../lib/compiler-log/format-compiler-log';\nimport {getShaderInfo} from '../../lib/compiler-log/get-shader-info';\n\n/**\n * Properties for a Shader\n */\nexport type ShaderProps = ResourceProps & {\n /** Shader language (defaults to auto) */\n language?: 'glsl' | 'wgsl' | 'auto';\n /** Which stage are we compiling? Required by WebGL and GLSL transpiler */\n stage: 'vertex' | 'fragment' | 'compute';\n /** Shader source code */\n source: string;\n /** Optional shader source map (WebGPU only) */\n sourceMap?: string | null;\n /** Optional shader entry point (WebGPU only) */\n entryPoint?: string;\n /** Show shader source in browser? */\n debug?: 'never' | 'errors' | 'warnings' | 'always';\n};\n\n/**\n * Immutable Shader object\n * In WebGPU the handle can be copied between threads\n */\nexport abstract class Shader extends Resource<ShaderProps> {\n static override defaultProps: Required<ShaderProps> = {\n ...Resource.defaultProps,\n language: 'auto',\n stage: 'vertex',\n source: '',\n sourceMap: null,\n entryPoint: 'main',\n debug: 'errors'\n };\n\n override get [Symbol.toStringTag](): string {\n return 'Shader';\n }\n\n /** The stage of this shader */\n readonly stage: 'vertex' | 'fragment' | 'compute';\n /** The source code of this shader */\n readonly source: string;\n /** The compilation status of this shader. May be 'pending' if compilation is done asynchronously */\n compilationStatus: 'success' | 'error' | 'pending' = 'pending';\n\n /** Create a new Shader instance */\n constructor(device: Device, props: ShaderProps) {\n super(device, {id: getShaderIdFromProps(props), ...props}, Shader.defaultProps);\n this.stage = this.props.stage;\n this.source = this.props.source;\n }\n\n /** Get compiler log asynchronously */\n abstract getCompilationInfo(): Promise<readonly CompilerMessage[]>;\n\n /** Get compiler log synchronously (WebGL only) */\n getCompilationInfoSync(): readonly CompilerMessage[] | null {\n return null;\n }\n\n // PORTABLE HELPERS\n\n /** In browser logging of errors */\n async debugShader(): Promise<void> {\n switch (this.props.debug) {\n case 'never':\n return;\n case 'errors':\n // On WebGL - Don't extract the log unless errors\n if (this.compilationStatus === 'success') {\n return;\n }\n break;\n case 'warnings':\n case 'always':\n break;\n }\n\n const messages = await this.getCompilationInfo();\n if (this.props.debug === 'warnings' && messages?.length === 0) {\n return;\n }\n this._displayShaderLog(messages);\n }\n\n // PRIVATE\n\n /** In-browser UI logging of errors */\n protected _displayShaderLog(messages: readonly CompilerMessage[]): void {\n // Return if under Node.js / incomplete `document` polyfills\n if (typeof document === 'undefined' || !document?.createElement) {\n return;\n }\n\n const shaderName: string = getShaderInfo(this.source).name;\n const shaderTitle: string = `${this.stage} ${shaderName}`;\n const htmlLog = formatCompilerLog(messages, this.source, {showSourceCode: 'all', html: true});\n\n // Make it clickable so we can copy to clipboard\n const button = document.createElement('Button');\n button.innerHTML = `\n<h1>Shader Compilation Error in ${shaderTitle}</h1><br /><br />\n<code style=\"user-select:text;\"><pre>\n${htmlLog}\n</pre></code>`;\n button.style.top = '10px';\n button.style.left = '10px';\n button.style.position = 'absolute';\n button.style.zIndex = '9999';\n button.style.width = '100%';\n button.style.textAlign = 'left';\n document.body.appendChild(button);\n\n const errors = document.getElementsByClassName('luma-compiler-log-error');\n if (errors[0]?.scrollIntoView) {\n errors[0].scrollIntoView();\n }\n\n // TODO - add a small embedded copy button (instead of main button)\n button.onclick = () => {\n // const source = this.source.replaceAll('\\n', '<br />');\n const dataURI = `data:text/plain,${encodeURIComponent(this.source)}`;\n navigator.clipboard.writeText(dataURI);\n };\n\n // TODO - add a small embedded close button\n }\n}\n\n// HELPERS\n\n/** Deduce an id, from shader source, or supplied id, or shader type */\nfunction getShaderIdFromProps(props: ShaderProps): string {\n return getShaderInfo(props.source).name || props.id || uid(`unnamed ${props.stage}-shader`);\n}\n"],"mappings":"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"}
@@ -23,13 +23,15 @@ export declare abstract class VertexArray extends Resource<VertexArrayProps> {
23
23
  readonly maxVertexAttributes: number;
24
24
  /** Attribute infos indexed by location - TODO only needed by webgl module? */
25
25
  protected readonly attributeInfos: AttributeInfo[];
26
+ /** Index buffer */
26
27
  indexBuffer: Buffer | null;
28
+ /** Attributes indexed by buffer slot */
27
29
  attributes: (Buffer | TypedArray | null)[];
28
30
  constructor(device: Device, props: VertexArrayProps);
29
31
  /** Set attributes (stored on pipeline and set before each call) */
30
32
  abstract setIndexBuffer(indices: Buffer | null): void;
31
33
  /** Set attributes (stored on pipeline and set before each call) */
32
- abstract setBuffer(location: number, buffer: Buffer | null): void;
34
+ abstract setBuffer(bufferSlot: number, buffer: Buffer | null): void;
33
35
  /** Set constant attributes (WebGL only) */
34
36
  abstract setConstant(location: number, value: TypedArray | null): void;
35
37
  abstract bindBeforeRender(renderPass: RenderPass): void;
@@ -1 +1 @@
1
- {"version":3,"file":"vertex-array.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/vertex-array.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,aAAa,EAEd,MAAM,+CAA+C,CAAC;AACvD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AAEnD,gDAAgD;AAChD,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC,CAAC;AAEF;;;;;;GAMG;AACH,8BAAsB,WAAY,SAAQ,QAAQ,CAAC,gBAAgB,CAAC;IAClE,OAAgB,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAGtD;IAEF,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAE1C;IAED,sCAAsC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,8EAA8E;IAC9E,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,aAAa,EAAE,CAAC;IAEnD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,UAAU,EAAE,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;gBAE/B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB;IAWnD,mEAAmE;IACnE,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IACrD,mEAAmE;IACnE,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IACjE,2CAA2C;IAC3C,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAEtE,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IACvD,QAAQ,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;CACzD"}
1
+ {"version":3,"file":"vertex-array.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/vertex-array.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,aAAa,EAEd,MAAM,+CAA+C,CAAC;AACvD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AAEnD,gDAAgD;AAChD,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC,CAAC;AAEF;;;;;;GAMG;AACH,8BAAsB,WAAY,SAAQ,QAAQ,CAAC,gBAAgB,CAAC;IAClE,OAAgB,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAGtD;IAEF,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAE1C;IAED,sCAAsC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,8EAA8E;IAC9E,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,aAAa,EAAE,CAAC;IAEnD,mBAAmB;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,wCAAwC;IACxC,UAAU,EAAE,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;gBAE/B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB;IAWnD,mEAAmE;IACnE,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IACrD,mEAAmE;IACnE,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IACnE,2CAA2C;IAC3C,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAEtE,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IACvD,QAAQ,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;CACzD"}
@@ -1 +1 @@
1
- {"version":3,"file":"vertex-array.js","names":["getAttributeInfosByLocation","Resource","_Symbol$toStringTag","Symbol","toStringTag","VertexArray","constructor","device","props","defaultProps","maxVertexAttributes","attributeInfos","indexBuffer","attributes","limits","Array","fill","renderPipeline","shaderLayout","bufferLayout"],"sources":["../../../src/adapter/resources/vertex-array.ts"],"sourcesContent":["// luma.gl, MIT license\nimport type {TypedArray} from '../../types';\nimport {\n AttributeInfo,\n getAttributeInfosByLocation\n} from '../attribute-utils/get-attribute-from-layouts';\nimport type {Device} from '../device';\nimport type {Buffer} from './buffer';\nimport type {RenderPass} from './render-pass';\nimport type {RenderPipeline} from './render-pipeline';\nimport {Resource, ResourceProps} from './resource';\n\n/** Properties for initializing a VertexArray */\nexport type VertexArrayProps = ResourceProps & {\n renderPipeline: RenderPipeline | null;\n};\n\n/**\n * Stores attribute bindings.\n * Makes it easy to share a render pipeline and use separate vertex arrays.\n * @note On WebGL, VertexArray allows non-constant bindings to be performed in advance\n * reducing the number of WebGL calls per draw call.\n * @note On WebGPU this is just a convenience class that collects the bindings.\n */\nexport abstract class VertexArray extends Resource<VertexArrayProps> {\n static override defaultProps: Required<VertexArrayProps> = {\n ...Resource.defaultProps,\n renderPipeline: null\n };\n\n override get [Symbol.toStringTag](): string {\n return 'VertexArray';\n }\n\n /** Max number of vertex attributes */\n readonly maxVertexAttributes: number;\n /** Attribute infos indexed by location - TODO only needed by webgl module? */\n protected readonly attributeInfos: AttributeInfo[];\n\n indexBuffer: Buffer | null = null;\n attributes: (Buffer | TypedArray | null)[];\n\n constructor(device: Device, props: VertexArrayProps) {\n super(device, props, VertexArray.defaultProps);\n this.maxVertexAttributes = device.limits.maxVertexAttributes;\n this.attributes = new Array(this.maxVertexAttributes).fill(null);\n this.attributeInfos = getAttributeInfosByLocation(\n props.renderPipeline.shaderLayout,\n props.renderPipeline.bufferLayout,\n this.maxVertexAttributes\n );\n }\n\n /** Set attributes (stored on pipeline and set before each call) */\n abstract setIndexBuffer(indices: Buffer | null): void;\n /** Set attributes (stored on pipeline and set before each call) */\n abstract setBuffer(location: number, buffer: Buffer | null): void;\n /** Set constant attributes (WebGL only) */\n abstract setConstant(location: number, value: TypedArray | null): void;\n\n abstract bindBeforeRender(renderPass: RenderPass): void;\n abstract unbindAfterRender(renderPass: RenderPass): void;\n}\n"],"mappings":";SAIEA,2BAA2B;AAAA,SAMrBC,QAAQ;AAAAC,mBAAA,GAoBAC,MAAM,CAACC,WAAW;AANlC,OAAO,MAAeC,WAAW,SAASJ,QAAQ,CAAmB;EAMnE,KAAAC,mBAAA,IAA4C;IAC1C,OAAO,aAAa;EACtB;EAUAI,WAAWA,CAACC,MAAc,EAAEC,KAAuB,EAAE;IACnD,KAAK,CAACD,MAAM,EAAEC,KAAK,EAAEH,WAAW,CAACI,YAAY,CAAC;IAAC,KARxCC,mBAAmB;IAAA,KAETC,cAAc;IAAA,KAEjCC,WAAW,GAAkB,IAAI;IAAA,KACjCC,UAAU;IAIR,IAAI,CAACH,mBAAmB,GAAGH,MAAM,CAACO,MAAM,CAACJ,mBAAmB;IAC5D,IAAI,CAACG,UAAU,GAAG,IAAIE,KAAK,CAAC,IAAI,CAACL,mBAAmB,CAAC,CAACM,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACL,cAAc,GAAGX,2BAA2B,CAC/CQ,KAAK,CAACS,cAAc,CAACC,YAAY,EACjCV,KAAK,CAACS,cAAc,CAACE,YAAY,EACjC,IAAI,CAACT,mBACP,CAAC;EACH;AAWF;AAtCsBL,WAAW,CACfI,YAAY,GAA+B;EACzD,GAAGR,QAAQ,CAACQ,YAAY;EACxBQ,cAAc,EAAE;AAClB,CAAC"}
1
+ {"version":3,"file":"vertex-array.js","names":["getAttributeInfosByLocation","Resource","_Symbol$toStringTag","Symbol","toStringTag","VertexArray","constructor","device","props","defaultProps","maxVertexAttributes","attributeInfos","indexBuffer","attributes","limits","Array","fill","renderPipeline","shaderLayout","bufferLayout"],"sources":["../../../src/adapter/resources/vertex-array.ts"],"sourcesContent":["// luma.gl, MIT license\nimport type {TypedArray} from '../../types';\nimport {\n AttributeInfo,\n getAttributeInfosByLocation\n} from '../attribute-utils/get-attribute-from-layouts';\nimport type {Device} from '../device';\nimport type {Buffer} from './buffer';\nimport type {RenderPass} from './render-pass';\nimport type {RenderPipeline} from './render-pipeline';\nimport {Resource, ResourceProps} from './resource';\n\n/** Properties for initializing a VertexArray */\nexport type VertexArrayProps = ResourceProps & {\n renderPipeline: RenderPipeline | null;\n};\n\n/**\n * Stores attribute bindings.\n * Makes it easy to share a render pipeline and use separate vertex arrays.\n * @note On WebGL, VertexArray allows non-constant bindings to be performed in advance\n * reducing the number of WebGL calls per draw call.\n * @note On WebGPU this is just a convenience class that collects the bindings.\n */\nexport abstract class VertexArray extends Resource<VertexArrayProps> {\n static override defaultProps: Required<VertexArrayProps> = {\n ...Resource.defaultProps,\n renderPipeline: null\n };\n\n override get [Symbol.toStringTag](): string {\n return 'VertexArray';\n }\n\n /** Max number of vertex attributes */\n readonly maxVertexAttributes: number;\n /** Attribute infos indexed by location - TODO only needed by webgl module? */\n protected readonly attributeInfos: AttributeInfo[];\n\n /** Index buffer */\n indexBuffer: Buffer | null = null;\n /** Attributes indexed by buffer slot */\n attributes: (Buffer | TypedArray | null)[];\n\n constructor(device: Device, props: VertexArrayProps) {\n super(device, props, VertexArray.defaultProps);\n this.maxVertexAttributes = device.limits.maxVertexAttributes;\n this.attributes = new Array(this.maxVertexAttributes).fill(null);\n this.attributeInfos = getAttributeInfosByLocation(\n props.renderPipeline.shaderLayout,\n props.renderPipeline.bufferLayout,\n this.maxVertexAttributes\n );\n }\n\n /** Set attributes (stored on pipeline and set before each call) */\n abstract setIndexBuffer(indices: Buffer | null): void;\n /** Set attributes (stored on pipeline and set before each call) */\n abstract setBuffer(bufferSlot: number, buffer: Buffer | null): void;\n /** Set constant attributes (WebGL only) */\n abstract setConstant(location: number, value: TypedArray | null): void;\n\n abstract bindBeforeRender(renderPass: RenderPass): void;\n abstract unbindAfterRender(renderPass: RenderPass): void;\n}\n"],"mappings":";SAIEA,2BAA2B;AAAA,SAMrBC,QAAQ;AAAAC,mBAAA,GAoBAC,MAAM,CAACC,WAAW;AANlC,OAAO,MAAeC,WAAW,SAASJ,QAAQ,CAAmB;EAMnE,KAAAC,mBAAA,IAA4C;IAC1C,OAAO,aAAa;EACtB;EAYAI,WAAWA,CAACC,MAAc,EAAEC,KAAuB,EAAE;IACnD,KAAK,CAACD,MAAM,EAAEC,KAAK,EAAEH,WAAW,CAACI,YAAY,CAAC;IAAC,KAVxCC,mBAAmB;IAAA,KAETC,cAAc;IAAA,KAGjCC,WAAW,GAAkB,IAAI;IAAA,KAEjCC,UAAU;IAIR,IAAI,CAACH,mBAAmB,GAAGH,MAAM,CAACO,MAAM,CAACJ,mBAAmB;IAC5D,IAAI,CAACG,UAAU,GAAG,IAAIE,KAAK,CAAC,IAAI,CAACL,mBAAmB,CAAC,CAACM,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACL,cAAc,GAAGX,2BAA2B,CAC/CQ,KAAK,CAACS,cAAc,CAACC,YAAY,EACjCV,KAAK,CAACS,cAAc,CAACE,YAAY,EACjC,IAAI,CAACT,mBACP,CAAC;EACH;AAWF;AAxCsBL,WAAW,CACfI,YAAY,GAA+B;EACzD,GAAGR,QAAQ,CAACQ,YAAY;EACxBQ,cAAc,EAAE;AAClB,CAAC"}
package/dist/dist.dev.js CHANGED
@@ -1078,7 +1078,19 @@ var __exports__ = (() => {
1078
1078
  readPixelsToArrayWebGL(source, options) {
1079
1079
  throw new Error("not implemented");
1080
1080
  }
1081
- readPixelsToBufferWebGL2(source, options) {
1081
+ readPixelsToBufferWebGL(source, options) {
1082
+ throw new Error("not implemented");
1083
+ }
1084
+ setParametersWebGL(parameters) {
1085
+ throw new Error("not implemented");
1086
+ }
1087
+ getParametersWebGL(parameters) {
1088
+ throw new Error("not implemented");
1089
+ }
1090
+ withParametersWebGL(parameters, func) {
1091
+ throw new Error("not implemented");
1092
+ }
1093
+ clearWebGL(options) {
1082
1094
  throw new Error("not implemented");
1083
1095
  }
1084
1096
  _getBufferProps(props) {
@@ -1531,7 +1543,8 @@ ${numberedLines}${positionIndicator}${message.type.toUpperCase()}: ${message.mes
1531
1543
  return numberedLines;
1532
1544
  }
1533
1545
  function getNumberedLine(line, lineNum, options) {
1534
- return `${padLeft(String(lineNum), 4)}: ${line}${options?.html ? "<br/>" : "\n"}`;
1546
+ const escapedLine = options?.html ? escapeHTML(line) : line;
1547
+ return `${padLeft(String(lineNum), 4)}: ${escapedLine}${options?.html ? "<br/>" : "\n"}`;
1535
1548
  }
1536
1549
  function padLeft(string, paddedLength) {
1537
1550
  let result = "";
@@ -1540,6 +1553,9 @@ ${numberedLines}${positionIndicator}${message.type.toUpperCase()}: ${message.mes
1540
1553
  }
1541
1554
  return result + string;
1542
1555
  }
1556
+ function escapeHTML(unsafe) {
1557
+ return unsafe.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll('"', "&quot;").replaceAll("'", "&#039;");
1558
+ }
1543
1559
 
1544
1560
  // src/lib/compiler-log/get-shader-info.ts
1545
1561
  function getShaderInfo(source, defaultName) {
@@ -2507,7 +2523,7 @@ ${htmlLog}
2507
2523
  }
2508
2524
  const byteLength = this.getUniformBufferByteLength(uniformBufferName);
2509
2525
  const uniformBuffer = device.createBuffer({
2510
- usage: Buffer2.UNIFORM,
2526
+ usage: Buffer2.UNIFORM | Buffer2.COPY_DST,
2511
2527
  byteLength
2512
2528
  });
2513
2529
  const uniformBufferData = this.getUniformBufferData(uniformBufferName);
@@ -2518,7 +2534,7 @@ ${htmlLog}
2518
2534
  if (!this.uniformBuffers.get(uniformBufferName)) {
2519
2535
  const byteLength = this.getUniformBufferByteLength(uniformBufferName);
2520
2536
  const uniformBuffer = device.createBuffer({
2521
- usage: Buffer2.UNIFORM,
2537
+ usage: Buffer2.UNIFORM | Buffer2.COPY_DST,
2522
2538
  byteLength
2523
2539
  });
2524
2540
  this.uniformBuffers.set(uniformBufferName, uniformBuffer);
package/dist/index.cjs CHANGED
@@ -409,13 +409,30 @@ var _Device = class {
409
409
  createCommandEncoder(props = {}) {
410
410
  throw new Error("not implemented");
411
411
  }
412
- // HACKS - until we have a better way to handle these
412
+ // WebGL specific HACKS - enables app to remove webgl import
413
+ // Use until we have a better way to handle these
413
414
  /** @deprecated - will be removed - should use command encoder */
414
415
  readPixelsToArrayWebGL(source, options) {
415
416
  throw new Error("not implemented");
416
417
  }
417
418
  /** @deprecated - will be removed - should use command encoder */
418
- readPixelsToBufferWebGL2(source, options) {
419
+ readPixelsToBufferWebGL(source, options) {
420
+ throw new Error("not implemented");
421
+ }
422
+ /** @deprecated - will be removed - should use WebGPU parameters (pipeline) */
423
+ setParametersWebGL(parameters) {
424
+ throw new Error("not implemented");
425
+ }
426
+ /** @deprecated - will be removed - should use WebGPU parameters (pipeline) */
427
+ getParametersWebGL(parameters) {
428
+ throw new Error("not implemented");
429
+ }
430
+ /** @deprecated - will be removed - should use WebGPU parameters (pipeline) */
431
+ withParametersWebGL(parameters, func) {
432
+ throw new Error("not implemented");
433
+ }
434
+ /** @deprecated - will be removed - should use clear arguments in RenderPass */
435
+ clearWebGL(options) {
419
436
  throw new Error("not implemented");
420
437
  }
421
438
  // Implementation
@@ -925,7 +942,8 @@ function getNumberedLines(lines, lineNum, options) {
925
942
  return numberedLines;
926
943
  }
927
944
  function getNumberedLine(line, lineNum, options) {
928
- return `${padLeft(String(lineNum), 4)}: ${line}${(options == null ? void 0 : options.html) ? "<br/>" : "\n"}`;
945
+ const escapedLine = (options == null ? void 0 : options.html) ? escapeHTML(line) : line;
946
+ return `${padLeft(String(lineNum), 4)}: ${escapedLine}${(options == null ? void 0 : options.html) ? "<br/>" : "\n"}`;
929
947
  }
930
948
  function padLeft(string, paddedLength) {
931
949
  let result = "";
@@ -934,6 +952,9 @@ function padLeft(string, paddedLength) {
934
952
  }
935
953
  return result + string;
936
954
  }
955
+ function escapeHTML(unsafe) {
956
+ return unsafe.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll('"', "&quot;").replaceAll("'", "&#039;");
957
+ }
937
958
 
938
959
  // src/lib/compiler-log/get-shader-info.ts
939
960
  function getShaderInfo(source, defaultName) {
@@ -1707,7 +1728,9 @@ var _VertexArray = class extends Resource {
1707
1728
  maxVertexAttributes;
1708
1729
  /** Attribute infos indexed by location - TODO only needed by webgl module? */
1709
1730
  attributeInfos;
1731
+ /** Index buffer */
1710
1732
  indexBuffer = null;
1733
+ /** Attributes indexed by buffer slot */
1711
1734
  attributes;
1712
1735
  constructor(device, props) {
1713
1736
  super(device, props, _VertexArray.defaultProps);
@@ -2010,16 +2033,19 @@ var UniformStore = class {
2010
2033
  const uniformValues = this.uniformBlocks.get(uniformBufferName).getAllUniforms();
2011
2034
  return this.uniformBufferLayouts.get(uniformBufferName).getData(uniformValues);
2012
2035
  }
2013
- /**
2014
- * Creates an unmanaged uniform buffer (umnanaged means that application is responsible for destroying it)
2015
- * The new buffer is initialized with current / supplied values
2036
+ /**
2037
+ * Creates an unmanaged uniform buffer (umnanaged means that application is responsible for destroying it)
2038
+ * The new buffer is initialized with current / supplied values
2016
2039
  */
2017
2040
  createUniformBuffer(device, uniformBufferName, uniforms) {
2018
2041
  if (uniforms) {
2019
2042
  this.setUniforms(uniforms);
2020
2043
  }
2021
2044
  const byteLength = this.getUniformBufferByteLength(uniformBufferName);
2022
- const uniformBuffer = device.createBuffer({ usage: Buffer2.UNIFORM, byteLength });
2045
+ const uniformBuffer = device.createBuffer({
2046
+ usage: Buffer2.UNIFORM | Buffer2.COPY_DST,
2047
+ byteLength
2048
+ });
2023
2049
  const uniformBufferData = this.getUniformBufferData(uniformBufferName);
2024
2050
  uniformBuffer.write(uniformBufferData);
2025
2051
  return uniformBuffer;
@@ -2028,7 +2054,10 @@ var UniformStore = class {
2028
2054
  getManagedUniformBuffer(device, uniformBufferName) {
2029
2055
  if (!this.uniformBuffers.get(uniformBufferName)) {
2030
2056
  const byteLength = this.getUniformBufferByteLength(uniformBufferName);
2031
- const uniformBuffer = device.createBuffer({ usage: Buffer2.UNIFORM, byteLength });
2057
+ const uniformBuffer = device.createBuffer({
2058
+ usage: Buffer2.UNIFORM | Buffer2.COPY_DST,
2059
+ byteLength
2060
+ });
2032
2061
  this.uniformBuffers.set(uniformBufferName, uniformBuffer);
2033
2062
  }
2034
2063
  return this.uniformBuffers.get(uniformBufferName);
@@ -48,7 +48,8 @@ function getNumberedLines(lines, lineNum, options) {
48
48
  return numberedLines;
49
49
  }
50
50
  function getNumberedLine(line, lineNum, options) {
51
- return `${padLeft(String(lineNum), 4)}: ${line}${options !== null && options !== void 0 && options.html ? '<br/>' : '\n'}`;
51
+ const escapedLine = options !== null && options !== void 0 && options.html ? escapeHTML(line) : line;
52
+ return `${padLeft(String(lineNum), 4)}: ${escapedLine}${options !== null && options !== void 0 && options.html ? '<br/>' : '\n'}`;
52
53
  }
53
54
  function padLeft(string, paddedLength) {
54
55
  let result = '';
@@ -57,4 +58,7 @@ function padLeft(string, paddedLength) {
57
58
  }
58
59
  return result + string;
59
60
  }
61
+ function escapeHTML(unsafe) {
62
+ return unsafe.replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;').replaceAll('"', '&quot;').replaceAll('\'', '&#039;');
63
+ }
60
64
  //# sourceMappingURL=format-compiler-log.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format-compiler-log.js","names":["formatCompilerLog","shaderLog","source","options","formattedLog","lines","split","log","slice","sort","a","b","lineNum","showSourceCode","currentMessage","length","getNumberedLine","message","formatCompilerMessage","inlineSource","numberedLines","getNumberedLines","positionIndicator","linePos","repeat","type","toUpperCase","html","lineIndex","sourceLine","undefined","line","padLeft","String","string","paddedLength","result","i"],"sources":["../../../src/lib/compiler-log/format-compiler-log.ts"],"sourcesContent":["// luma.gl, MIT license\nimport type {CompilerMessage} from './compiler-message';\n\n/** @returns annotated errors or warnings */\nexport function formatCompilerLog(\n shaderLog: readonly CompilerMessage[],\n source: string,\n options?: {\n /** Include source code in the log. Either just the lines before issues or all source code */\n showSourceCode?: 'no' | 'issues' | 'all';\n html?: boolean;\n }\n): string {\n let formattedLog = '';\n const lines = source.split(/\\r?\\n/);\n const log = shaderLog.slice().sort((a, b) => a.lineNum - b.lineNum);\n\n switch (options?.showSourceCode || 'no') {\n case 'all':\n // Parse the error - note: browser and driver dependent\n let currentMessage = 0;\n for (let lineNum = 1; lineNum <= lines.length; lineNum++) {\n formattedLog += getNumberedLine(lines[lineNum - 1], lineNum, options);\n while (log.length > currentMessage && log[currentMessage].lineNum === lineNum) {\n const message = log[currentMessage++];\n formattedLog += formatCompilerMessage(message, lines, message.lineNum, {\n ...options,\n inlineSource: false\n });\n }\n }\n return formattedLog;\n\n case 'issues':\n case 'no':\n // Parse the error - note: browser and driver dependent\n for (const message of shaderLog) {\n formattedLog += formatCompilerMessage(message, lines, message.lineNum, {\n inlineSource: options?.showSourceCode !== 'no'\n });\n }\n return formattedLog;\n }\n}\n\n// Helpers\n\n/** Format one message */\nfunction formatCompilerMessage(\n message: CompilerMessage,\n lines: readonly string[],\n lineNum: number,\n options: {\n inlineSource?: boolean;\n html?: boolean;\n }\n): string {\n if (options?.inlineSource) {\n const numberedLines = getNumberedLines(lines, lineNum);\n // If we got error position on line add a `^^^` indicator on next line\n const positionIndicator = message.linePos > 0 ? `${' '.repeat(message.linePos + 5)}^^^\\n` : '';\n return `\n${numberedLines}${positionIndicator}${message.type.toUpperCase()}: ${message.message}\n\n`;\n }\n return options?.html\n ? `<div class='luma-compiler-log-error' style=\"color:red;\"><b> ${message.type.toUpperCase()}: ${message.message}</b></div>`\n : `${message.type.toUpperCase()}: ${message.message}`;\n}\n\nfunction getNumberedLines(\n lines: readonly string[],\n lineNum: number,\n options?: {html?: boolean}\n): string {\n let numberedLines = '';\n for (let lineIndex = lineNum - 2; lineIndex <= lineNum; lineIndex++) {\n const sourceLine = lines[lineIndex - 1];\n if (sourceLine !== undefined) {\n numberedLines += getNumberedLine(sourceLine, lineNum, options);\n }\n }\n return numberedLines;\n}\n\nfunction getNumberedLine(line: string, lineNum: number, options?: {html?: boolean}): string {\n return `${padLeft(String(lineNum), 4)}: ${line}${options?.html ? '<br/>' : '\\n'}`;\n}\n\n/**\n * Pads a string with a number of spaces (space characters) to the left\n * @param {String} string - string to pad\n * @param {Number} digits - number of spaces to add\n * @return {String} string - The padded string\n */\nfunction padLeft(string: string, paddedLength: number): string {\n let result = '';\n for (let i = string.length; i < paddedLength; ++i) {\n result += ' ';\n }\n return result + string;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"format-compiler-log.js","names":["formatCompilerLog","shaderLog","source","options","formattedLog","lines","split","log","slice","sort","a","b","lineNum","showSourceCode","currentMessage","length","getNumberedLine","message","formatCompilerMessage","inlineSource","numberedLines","getNumberedLines","positionIndicator","linePos","repeat","type","toUpperCase","html","lineIndex","sourceLine","undefined","line","escapedLine","escapeHTML","padLeft","String","string","paddedLength","result","i","unsafe","replaceAll"],"sources":["../../../src/lib/compiler-log/format-compiler-log.ts"],"sourcesContent":["// luma.gl, MIT license\nimport type {CompilerMessage} from './compiler-message';\n\n/** @returns annotated errors or warnings */\nexport function formatCompilerLog(\n shaderLog: readonly CompilerMessage[],\n source: string,\n options?: {\n /** Include source code in the log. Either just the lines before issues or all source code */\n showSourceCode?: 'no' | 'issues' | 'all';\n html?: boolean;\n }\n): string {\n let formattedLog = '';\n const lines = source.split(/\\r?\\n/);\n const log = shaderLog.slice().sort((a, b) => a.lineNum - b.lineNum);\n\n switch (options?.showSourceCode || 'no') {\n case 'all':\n // Parse the error - note: browser and driver dependent\n let currentMessage = 0;\n for (let lineNum = 1; lineNum <= lines.length; lineNum++) {\n formattedLog += getNumberedLine(lines[lineNum - 1], lineNum, options);\n while (log.length > currentMessage && log[currentMessage].lineNum === lineNum) {\n const message = log[currentMessage++];\n formattedLog += formatCompilerMessage(message, lines, message.lineNum, {\n ...options,\n inlineSource: false\n });\n }\n }\n return formattedLog;\n\n case 'issues':\n case 'no':\n // Parse the error - note: browser and driver dependent\n for (const message of shaderLog) {\n formattedLog += formatCompilerMessage(message, lines, message.lineNum, {\n inlineSource: options?.showSourceCode !== 'no'\n });\n }\n return formattedLog;\n }\n}\n\n// Helpers\n\n/** Format one message */\nfunction formatCompilerMessage(\n message: CompilerMessage,\n lines: readonly string[],\n lineNum: number,\n options: {\n inlineSource?: boolean;\n html?: boolean;\n }\n): string {\n if (options?.inlineSource) {\n const numberedLines = getNumberedLines(lines, lineNum);\n // If we got error position on line add a `^^^` indicator on next line\n const positionIndicator = message.linePos > 0 ? `${' '.repeat(message.linePos + 5)}^^^\\n` : '';\n return `\n${numberedLines}${positionIndicator}${message.type.toUpperCase()}: ${message.message}\n\n`;\n }\n return options?.html\n ? `<div class='luma-compiler-log-error' style=\"color:red;\"><b> ${message.type.toUpperCase()}: ${message.message}</b></div>`\n : `${message.type.toUpperCase()}: ${message.message}`;\n}\n\nfunction getNumberedLines(\n lines: readonly string[],\n lineNum: number,\n options?: {html?: boolean}\n): string {\n let numberedLines = '';\n for (let lineIndex = lineNum - 2; lineIndex <= lineNum; lineIndex++) {\n const sourceLine = lines[lineIndex - 1];\n if (sourceLine !== undefined) {\n numberedLines += getNumberedLine(sourceLine, lineNum, options);\n }\n }\n return numberedLines;\n}\n\nfunction getNumberedLine(line: string, lineNum: number, options?: {html?: boolean}): string {\n const escapedLine = options?.html ? escapeHTML(line) : line;\n return `${padLeft(String(lineNum), 4)}: ${escapedLine}${options?.html ? '<br/>' : '\\n'}`;\n}\n\n/**\n * Pads a string with a number of spaces (space characters) to the left\n * @param {String} string - string to pad\n * @param {Number} digits - number of spaces to add\n * @return {String} string - The padded string\n */\nfunction padLeft(string: string, paddedLength: number): string {\n let result = '';\n for (let i = string.length; i < paddedLength; ++i) {\n result += ' ';\n }\n return result + string;\n}\n\nfunction escapeHTML(unsafe: string): string {\n return unsafe\n .replaceAll('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\n .replaceAll('\"', '&quot;')\n .replaceAll('\\'', '&#039;');\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"uniform-store.d.ts","sourceRoot":"","sources":["../../../src/lib/uniforms/uniform-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAG5D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAChD,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,YAAY,CAAC,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7H,uDAAuD;IACvD,aAAa,qEAA4C;IACzD,sEAAsE;IACtE,oBAAoB,8CAAmD;IACvE,mCAAmC;IACnC,cAAc,iCAAsC;IAEpD;;;OAGG;gBAED,MAAM,EAAE,MAAM,CACZ,MAAM,WAAW,EACjB;QACE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACjD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KAChD,CACF;IAgBH,0CAA0C;IAC1C,OAAO,IAAI,IAAI;IAMf;;;OAGG;IACH,WAAW,CACT,QAAQ,EAAE,OAAO,CAAC;SAAE,KAAK,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KAAC,CAAC,GAC7E,IAAI;IAUP,4DAA4D;IAC5D,0BAA0B,CAAC,iBAAiB,EAAE,MAAM,WAAW,GAAG,MAAM;IAIxE,mEAAmE;IACnE,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,WAAW,GAAG,UAAU;IAKtE;;;OAGG;IACH,mBAAmB,CACjB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,MAAM,WAAW,EACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;SAAE,KAAK,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KAAC,CAAC,GAC9E,MAAM;IAYT,4GAA4G;IAC5G,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,WAAW,GAAG,MAAM;IAUrF,4DAA4D;IAC5D,oBAAoB,IAAI,KAAK,GAAG,MAAM;IAYtC,qEAAqE;IACrE,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM;CAwB1E"}
1
+ {"version":3,"file":"uniform-store.d.ts","sourceRoot":"","sources":["../../../src/lib/uniforms/uniform-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAG5D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAChD,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,YAAY,CACvB,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAClE,MAAM,EACN,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACxB;IAED,uDAAuD;IACvD,aAAa,qEAA8C;IAC3D,sEAAsE;IACtE,oBAAoB,8CAAqD;IACzE,mCAAmC;IACnC,cAAc,iCAAwC;IAEtD;;;OAGG;gBAED,MAAM,EAAE,MAAM,CACZ,MAAM,WAAW,EACjB;QACE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACjD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KAChD,CACF;IAgBH,0CAA0C;IAC1C,OAAO,IAAI,IAAI;IAMf;;;OAGG;IACH,WAAW,CACT,QAAQ,EAAE,OAAO,CAAC;SAAE,KAAK,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KAAC,CAAC,GAC7E,IAAI;IAUP,4DAA4D;IAC5D,0BAA0B,CAAC,iBAAiB,EAAE,MAAM,WAAW,GAAG,MAAM;IAIxE,mEAAmE;IACnE,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,WAAW,GAAG,UAAU;IAKtE;;;OAGG;IACH,mBAAmB,CACjB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,MAAM,WAAW,EACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;SAAE,KAAK,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KAAC,CAAC,GAC9E,MAAM;IAeT,4GAA4G;IAC5G,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,WAAW,GAAG,MAAM;IAarF,4DAA4D;IAC5D,oBAAoB,IAAI,KAAK,GAAG,MAAM;IAYtC,qEAAqE;IACrE,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM;CAwB1E"}