Previous Post

Switching Restitched to Deferred Rendering

Next Post
Switching Restitched to Deferred Rendering
1 / 14
DESCRIPTION

Hello!

We've been busy, busy bees, typing and clicking away every day to make Restitched richer and better. This means revisiting old decisions and trying out new ideas.

As part of that process, we've decided to move Restitched to deferred rendering by default, rather than the previous forward rendering path.

If you're unfamiliar with what this is, we'll explain!

Deferred vs Forward Rendering

We're no experts in graphics programming, but Unity explains that Forward rendering is the traditional, robust, older, well-rounded, but simple solution to displaying graphics from the game onto your screen. It's tried and true, and we've used it for years.

However, it comes with some downsides. For example, it renders all objects in the scene individually and then transmits that to your screen. When you start calculating lots of complex shaders and light sources, performance tanks.

Forward rendering is recommended for games that can bake lighting and limit dynamic light sources to ~1-3 per scene. Obviously, Restitched thrives with good lighting, and most of us will be using lots of lights in our scenes. I'm sure we also all want those pretty, modern effects like screen space reflections... all things that forward rendering doesn't support.

Additionally, Forward rendering doesn't allow the camera to capture certain surface data like albedo and normal map details. This leads to worse screen space effects, such as ambient occlusion and global illumination.

Enter Deferred rendering...

This was designed as a later solution to the issues of forward rendering. We're in a time where modern games need more lights and better effects. Deferred rendering works by capturing passes of the scene rather than individual objects in it. This makes geometry and lighting cheap, but at the cost of better transparency, MSAA, and some niche limitations in shaders.

The biggest change is that deferred rendering requires a higher upfront memory cost, but will stabilize overall performance in the long run. In other words, you pay a higher entry cost to display as many lights and geometry in a scene as you want without the big performance hit.

Pros:

We can now have fancier effects, like Global Illumination, Screen Space Reflections, etc.

We can place almost as many lights as we like with much less performance impact from the light itself (lots of shadows would still impact performance). This is because lights are rendered in the same pass instead of light being calculated per object + per light, like in forward rendering. In the old renderer, they recommended 1-3 dynamic lights (and we use far more).

We can now access depth buffers with normal map data and extra detail. This is handy for shaders, accurate lighting, and screenspace effects. This is why proper global illumination is possible now!

Overall performance should be more consistent/stable and not tank as hard when complex visuals are happening

Geometry in a level no longer contributes as much to performance costs

Existing effects like AO are now better, because it has access to material lighting and normal data. This means shadowed corners can understand if they're lit already and avoid putting AO there. It'll also shade more accurately.

Cons:

Transparency is unsupported/worse in deferred rendering, so the game will make transparent objects fall back to forward rendering. We haven't been great at handling transparent materials + blur anyway, so this is not much different and looks the same.

Deferred doesn't really support some effects like refraction or translucency, so we'd use workarounds or fallback to forward for materials that need it

Deferred rendering takes a higher upfront graphics memory cost, meaning we might automatically lock out lower-tier hardware like Switch, low-end PCs, and integrated graphics, as well as possible high-quality Steam Deck support (unless players' graphics settings are tweaked and optimized).

MSAA isn't supported, but we didn't use it anyway. We use a screen-space anti-aliasing method.

Stamps don't render the same, but we accidentally supported a requested feature of slightly blending stamps with the texture maps underneath them. So it's better overall anyway! Not really a con, and also not noticeable unless you stamp over metallic things.

More pros and cons are still unknown. We've tested this for a few days while fixing up any bugs we've noticed. As far as we're aware, most of the game works well automatically, and any issues have been corrected. Performance changes are still unknown, as most of the coders on the team run higher-end hardware and don't play in complex scenes yet.

Ultimately, there was no real way we could continue with forward rendering without aggressive optimizations and worse graphics. UGC games like this allow for too many placement options, especially with lights and effects. This makes Restitched the perfect candidate for the switch. Until now, it's just been easier to develop on forward rendering until deferred was perfected and ready from Unity.

New Graphics Effects

A huge benefit of this change is the new (and improved) graphics effects that breathe more life into the game!

Global Illumination

Light can now bounce off lit surfaces and illuminate things nearby. This is perfect for glowing materials that have no true light source, such as fire, plasma, strong light sources, glowing cosmetics, bright sun direction, etc.

This is a screen space effect, so it will only render what your screen can see. For instance, you can't see the glow of a fire just off-screen if your game isn't rendering it yet.

You can see the light bounce off materials that are bright enough:

Better Ambient Occlusion

With the new depth and texture data, we can apply SSAO/AO realistically to corners and creases. This effect simulates shaded and shadowed areas. Now it can do so accurately, including ignoring shadows for areas exposed by direct light.

Screen Space Reflections

Since the camera can now detect pre-computed data such as metallic/smoothness in materials, it can also apply a reflective effect to them at little additional cost. This will make things like glass, metal, and other smooth or metal surfaces reflect in realtime without reflection probes.

This system is already in effect, and we'll be using it going forward. On the surface, nothing really changes aside from how the game renders certain things. Forward rendering is technically still there, but it's only used for transparency.

We'll see how optimization plays out in the future and further shapes how things look, but this one decision has already relieved a lot of concerns about light sources and prettier effects!

Trixel Creative PATREON 7 favs
VIEWS1
FILES14 files
POSTEDFeb 11, 2026
ARCHIVEDFeb 11, 2026