UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

43 lines 2.9 kB
import { TgdFilter } from "./filter.js"; export class TgdFilterHueRotation extends TgdFilter { constructor({ hueShiftInDegrees = 0, name } = {}) { super({ name: name ?? `TgdFilterHueRotation/${TgdFilter.id++}`, 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHVlLXJvdGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpbHRlci9odWUtcm90YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBa0MsTUFBTSxVQUFVLENBQUE7QUFFcEUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFNBQVM7SUFHL0MsWUFBWSxFQUFFLGlCQUFpQixHQUFHLENBQUMsRUFBRSxJQUFJLEtBQTJELEVBQUU7UUFDbEcsS0FBSyxDQUFDO1lBQ0YsSUFBSSxFQUFFLElBQUksSUFBSSx3QkFBd0IsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3RELGtCQUFrQixFQUFFO2dCQUNoQiwwQ0FBMEM7Z0JBQzFDLHVCQUF1QjtnQkFDdkIsMENBQTBDO2dCQUMxQyxvQ0FBb0M7Z0JBQ3BDLG1CQUFtQjtnQkFDbkI7b0JBQ0ksaUJBQWlCO29CQUNqQixxQ0FBcUM7b0JBQ3JDLHVDQUF1QztvQkFDdkMsU0FBUztpQkFDWjtnQkFDRCxJQUFJO2FBQ1A7WUFDRCxRQUFRLEVBQUU7Z0JBQ04sV0FBVyxFQUFFLE9BQU87YUFDdkI7U0FDSixDQUFDLENBQUE7UUF0QkUsYUFBUSxHQUFHLENBQUMsQ0FBQTtRQXdDSixnQkFBVyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQWtDLEVBQVEsRUFBRTtZQUNoRixPQUFPLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDbkQsQ0FBQyxDQUFBO1FBbkJHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQTtJQUM5QyxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDakIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ3hCLENBQUM7SUFDRCxJQUFJLGlCQUFpQixDQUFDLENBQVM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUE7SUFDckIsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUE7SUFDMUMsQ0FBQztJQUNELElBQUksaUJBQWlCLENBQUMsQ0FBUztRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUE7SUFDdkMsQ0FBQztDQUtKIn0=