webgpuTextureManager.d.ts 4.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import type { WebGPUBufferManager } from "./webgpuBufferManager";
  2. import type { Nullable } from "../../types";
  3. import type { InternalTexture } from "../../Materials/Textures/internalTexture";
  4. import { WebGPUHardwareTexture } from "./webgpuHardwareTexture";
  5. import type { WebGPUTintWASM } from "./webgpuTintWASM";
  6. import type { ExternalTexture } from "../../Materials/Textures/externalTexture";
  7. import type { WebGPUEngine } from "../webgpuEngine";
  8. /**
  9. * Map a (renderable) texture format (GPUTextureFormat) to an index for fast lookup (in caches for eg)
  10. * The number of entries should not go over 64! Else, the code in WebGPUCacheRenderPipeline.setMRT should be updated
  11. */
  12. export declare const renderableTextureFormatToIndex: {
  13. [name: string]: number;
  14. };
  15. /** @internal */
  16. export declare class WebGPUTextureManager {
  17. private _engine;
  18. private _device;
  19. private _glslang;
  20. private _tintWASM;
  21. private _bufferManager;
  22. private _mipmapSampler;
  23. private _videoSampler;
  24. private _ubCopyWithOfst;
  25. private _pipelines;
  26. private _compiledShaders;
  27. private _videoPipelines;
  28. private _videoCompiledShaders;
  29. private _deferredReleaseTextures;
  30. private _commandEncoderForCreation;
  31. constructor(engine: WebGPUEngine, device: GPUDevice, glslang: any, tintWASM: Nullable<WebGPUTintWASM>, bufferManager: WebGPUBufferManager, enabledExtensions: GPUFeatureName[]);
  32. private _getPipeline;
  33. private _getVideoPipeline;
  34. setCommandEncoder(encoder: GPUCommandEncoder): void;
  35. copyVideoToTexture(video: ExternalTexture, texture: InternalTexture, format: GPUTextureFormat, invertY?: boolean, commandEncoder?: GPUCommandEncoder): void;
  36. invertYPreMultiplyAlpha(gpuOrHdwTexture: GPUTexture | WebGPUHardwareTexture, width: number, height: number, format: GPUTextureFormat, invertY?: boolean, premultiplyAlpha?: boolean, faceIndex?: number, mipLevel?: number, layers?: number, ofstX?: number, ofstY?: number, rectWidth?: number, rectHeight?: number, commandEncoder?: GPUCommandEncoder, allowGPUOptimization?: boolean): void;
  37. copyWithInvertY(srcTextureView: GPUTextureView, format: GPUTextureFormat, renderPassDescriptor: GPURenderPassDescriptor, commandEncoder?: GPUCommandEncoder): void;
  38. createTexture(imageBitmap: ImageBitmap | {
  39. width: number;
  40. height: number;
  41. layers: number;
  42. }, hasMipmaps?: boolean, generateMipmaps?: boolean, invertY?: boolean, premultiplyAlpha?: boolean, is3D?: boolean, format?: GPUTextureFormat, sampleCount?: number, commandEncoder?: GPUCommandEncoder, usage?: number, additionalUsages?: number, label?: string): GPUTexture;
  43. createCubeTexture(imageBitmaps: ImageBitmap[] | {
  44. width: number;
  45. height: number;
  46. }, hasMipmaps?: boolean, generateMipmaps?: boolean, invertY?: boolean, premultiplyAlpha?: boolean, format?: GPUTextureFormat, sampleCount?: number, commandEncoder?: GPUCommandEncoder, usage?: number, additionalUsages?: number, label?: string): GPUTexture;
  47. generateCubeMipmaps(gpuTexture: GPUTexture | WebGPUHardwareTexture, format: GPUTextureFormat, mipLevelCount: number, commandEncoder?: GPUCommandEncoder): void;
  48. generateMipmaps(gpuOrHdwTexture: GPUTexture | WebGPUHardwareTexture, format: GPUTextureFormat, mipLevelCount: number, faceIndex?: number, is3D?: boolean, commandEncoder?: GPUCommandEncoder): void;
  49. createGPUTextureForInternalTexture(texture: InternalTexture, width?: number, height?: number, depth?: number, creationFlags?: number): WebGPUHardwareTexture;
  50. createMSAATexture(texture: InternalTexture, samples: number, releaseExisting?: boolean, index?: number): void;
  51. updateCubeTextures(imageBitmaps: ImageBitmap[] | Uint8Array[], gpuTexture: GPUTexture, width: number, height: number, format: GPUTextureFormat, invertY?: boolean, premultiplyAlpha?: boolean, offsetX?: number, offsetY?: number): void;
  52. updateTexture(imageBitmap: ImageBitmap | Uint8Array | ImageData | HTMLImageElement | HTMLVideoElement | VideoFrame | HTMLCanvasElement | OffscreenCanvas, texture: GPUTexture | InternalTexture, width: number, height: number, layers: number, format: GPUTextureFormat, faceIndex?: number, mipLevel?: number, invertY?: boolean, premultiplyAlpha?: boolean, offsetX?: number, offsetY?: number, allowGPUOptimization?: boolean): void;
  53. readPixels(texture: GPUTexture, x: number, y: number, width: number, height: number, format: GPUTextureFormat, faceIndex?: number, mipLevel?: number, buffer?: Nullable<ArrayBufferView>, noDataConversion?: boolean): Promise<ArrayBufferView>;
  54. releaseTexture(texture: InternalTexture | GPUTexture): void;
  55. destroyDeferredTextures(): void;
  56. }