@threeify/math
Version:
Computer graphics oriented, High performance, tree-shakeable, TypeScript 3D vector math library.
78 lines (73 loc) • 2.03 kB
text/typescript
import { Color4 } from '../Color4';
import {
arrayToColor4,
color4ToArray,
rgbeToLinear
} from '../Color4.Functions';
import { float32ToFloat16 } from '../utils/fp16';
export function normalizedByteToFloat32s(
sourceArray: Uint8Array,
result: Float32Array | undefined = undefined
): Float32Array {
const scale = 1 / 255;
if (result === undefined) {
result = new Float32Array(sourceArray.length);
}
for (let i = 0; i < sourceArray.length; i++) {
result[i] = sourceArray[i] * scale;
}
return result;
}
export function float32sToNormalizedBytes(
sourceArray: Float32Array,
result: Uint8Array | undefined = undefined
): Uint8Array {
const scale = 255;
if (result === undefined) {
result = new Uint8Array(sourceArray.length);
}
for (let i = 0; i < sourceArray.length; i++) {
result[i] = sourceArray[i] * scale;
}
return result;
}
export function normalizedByteToFloat16s(
sourceArray: Uint8Array,
result: Uint16Array | undefined = undefined
): Uint16Array {
const scale = 1 / 255;
if (result === undefined) {
result = new Uint16Array(sourceArray.length);
}
for (let i = 0; i < sourceArray.length; i++) {
result[i] = float32ToFloat16(sourceArray[i] * scale);
}
return result;
}
export function float32sToFloat16s(
sourceArray: Float32Array,
result: Uint16Array | undefined = undefined
): Uint16Array {
if (result === undefined) {
result = new Uint16Array(sourceArray.length);
}
for (let i = 0; i < sourceArray.length; i++) {
result[i] = float32ToFloat16(sourceArray[i]);
}
return result;
}
export function float32RGBEToFloat32Linear(
sourceArray: Float32Array,
result: Float32Array | undefined = undefined
): Float32Array {
if (result === undefined) {
result = new Float32Array(sourceArray.length);
}
const color = new Color4();
for (let i = 0; i < sourceArray.length; i += 4) {
arrayToColor4(sourceArray, i, color);
rgbeToLinear(color, color);
color4ToArray(color, result, i);
}
return result;
}