Horizon Zero Dawn: the making of PS4 Pro's best 4K game
Guerrilla Games on how it met the ultra HD challenge.
Guerrilla Games' Horizon Zero Dawn not only raised the bar in terms of technical accomplishment on current generation console hardware, it handed in the best 4K HDR presentation we've seen from any PlayStation 4 Pro title. The native 1080p output on base hardware scales up to 2160p on Pro, using a custom implementation of checkerboard rendering, but Horizon's presentation is so clean, so solid, so convincing, it passes for the 'real thing' - so how was this achieved?
A while back, Digital Foundry spent the day with Guerrilla Games in Amsterdam, discussing the technological make-up of the game, our visit kicking off with an in-depth talk with principal tech engineer Giliam de Carpentier on how the studio got to grips with the PlayStation 4 Pro hardware.
"Well, let's start at our regular 1080p year rendering - we have a strong focus on anti-aliasing so whatever technique we wanted to use for having 4K rendering also needed to be at that same quality," says de Carpentier. "And obviously the PS4 Pro is a lot more powerful than the standard PS4, but rendering natively would have been too much to ask, perhaps."
Pro and HDR support was integrated into Horizon relatively late into the game's six-year development, and Guerrilla experimented with several higher resolution strategies, trying them out side-by-side before settling on 2160p checkerboard. In terms of native rendering, the team gave 1500p a shot, but weren't fully satisfied with the results. And to be clear, checkerboarding in the case of Horizon involves rendering half of the pixels for the full 2160p frame, the other half resolving via reprojection from the previous frame - a process that Giliam says provides a "native resolution detail level", if not quite the sharpness. However, every natively rendered pixel - be it 1080p on base PS4 or checkerboard 2160p on Pro - also benefits from 4x temporal super-sampling.
"We concluded for us [that] it made sense to go for the method of rendering that gave us the most detail - because interestingly enough even though you only render 50 per cent of the pixels on each frame, after two frames you do get the detail level, though not per se the same sharpness as [native] 4K," explains de Carpentier. "There are maybe ways to also do that but we focus mainly on the detail, so compared to maybe a really rough or a really clean 4K native rendering of a CG scene I guess our game doesn't have that same crispness, but then again if you look at a typical 4K movie it doesn't have that crispness either. If you look at the edge-lines they are typically like two or three pixels thick."
So how do you differentiate sharpness versus detail? Well, checkerboard or not, running at 2160p helps to ensure that higher mip level textures are streamed in - something that's not necessarily the case when operating at a lower native resolution. Also, consider that pixels imported and reprojected from the previous frame are subject to the same 4x temporal super-sampling as those in the current frame. Horizon retains detail and crucially, via this treatment, it does so all the way into the distance.
"For our anti-aliasing we prefer to use four samples per pixel, we also do that at 1080p," explains Giliam. "That's because all of our vegetation is alpha tested. Individual leaves of grass can be less than half a pixel wide, so you get all sort of jittery artefacts in the distance that can be annoying to work with. We figured out with 1080p that four samples per pixel - four times super-sampling - is the minimum. We also use two frames of sequential animation for anti-aliasing in 1080p which is just a variation of temporal reprojection."
The balance in terms of detail vs sharpness adjusts a touch when you compare the PS4 and Pro versions of the game. The base PlayStation 4 runs Horizon at native resolution with 4x super-sampling, so that 1:1 pixel map produces an arguably sharper image than Pro. However, checkerboarding to 2160p on the more powerful console trades a little sharpness, but offers a big, big win in terms of detail.
"It's a bit of a quality/quantity trade-off you can make," muses de Carpentier, "[You could have] 1800p checkerboard rendering in our case at least, with more whistles and bells attached to it, so you could have more sharpness in those 1800p checkerboard pixels versus a little less sharpness in 2160p checkerboard - but you do have 2160p so you do have that little extra detail in the geometry and the textures."
A good example of how additional detail feeds into the Pro version game comes from anisotropic filtering. Our initial analysis suggested that textures benefitted from higher levels of AF, but this is not actually the case. At 2160p - checkerboard or not - more texture is sampled, meaning that the same texture filtering produces far more detailed results.
On top of that, interface and HUD elements are rendered at native 2160p, sucking up some of PS4 Pro's additional 512MB of RAM, but the team's strategy was to open up as much of the extra memory as possible to the game's streaming systems - to ensure that the highest quality versions of each texture resolve wherever possible, again adding to the additional detail level found in the Pro game.
So, what about HDR? Going back to the PS3 days, Guerrilla has championed high-dynamic range rendering, tone-mapped down for final sRGB output. Surely HDR support should be fairly simple to implement then - at most basic level, it would simply be a case of cutting out the tone-mapping stage. It turns out that this is not the case - Guerrilla's games are influenced greatly by art direction, and post-process aspects such a colour grading are traditionally done in SDR - it's a better fit for the team's workflow and there are other logistical reasons too.
"Most of the users are probably using SDR so we wanted to keep that as our main target to colour correct for," says Giliam. "It doesn't mean we didn't want to give HDR the appropriate time to also be tweaked, but we did feel it was better to focus on SDR and then convert to HDR."
The conversion process essentially adds an additional 'sparse' channel of information in the conversion back to HDR - a system that not only works for the game's rendering, but also for the title's video sequences, all of which are native 4K, with the same asset running on both PS4 and Pro hardware. Managing the size of the HDR channel was an issue though, more so than any potential performance implication.
"Bandwidth-wise you have to be very careful when managing your buffers - not to get extra colour-banding, for example - because the extra bits do take up bandwidth and especially when you're also trying to do 4K, it really matters. Every bit matters, so you have to be very careful with planning your whole pipeline, your post pipeline, in order to not get severe colour banding."
Further issues made HDR development challenging - specifically the lack of a single reference display for HDR output. There is no real standard out there, and every display, every user gets a different experience. At peak brightness, Horizon outputs 6000 nits when looking directly at the sun, while a screen like LG's excellent B6 display - for our money, the best price vs performance screen on the market right now - only has a peak brightness of 560 nits. Even Sony's own flagship ZD9 maxes out at 2400 nits. Tuning HDR for Guerrilla was a challenge because in pushing HDR as far as they could, the developer is literally unable to see the effect.
Guerrilla's HDR work ended up gaining performance for the game after its implementation as opposed to losing it, and as noted in our initial analysis of the launch code, base PS4 and Pro run effectively identically - even though the two sets of hardware have very different bottlenecks. Again, it's a question of balance: Pro may only have an incremental increase in memory bandwidth, but other areas of the GPU offer especially dramatic improvements to hardware performance.
"We have a pretty deep pipeline with a depth prime and a geometry class like a typical deferred renderer, and a lighting pass and a lot of post effects," de Carpentier explains. "For us, the depth prime in the geometry and the lighting was faster even in checkerboard native than it was on 1080p on base, so that created some headroom to get a bit more out of the post effects."
However, resolving the checkerboard to full 4K claws back some of those performance wins, and bandwidth becomes more of an issue as running at a higher resolution requires the developer to sample more texture data.
"There are different ways to do checkerboarding as well," adds Giliam, who told us that they 'rolled their own' solution as opposed to using Sony's reference model. "You can have more information per pixel, or less information per pixel when rendering checkerboarding and depending on how much information you have, you can go for different checkerboard resolve techniques. We came up with one that doesn't need a lot of extra data at the per-pixel level and that gave us some performance boosts as well in the rendering of the whole geometry and the lighting pass."
While the focus on Horizon's Pro support is its best-in-class 2160p checkerboarding, there is a performance mode too. Typically, options like this on other titles have an unlocked frame-rate - and the reality is that very few games with this mode have managed to jump from 30fps to a locked 60fps. Horizon retains its 30fps lock in its performance mode, the idea being to offer a completely rock-solid lock at this number from start to finish. Horizon is built on a 30Hz engine that already taps out the CPU almost entirely - unlocking the frame-rate would not have worked for this title.
As things stand, any leftover CPU time is spent on pre-emptively streaming in world data - a system that removes the kind of stutter you often see during traversal in many open world titles. The aim here then is absolute stability - there's an extra 10 per cent of overhead left over to ensure consistent performance in the most challenging areas. Native resolution shifts up to 1368p and there are a couple of quality advantages too as checkerboarding is not in the mix. Principally, volumetric and depth of field passes scale up in line with the pixel count.
But it's the high resolution mode that provides the best triple-A 4K experience we've enjoyed yet on console. There's no compromise on consistency - even Horizon's pre-rendered cinematics run at 4K with HDR - while the team's focus on detail and anti-aliasing pays off. Foliage, grass and other sub-pixel detail resolve far into the distance, with none of the break-up or shimmering you would otherwise get. Meanwhile, Guerrilla's checkerboard resolve - a custom variant developed by the studio itself - is best in class: break-up and cross-cross artefacts are virtually impossible to spot. And it opens up an interesting debate: when the next-gen consoles finally arrive in a couple of years, should GPU resources be spent on 'true' 4K outputs when technologies like temporal supersampling and checkerboarding can look this good working in tandem? Horizon Zero Dawn makes a compelling case that we can have our cake and eat it - that we can trade a little sharpness for a massive win in terms of visual ambition.
Digital Foundry travelled to Guerrilla Games in Amsterdam to cover this story. Sony paid for travel and accommodation. If you're interested in a deeper tech deep dive into the Decima Engine's anti-aliasing and checkerboarding techniques, we highly recommend checking out Giliam de Carpentier's Siggraph presentation.