UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

46 lines 2.75 kB
/** * Define the shader to be used in a filter. * * A filter is mostly a fragment shader working on a texture. * * Always available varyings: * * `vec2 varUV` * * Always available uniforms: * * `sampler2D uniTexture`: input texture. * * `float uniWidth`: width of the texture in pixels. * * `float uniHeight`: height of the texture in pixels. */ export class TgdFilter { constructor(options = {}) { /** * If you need more uniforms, define them here. * And set the values in the `setUniforms()` method. */ this.uniforms = {}; this.textures = {}; /** * The code of a `vec4 applyColor()` function. * Must return a `vec4` color. */ this.fragmentShaderCode = ["vec4 color = texture(uniTexture, varUV);", "FragColor = color;"]; this.extraFunctions = {}; this.setUniforms = (_parameters) => { }; const { uniforms, textures, fragmentShaderCode, extraFunctions, setUniforms } = options; if (uniforms) this.uniforms = uniforms; if (textures) this.textures = textures; if (fragmentShaderCode) this.fragmentShaderCode = fragmentShaderCode; if (extraFunctions) this.extraFunctions = extraFunctions; if (setUniforms) this.setUniforms = setUniforms; this.name = options.name ?? `TgdFilter#${TgdFilter.id++}`; } /** Cleanup function. */ delete() { } } TgdFilter.id = 1; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpbHRlci9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFrQmxCLFlBQVksVUFBcUMsRUFBRTtRQWRuRDs7O1dBR0c7UUFDYSxhQUFRLEdBQXFDLEVBQUUsQ0FBQTtRQUMvQyxhQUFRLEdBQWtELEVBQUUsQ0FBQTtRQUM1RTs7O1dBR0c7UUFDYSx1QkFBa0IsR0FBZ0IsQ0FBQywwQ0FBMEMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO1FBQ3BHLG1CQUFjLEdBQW1DLEVBQUUsQ0FBQTtRQUNuRCxnQkFBVyxHQUFHLENBQUMsV0FBMkMsRUFBUSxFQUFFLEdBQUUsQ0FBQyxDQUFBO1FBR25GLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFFdkYsSUFBSSxRQUFRO1lBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDdEMsSUFBSSxRQUFRO1lBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDdEMsSUFBSSxrQkFBa0I7WUFBRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUE7UUFDcEUsSUFBSSxjQUFjO1lBQUUsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUE7UUFDeEQsSUFBSSxXQUFXO1lBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFDL0MsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLGFBQWEsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUE7SUFDN0QsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixNQUFNLEtBQUksQ0FBQzs7QUE3Qk0sWUFBRSxHQUFHLENBQUMsQUFBSixDQUFJIn0=