polygonjs-engine
Version:
node-based webgl 3D engine https://polygonjs.com
34 lines (30 loc) • 1.03 kB
text/typescript
import {MathUtils} from 'three/src/math/MathUtils';
import {Color} from 'three/src/math/Color';
export enum ColorConversion {
NONE = 'no conversion',
GAMMA_TO_LINEAR = 'gamma -> linear',
LINEAR_TO_GAMMA = 'linear -> gamma',
SRGB_TO_LINEAR = 'sRGB -> linear',
LINEAR_TO_SRGB = 'linear -> sRGB',
}
export const COLOR_CONVERSIONS: ColorConversion[] = [
ColorConversion.NONE,
ColorConversion.GAMMA_TO_LINEAR,
ColorConversion.LINEAR_TO_GAMMA,
ColorConversion.SRGB_TO_LINEAR,
ColorConversion.LINEAR_TO_SRGB,
];
export class CoreColor {
// use color.toStyle() if needed
// static to_css(color: Color): string {
// const color_elements = color.toArray().map((e) => e * 255)
// return `rgb(${color_elements.join(', ')})`
// }
// from THREE.js examples ColorConverter.js
static set_hsv(h: number, s: number, v: number, target: Color) {
h = MathUtils.euclideanModulo(h, 1);
s = MathUtils.clamp(s, 0, 1);
v = MathUtils.clamp(v, 0, 1);
target.setHSL(h, (s * v) / ((h = (2 - s) * v) < 1 ? h : 2 - h), h * 0.5);
}
}