@openhps/core
Version:
Open Hybrid Positioning System - Core component
50 lines (46 loc) • 1.67 kB
JavaScript
;
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;
}