UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

137 lines 7.7 kB
// https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.pdf import { assertType } from "./guards.js"; export function isTgdFormatGltfCameraPerspective(data) { return data.type === "perspective"; } export function isTgdFormatGltfCameraOrthographic(data) { return data.type === "orthographic"; } export function assertTgdFormatGltf(data) { const typeAttribute = [ "|", "number", { value: "unknown", size: "number", count: "number", byteOffset: "number", type: "string", componentType: "number", min: ["?", ["array", "number"]], max: ["?", ["array", "number"]], }, ]; assertType(data, [ "partial", { accessors: [ "array", { bufferView: ["?", "number"], byteOffset: ["?", "number"], componentType: "number", normalized: ["?", "boolean"], count: "number", type: "string", name: ["?", "string"], }, ], meshes: [ "array", { name: ["?", "string"], primitives: [ "array", { attributes: ["map", typeAttribute], indices: ["?", typeAttribute], mode: ["?", "number"], material: ["?", "number"], }, ], }, ], images: [ "array", [ "partial", { bufferView: "number", mimeType: "string", name: "string", uri: "string", }, ], ], bufferViews: [ "array", { buffer: "number", byteLength: "number", byteOffset: ["?", "number"], byteStride: ["?", "number"], target: ["?", "number"], }, ], materials: ["array", typeMaterial], samplers: [ "array", [ "partial", { minFilter: "number", magFilter: "number", wrapS: "number", wrapT: "number", name: "string", }, ], ], textures: [ "array", [ "partial", { sampler: "number", source: "number", name: "string", }, ], ], }, ]); } const typeTextureInfo = { index: "number", texCoord: ["?", "number"], }; const typePbrMetallicRoughness = [ "partial", { baseColorFactor: ["array", "number", { min: 4, max: 4 }], baseColorTexture: typeTextureInfo, metallicFactor: "number", roughnessFactor: "number", metalicRoughnessTexture: typeTextureInfo, }, ]; const typeMaterial = [ "partial", { name: "string", pbrMetallicRoughness: typePbrMetallicRoughness, normalTexture: { ...typeTextureInfo, scale: ["?", "number"], }, occlusionTexture: { ...typeTextureInfo, strength: ["?", "number"], }, emissiveTexture: typeTextureInfo, alphaMode: ["literal", "OPAQUE", "MASK", "BLEND"], alphaCutoff: "number", doubleSided: "boolean", }, ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9nbHRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJEQUEyRDtBQUUzRCxPQUFPLEVBQWdCLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBdU41RCxNQUFNLFVBQVUsZ0NBQWdDLENBQUMsSUFBeUI7SUFDdEUsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQTtBQUN0QyxDQUFDO0FBY0QsTUFBTSxVQUFVLGlDQUFpQyxDQUFDLElBQXlCO0lBQ3ZFLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUE7QUFDdkMsQ0FBQztBQWlCRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBYTtJQUM3QyxNQUFNLGFBQWEsR0FBWTtRQUMzQixHQUFHO1FBQ0gsUUFBUTtRQUNSO1lBQ0ksS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsUUFBUTtZQUNmLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLElBQUksRUFBRSxRQUFRO1lBQ2QsYUFBYSxFQUFFLFFBQVE7WUFDdkIsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQy9CLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNsQztLQUNKLENBQUE7SUFDRCxVQUFVLENBQUMsSUFBSSxFQUFFO1FBQ2IsU0FBUztRQUNUO1lBQ0ksU0FBUyxFQUFFO2dCQUNQLE9BQU87Z0JBQ1A7b0JBQ0ksVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztvQkFDM0IsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztvQkFDM0IsYUFBYSxFQUFFLFFBQVE7b0JBQ3ZCLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUM7b0JBQzVC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