@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
102 lines • 6.15 kB
JavaScript
import { debug, highlightEnum } from "./../../debug/debug.js";
import { WebglEnumDepthFunction } from "./../../types/webgl.js";
export const webglPresetDepth = {
off: {
enabled: false,
func: WebglEnumDepthFunction.ALWAYS,
mask: false,
rangeMin: 0,
rangeMax: 1,
},
always: {
enabled: true,
func: WebglEnumDepthFunction.ALWAYS,
mask: true,
rangeMin: 0,
rangeMax: 1,
},
writeOnly: {
enabled: false,
func: WebglEnumDepthFunction.ALWAYS,
mask: true,
rangeMin: 0,
rangeMax: 1,
},
less: {
enabled: true,
func: WebglEnumDepthFunction.LESS,
mask: true,
rangeMin: 0,
rangeMax: 1,
},
lessOrEqual: {
enabled: true,
func: WebglEnumDepthFunction.LEQUAL,
mask: true,
rangeMin: 0,
rangeMax: 1,
},
lessReadOnly: {
enabled: true,
func: WebglEnumDepthFunction.LESS,
mask: false,
rangeMin: 0,
rangeMax: 1,
},
lessOrEqualReadOnly: {
enabled: true,
func: WebglEnumDepthFunction.LEQUAL,
mask: false,
rangeMin: 0,
rangeMax: 1,
},
};
export function webglDepthSet(context, depth) {
const p = context.webglParams;
p.depthTest = depth.enabled;
p.depthFunc = depth.func;
p.depthWriteMask = depth.mask;
p.depthRange = [depth.rangeMin, depth.rangeMax];
}
export function webglDepthGet(context) {
const p = context.webglParams;
const [rangeMin, rangeMax] = p.depthRange;
return {
enabled: p.depthTest,
func: p.depthFunc,
mask: p.depthWriteMask,
rangeMin,
rangeMax,
};
}
export function webglDepthExec(context, depth, action) {
const currentState = webglDepthGet(context);
webglDepthSet(context, depth);
try {
action();
}
finally {
webglDepthSet(context, currentState);
}
}
export function webglDebugDepth(context, caption = "Depth enabled:") {
console.debug(caption);
const depth = webglDepthGet(context);
debug([
[caption, depth.enabled, "\n"],
[
{ cls: "code" },
["gl.", depth.enabled ? "enable" : "disable", "(", highlightEnum("DEPTH_FUNC"), ")\n"],
[
"gl.depthFunc(",
highlightEnum(depth.func),
")\n",
"gl.depthMask(",
depth.mask,
")\n",
`gl.depthRange(${depth.rangeMin}, ${depth.rangeMax})\n`,
],
],
]);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvc3RhdGUvZGVwdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQVV6RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FLekI7SUFDQSxHQUFHLEVBQUU7UUFDRCxPQUFPLEVBQUUsS0FBSztRQUNkLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxNQUFNO1FBQ25DLElBQUksRUFBRSxLQUFLO1FBQ1gsUUFBUSxFQUFFLENBQUM7UUFDWCxRQUFRLEVBQUUsQ0FBQztLQUNkO0lBQ0QsTUFBTSxFQUFFO1FBQ0osT0FBTyxFQUFFLElBQUk7UUFDYixJQUFJLEVBQUUsc0JBQXNCLENBQUMsTUFBTTtRQUNuQyxJQUFJLEVBQUUsSUFBSTtRQUNWLFFBQVEsRUFBRSxDQUFDO1FBQ1gsUUFBUSxFQUFFLENBQUM7S0FDZDtJQUNELFNBQVMsRUFBRTtRQUNQLE9BQU8sRUFBRSxLQUFLO1FBQ2QsSUFBSSxFQUFFLHNCQUFzQixDQUFDLE1BQU07UUFDbkMsSUFBSSxFQUFFLElBQUk7UUFDVixRQUFRLEVBQUUsQ0FBQztRQUNYLFFBQVEsRUFBRSxDQUFDO0tBQ2Q7SUFDRCxJQUFJLEVBQUU7UUFDRixPQUFPLEVBQUUsSUFBSTtRQUNiLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxJQUFJO1FBQ2pDLElBQUksRUFBRSxJQUFJO1FBQ1YsUUFBUSxFQUFFLENBQUM7UUFDWCxRQUFRLEVBQUUsQ0FBQztLQUNkO0lBQ0QsV0FBVyxFQUFFO1FBQ1QsT0FBTyxFQUFFLElBQUk7UUFDYixJQUFJLEVBQUUsc0JBQXNCLENBQUMsTUFBTTtRQUNuQyxJQUFJLEVBQUUsSUFBSTtRQUNWLFFBQVEsRUFBRSxDQUFDO1FBQ1gsUUFBUSxF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