@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
84 lines • 6.74 kB
JavaScript
import { debug, highlightEnum } from "./../../debug/debug.js";
import { WebglEnumBlendEquation, WebglEnumBlendFunction } from "./../../types/index.js";
export const webglPresetBlend = {
off: {
enabled: false,
equationColor: WebglEnumBlendEquation.FUNC_ADD,
equationAlpha: WebglEnumBlendEquation.FUNC_ADD,
functionColorSrc: WebglEnumBlendFunction.SRC_ALPHA,
functionColorDst: WebglEnumBlendFunction.ONE_MINUS_SRC_ALPHA,
functionAlphaSrc: WebglEnumBlendFunction.ONE,
functionAlphaDst: WebglEnumBlendFunction.ZERO,
},
alpha: {
enabled: true,
equationColor: WebglEnumBlendEquation.FUNC_ADD,
equationAlpha: WebglEnumBlendEquation.FUNC_ADD,
functionColorSrc: WebglEnumBlendFunction.SRC_ALPHA,
functionColorDst: WebglEnumBlendFunction.ONE_MINUS_SRC_ALPHA,
functionAlphaSrc: WebglEnumBlendFunction.ONE,
functionAlphaDst: WebglEnumBlendFunction.ZERO,
},
};
export function webglBlendSet(gl, blend) {
if (blend.enabled)
gl.enable(gl.BLEND);
else
gl.disable(gl.BLEND);
gl.blendEquationSeparate(blend.equationColor, blend.equationAlpha);
gl.blendFuncSeparate(blend.functionColorSrc, blend.functionColorDst, blend.functionAlphaSrc, blend.functionAlphaDst);
}
export function webglBlendGet(gl) {
return {
enabled: Boolean(gl.getParameter(gl.BLEND)),
equationAlpha: gl.getParameter(gl.BLEND_EQUATION_ALPHA),
equationColor: gl.getParameter(gl.BLEND_EQUATION_RGB),
functionAlphaDst: gl.getParameter(gl.BLEND_DST_ALPHA),
functionAlphaSrc: gl.getParameter(gl.BLEND_SRC_ALPHA),
functionColorDst: gl.getParameter(gl.BLEND_DST_RGB),
functionColorSrc: gl.getParameter(gl.BLEND_SRC_ALPHA),
};
}
export function webglBlendExec(gl, blend, action) {
const currentState = webglBlendGet(gl);
webglBlendSet(gl, blend);
try {
action();
}
finally {
webglBlendSet(gl, currentState);
}
}
export function webglDebugBlend(gl, caption = "Blend enabled:") {
console.log(caption);
const blend = webglBlendGet(gl);
debug([
[caption, blend.enabled, "\n"],
[
{ cls: "code" },
[
"gl.",
blend.enabled ? "enable" : "disable",
"(",
highlightEnum("BLEND"),
")\n",
],
[
"gl.blendEquationSeparate(",
highlightEnum(blend.equationColor),
", ",
highlightEnum(blend.equationAlpha),
")\n",
],
[
"gl.blendFuncSeparate(\n",
[" ", highlightEnum(blend.functionColorSrc), ",\n"],
[" ", highlightEnum(blend.functionColorDst), ",\n"],
[" ", highlightEnum(blend.functionAlphaSrc), ",\n"],
[" ", highlightEnum(blend.functionAlphaDst), "\n"],
")\n",
],
],
]);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxlbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvc3RhdGUvYmxlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFZM0UsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXlEO0lBQ2xGLEdBQUcsRUFBRTtRQUNELE9BQU8sRUFBRSxLQUFLO1FBQ2QsYUFBYSxFQUFFLHNCQUFzQixDQUFDLFFBQVE7UUFDOUMsYUFBYSxFQUFFLHNCQUFzQixDQUFDLFFBQVE7UUFDOUMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsU0FBUztRQUNsRCxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxtQkFBbUI7UUFDNUQsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsR0FBRztRQUM1QyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxJQUFJO0tBQ2hEO0lBQ0QsS0FBSyxFQUFFO1FBQ0gsT0FBTyxFQUFFLElBQUk7UUFDYixhQUFhLEVBQUUsc0JBQXNCLENBQUMsUUFBUTtRQUM5QyxhQUFhLEVBQUUsc0JBQXNCLENBQUMsUUFBUTtRQUM5QyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxTQUFTO1FBQ2xELGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLG1CQUFtQjtRQUM1RCxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxHQUFHO1FBQzVDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLElBQUk7S0FDaEQ7Q0FDSixDQUFBO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FDekIsRUFBMEIsRUFDMUIsS0FBd0I7SUFFeEIsSUFBSSxLQUFLLENBQUMsT0FBTztRQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBOztRQUNqQyxFQUFFLENB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