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;
}