Sign in to follow this  
Alundra

Fog Of War - CPU versus GPU

Recommended Posts

Alundra    2316
Hi,
When doing Fog Of War, two method is possible.
One is to generate the shadow map by shader, the other is to generate the shadow map by CPU.
The problem is to test if an object is visible or not.
When generate the shadow map on the CPU, you have the pixel data, one projection inversed to get the coord and all is ok.
When doing on the GPU, you have to get back data to the CPU and check.

What is the good solution to handle that correctly ?
Thanks Edited by Alundra

Share this post


Link to post
Share on other sites
Vilem Otte    2938

There are many techniques...

 

Doing raycasts for visibility check of objects is also possibility. Pre-computing potential visibility set (f.e. for voxels in space) is another (which will be faster, except that you'll just take static objects into account (you have to precompute it)). Etc.

 

Also don't forget that you can actually check visibility on GPU and take back to CPU only list of visible objects (or a little harder - do it all on GPU).

 

There are also different approaches - Render dynamic objects to another render target and apply fog of war on them as post processing effect for example.

 

Anyway I can't tell you which of the solution is better-worse for you, it's up to you to pick the right one for your project. Pre-computing informations will be faster, doing raycast will work and will be pretty precise - but you'll waste some performance on it (when you'll have 1 000 000 objects on screen it'll take quite huge amount of performance. Doing different approaches (fog of war as post processing) has also it's advantage, it's independent on number of objects in scene - which might be an advantage. So, use the solution that is the most viable to you.

Share this post


Link to post
Share on other sites
Krohm    5030

In most RTS I recall with fog of war it appears there's not enough data in flight to justify a GPU feedback.

Last I played was company of heroes. It appears to me it's using an adjusted tile visibility of some sort.

My suggestion: implement the easier first. Then profile.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this