UNPKG

gpu-curtains

Version:

gpu-curtains is a 3D WebGPU rendering engine. It can be used as a standalone 3D engine, but also includes extra classes focused on mapping 3d objects to DOM elements; It allows users to synchronize values such as position, sizing, or scale between them.

30 lines (27 loc) 1.29 kB
import { WebGPUTextureUsageConstants } from '../../utils/webgpu-constants.mjs'; const textureUsages = /* @__PURE__ */ new Map([ ["copySrc", WebGPUTextureUsageConstants.COPY_SRC], ["copyDst", WebGPUTextureUsageConstants.COPY_DST], ["renderAttachment", WebGPUTextureUsageConstants.RENDER_ATTACHMENT], ["storageBinding", WebGPUTextureUsageConstants.STORAGE_BINDING], ["textureBinding", WebGPUTextureUsageConstants.TEXTURE_BINDING] ]); const getTextureUsages = (usages = []) => { return usages.reduce((acc, v) => { return acc | textureUsages.get(v); }, 0); }; const getDefaultTextureUsage = (usages = [], textureType) => { if (usages.length) { return getTextureUsages(usages); } return textureType !== "storage" ? GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT : GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST; }; const getDefaultMediaTextureUsage = (usages = []) => { return getDefaultTextureUsage(usages, "texture"); }; const getNumMipLevels = (...sizes) => { const maxSize = Math.max(...sizes); return 1 + Math.log2(maxSize) | 0; }; export { getDefaultMediaTextureUsage, getDefaultTextureUsage, getNumMipLevels, getTextureUsages };