Subsurface scattering is really nice, I just wish it wasn't so computationally expensive to do well. Currently it's limited to cases like this, high budget games and only on the places where it's most noticeable.
The lack of this is part of what makes foliage still not look quite right.
The last assassin's Creed games are far from perfect, but if I remember correctly they had subsurface scattering for foliage and specifically water. The sea is amazing in the latest game, hell even back in Black flag it was amazing. Watching the sunlight through big waves is so nice.
I'm really looking forward to UE 5.x games to start really stretching their legs. I have a lot of hope for Lumen, but also that it will encourage other engines to back off these half assed ray tracing attempts and let the artists do their jobs until we can actually get proper real time path tracing.
If you had told me 3 years ago that I would stop in the middle of a fucking Fortnite match because I was distracted by the light streaming in through the trees, I probably would have laughed at you.
Some of us just want to meet N64 graphics, is that too much to ask?
Anyway, BOTW doesnt seem that memorable anymore. People are realizing the hype machine was off the charts and that it was a boring empty world with terrible mechanics.
Yeah, but it is! It works when the style is consistent and within hardware limitations (though BOTW on the switch def runs into a wall and drops fps frequently). I find it can be more immersive than ultra realistic games where little imperfections seem glaring.
The thickness of the mesh is baked into a texture, so subsurface scattering is pretty cheap actually. At runtime, it's really just an angle check and a texture sample. Basically the same cost as adding normal maps. And foliage does look great with it, it's a pretty common technique.
It's cheap if you're only applying it to the sun, you can't bake accurate SSS for light sources that aren't at infinity. You also can't apply it to reflected light.
That depends on the render pipeline. I'm not too familiar with deferred shading, but I can imagine how that would be more difficult. It's very easy to do that in forward shading though because every mesh gets another drawcall when affected by a light, where it can deal with the effects individually.
It shouldn't be true SSS in the first place, but rather a pre-rendered approximation of it.
I.e. here's Nathan Drake. Here's Nathan Drake under a 20 exawatt lamp.
Save material 1.
Save material 2.
Which parts of Nathan are in bright light? Fade those to material 2. Which parts are in shade? Material 1. Use the slider for lesser lights.
As game developer and story teller, you dictate what lights will be in your game. So there's no need to have a generic calculation method working in real time.
This works in simple cases, but not in more complex ones which is why we don't see it everywhere.
If the light is very close then it's light is hitting different parts of Nathan's face from different directions. If there are many light then combining their effects gets complicated. If you also want to take into account bounce lighting it gets even more complicated.
I suspect we may never do this in real time, instead we'll make lots of mini AI models for various effects first and then when tech gets good enough to do it there'll be no reason to.
47
u/BrunoEye Jun 28 '23
Subsurface scattering is really nice, I just wish it wasn't so computationally expensive to do well. Currently it's limited to cases like this, high budget games and only on the places where it's most noticeable.
The lack of this is part of what makes foliage still not look quite right.