UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

117 lines 6.77 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) { 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", "number"], indices: ["?", "number"], 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(4)", "number"], baseColorTexture: typeTextureInfo, metallicFactor: "number", roughnessFactor: "number", metalicRoughnessTexture: typeTextureInfo, }, ]; const typeMaterial = [ "partial", { name: "string", pbrMetallicRoughness: typePbrMetallicRoughness, normalTexture: Object.assign(Object.assign({}, typeTextureInfo), { scale: ["?", "number"] }), occlusionTexture: Object.assign(Object.assign({}, typeTextureInfo), { strength: ["?", "number"] }), emissiveTexture: typeTextureInfo, alphaMode: ["literal", "OPAQUE", "MASK", "BLEND"], alphaCutoff: "number", doubleSided: "boolean", }, ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9nbHRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJEQUEyRDtBQUUzRCxPQUFPLEVBQVcsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFtS3ZELE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDNUMsSUFBeUI7SUFFekIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQTtBQUN0QyxDQUFDO0FBZUQsTUFBTSxVQUFVLGlDQUFpQyxDQUM3QyxJQUF5QjtJQUV6QixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFBO0FBQ3ZDLENBQUM7QUFnREQsTUFBTSxVQUFVLG1CQUFtQixDQUMvQixJQUFhO0lBRWIsVUFBVSxDQUFDLElBQUksRUFBRTtRQUNiLFNBQVM7UUFDVDtZQUNJLFNBQVMsRUFBRTtnQkFDUCxPQUFPO2dCQUNQO29CQUNJLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUM7b0JBQzNCLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUM7b0JBQzNCLGFBQWEsRUFBRSxRQUFRO29CQUN2QixVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDO29CQUM1QixLQUFLLEVBQUUsUUFBUTtvQkFDZixJQUFJLEVBQUUsUUFBUTtvQkFDZCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDO2lCQUN4QjthQUNKO1lBQ0QsTUFBTSxFQUFFO2dCQUNKLE9BQU87Z0JBQ1A7b0JBQ0ksSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNSLE9BQU87d0JBQ1A7NEJBQ0ksVUFBVSxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQzs0QkFDN0IsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQzs0QkFDeEIsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQzs0QkFDckIsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQzt5QkFDNUI7cUJBQ0o7aUJBQ0o7YUFDSjtZQUNELE1BQU0sRUFBRTtnQkFDSixPQUFPO2dCQUNQO29CQUNJLFNBQVM7b0JBQ1Q7d0JBQ0ksVUFBVSxFQUFFLFFBQVE7d0JBQ3BCLFFBQVEsRUFBRSxRQUFRO3dCQUNsQixJQUFJLEVBQUUsUUFBUTt3QkFDZCxHQUFHLEVBQUUsUUFBUTtxQkFDaEI7aUJBQ0o7YUFDSjtZQUNELFdBQVcsRUFBRTtnQkFDVCxPQUFPO2dCQUNQO29CQUNJLE1BQU0sRUFBRSxRQUFRO29CQUNoQixVQUFVLEVBQUUsUUFBUTtvQkFDcEIsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztvQkFDM0IsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztvQkFDM0IsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztpQkFDMUI7YUFDSjtZQUNELFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUM7WUFDbEMsUUFBUSxFQUFFO2dCQUNOLE9BQU87Z0JBQ1A7b0JBQ0ksU0FBUztvQkFDVDt3QkFDSSxTQUFTLEVBQUUsUUFBUTt3QkFDbkIsU0FBUyxFQUFFLFFBQVE7d0JBQ25CLEtBQUssRUFBRSxRQUFRO3dCQUNmLEtBQUssRUFBRSxRQUFRO3dCQUNmLElBQUksRUFBRSxRQUFRO3FCQUNqQjtpQkFDSjthQUNKO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLE9BQU87Z0JBQ1A7b0JBQ0ksU0FBUztvQkFDVDt3QkFDSSxPQUFPLEVBQUUsUUFBUTt3QkFDakIsTUFBTSxFQUFFLFFBQVE7d0JBQ2hCLElBQUksRUFBRSxRQUFRO3FCQUNqQjtpQkFDSjthQUNKO1NBQ0o7S0FDSixDQUFDLENBQUE7QUFDTixDQUFDO0FBRUQsTUFBTSxlQUFlLEdBQVk7SUFDN0IsS0FBSyxFQUFFLFFBQVE7SUFDZixRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDO0NBQzVCLENBQUE7QUFFRCxNQUFNLHdCQUF3QixHQUFZO0lBQ3RDLFNBQVM7SUFDVDtRQUNJLGVBQWUsRUFBRSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUM7UUFDdkMsZ0JBQWdCLEVBQUUsZUFBZTtRQUNqQyxjQUFjLEVBQUUsUUFBUTtRQUN4QixlQUFlLEVBQUUsUUFBUTtRQUN6Qix1QkFBdUIsRUFBRSxlQUFlO0tBQzNDO0NBQ0osQ0FBQTtBQUVELE1BQU0sWUFBWSxHQUFZO0lBQzFCLFNBQVM7SUFDVDtRQUNJLElBQUksRUFBRSxRQUFRO1FBQ2Qsb0JBQW9CLEVBQUUsd0JBQXdCO1FBQzlDLGFBQWEsa0NBQ04sZUFBZSxLQUNsQixLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQ3pCO1FBQ0QsZ0JBQWdCLGtDQUNULGVBQWUsS0FDbEIsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUM1QjtRQUNELGVBQWUsRUFBRSxlQUFlO1FBQ2hDLFNBQVMsRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztRQUNqRCxXQUFXLEVBQUUsUUFBUTtRQUNyQixXQUFXLEVBQUUsU0FBUztLQUN6QjtDQUNKLENBQUEifQ==