UNPKG

playcanvas

Version:

Open-source WebGL/WebGPU 3D engine for the web

42 lines (41 loc) 988 B
import { PIXELFORMAT_RGBA8 } from "./constants.js"; import { DeviceCache } from "./device-cache.js"; import { Texture } from "./texture.js"; const textureData = { white: [255, 255, 255, 255], gray: [128, 128, 128, 255], black: [0, 0, 0, 255], normal: [128, 128, 255, 255], pink: [255, 128, 255, 255] }; class BuiltInTextures { map = /* @__PURE__ */ new Map(); destroy() { this.map.forEach((texture) => { texture.destroy(); }); } } const deviceCache = new DeviceCache(); const getBuiltInTexture = (device, name) => { const cache = deviceCache.get(device, () => { return new BuiltInTextures(); }); if (!cache.map.has(name)) { const texture = new Texture(device, { name: `built-in-texture-${name}`, width: 1, height: 1, format: PIXELFORMAT_RGBA8 }); const pixels = texture.lock(); const data = textureData[name]; pixels.set(data); texture.unlock(); cache.map.set(name, texture); } return cache.map.get(name); }; export { getBuiltInTexture };