UNPKG

playcanvas

Version:

PlayCanvas WebGL game engine

115 lines (114 loc) 3.75 kB
/** * A representation of a compute shader with the associated resources, that can be executed on the * GPU. Only supported on WebGPU platform. */ export class Compute { /** * Create a compute instance. Note that this is supported on WebGPU only and is a no-op on * other platforms. * * @param {GraphicsDevice} graphicsDevice - * The graphics device. * @param {Shader} shader - The compute shader. * @param {string} [name] - The name of the compute instance, used for debugging only. */ constructor(graphicsDevice: GraphicsDevice, shader: Shader, name?: string); /** * A compute shader. * * @type {Shader|null} * @ignore */ shader: Shader | null; /** * The non-unique name of an instance of the class. Defaults to 'Unnamed'. * * @type {string} */ name: string; /** * @type {Map<string, ComputeParameter>} * @ignore */ parameters: Map<string, ComputeParameter>; /** * @type {number} * @ignore */ countX: number; /** * @type {number|undefined} * @ignore */ countY: number | undefined; /** * @type {number|undefined} * @ignore */ countZ: number | undefined; device: GraphicsDevice; impl: any; /** * Sets a shader parameter on a compute instance. * * @param {string} name - The name of the parameter to set. * @param {number|number[]|Float32Array|Texture|StorageBuffer|VertexBuffer|IndexBuffer} value - * The value for the specified parameter. */ setParameter(name: string, value: number | number[] | Float32Array | Texture | StorageBuffer | VertexBuffer | IndexBuffer): void; /** * Returns the value of a shader parameter from the compute instance. * * @param {string} name - The name of the parameter to get. * @returns {number|number[]|Float32Array|Texture|StorageBuffer|VertexBuffer|IndexBuffer|undefined} * The value of the specified parameter. */ getParameter(name: string): number | number[] | Float32Array | Texture | StorageBuffer | VertexBuffer | IndexBuffer | undefined; /** * Deletes a shader parameter from the compute instance. * * @param {string} name - The name of the parameter to delete. */ deleteParameter(name: string): void; /** * Apply the parameters to the scope. * * @ignore */ applyParameters(): void; /** * Prepare the compute work dispatch. * * @param {number} x - X dimension of the grid of work-groups to dispatch. * @param {number} [y] - Y dimension of the grid of work-groups to dispatch. * @param {number} [z] - Z dimension of the grid of work-groups to dispatch. */ setupDispatch(x: number, y?: number, z?: number): void; } import type { Shader } from './shader.js'; /** * @import { GraphicsDevice } from './graphics-device.js' * @import { IndexBuffer } from './index-buffer.js' * @import { ScopeId } from './scope-id.js' * @import { Shader } from './shader.js' * @import { StorageBuffer } from './storage-buffer.js' * @import { Texture } from './texture.js' * @import { VertexBuffer } from './vertex-buffer.js' */ /** * A helper class storing a parameter value as well as its scope ID. * * @ignore */ declare class ComputeParameter { value: any; /** @type {ScopeId} */ scopeId: ScopeId; } import type { GraphicsDevice } from './graphics-device.js'; import type { Texture } from './texture.js'; import type { StorageBuffer } from './storage-buffer.js'; import type { VertexBuffer } from './vertex-buffer.js'; import type { IndexBuffer } from './index-buffer.js'; import type { ScopeId } from './scope-id.js'; export {};