UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

122 lines 9.8 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, 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxlbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvc3RhdGUvYmxlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFZM0UsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBRXpCO0lBQ0EsR0FBRyxFQUFFO1FBQ0QsT0FBTyxFQUFFLEtBQUs7UUFDZCxhQUFhLEVBQUUsc0JBQXNCLENBQUMsUUFBUTtRQUM5QyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxTQUFTO1FBQ2xELGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLG1CQUFtQjtRQUM1RCxhQUFhLEVBQUUsc0JBQXNCLENBQUMsUUFBUTtRQUM5QyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxHQUFHO1FBQzVDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLElBQUk7S0FDaEQ7SUFDRCxLQUFLLEVBQUU7UUFDSCxPQUFPLEVBQUUsSUFBSTtRQUNiLGFBQWEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRO1FBQzlDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLFNBQVM7UUFDbEQsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsbUJBQW1CO1FBQzVELGFBQWEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRO1FBQzlDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLEdBQUc7UUFDNUMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsSUFBSTtLQUNoRDtJQUNELEdBQUcsRUFBRTtRQUNELE9BQU8sRUFBRSxJQUFJO1FBQ2IsYUFBYSxFQUFFLHNCQUFzQixDQUFDLFFBQVE7UUFDOUMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsR0FBRztRQUM1QyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxHQUFHO1FBQzVDLGFB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