@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
46 lines • 2.75 kB
JavaScript
/**
* 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=