playcanvas
Version:
PlayCanvas WebGL game engine
115 lines (114 loc) • 3.75 kB
TypeScript
/**
* 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 {};