Top-Down Fog of War in Unreal Engine: Complete Guide

How to build top-down fog of war in Unreal Engine as a screen-space post-process: an unbound volume, a Fog Manager, the M_Main_Fog_Volume material, player and beacon vision, Niagara, and cliff shadows. A reproducible build in seven steps.

Top-down fog of war, the lit circle that follows your hero through a darkened level while cliffs and walls block what they can see, looks like it needs expensive GPU visibility work. It does not. The whole effect is a screen-space post-process material driven by a handful of parameters, plus a small Niagara system for beacons. No compute shaders, no per-unit ray casts for the visuals.

Top-down fog of war in Unreal Engine: a lit circle around the player with cliffs casting shadows across a darkened level

How the system fits together

One actor and one material do the work. An unbound post-process volume darkens the whole level through the M_Main_Fog_Volume material. A Fog Manager actor feeds that material live data every frame and the material assembles a single black-and-white mask, white where the player can currently see, and lerps the scene between dark and lit:

EmissiveColor = lerp(SceneColor * Darkness, SceneColor, mask);

Everything else in this guide is about producing that one mask: where the player is, where the beacons are, and what cliffs block. Each step below builds one piece of it.

What you need

This is intermediate Unreal Engine: you should be comfortable reading a material graph, writing a little C++, and working with render targets. It targets UE5 and has no third-party dependencies. If you would rather skip the build and drop it in, the Multiplayer Fog of War plugin packages the whole system, replicated and performance-minded, for top-down games.

The build, step by step

Work through the seven steps in order for the complete system, or jump straight to whichever piece you need.

Frequently asked questions

Does Unreal fog of war need GPU compute or ray casting?
No. The visual reveal is a single screen-space post-process material driven by a few parameters, plus a lightweight Niagara Grid2D system for beacons. There are no compute shaders and no per-actor ray casts for the visuals.
Is this fog of war multiplayer-ready?
The visual reveal runs locally on each client, so it costs nothing to replicate. Hiding enemies you cannot see is a separate, server-authoritative line-of-sight system, not part of the material.
Does it work in single player?
Yes. The same local post-process runs identically in single player and multiplayer; only the optional enemy-hiding layer cares about the network.
Do I need C++?
A little, for the Fog Manager that pushes world data into the material. The material, the occluder setup, and the beacon Niagara system are all done in the editor.