A preview of my Forward+ renderer

aquagoose - 2026-04-20 00:35

For my dissertation project, I'm working on a modern real-time 3D renderer, using Forward+ with Physically Based Rendering.

This explores an interesting issue I've been having with my own game engine - my engine uses Deferred rendering, however my game needs to render transparent objects, as well as being able to handle thousands of lights on-screen at once. While Deferred rendering is very efficient at handling thousands of lights, it is simply impossible to get true transparency with it. Well... Not entirely, but it's practically impossible to do purely with Deferred rendering. Most Deferred renderers will revert to a Forward pipeline (NOT Forward+ although some engines have started to use this) to perform blending.

Alternatively, an engine (such as mine) may choose to perform screen-door dithering instead, where half of the pixels are shaded, and half are not. This gives an approximation of transparency, with the tradeoff of visual quality, especially at lower resolutions, and I am not particularly a fan of this method personally (however it is very easy and cheap to implement)

My goal with this project is to implement Forward+, which fixes some key issues with Deferred rendering, such as blending & transparency (or the lack of it!) I'm also planning on doing a comparison to look into the pitfalls of Forward+ over Deferred, as I'm sure there's a few.

One big pitfall already is the complexity of implementing it... The result that you see in the post's image is not yet using Forward+, it is purely a demonstration of what my renderer can do so far! I'm still working on implementing a true Forward+ renderer, but I'll be sure to report back when it's ready!

Once that's done, I still have a little bit to go before I deem it ready. It needs shadows and ambient occlusion for example, and some anti-aliasing would be nice (again, another advantage of Forward+ is that it supports MSAA!)

I'm really happy with the progress so far though. Looking forward to see it come together in the next week or so. I'll hopefully be posting again soon!