GPU Driven Effects of The Last of Us Part II
Artem Kovalovs - Programmer
Previous Naughty Dog titles have used standard effect authoring, where particle emitters were manually placed on the environment or attached to character joints. In addition to this, there were render targets assigned to characters for the ability to apply blood, wetness, and other effects as part of the character rendering, but any particle rendering within them would be predetermined.
The Last of Us Part II introduced more detailed interactions between effects and the rest of the world. In addition, the effects were GPU driven, making them more efficient and allowing for bigger particle numbers. The effects required much less manual placement from the artists and utilized world information for spawning, and could attach to and simulate on geometry efficiently, following gravity and surface properties on animating geometry.
Low-level Optimizations in The Last of Us Part II
Parikshit Saraswat - Graphics Programmer
Developing a game that satisfies high expectations on visual quality while running at 30 fps on a 6 year old console platform, PlayStation 4, is quite a challenging task. The majority of the world of The Last of Us Part II contains alpha geometry which has poor rendering pipeline performance and full-screen expensive shaders with heavy resource usage. This required us to use plenty of hacks and tricks to push the hardware to its limits and make sure we don’t have to needlessly compromise on the visual fidelity of the game. This talk mainly focuses on case studies from the actual game highlighting the most expensive parts of our game’s frame and how we were able to come up with solutions to these performance hurdles.
Volumetric Effects of The Last of Us Part II
Artem Kovalovs - Programmer
The Last of Us Part II is set in multiple different environments with extensive atmospheric look. In addition, the game uses a lot of transparent objects such as glass, particle effects, etc. that require proper compositing with the fog. This required us to create a new volumetric system that would support different fog environments and seamlessly blend with, and tie together, the rest of the world. We have developed a new volumetric fog system that is based on a view space frustum voxel grid (froxel grid) that allows us to properly composite with the rest of the world. However, such a system also comes with a lot of production challenges. In this talk we focus on the developed methods to improve visual quality, reduce artifacts coming from the nature of grid-based fog, and fit within the performance budget.
The Technical Art of The Last of Us Part II
Waylon Brinck - Technical Art Director
Qingzhou “Steven” Tang - Technical Artist
Coming off of Uncharted 4, we felt we had achieved a huge milestone in rendering, but pre-production and concept work on The Last of Us Part II showed we’d have different problems to solve. Most of the game would be ambiently lit which is a hard look to achieve. The game would be full of glass, rain, and lots of other tricky surfaces with a greater variety of environments than we’ve ever attempted. Early rendering tests of our characters showed just how far we had to go. To achieve all of this, we had to not only upgrade our tech, but also how our tech art team worked. In this talk, we focus on rendering techniques we developed for The Last of Us Part II in order of implementation so you can see how they built on one another.
Lighting Technology of The Last of Us Part II
Hawar Doghramachi - Graphics Programmer
Since the majority of the world of The Last of Us Part II has overcast lighting conditions, ambient lighting was a crucial component of our rendering system. Developing a game that is mainly ambient lit is already a challenge on its own, but we also had to deal with limited amount of processing power and memory on our target platform, PlayStation 4. In this talk we mainly focus on improvements of our baked ambient lighting system that enabled us to produce convincing and consistent lighting results while maintaining our target of 30 fps and remaining within our limited memory budget.