Regarding Killzone Shadow Fall And 1080pBy Poria Torkan, Producer on 6-mrt-2014 12:00:00
Q: Is KILLZONE SHADOW FALL running 1080p, or something else?
KILLZONE SHADOW FALL’s single and multiplayer modes both run at 1080p.
Q: Is SHADOW FALL running 1080p natively?
In both SP and MP, KILLZONE SHADOW FALL outputs a full, unscaled 1080p image at up to 60 FPS. Native is often used to indicate images that are not scaled; it is native by that definition.
In Multiplayer mode, however, we use a technique called “temporal reprojection,” which combines pixels and motion vectors from multiple lower-resolution frames to reconstruct a full 1080p image. If native means that every part of the pipeline is 1080p then this technique is not native.
Games often employ different resolutions in different parts of their rendering pipeline. Most games render particles and ambient occlusion at a lower resolution, while some games even do all lighting at a lower resolution. This is generally still called native 1080p. The technique used in KILLZONE SHADOW FALL goes further and reconstructs half of the pixels from past frames.
We recognize the community’s degree of investment on this matter, and that the conventional terminology used before may be too vague to effectively convey what’s going on under the hood. As such we will do our best to be more precise with our language in the future.
Q: So how does “temporal reprojection” work and what’s the difference with up-scaling?
Up-scaling is a spatial interpolation filter. When up-scaling an image from one resolution to another, new pixels are added by stretching the image in X/Y dimension. The values of the new pixels are picked to lie in between the current values of the pixels. This gives a bigger, but slightly blurrier picture.
Temporal reprojection is a technique that tracks the position of pixels over time and predicts where they will be in future. These “history pixels” are combined with freshly rendered pixels to form a higher-resolution new frame. This is what KILLZONE SHADOW FALL uses in multiplayer.
So, in a bit more detail, this is what we need for this technique:
- We keep track of three images of “history pixels” sized 960x1080
- The current frame
- The past frame
- And the past-past frame
- The current frame
- For each pixel we store its color and its motion vector – i.e. the direction of the pixel on-screen
- We also store a full 1080p, “previous frame” which we use to improve anti-aliasing
Then we have to reconstruct every odd pixel in the frame:
- We track every pixel back to the previous frame and two frames ago, by using its motion vectors
- By looking at how this pixel moved in the past, we determine its “predictability”
- Most pixels are very predictable, so we use reconstruction from a past frame to serve as the odd pixel
- If the pixel is not very predictable, we pick the best value from neighbors in the current frame
On occasion the prediction fails and locally pixels become blurry, or thin vertical lines appear. However, most of the time the prediction works well and the image is identical to a normal 1080p image. We then increase sub-pixel anti-aliasing using our 1080p “previous frame” and motion vectors, further improving the image quality.
The temporal reprojection technique gave subjectively similar results and it makes certain parts of the rendering process faster. This reduces controller lag and increases responsiveness, which improves the KILLZONE SHADOW FALL multiplayer experience.
We will be discussing KILLZONE SHADOW FALL’s rendering techniques – including this one – in a talk at the upcoming Games Developers Conference on March 20th, Room 132, North Hall. We will go into much more detail, but if you have any questions please leave them in the comments below so that we can address them in the presentation. The presentation slides will be shared on the Guerrilla Games Publications page after the conference.