@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
31 lines • 2.21 kB
JavaScript
import { TgdMaterial } from "./material.js";
/**
* Reveal a background texture.
*
* You can use it in a techbnique to smooth your shading.
* 1. Render your scene in a FBO with low resolution and the material you want.
* 2. Use this material with the FBO texture to smooth the previous material.
*/
export class TgdMaterialMask extends TgdMaterial {
constructor(options) {
super({
uniforms: {
uniViewportInverse: "vec2",
uniTexture: "sampler2D",
},
fragmentShaderCode: [
"highp vec2 uv = gl_FragCoord.xy * uniViewportInverse;",
options.flipY
? "return texture(uniTexture, vec2(uv.x, 1.0 - uv.y));"
: "return texture(uniTexture, uv);",
],
setUniforms: ({ program }) => {
const invW = 1 / program.gl.drawingBufferWidth;
const invH = 1 / program.gl.drawingBufferHeight;
options.texture.activate(0, program, "uniTexture");
program.uniform2f("uniViewportInverse", invW, invH);
},
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9tYXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQTJCLE1BQU0sWUFBWSxDQUFBO0FBT2pFOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxlQUFnQixTQUFRLFdBQVc7SUFDNUMsWUFBWSxPQUErQjtRQUN2QyxLQUFLLENBQUM7WUFDRixRQUFRLEVBQUU7Z0JBQ04sa0JBQWtCLEVBQUUsTUFBTTtnQkFDMUIsVUFBVSxFQUFFLFdBQVc7YUFDMUI7WUFDRCxrQkFBa0IsRUFBRTtnQkFDaEIsdURBQXVEO2dCQUN2RCxPQUFPLENBQUMsS0FBSztvQkFDVCxDQUFDLENBQUMscURBQXFEO29CQUN2RCxDQUFDLENBQUMsaUNBQWlDO2FBQzFDO1lBQ0QsV0FBVyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQTJCLEVBQVEsRUFBRTtnQkFDeEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUE7Z0JBQzlDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFBO2dCQUMvQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFBO2dCQUNsRCxPQUFPLENBQUMsU0FBUyxDQUFDLG9CQUFvQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUN2RCxDQUFDO1NBQ0osQ0FBQyxDQUFBO0lBQ04sQ0FBQztDQUNKIn0=