src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js
export const dataTextureRamStats = {
sizeDataColorsAndFlags: 0,
sizeDataPositionDecodeMatrices: 0,
sizeDataTextureOffsets: 0,
sizeDataTexturePositions: 0,
sizeDataTextureIndices: 0,
sizeDataTextureEdgeIndices: 0,
sizeDataTexturePortionIds: 0,
numberOfGeometries: 0,
numberOfPortions: 0,
numberOfLayers: 0,
numberOfTextures: 0,
totalPolygons: 0,
totalPolygons8Bits: 0,
totalPolygons16Bits: 0,
totalPolygons32Bits: 0,
totalEdges: 0,
totalEdges8Bits: 0,
totalEdges16Bits: 0,
totalEdges32Bits: 0,
cannotCreatePortion: {
because10BitsObjectId: 0,
becauseTextureSize: 0,
},
overheadSizeAlignementIndices: 0,
overheadSizeAlignementEdgeIndices: 0,
};
window.printDataTextureRamStats = function () {
console.log(JSON.stringify(dataTextureRamStats, null, 4));
let totalRamSize = 0;
Object.keys(dataTextureRamStats).forEach(key => {
if (key.startsWith("size")) {
totalRamSize += dataTextureRamStats[key];
}
});
console.log(`Total size ${totalRamSize} bytes (${(totalRamSize / 1000 / 1000).toFixed(2)} MB)`);
console.log(`Avg bytes / triangle: ${(totalRamSize / dataTextureRamStats.totalPolygons).toFixed(2)}`);
let percentualRamStats = {};
Object.keys(dataTextureRamStats).forEach(key => {
if (key.startsWith("size")) {
percentualRamStats[key] =
`${(dataTextureRamStats[key] / totalRamSize * 100).toFixed(2)} % of total`;
}
});
console.log(JSON.stringify({percentualRamUsage: percentualRamStats}, null, 4));
};