Culling transparent faces that would not be visible if it were opaque

I’m writing a game where I’d like to fade out tiles / walls that are further away from the player. When I do this by changing the material transparency, I get this, which is expected given the adjacent GameObjects should technically be visible given the object in front is transparent:

However, what I’d like is to cull the faces that would not have been visible if the wall were opaque. Any ideas for efficient ways to do this?

Thanks in advance for any thoughts!

You may need to generate the mesh yourself. You could loop through each triangle in the mesh and seeing if another triangle perfectly matches its position (meaning an intersection between faces), and removing both triangles. This would remove any intersecting faces within the mesh, creating a seamless transparent effect.


If you need, I can show some code. @markroth8_unity

Answering my own question, I wonder if it’s possible to create a shader that renders the meshes as opaque and then just mix in the background color that would have been at that pixel location with some multiplier. Is that a difficult shader to write?