UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

50 lines (46 loc) 1.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFloatLength = getFloatLength; exports.getStrideLength = getStrideLength; exports.getVectorLength = getVectorLength; var _Constants = require("./Constants.js"); /** * This function is usually called with the length in bytes of an array buffer. * It returns an padded value which ensure chunk size alignment according to STD140 layout. * * @function * @param {number} floatLength - The buffer length. * @return {number} The padded length. */ function getFloatLength(floatLength) { // ensure chunk size alignment (STD140 layout) return floatLength + (_Constants.GPU_CHUNK_BYTES - floatLength % _Constants.GPU_CHUNK_BYTES) % _Constants.GPU_CHUNK_BYTES; } /** * Given the count of vectors and their vector length, this function computes * a total length in bytes with buffer alignment according to STD140 layout. * * @function * @param {number} count - The number of vectors. * @param {number} [vectorLength=4] - The vector length. * @return {number} The padded length. */ function getVectorLength(count, vectorLength = 4) { const strideLength = getStrideLength(vectorLength); const floatLength = strideLength * count; return getFloatLength(floatLength); } /** * This function is called with a vector length and ensure the computed length * matches a predefined stride (in this case `4`). * * @function * @param {number} vectorLength - The vector length. * @return {number} The padded length. */ function getStrideLength(vectorLength) { const strideLength = 4; return vectorLength + (strideLength - vectorLength % strideLength) % strideLength; }