I belive that ggez shaders are per-canvas things so im gona base my idea of that fact.
What if, to keep current idea of layers but add shaders to specific render request bits we keep a mut ref of the current canvas, draw everything on it from far to near to preserve layers and when you hit a drawparam with a shader different than the one on the current canvas, you .finish current canvas and make the current canvas a new one with the given spcific shader.
I belive that ggez shaders are per-canvas things so im gona base my idea of that fact.
What if, to keep current idea of layers but add shaders to specific render request bits we keep a mut ref of the current canvas, draw everything on it from far to near to preserve layers and when you hit a drawparam with a shader different than the one on the current canvas, you
.finishcurrent canvas and make the current canvas a new one with the given spcific shader.