Here it is folks! My graphics analysis of the most popular visual showcase exclusive for the PS5! I’ve taken extra time to fully analyze what is going on in Demon Souls and noted some rendering implementations that hasn’t been seen before in a long time. If I have missed something in my analysis because I haven't seen the whole game please forgive me! I'm very early in the game and just wanted to get my thoughts out.
It’s no surprise that a lot of PS5 fans love the remake of Demon Souls for it’s visuals and rightly so. Demon Souls is one of the best showcases of stunning visuals of any platform to date. But how did they enhance an older game made on the PS3, to look so good as to literally be labeled one of the best looking games this new generation? Well, let’s delve into what works and what doesn’t work. Let’s explore the secrets of Bluepoints’ approach to graphical fidelity and some of the setbacks that they had to compromise on.
Texturing:
This is where most of the rendering budget went for Demon Souls. BluePoint scrapped all the old textures and completely recreated the pipeline with so much detail, you will be hard-pressed to find this kind of fidelity in any current gen game (or next-gen for that matter). I see 8k textures here throughout and they brought back one of the oldest and most expensive techniques to texturing – Parallax/Relief Occlusion Mapping. This expensive technique scans the texture map and figures out based on height what particular texel should be rendered instead of the base height at the location in texture space. It’s a very expensive calculation as it requires stepping through the texture space and using the view vector to find the correct height. This gives an automatic self-shadowing based on the parallax texture map. The results are stunning.
Here is a small diagram of the technique:
If texel A is what a normal texture lookup would be given the view vector V, we offset that texel based on a height value and index a different location B for what the user would see. This 'parallax' provides very convincing results.
Here is a picture of the old Crysis on the PC that used it:
Notice how the texture map itself (the color) is very low resolution. Bluepoint rectified this by throwing in 8k normal maps and 8k texture maps ON TOP of the parallax mapping - displaying stunning detail! And all of this without counting tessellation!
Notice the detail of normal mapping on top of the POM
Here is another clip from a different angle. I simply could not get the view that makes it break down. It is MUCH more accurate than the new technique found in a lot of games which will break down rather quickly when changing the angle.
Lighting (Projective Textures, Contact Shadows, Shadow Casting Local Light sources):
Another strong rendering implementation in this game is the lighting. While it doesn't have dynamic-time-of-day or have much of the complexity of some other open-world games, it does a reasonably great job in using dynamic local lights, "flashlight" GI bounce (taken from Naughty Dog's GI bounce technique) projective textures, contact shadows and good shadow casting local light sources. I like that they used projective texturing for the talisman on the characters belt.
I can only count some games that use this technique but once again, Bluepoint went texture crazy and used it even in their lighting
Projective textures work by projecting the texture map onto the light source in order to get uniquely shaped shadows.
Demon Souls also uses contact shadows to help out when screenspace ambient occlusion isn't accurate enough to capture small objects.
Notice the sides of the steps and the cracks and crevices of the stairs here.
Here is another shot at it on the sides of the wall:
It doesn't work all the time however. When you have a light source (like his belt) illumination an area, it will make it disappear. Notice also the rocks closer to his feet. They look like they are floating in space without the contact shadows in full effect.
PBR Shaders (Metal, Skin, Cloth, Marble, Hair):
Demon Souls uses the well used PBR shaders we have all come to love. The metals look great and very realistic for armor and the cloth looks good as well. The marble and stone being a material with POM and high resolution textures brings out exceptional quality in this game!
Demon Souls has a very good hair shader compared to most games today. It's not film quality but it at least has more than 1 lobe for computation. I'm counting 2 lobes with a diffuse contribution. The more lobes, the better the approximation.
Let's talk about some of the drawbacks and/or sacrifices Demon Soul's had to make in the shading pipeline. It's implementation of skin is not using any sort of subsurface scattering on the NPCs. With most games implementing at least some form of subsurface scattering, it's a bit surprising that Bluepoint didn't go for a better shader. I wonder if resources were limited.
Here is a screenshot of the smithy and a sideshot of his skin. It looks completely like diffuse shading.
Here is a video of me trying to get some kind of light propagation on the skin and it just looks like normal diffuse shading. SSS is expensive and it was probably either too costly for what they had already been doing or maybe the shader wasn't ready.
FX (Water, Fire, Smoke)
Demon Souls uses a horrible water shader. It's just flat out ugly. They seemed to have made it as a complete mirror surface looking like liquid mercury with no layers colors of light scattering underneath and the animation of the water is the old school "sine-wave" animated texture. Again, I don't know if they ran out of rendering budget or just don't have a good water shader in-house. Maybe this was intentional as I haven't gone through the entire game. It is very possible that there is water elsewhere that does have the kind of light propagation and fresnel effect I'm looking for.
Here is a clip of the water in the Nexus:
The fire shader is pretty good but it could use more art direction on the fire. Fire is extremely difficult to implement properly in a game and I'm 99% unsatisfied with most games' fire. Ironically, Ghost of Tsushima has excellent fire effects. That goes to show that artists talent really matters when the rendering budget is small. Their smoke, however looks pretty darn good. I love how it is also illuminated by local light sources and gives the atmosphere a very broody one.
Finally, Demon Souls is a great step in the right direction starting out of the gate for the next-generation PS5. The team went bonkers on the texturing pipeline and pretty much exhausted the rendering budget on getting excellent detail along with good PBR shaders and incredible animation and reasonably good lighting for a closed world RPG. I love how they use shadows to convey a dark and moody atmosphere and making the local light sources dynamic, along with projective texturing and contact shadows for the lighting leaves no stone unturned for some of the more lame lighting techniques that ignore shadowing. It can't be stressed enough that lighting needs shadows. You can't have one without the other.
I'll leave with this. One of the topics of argument is whether Demon Souls uses the SSD to stream the high res 8k textures in per frame. I don't think this is the case. Why? Because despite having incredible detail, the same textures are used over and over again. It is very possible that they cached those textures for a particular level and keep them in VRAM for all the instances of the same texture. I don't see much variety on a per-level basis like other games that use multiple different textures palattes and color schemes. I've reached out to Bluepoint's CEO with no response on the matter. For now, it doesn't really matter. The game is a beautiful exclusive that every Sony gamer should be proud of.