The Order: 1886’s Rendering Tech Behind its Amazing Graphics Explained: “It’s Nice Being PS4 Exclusive”
Ready at Dawn Graphics and Engine Programmer Matt Pettineo is one of the most knowledgeable individuals about the tech behind The Order: 1886 (he’s the one behind the impressive lectures held at Siggraph and GDC 2013) and lately he shared a whole lot of detailed information on the game’s rendering tech on Twitter.
First of all Pettineo explained that he can’t yet say for sure what anti-aliasing tech the game will ship with, since “things can change at any point in development.”
We also learn that everything in the game is forward rendered. That’s actually the traditional way of rendering, and it differs from deferred rendering, which is becoming more and more widespread lately. You can read a quite technical, but very interesting explanation of both methods here. According to Pettineo the choice was made because of the huge number of materials and parameters included in the game.
We blend all over the place for compositing cloth with other materials. Looks great, but lots of maps/parameters!
We kept adding new material models/features/params, and the G-Buffer was getting in the way.
While forward rendering is better for displaying quite a few materials (You can read a very interesting post by ex-Naughty Dog graphics programmer John Hable on the topic), one of the most prominent advantages of deferred rendering is that it allows more complex lighting by increasing the amount of light sources, but apparently this isn’t a problem on The Order: 1886.
Lighting complexity isn’t a problem, but we do need to rasterize twice for depth prepass.
Pettineo also further specified that he’s talking about tiled forward rendering:
Tiled, of course. Probably the only way that forward makes sense in a modern game.
You can see tiled forward rendering in action in a demo by AMD published a while ago, embedded at the bottom of the post.
The choice comes with challenges and advantages:
GPRs [General Purpose Registers, a small amount of storage in the CPU used to handle data and addresses] and perf are tricky since you have so many shaders to audit. Had to write tools to identify problem shaders.
Small triangles hurt us too, we rely on LOD a lot to keep quad efficiency from going down the tubes.
On other hand, some shaders really benefit from the compiler having access to full material->lighting pipeline
With LOD Pettineo means “Level of Detail,” which is a technique that involves using models with lower polygon count when they’re displayed in the distance and the human eye can hardly notice the difference (depending on how well they’re implemented, of course).
Pettineo also explained what kind of tools the team had to develop in order to keep things under control:
So far just offline tools to inspect level assets and output stats to file, would like to add in-game visualizer though.
Actually we did recently add a quad overdraw visualizer, which is good for identifying which assets need better LOD.
An overdraw visualizer is basically a tool that lets you analyze the overall complexity of a scene, helping programmers in identifying areas that need better optimization (often due to having many overlapping objects).
Pettineo also explained that that the game uses 64-bit lighting precision for high dynamic range rendering. Incidentally R11G11B10 is the same format used for bloom in Killzone: Shadow Fall.
It’s 64-bit all the way for us. I think the only exception is bloom/glare, which uses post-exposure R11G11B10.
Finally, he had an interesting exchange with the newly-hired Naughty Dog graphics programmer Ramy El-Garawany, who mentioned: “Everyone is complaining about OpenGL and DirectX while I’m sitting here happily optimizing for #PS4.” Pettineo echoed the same sentiment:
Same here. It’s nice being PS4 exclusive. : )