UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

23 lines (21 loc) 768 B
"use strict"; 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) });