@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
81 lines • 5.17 kB
JavaScript
import { debug, highlightEnum } from "./../../debug/debug.js";
import { WebglEnumDepthFunction } from "./../../types/webgl.js";
export const webglPresetDepth = {
off: {
enabled: false,
func: WebglEnumDepthFunction.LESS,
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,
},
};
export function webglDepthSet(gl, depth) {
if (depth.enabled)
gl.enable(gl.DEPTH_TEST);
else
gl.disable(gl.DEPTH_TEST);
gl.depthFunc(depth.func);
gl.depthMask(depth.mask);
gl.depthRange(depth.rangeMin, depth.rangeMax);
}
export function webglDepthGet(gl) {
const [rangeMin, rangeMax] = gl.getParameter(gl.DEPTH_RANGE);
return {
enabled: Boolean(gl.getParameter(gl.DEPTH_TEST)),
func: Number(gl.getParameter(gl.DEPTH_FUNC)),
mask: Boolean(gl.getParameter(gl.DEPTH_WRITEMASK)),
rangeMin,
rangeMax,
};
}
export function webglDepthExec(gl, depth, action) {
const currentState = webglDepthGet(gl);
webglDepthSet(gl, depth);
try {
action();
}
finally {
webglDepthSet(gl, currentState);
}
}
export function webglDebugDepth(gl, caption = "Depth enabled:") {
console.log(caption);
const depth = webglDepthGet(gl);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvc3RhdGUvZGVwdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQVV6RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FFekI7SUFDQSxHQUFHLEVBQUU7UUFDRCxPQUFPLEVBQUUsS0FBSztRQUNkLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxJQUFJO1FBQ2pDLElBQUksRUFBRSxJQUFJO1FBQ1YsUUFBUSxFQUFFLENBQUM7UUFDWCxRQUFRLEVBQUUsQ0FBQztLQUNkO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsT0FBTyxFQUFFLElBQUk7UUFDYixJQUFJLEVBQUUsc0JBQXNCLENBQUMsSUFBSTtRQUNqQyxJQUFJLEVBQUUsSUFBSTtRQUNWLFFBQVEsRUFBRSxDQUFDO1FBQ1gsUUFBUSxFQUFFLENBQUM7S0FDZDtJQUNELFdBQVcsRUFBRTtRQUNULE9BQU8sRUFBRSxJQUFJO1FBQ2IsSUFBSSxFQUFFLHNCQUFzQixDQUFDLE1BQU07UUFDbkMsSUFBSSxFQUFFLElBQUk7UUFDVixRQUFRLEVBQUUsQ0FBQztRQUNYLFFBQVEsRUFBRSxDQUFDO0tBQ2Q7Q0FDSixDQUFBO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FDekIsRUFBMEIsRUFDMUIsS0FBd0I7SUFFeEIsSUFBSSxLQUFLLENBQUMsT0FBTztRQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFBOztRQUN0QyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUM5QixFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN4QixFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN4QixFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBQ2pELENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEVBQTBCO0lBQ3BELE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFpQixDQUFBO0lBQzVFLE9BQU87UUFDSCxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRCxRQUFRO1FBQ1IsUUFBUTtLQUNYLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FDMUIsRUFBMEIsRUFDMUIsS0FBd0IsRUFDeEIsTUFBa0I7SUFFbEIsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3RDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDeEIsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLENBQUE7SUFDWixDQUFDO1lBQVMsQ0FBQztRQUNQLGFBQWEsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUE7SUFDbkMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUMzQixFQUEwQixFQUMxQixPQUFPLEdBQUcsZ0JBQWdCO0lBRTFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEIsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQy9CLEtBQUssQ0FBQztRQUNGLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO1FBQzlCO1lBQ0ksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFO1lBQ2Y7Z0JBQ0ksS0FBSztnQkFDTCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ3BDLEdBQUc7Z0JBQ0gsYUFBYSxDQUFDLFlBQVksQ0FBQztnQkFDM0IsS0FBSzthQUNSO1lBQ0Q7Z0JBQ0ksZUFBZTtnQkFDZixhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDekIsS0FBSztnQkFDTCxlQUFlO2dCQUNmLEtBQUssQ0FBQyxJQUFJO2dCQUNWLEtBQUs7Z0JBQ0wsaUJBQWlCLEtBQUssQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLFFBQVEsS0FBSzthQUMxRDtTQUNKO0tBQ0osQ0FBQyxDQUFBO0FBQ04sQ0FBQyJ9