nanogl-gltf
Version:
40 lines (39 loc) • 1.27 kB
JavaScript
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);
}
}