With the PS4’s debut we’d seen a short and telling trailer of “The Order 1886″, at first glance the title looked to be some type of steam-punk horror title which was all it really took when combined with the gorgeous visuals to pique my interest. The titles development grew rather quiet until there were a series of images released, and the developers proudly pointing out that the title would be a visual feast. We’ve already taken a look at the first part of the Infamous Second Son Post-Mortem (also from GDC 2014), but because that title is already out, and due to the Order 1886 providing great examples of the PS4’s memory system and material usage, why not get the analysis of both of them to the same page?
Some of you might have been aware of the controversy regarding the ‘black bars’ with the Order 1886, which Ready at Dawn point out is for visual style reasons. They also have another benefit – vastly reducing the pixel count that the PS4 requires to render. The title is effectively rendering in 1920×800 (instead of the traditional 1920×1080), reducing the workload on the GPU by over 30 percent. I’ve already covered this in detail, but it’s worth ensuring we’re all on the same page so to speak. The title is currently using MSAA x4 – which is an extremely expensive anti-aliasing technique. Indeed, the developers have pointed out that a full 1080P image would actually be less costly from a performance stand point than running 1920×800 with the 4X MSAA (Multi-Sample Anti-Aliasing).
Ready At Dawn are also aiming at 30FPS, once again for the purposes of vastly reducing the performance required from say 60 FPS. 30 provides the Playstation 4’s GPU (which is of course an AMD GCN beast providing 1.84TFLOPS of GPU might) twice the time to render each frame of animation for the game. The trade off is slightly higher latency, but with room for much better visual fidelity it’s an unsurprising trade off Ready of Dawn made.
Ready At Dawn have created their own custom engine for The Order 1886, starting out ‘early’ 2011, and initially having just 2 graphic programmers, although the number has since been increased to 5. The engine is heavily focused on the DX11 feature set, but of course made and optimized for the Playstation 4. The team specifically mention Fine-Grained task scheduling (fine grained refers to granularity, which in this case means they are broken down into small sizes. It means there’s a much greater scope for parallelism but obviously this has the drawn back of extra bandwidth and communication time) and “Low-Overhead, Multithreaded Command Buffer Generation”. Low overhead here speaks for itself (using little resources by itself), multi-threading meaning that it’ll run on a number of the Playstation 4’s CPU cores, rather than a single core. Command Buffer means the commands which are being created for PS4’s GPU. They also tease the “PS4 Secret Sauce” and point out physically based rendering. Physically based rendering is the act of how light and materials interact with each other).
It comes as little surprise that the team built most of their assets using a Maya 2014 and C++ workflow. Their custom built pipeline was a major engineering effort, and focuses on being multithreaded. Maya allows the team to live edit the games assets, such as textures, materials and particle systems (providing a nice preview as to what’s going on) and they’re using the DX11 viewport.
Order 1886 – PS4 Memory Usage
We’ve already discussed heavily the Playstation 4’s memory budget with Sucker Punches Infamous Second Son, so it naturally follows that The Order 1886 is similar with its total memory budget to Second Son. Textures are naturally the biggest culprits here, with 2GB of the 5GB (if you include flexible memory) available being reserved on the titles textures. It might seem crazy how much data is being eaten by the textures, but Ready at Dawn are trying to impress us with the quality. Enviromental Art is being mapped at 512 pixels per unit, and standard tiling textures are larger still – weighing in at 1024×1024.
It’s important to realize the studio are using MiB and not MB when discussing the ‘size’ of their budgets (aside from the first 2GB texture budget). A MiB (Mebibyte) is actually slightly larger than a MB (MegaByte). The rough conversion is 1MiB is 1MB – so 100 MiB becomes a little under 105 MB. With that in mind, if we ‘add up’ all of the other assets (From the 128 MiB sound budget all the way down to the 700 MiB of animation) we come up with the figure of 2378 MiB. Combining this with the 2 GB texture budget places us at the 4.5 GB mark (under the 5 GB PS4 budget).
250 MiB is reserved for global textures which house the UI, light maps (light maps hold the data of an objects lighting – the Order 1886 uses them for even characters). With the thousands of different pieces of animation (think about different enemy animation, walking, running, firing weapons and even talking requiring animation) 700 is reserved for just that. The complex level geometry of the Order 1886 gobbles up an extra 700 MiB as well.
Disappointingly the team didn’t give up the render targets for the Order 1886, Infamous Second Son had 290MB dedicated to them, but many question how optimization Sucker Punch had used with their memory budgets.
Ready at Dawn – Forward Lighting?
The Order 1886 uses a relatively new lighting rendering method, Tiled Forward Rendering – known to its friends as Forward+. Forward+ is a natural evolution of the traditional forward rendering which most games typically opt for. You provide the geometry of the scene, which is then broken into vertices. One or more passes when the ‘light’ the scene up, calculating how lights and shadows should look in the scene. . Forward+ has light culling implemented into the mix. This creates a list of lights which is then passed over to the final rendering shader. This eliminates the restriction of material and lighting models which have been typically associated with deferred rendering. Theoretically less memory bandwidth is consumed too, which is of course a nice bonus.
There is a lot of shader work in the title, and GGX (a lightning model) requires a lot of math – the team are quick to point out they’ve a lot of ALU (Arithmetic Logic Units – which handle the math operations on a GPU) to work with in the Playstation 4’s graphic processor.
The skin shader is apparently the most expensive shader in the game, using multiple specular lobes (wiki link here). The Skin SH refers to the lighting and method of the skin. It works by calculating how skin reflects light from different angles (ranging from 0 – 360 degrees). The deeper the pores are in the skin the more the light will be diffused. This means that blemishes (or scars) and everything else in between looks realistic and not just a bumpy mess.
The team also link this paper which points out they take previous mapping techniques and then use spheres as a base rather than a simple flat surface. The theory behind this is that it reduces ‘weird’ shades.
The characters hair however isn’t physically based, and right now Ready at Dawn haven’t had time to try out Real-Time Marschner which is a ‘real time’ hair simulation and shading system. They are pushing the realism with the hair by adding multiple lighting shaders, and more over ensuring that it reacts well to the environmental lighting. For example, your hair reacts different when its wet, or for example if you’re under a blue neon light. Or let’s say your hair is a light brown, it’s raining and you’re standing near a burning building. Your hair would “look” and reaction differently to the light compared to if it was dry, or say if you were blonde. Both the color of the hair would be affected, the shine (from the water from the rain), wind and many other attributes are important. For more info on hair you could also take a look at the TressFX 2.0 analysis, which is AMD’s answer to hair.
That’s about it for now folks, hope you’ve enjoyed the brief analysis of the technology of The Order 1886. Stay tuned for part 2 sooner or later
Thanks to RGT’s the Kid for bouncing ideas off of, and a special to someone (who doesn’t want to be named) with the maths!