backend.ts
src/gpu/backend.ts · raw · all examples · site home
Exports: BackendbackendOfisWebGPUBackendgpuTextureOfglTextureOf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
import type { WebGPURenderer } from "three/webgpu";
// The parts of a WebGPURenderer backend this module reaches into: the raw
// device or GL context and the per-object GPU resources three keeps.
// Structural, so no backend class import is needed.
export interface Backend {
isWebGPUBackend?: boolean;
isWebGLBackend?: boolean;
device?: GPUDevice;
gl?: WebGL2RenderingContext;
get(object: object): Record<string, unknown>;
}
export function backendOf(renderer: WebGPURenderer): Backend {
return renderer.backend as unknown as Backend;
}
export function isWebGPUBackend(renderer: WebGPURenderer) {
return backendOf(renderer).isWebGPUBackend === true;
}
// The GPUTexture / WebGLTexture three created for `texture` (after initTexture)
export function gpuTextureOf(renderer: WebGPURenderer, texture: object): GPUTexture {
return backendOf(renderer).get(texture).texture as GPUTexture;
}
export function glTextureOf(renderer: WebGPURenderer, texture: object): WebGLTexture {
return backendOf(renderer).get(texture).textureGPU as WebGLTexture;
}