Is multi-pass BGL possible?

I have an idea for a tool that would require a multi-pass GL shader for proper UX- the idea being that an “overlay” that gets shaded in a different way when it passes behind occluding geometry. A simple way to think about it would be like a video game shader where somebody walks behind a wall and they show up as a glowing hologram on the fragments that are behind the wall.

Is something like this even possible with BGL? I don’t see any way to bind a second program to a batch. Do I just need to have two identical batches with a different shader pass bound to each one?

if it’s doable with OpenGL, then it should be doable with BGL.
Unless the necessary features(functions) of OpenGL are ver.400 and up. Because I think 2.8 OpenGL is 3.3