@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
44 lines • 2.34 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 texSource`: 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 = {};
/**
* The code of a `vec4 applyColor()` function.
* Must return a `vec4` color.
*/
this.fragmentShaderCode = [
"vec4 color = texture(uniTexture, varUV);",
"return color;",
];
this.extraFunctions = {};
this.setUniforms = (_parameters) => { };
const { uniforms, fragmentShaderCode, extraFunctions, setUniforms } = options;
if (uniforms)
this.uniforms = uniforms;
if (fragmentShaderCode)
this.fragmentShaderCode = fragmentShaderCode;
if (extraFunctions)
this.extraFunctions = extraFunctions;
if (setUniforms)
this.setUniforms = setUniforms;
}
/** Cleanup function. */
delete() { }
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpbHRlci9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFzQmxCLFlBQVksVUFBcUMsRUFBRTtRQXJCbkQ7OztXQUdHO1FBQ2EsYUFBUSxHQUF5QyxFQUFFLENBQUE7UUFFbkU7OztXQUdHO1FBQ2EsdUJBQWtCLEdBQWdCO1lBQzlDLDBDQUEwQztZQUMxQyxlQUFlO1NBQ2xCLENBQUE7UUFFZSxtQkFBYyxHQUFtQyxFQUFFLENBQUE7UUFFbkQsZ0JBQVcsR0FBRyxDQUMxQixXQUEyQyxFQUN2QyxFQUFFLEdBQUUsQ0FBQyxDQUFBO1FBR1QsTUFBTSxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLEdBQy9ELE9BQU8sQ0FBQTtRQUNYLElBQUksUUFBUTtZQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3RDLElBQUksa0JBQWtCO1lBQUUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFBO1FBQ3BFLElBQUksY0FBYztZQUFFLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFBO1FBQ3hELElBQUksV0FBVztZQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO0lBQ25ELENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsTUFBTSxLQUFJLENBQUM7Q0FDZCJ9