UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

84 lines 6.74 kB
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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