@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
43 lines • 3.12 kB
JavaScript
/**
* Fast hue shifting for colors.
* Hue shift is expressed in __radians__.
*/
export function tgdCodeFunction_shiftHue({ name = "shiftHue", } = {}) {
return {
[name]: `vec3 ${name}(vec3 color, float hue) {
const vec3 k = vec3(0.5773502691896258);
float cosAngle = cos(hue);
return vec3(
color * cosAngle
+ cross(k, color) * sin(hue)
+ k * dot(k, color) * (1.0 - cosAngle)
);
}
`,
};
}
export function tgdCodeFunction_luminance({ name = "luminance", } = {}) {
return {
[name]: `float ${name}(vec3 color) {
return 0.2126 * color.r + 0.7152 * color.g + 0.0722 * color.b;
}`,
};
}
export function tgdCodeFunction_palette({ name = "palette", a = [0.502, 0.502, 0.502, 1], b = [0.502, 0.502, 0.502, 1], c = [1, 1, 1, 1], d = [0, 0.102, 0.2, 1], } = {}) {
const A = a.map((v) => v.toFixed(5)).join(", ");
const B = b.map((v) => v.toFixed(5)).join(", ");
const C = c.map((v) => v.toFixed(5)).join(", ");
const D = d.map((v) => v.toFixed(5)).join(", ");
return {
[name]: `vec4 ${name}(float t) {
return vec4(${A})
+ vec4(${B}) * cos(
6.283185307179586 * (
t * vec4(${C})
+ vec4(${D})
)
);
}`,
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29kZS9jb2xvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsRUFDckMsSUFBSSxHQUFHLFVBQVUsTUFHakIsRUFBRTtJQUNGLE9BQU87UUFDSCxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsSUFBSTs7Ozs7Ozs7O0NBUzNCO0tBQ0ksQ0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsRUFDdEMsSUFBSSxHQUFHLFdBQVcsTUFHbEIsRUFBRTtJQUNGLE9BQU87UUFDSCxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsSUFBSTs7RUFFM0I7S0FDRyxDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxFQUNwQyxJQUFJLEdBQUcsU0FBUyxFQUNoQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFDNUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQzVCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNoQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFPdEIsRUFBRTtJQUNGLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMvQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9DLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0MsT0FBTztRQUNILENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxJQUFJO2tCQUNWLENBQUM7aUJBQ0YsQ0FBQzs7MkJBRVMsQ0FBQzt5QkFDSCxDQUFDOzs7RUFHeEI7S0FDRyxDQUFBO0FBQ0wsQ0FBQyJ9