UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

42 lines 2.74 kB
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==