Hi zoedoz, thanks for your suggestion. It has crossed my mind as well, but I quickly got overwhelmed with how the implementation would look like. As an example I took an U-shaped building with a unconnected small building in the middle of that. I would have to think about how to cut the polygon manually in such a case, let alone write it in software to cover all kind of cases dynamically.
(note that the buildings are not manually drawn, they are randomly generated)
Let me share an option I am currently investigating:
I have a big sprite overlaying the whole map, and drawing squares on it, one for every cell, filled with the correct rgba value. I'm guessing this must be fast enough - opposed to having a polygon for every cell. (that would be about 10000 polygon2d nodes).