@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
122 lines • 9.8 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,
functionColorSrc: WebglEnumBlendFunction.SRC_ALPHA,
functionColorDst: WebglEnumBlendFunction.ONE_MINUS_SRC_ALPHA,
equationAlpha: WebglEnumBlendEquation.FUNC_ADD,
functionAlphaSrc: WebglEnumBlendFunction.ONE,
functionAlphaDst: WebglEnumBlendFunction.ZERO,
},
alpha: {
enabled: true,
equationColor: WebglEnumBlendEquation.FUNC_ADD,
functionColorSrc: WebglEnumBlendFunction.SRC_ALPHA,
functionColorDst: WebglEnumBlendFunction.ONE_MINUS_SRC_ALPHA,
equationAlpha: WebglEnumBlendEquation.FUNC_ADD,
functionAlphaSrc: WebglEnumBlendFunction.ONE,
functionAlphaDst: WebglEnumBlendFunction.ZERO,
},
add: {
enabled: true,
equationColor: WebglEnumBlendEquation.FUNC_ADD,
functionColorSrc: WebglEnumBlendFunction.ONE,
functionColorDst: WebglEnumBlendFunction.ONE,
equationAlpha: WebglEnumBlendEquation.FUNC_ADD,
functionAlphaSrc: WebglEnumBlendFunction.ONE,
functionAlphaDst: WebglEnumBlendFunction.ZERO,
},
multiply: {
enabled: true,
equationColor: WebglEnumBlendEquation.FUNC_ADD,
functionColorSrc: WebglEnumBlendFunction.DST_COLOR,
functionColorDst: WebglEnumBlendFunction.ZERO,
equationAlpha: WebglEnumBlendEquation.FUNC_ADD,
functionAlphaSrc: WebglEnumBlendFunction.ONE,
functionAlphaDst: WebglEnumBlendFunction.ZERO,
},
max: {
enabled: true,
equationColor: WebglEnumBlendEquation.MAX,
functionColorSrc: WebglEnumBlendFunction.ONE,
functionColorDst: WebglEnumBlendFunction.ONE,
equationAlpha: WebglEnumBlendEquation.MAX,
functionAlphaSrc: WebglEnumBlendFunction.ONE,
functionAlphaDst: WebglEnumBlendFunction.ONE,
},
min: {
enabled: true,
equationColor: WebglEnumBlendEquation.MIN,
functionColorSrc: WebglEnumBlendFunction.ONE,
functionColorDst: WebglEnumBlendFunction.ONE,
equationAlpha: WebglEnumBlendEquation.MIN,
functionAlphaSrc: WebglEnumBlendFunction.ONE,
functionAlphaDst: WebglEnumBlendFunction.ONE,
},
premultipliedAlpha: {
enabled: true,
equationColor: WebglEnumBlendEquation.FUNC_ADD,
functionColorSrc: WebglEnumBlendFunction.ONE,
functionColorDst: WebglEnumBlendFunction.ONE_MINUS_SRC_ALPHA,
equationAlpha: WebglEnumBlendEquation.FUNC_ADD,
functionAlphaSrc: WebglEnumBlendFunction.ONE,
functionAlphaDst: WebglEnumBlendFunction.ZERO,
},
};
export function webglBlendSet(context, blend) {
const p = context.webglParams;
p.blend = blend.enabled;
p.setBlendEquationSeparate(blend.equationColor, blend.equationAlpha);
p.setBlendFuncSeparate(blend.functionColorSrc, blend.functionColorDst, blend.functionAlphaSrc, blend.functionAlphaDst);
}
export function webglBlendGet(context) {
const p = context.webglParams;
return {
enabled: p.blend,
equationAlpha: p.blendEquationAlpha,
equationColor: p.blendEquationRGB,
functionAlphaDst: p.blendDstAlpha,
functionAlphaSrc: p.blendSrcAlpha,
functionColorDst: p.blendDstRGB,
functionColorSrc: p.blendSrcRGB,
};
}
export function webglBlendExec(context, blend, action) {
const currentState = webglBlendGet(context);
webglBlendSet(context, blend);
try {
action();
}
finally {
webglBlendSet(context, currentState);
}
}
export function webglDebugBlend(context, caption = "Blend enabled:") {
console.debug(caption);
const blend = webglBlendGet(context);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxlbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvc3RhdGUvYmxlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFZM0UsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBRXpCO0lBQ0EsR0FBRyxFQUFFO1FBQ0QsT0FBTyxFQUFFLEtBQUs7UUFDZCxhQUFhLEVBQUUsc0JBQXNCLENBQUMsUUFBUTtRQUM5QyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxTQUFTO1FBQ2xELGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLG1CQUFtQjtRQUM1RCxhQUFhLEVBQUUsc0JBQXNCLENBQUMsUUFBUTtRQUM5QyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxHQUFHO1FBQzVDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLElBQUk7S0FDaEQ7SUFDRCxLQUFLLEVBQUU7UUFDSCxPQUFPLEVBQUUsSUFBSTtRQUNiLGFBQWEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRO1FBQzlDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLFNBQVM7UUFDbEQsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsbUJBQW1CO1FBQzVELGFBQWEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRO1FBQzlDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLEdBQUc7UUFDNUMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsSUFBSTtLQUNoRDtJQUNELEdBQUcsRUFBRTtRQUNELE9BQU8sRUFBRSxJQUFJO1FBQ2IsYUFBYSxFQUFFLHNCQUFzQixDQUFDLFFBQVE7UUFDOUMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsR0FBRztRQUM1QyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxHQUFHO1FBQzVDLGFBQWEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRO1FBQzlDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLEdBQUc7UUFDNUMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsSUFBSTtLQUNoRDtJQUNELFFBQVEsRUFBRTtRQUNOLE9BQU8sRUFBRSxJQUFJO1FBQ2IsYUFBYSxFQUFFLHNCQUFzQixDQUFDLFFBQVE7UUFDOUMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsU0FBUztRQUNsRCxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxJQUFJO1FBQzdDLGFBQWEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRO1FBQzlDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLEdBQUc7UUFDNUMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsSUFBSTtLQUNoRDtJQUNELEdBQUcsRUFBRTtRQUNELE9BQU8sRUFBRSxJQUFJO1FBQ2IsYUFBYSxFQUFFLHNCQUFzQixDQUFDLEdBQUc7UUFDekMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsR0FBRztRQUM1QyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxHQUFHO1FBQzVDLGFBQWEsRUFBRSxzQkFBc0IsQ0FBQyxHQUFHO1FBQ3pDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLEdBQUc7UUFDNUMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsR0FBRztLQUMvQztJQUNELEdBQUcsRUFBRTtRQUNELE9BQU8sRUFBRSxJQUFJO1FBQ2IsYUFBYSxFQUFFLHNCQUFzQixDQUFDLEdBQUc7UUFDekMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsR0FBRztRQUM1QyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxHQUFHO1FBQzVDLGFBQWEsRUFBRSxzQkFBc0IsQ0FBQyxHQUFHO1FBQ3pDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLEdBQUc7UUFDNUMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsR0FBRztLQUMvQztJQUNELGtCQUFrQixFQUFFO1FBQ2hCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsYUFBYSxFQUFFLHNCQUFzQixDQUFDLFFBQVE7UUFDOUMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsR0FBRztRQUM1QyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxtQkFBbUI7UUFDNUQsYUFBYSxFQUFFLHNCQUFzQixDQUFDLFFBQVE7UUFDOUMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsR0FBRztRQUM1QyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxJQUFJO0tBQ2hEO0NBQ0osQ0FBQTtBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBcUMsRUFBRSxLQUF3QjtJQUN6RixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFBO0lBQzdCLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQTtJQUN2QixDQUFDLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDcEUsQ0FBQyxDQUFDLG9CQUFvQixDQUNsQixLQUFLLENBQUMsZ0JBQWdCLEVBQ3RCLEtBQUssQ0FBQyxnQkFBZ0IsRUFDdEIsS0FBSyxDQUFDLGdCQUFnQixFQUN0QixLQUFLLENBQUMsZ0JBQWdCLENBQ3pCLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUFxQztJQUMvRCxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFBO0lBQzdCLE9BQU87UUFDSCxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUs7UUFDaEIsYUFBYSxFQUFFLENBQUMsQ0FBQyxrQkFBa0I7UUFDbkMsYUFBYSxFQUFFLENBQUMsQ0FBQyxnQkFBZ0I7UUFDakMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLGFBQWE7UUFDakMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLGFBQWE7UUFDakMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLFdBQVc7UUFDL0IsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLFdBQVc7S0FDbEMsQ0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQXFDLEVBQUUsS0FBd0IsRUFBRSxNQUFrQjtJQUM5RyxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDM0MsYUFBYSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUM3QixJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsQ0FBQTtJQUNaLENBQUM7WUFBUyxDQUFDO1FBQ1AsYUFBYSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQTtJQUN4QyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsT0FBcUMsRUFBRSxPQUFPLEdBQUcsZ0JBQWdCO0lBQzdGLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDdEIsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BDLEtBQUssQ0FBQztRQUNGLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO1FBQzlCO1lBQ0ksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFO1lBQ2YsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDakY7Z0JBQ0ksMkJBQTJCO2dCQUMzQixhQUFhLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztnQkFDbEMsSUFBSTtnQkFDSixhQUFhLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztnQkFDbEMsS0FBSzthQUNSO1lBQ0Q7Z0JBQ0kseUJBQXlCO2dCQUN6QixDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxDQUFDO2dCQUN0RCxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxDQUFDO2dCQUN0RCxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxDQUFDO2dCQUN0RCxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxDQUFDO2dCQUNyRCxLQUFLO2FBQ1I7U0FDSjtLQUNKLENBQUMsQ0FBQTtBQUNOLENBQUMifQ==