090207 / KZ2 II

previous | next

Killzone 2 Rendering Observations

Had a chance to take a good look at the KZ2 demo, to see the tech first hand. The overall level of polish is fantastic. A few observations below, the rest I'm saving for when I play the actual game...

Level of Detail. They are using stippled LOD transitions for world geometry, with a transition threshold set so that geometry never stays in a stippled form. Seems as if they have 4 LOD levels for characters, but just pop between levels.

Particles. Judging from the artifacts where particle billboards intersect opaque geometry, I'd guess that they are drawing into a 1/4 size (1/16 area) downsized buffer. Sparks and other details seem to be drawn directly into the full size G-Buffer instead.

Textures. Good resolution on the textures, with lots of decals, and detail maps to maintain good resolution. Didn't see any evidence of texture streaming, so if it is there, they are doing an excellent job insuring textures are loaded before they are seen!

Motion Blur. The motion blur is subtle with a small maximum blur length. Just enough to give the sense of motion without inducing vomit (I prefer larger blur lengths, and we tried this at work and apparently it can make a few people feel sick). I have a feeling that the blur is done at a 1/2 size downsampled resolution, however the transition is so smooth it is hard to tell. Motion blur looks to not be depth aware, which can be seen as the motion blurred background pulls pixels from the relatively stationary gun. It can be expensive to correct this artifact, might not have been worth it for there engine. When looking through the gun sights and moving around, seems as if there is a fringe in the DOF regions where motion blur is not applied, suggesting that post processing selects between motion blur and DOF, but cannot apply DOF and motion blur at the same time. With a small maximum blur length this is a good optimization to make IMO.

Depth of Field. Looks like they transition between two filter kernels with a pop. Normal blur filter is smaller and touches the visible backend of the gun. At some point when player moves to gun sights, the filter kernel pops to a larger radius but what looks to be the same number of samples for the filter (a little banding). I have only seen near DOF thus far, and they have depth transition aware near DOF, as can be seen by the near out-of-focus bleeding into the in-focus background. A few observations about the KZ2 DOF convinced me to improve our DOF at work, and this is exactly why I inspect every graphics engine in detail, there is always something to learn from other people.

Film Grain. Applied to help hide any artifacts of limited 8-bit precision with 2x or so dynamic range. Really looks good IMO.

Shadows. Cascade shadows for the sun, dynamic shadows for muzzle flashes and what appears to be a few indoor lights. Shadow resolution appears to be rather low in some places (not as bad as Dead Space), however nicely filtered.

Decals. Lots of polish here: per material decals for bullet holes, foot prints where you walk, blood stains, and more.

iPhone

Installing the iPhone SDK on my iMac as I type this. Decided I wanted a distraction from all my long term work, with something simple, fast and fun...