The ray-traced reflection system
Shadow Fall's reflection system also contributes to the often spectacular lighting effects work. Michal Valient previously explained the basics in Guerrilla's post-mortem of the PlayStation Meeting demo, but was on-hand to go into more depth during our visit to the studio.
"What we do on-screen for every pixel we run a proper ray-tracing - or ray-marching - step. We find a reflection vector, we look at the surface roughness and if you have a very rough surface, that means that your reflection is very fuzzy in that case," he explains.
"So what we do is find a reflection for every pixel on screen, we find a reflection vector that goes into the screen and then basically start stepping every second pixel until we find something that's a hit. It's a 2.5D ray-trace... We can compute a rough approximation of where the vector would go and we can find pixels on-screen that represent that surface. This is all integrated into our lighting model."
"It's difficult to see where one system stops and another begins. We have pre-baked cube maps and we have real-time ray-traced reflections and then we have reflecting light sources and they all blend together in the same scene," adds Michiel van der Leeuw.
Global illumination, anti-aliasing and ambient occlusion
"So for example, you want to have extra [light] bounce on one room and you don't want it in another because of contrast and brightness, we have the possibility to bake these things as long as we are not using this type of system. Iteration may be faster but it costs more performance-wise, of course. The quality would probably drop - the benefit of pre-baking certain things is that if you don't need it for your gameplay element in this area and you need a static light that is not adjustable, it's much more efficient to bake this sort of thing because of performance or quality I guess."
Guerrilla Games, GPU compute - and the future of PlayStation 4
GPU compute - seen as the area where PS4 is best equipped to give long-term results - has also been explored by Guerrilla for its first game. In the PlayStation Meeting demo, only memory defragmentation was handled by compute. In the final game, colour corrections and "force-fields" are also handled by the graphics core. Force-fields are another example of a fairly unnoticeable system that helps make the game look more natural.