UNPKG

nanogl-gltf

Version:
40 lines (39 loc) 1.27 kB
import GltfTypes from "../../types/GltfTypes"; import { webpSupport } from "./webpSupport"; /** * this extension actually do nothing * vanilla parser already support arbitrary attributes type and normalization */ const EXT_ID = 'EXT_texture_webp'; class Instance { constructor(gltfLoader) { this.name = EXT_ID; this.priority = -10; this.loader = gltfLoader; } async acceptElement(data, element) { if (element.gltftype === GltfTypes.TEXTURE && data.extensions && data.extensions[EXT_ID]) { const webpSupported = await webpSupport(); if (webpSupported) { element.source = await this.loader.getElement(GltfTypes.IMAGE, data.extensions[EXT_ID].source); } } return element; } loadElement(data) { return null; } } /** * This extension allows texture to use webp format for images, for browsers that support it. * It replaces the Texture's PNG/JPEG source Image with the webp source Image. * If the browser does not support webp, this extension will do nothing. */ export default class EXT_texture_webp { constructor() { this.name = EXT_ID; } createInstance(gltfLoader) { return new Instance(gltfLoader); } }