UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

33 lines 2.32 kB
import { TgdFilter } from "./filter.js"; export class TgdFilterChromaticAberration extends TgdFilter { constructor(options = {}) { const { strength = 1 } = options; super({ fragmentShaderCode: [ "vec2 dir = (varUV - vec2(0.5)) * 0.01 * uniStrength;", "float r = texture(uniTexture, varUV + dir).r;", "float g = texture(uniTexture, varUV).g;", "float b = texture(uniTexture, varUV - dir).b;", `FragColor = vec4(r, g, b, 1);`, ], uniforms: { uniStrength: "float", }, setUniforms: ({ program }) => { program.uniform1f("uniStrength", this.strength); program.uniform1f("uniInverseHeight", 1 / program.gl.drawingBufferHeight); }, }); /** * Percentage of displacement of the color or the border of the image. * The blue is push await from the center, and the red is pulled to * the center. But if you use a negative `strength`, the process is * reversed. * * Default to 1.0 (means 1% of displacement). */ this.strength = 1; this.strength = strength; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyb21hdGljLWFiZXJyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmlsdGVyL2Nocm9tYXRpYy1hYmVycmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFjcEMsTUFBTSxPQUFPLDRCQUE2QixTQUFRLFNBQVM7SUFXdkQsWUFBWSxVQUF3RCxFQUFFO1FBQ2xFLE1BQU0sRUFBRSxRQUFRLEdBQUcsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFBO1FBQ2hDLEtBQUssQ0FBQztZQUNGLGtCQUFrQixFQUFFO2dCQUNoQixzREFBc0Q7Z0JBQ3RELCtDQUErQztnQkFDL0MseUNBQXlDO2dCQUN6QywrQ0FBK0M7Z0JBQy9DLCtCQUErQjthQUNsQztZQUNELFFBQVEsRUFBRTtnQkFDTixXQUFXLEVBQUUsT0FBTzthQUN2QjtZQUNELFdBQVcsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtnQkFDekIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUMvQyxPQUFPLENBQUMsU0FBUyxDQUNiLGtCQUFrQixFQUNsQixDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FDckMsQ0FBQTtZQUNMLENBQUM7U0FDSixDQUFDLENBQUE7UUE5Qk47Ozs7Ozs7V0FPRztRQUNJLGFBQVEsR0FBRyxDQUFDLENBQUE7UUF1QmYsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7SUFDNUIsQ0FBQztDQUNKIn0=