UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

35 lines 2.46 kB
import { TgdFilter } from "./filter.js"; export class TgdFilterChromaticAberration extends TgdFilter { constructor(options = {}) { const { strength = 1 } = options; super({ name: `TgdFilterChromaticAberration/${TgdFilter.id++}`, fragmentShaderCode: [ options.mode === "circular" ? "vec2 dir = (varUV - vec2(0.5)) * varPixel * 2.0 * uniStrength;" : "vec2 dir = vec2(varPixel.x, 0.0) * 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); }, }); /** * 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyb21hdGljLWFiZXJyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmlsdGVyL2Nocm9tYXRpYy1hYmVycmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFlcEMsTUFBTSxPQUFPLDRCQUE2QixTQUFRLFNBQVM7SUFXdkQsWUFBWSxVQUF3RCxFQUFFO1FBQ2xFLE1BQU0sRUFBRSxRQUFRLEdBQUcsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFBO1FBQ2hDLEtBQUssQ0FBQztZQUNGLElBQUksRUFBRSxnQ0FBZ0MsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3RELGtCQUFrQixFQUFFO2dCQUNoQixPQUFPLENBQUMsSUFBSSxLQUFLLFVBQVU7b0JBQ3ZCLENBQUMsQ0FBQyxnRUFBZ0U7b0JBQ2xFLENBQUMsQ0FBQyxpREFBaUQ7Z0JBQ3ZELCtDQUErQztnQkFDL0MseUNBQXlDO2dCQUN6QywrQ0FBK0M7Z0JBQy9DLCtCQUErQjthQUNsQztZQUNELFFBQVEsRUFBRTtnQkFDTixXQUFXLEVBQUUsT0FBTzthQUN2QjtZQUNELFdBQVcsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtnQkFDekIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ25ELENBQUM7U0FDSixDQUFDLENBQUE7UUE3Qk47Ozs7Ozs7V0FPRztRQUNJLGFBQVEsR0FBRyxDQUFDLENBQUE7UUFzQmYsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7SUFDNUIsQ0FBQztDQUNKIn0=