All the improvements Valve has been making to the CSGO engine lately got me to thinking a lot about rendering tech. And one idea that popped into my head was the potential for self-shadowed bump maps to be used as a substitute for baked-in ambient occlusion.
Let me give you an example: the ever-popular Gorge crate.
It consists of six flat sides criss-crossed with various single planks. The AO bake of one side looks roughly like this:
(anyone else weirdly reminded of the Errant Signal title screens?)
Anyway, the idea is to create a "fake" heightmap underneath where the slats go, and then use that to generate an ssbump map, which might look something like this:
The issue with this method is that ssbumps on models aren't actually supported. See, in Source, brush faces and models use different methods to implement bump mapping; Source's is something called "Radiosity Normal Mapping", and among other things it's the reason why we can do cool stuff like this...
...where the light direction in the bump map changes from one luxel (that's the technical term for a pixel in a lightmap) to the next. But the normal maps in models are lit using a simpler method.
Until now, that is. One of the changes they made to the CS:GO engine was, quote, "upgrading the lighting of our normal mapped static props by implementing full, per-vertex lighting that uses the same radiosity calculations as our lightmaps do." While this probably means that ssbumps on models is not, as such, currently available (I don't have CS:GO myself or I'd test it right now), it would probably be an easy feature to add.
This is significant because, for all the improvements Valve has been making, Source still does not have true real-time ambient occlusion and continues to rely on the baked-in kind. Thoughts?
Let me give you an example: the ever-popular Gorge crate.
It consists of six flat sides criss-crossed with various single planks. The AO bake of one side looks roughly like this:
(anyone else weirdly reminded of the Errant Signal title screens?)
Anyway, the idea is to create a "fake" heightmap underneath where the slats go, and then use that to generate an ssbump map, which might look something like this:
The issue with this method is that ssbumps on models aren't actually supported. See, in Source, brush faces and models use different methods to implement bump mapping; Source's is something called "Radiosity Normal Mapping", and among other things it's the reason why we can do cool stuff like this...
...where the light direction in the bump map changes from one luxel (that's the technical term for a pixel in a lightmap) to the next. But the normal maps in models are lit using a simpler method.
Until now, that is. One of the changes they made to the CS:GO engine was, quote, "upgrading the lighting of our normal mapped static props by implementing full, per-vertex lighting that uses the same radiosity calculations as our lightmaps do." While this probably means that ssbumps on models is not, as such, currently available (I don't have CS:GO myself or I'd test it right now), it would probably be an easy feature to add.
This is significant because, for all the improvements Valve has been making, Source still does not have true real-time ambient occlusion and continues to rely on the baked-in kind. Thoughts?