Project FL


I also think the occlusion is too intense but I wanted to ensure the screenshots were evident. The SSAO has an intensity parameter so it can be easily adjusted by an artitst.

About the foliage, SSAO is a quite hacky approximation of real ambient occlusion, although perceptually I don’t see what you mean, it looks good to me. But this technique has its detractors.


Excellent improvement indeed, adjusting the AO map and baking it with the diffuse map is always time consuming. This will save a lot of time for futur projects ! I find it also especially interesting for the “shadow” it gives to the placeables objects…

A question though : how will the SSAO render with textures where the AO is already included (baked) in the diffuse ? I suppose it’ll be really dark…


I think you can see that a bit with the Statue edges, which already has some shadow baking. Guess it makes it a bit overly dark, but nothing that can’t be lived with. Still, it might be interesting to see the effect with your Dungeon tileset.


If the AO is baked in the diffuse map, then doing SSAO is more or less like applying AO twice to the object using that diffuse map. In a modern engine the AO map is independet from the diffuse map and the shader combines SSAO with the AO map. Even if using SSAO, the AO map is necessary for small-scale occlusion (e.g.: cavities), which SSAO can’t capture.


Ok thanks, that’s what I wanted to know. Usually I don’t use the AO map as is, but rather as a guide to darken some specific areas of my models. I suppose I’ll have to take the SSAO into account for my futur projects.


Well, like FL said, it can be adjusted. Plus it may not necessarily be running on the system where a module is being played, so it’s probably still going to be beneficial to bake it in to some degree.


Please can someone explain what is AO and SSAO.

I don’t see a huge difference between the two versions shown, and in some case, like the interior house I even prefer the version without SSAO.


Let me try Krighaur ^^.

It s a way to brighten/darken your object (control the amount of light) depending on what is happening on the surface.Usually flat area are brighten;complex geometry part,cavity,intersection are darken.

Ambient occlusion will use a B&W texture map of the object to do that.(but it doesn t consider how your object is placed on the scene,what is surrounding him ect)
For example it could be used to darken the wrinkle cavity,or the skin pore on a character face.

Screen Space Ambient Occlusion is calculated in real time .So for example if your toon bend his arm,it will darken a little bit around the bend until the arm is back in a straight position.
Or if your character wear a helmet,it will darken part where face and helmet are very close and light helmet part away and flat.

Btw it s very subtle generally,that s why it s hard to see.


Thanks Nagual that’s a bit more clear for me :wink:

So ambient occlusion is not very different from normal mapping which use angle of surface to lighten it more or less ?


May be closer to height map or curvature map if i had to compare.

For AO



The concept

AO means Ambient Occlusion. It’s the occlusion of ambient light
(light coming from all directions). Think for example the space between two objects that are close. Because of that, it’s more difficult that light rays coming from all directions reach that space. More examples: the bottom of a drawer, the cavities of an object, …

The AO map

Because ambient occlusion doesn’t depend on light direction, it can
be precalculated for an object. This leads to the AO map, a grey color texture that models how much each tiny surface area occludes ambient light. It’s not the same as a normal map, which models how each tiny surface area is oriented.

The techniques

In older engines, the AO map was baked in the diffuse map, which lead to faster rendering but less accurate lighting. In a modern engine, the AO map is used in conjuntion with the other maps when rendering the object. But the AO map only models ambient occlusion within the geometry of an object. We need to complement AO maps with a technique that renders inter-object ambient occlusion. Here comes SSAO.

Screen Space Ambient Occlusion

SSAO is currently one of the best techniques for real-time middle-scale ambient occlusion because of its performance/quality ratio. It works in screen space, which means that ambient occlusion is calculated over the final rendered image. This is why it’s fast, but this is also why it’s one of the most fake techniques and so it has its detractors.

My screenshots just showcase SSAO in my engine with the vanilla NWN2 assets. Because the original assets don’t have AO map, I can only showcase SSAO alone. My engine supports AO maps, so new assets for my engine could use them.

@krighaur: What do you not like about the last screenshot?


Thanks Nagual and Freshlook.

@Freshlook : There is nothing I didn’t like in your last screenshot, it’s just that I don’t see a huge difference between the two versions.
When I worked I always was saying to my subordinates " you must ask yourself if the time you spend enhancing your project is worth the quality gained". Or said differently “the more you advance in quality, the more it takes time, and there is a turning point when the time spent to ameliorate is not worth the amelioration”.
Now, I don’t know how much time consuming implenting a SSAO is.


Should have explained it better, here’s what I meant. Looks like some kind of transparency issue.


So SSAO is going to need more processor?

Not that it’s an issue nowadays I just wonder if, on such an old platform, it may cause something else to grind the graphics card.



Are vfx in the scope of this project? I noticed there are no visible vfx in the various screenshots.


SSAO by itself is not expected to be a huge improvement, but when used in conjuntion with other global illumination techniques the rendering approaches to realism. There is a lot of fenomena ocurring in the light-material interaction and implementing only one aspect of them isn’t going to be a huge improvement, but when implementing several of them together, “magically” the scene looks more realistic.


Oh, I see. Thanks for explaining. It’s not because SSAO is failing but because I have pending things to implement for transparency. The same happens with shadows. In fact, I was to tackle this when I was to work with shadows, but I didn’t noticed that it affected SSAO too.


SSAO increases the use of GPU, but it’s the cheapest real-time ambient occlusion technique. I’m not sure what you mean by “old platform”. If a platform can’t handle it, then there is no interesting modern technique it could use.

I’m targeting budget gaming PCs, not sure from what year, it’s something I would like to get feedback at some point. What’s for sure, I don’t want to target high-end GPUs. I think a budget gaming GPU from year 2017/2018 would be around 150$, like the Nvidia GTX 1050 Ti.


Yes, VFX is in the scope of this project, I have not implemented them yet. Right now I’m focused in modern techniques because they are the risky part and I can show interesting things. But If I want a fresh wind I can start to implement it in any moment.


Fresh Look I think you are on the right track in your design / target.

I agree fully.