I've been trying to figure out how to use light3d nodes to cut through a shader I have overlaid on the screen. Chaining the shader on a CanvasItemMaterial does not seem to work well either. Ideally I'd like to just read the masks from within the shader.
My current node setup is along the lines of this:
map
Light2D
...
Canvas (layer 2)
Control
ColorRect (shader applied here)
edit:
I've realized the light mask settings on the ColorRect node and the item culling mask on the lights needed to be changed, now everything works nicely!