It’s just a texture that you can write to, your world is a grid of tiles right? Meaning if you can map the world coordinates to a texture you could represent each tile with a texel in the texture, every time the visibility needs to be updated you write to the texture.
For example if you had a 32x32 world, with a character that could see 1 tile away + 1 tile at half brightness, your texture might look like this:
Where the white pixels represent the fully visible tiles, gray pixels represent the partially visible tiles, and the black pixels represent the tiles that aren’t visible.
When you go to do your pixel shading (or post processing) you would use the XY world position of the pixel to sample your render target and then just multiply the albedo/emissive/whatever by the sampled color.
This isn’t really a beginner topic, but Chris Murphy made a tutorial a long time that did almost exactly what I just described, except he used it for a laser instead of visibility: https://www.youtube.com/watch?v=67z5u8ZcEcw