@openhps/core
Version:
Open Hybrid Positioning System - Core component
23 lines (21 loc) • 768 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.hash = void 0;
var _TSLBase = require("../tsl/TSLBase.js");
/**
* Generates a hash value in the range `[0, 1]` from the given seed.
*
* @tsl
* @function
* @param {Node<float>} seed - The seed.
* @return {Node<float>} The hash value.
*/
const hash = exports.hash = /*@__PURE__*/(0, _TSLBase.Fn)(([seed]) => {
// Taken from https://www.shadertoy.com/view/XlGcRh, originally from pcg-random.org
const state = seed.toUint().mul(747796405).add(2891336453);
const word = state.shiftRight(state.shiftRight(28).add(4)).bitXor(state).mul(277803737);
const result = word.shiftRight(22).bitXor(word);
return result.toFloat().mul(1 / 2 ** 32); // Convert to range [0, 1)
});