Deferred Shading

Started by
4 comments, last by TheChubu 9 years, 1 month ago

How many famous game (or rendering) engines use deferred shading?

I don't know if I really need to implement it in my engine, and it seems very difficult to understand and implement anyway.

Are there any famous engines that use forward rendering instead?

Advertisement

Almost all engines that support deferred rendering use still allows for forward rending, its not a take it or leave it deal. Deferred rendering has its use cases and solves certain problems (primarily when dealing with many dynamic lights), however it also has many drawbacks. Some things you simply cannot do (or is severely impaired) with deferred rendering, such as transparency and anti-aliasing, and requires to use the more traditional forward rendering pipeline as well.

If you do not require it, then there is no need to implement it. If you want to learn more about it, then go ahead and implement it (its nowhere near as complicated as it seems at first, its actually quite simple). Its not a major architectual decision for a small project (although it has pretty heavy implications on your material/shader design), so you can always try to implement it down the road if you wish.

Basically, its not as complicated as you think. If it seems interesting than go ahead and implement it, although unless you are dealing with the problems it solves (large number of dynamic lights primarily), you can get by without it [as games have been doing for a long time].

As far as engines heres a few i know offhand,

Unity - uses both forward and deferred paths.

UE3 - I believe was only forward rendering

UE4 - All lights go the deferred path, transparent objects go through forward pipeline.

RAGE - Supports Deferred rendering

CRYEngine - Supports Deferred Rendering.

As you can see, most engines still provide a forward pipeline, as deferred isnt a golden ticket. Do what makes sense for the data you are dealing with and the problem you are trying to solve, not whatever is the latest fad that everyones using (thats more general advice though).

If you are dealing with a large number of lights, you could first try Practical Clustered Shading, or BVH Accelerated Shading.

I also read about tile based rendering, not sure if that counts as a 3rd option, but you might look it up

Crealysm game & engine development: http://www.crealysm.com

Looking for a passionate, disciplined and structured producer? PM me

In the console and mid-to-high-end PC space, deferred rendering is ubiquitous. Almost every game uses some variant of deferred rendering, of which there's a few to choose from. They all make different tradeoffs in terms of how big of a G-Buffer is used, how lights are assigned, etc. But in pretty much all cases they follow the general pattern of allowing the GPU to decide how lights get assigned to surfaces as opposed to doing on the CPU, or doing it offline.

Nevermind that using the rasterizer like that is so damn fun! :D

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

This topic is closed to new replies.

Advertisement