@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
42 lines • 2.74 kB
JavaScript
import { TgdFilter } from "./filter.js";
export class TgdFilterHueRotation extends TgdFilter {
constructor({ hueShiftInDegrees = 0, } = {}) {
super({
fragmentShaderCode: [
"vec4 color = texture(uniTexture, varUV);",
"vec3 rgb = color.rgb;",
"const vec3 k = vec3(0.5773502691896258);",
"float cosAngle = cos(uniHueShift);",
"FragColor = vec4(",
[
"rgb * cosAngle ",
"+ cross(k, rgb) * sin(uniHueShift) ",
"+ k * dot(k, rgb) * (1.0 - cosAngle),",
"color.a",
],
");",
],
uniforms: {
uniHueShift: "float",
},
});
this.hueShift = 0;
this.setUniforms = ({ program, }) => {
program.uniform1f("uniHueShift", this.hueShift);
};
this.hueShiftInDegrees = hueShiftInDegrees;
}
get hueShiftInRadians() {
return this.hueShift;
}
set hueShiftInRadians(v) {
this.hueShift = v;
}
get hueShiftInDegrees() {
return (this.hueShift * 180) / Math.PI;
}
set hueShiftInDegrees(v) {
this.hueShift = (v * Math.PI) / 180;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHVlLXJvdGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpbHRlci9odWUtcm90YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBa0MsTUFBTSxVQUFVLENBQUE7QUFFcEUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFNBQVM7SUFHL0MsWUFBWSxFQUNSLGlCQUFpQixHQUFHLENBQUMsTUFDbUIsRUFBRTtRQUMxQyxLQUFLLENBQUM7WUFDRixrQkFBa0IsRUFBRTtnQkFDaEIsMENBQTBDO2dCQUMxQyx1QkFBdUI7Z0JBQ3ZCLDBDQUEwQztnQkFDMUMsb0NBQW9DO2dCQUNwQyxtQkFBbUI7Z0JBQ25CO29CQUNJLGlCQUFpQjtvQkFDakIscUNBQXFDO29CQUNyQyx1Q0FBdUM7b0JBQ3ZDLFNBQVM7aUJBQ1o7Z0JBQ0QsSUFBSTthQUNQO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLFdBQVcsRUFBRSxPQUFPO2FBQ3ZCO1NBQ0osQ0FBQyxDQUFBO1FBdkJFLGFBQVEsR0FBRyxDQUFDLENBQUE7UUF5Q0osZ0JBQVcsR0FBRyxDQUFDLEVBQzNCLE9BQU8sR0FDc0IsRUFBUSxFQUFFO1lBQ3ZDLE9BQU8sQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNuRCxDQUFDLENBQUE7UUFyQkcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFBO0lBQzlDLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDeEIsQ0FBQztJQUNELElBQUksaUJBQWlCLENBQUMsQ0FBUztRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQTtJQUNyQixDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQTtJQUMxQyxDQUFDO0lBQ0QsSUFBSSxpQkFBaUIsQ0FBQyxDQUFTO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtJQUN2QyxDQUFDO0NBT0oifQ==