Ambient Occlusion and Normal maps


So the documentation says that AO uses the UV2 which is shared with lightmaps. Provided that there are no overlapping textures, does this mean that I MUST create a second UV map for the AO, or is it going to accept the UV1 for it?

As for the normal maps, this is always tricky for me, but what works beter DirectX or OpenGL maps?


Hi Anthorax,

You must create a second UV channel for the lightmap. It can have the exact same layout as the UVchannel 1 but must be saved as a second UV channel.

As for normal maps, all kinds will work directly in Valkyrie, just make sure you tick the normal map flag. To control the strength of the normal map, you can adjust the alpha slider when clicking on the color box located on the left side of the bump section.

Looking forward to see what you are working on!



Hi Louis!
Thanks for the quicke response! All clear.

A followup question, though - I am not quite sure how I would apply height map AND the normal map simultaneously. I see the two buttons next to the normal map, but I’m not quite sure where and how to plug the other map, if one is already plugged.



The height map is picked from the alpha channel of the normal map.

The height map flag turns on “relief mapping” which does per pixel displacement mapping fully in the shader (it doesnt affect the geometry directly) its essentially a better version of the more traditional parallax mapping if you’re familiar with that. You can tweak the RGB value of the Bump channel to tweak the “height” of the relief mapping. It works well for rocks, bricks, stone details, etc…

The “normal map” toggle is there if you use traditional tangent space normal maps, by default we assume a greyscale bump map in the RGB channel. Note that you don’t need to worry about having tangent vectors exported from your models as those are computed automatically in the shader.

Regarding DirectX vs OpenGL (and Metal / Vulkan in the near-ish future), we aim for all rendering to be 100% the same on all APIs & platforms, so you can assume they are equivalent. If you find any discrepancy between them please report it as an issue :slight_smile:. I use DirectX only when I remote desktop to my windows machine because OpenGL doesnt work through Windows’ RDP.


Regarding the UV channel used by the Ambient.

It should work this way: if you dont have a second UV channel it should use the first UV channel, same as the diffuse/specular/bump channels. If you do have a second UV channel the Ambient will use that instead.


Ok, so I tried what you said, and it appears that I can use EITHER height map, OR normal map. If put the height map in Normals Alpha channel, as soon as I drop it in the bump material slot, I get the normals,… then I play with the two switches on the side,
but whatever combination I use, I can either get one or the other to show up. I use height for big lumps of displacement, and normals for fine cracks and such.
What am I missing? :smiley:


Hopefully the example below clarify how to use the different flags in the Bump channel. Sorry for the art style :wink:

Normal maps

Using rockwall.tga & rockwall_NH.tga at

With a normal map

You can use the alpha color of the bump channel to tweak the “strength” of the normal map:

You’ll note that while the shading is better than without any normal map its still fairly flat.

With a normal map + height map

You can use the color channel to tweak the per pixel extrusion:

Here you can note occlusion between the bricks in the wall.

Greyscale bump

The greyscale bump map (bump channel without the normalmap flag) is more like the “old school” bump you’d use in 3DSMax, it really only works well with shallow normals and just to add some “edge” to the lighting - usually by plugging the diffuse directly as bump or some quickly made greyscale version of it. Its not really the best for high quality normals but it can do the job in some cases - as its better than no bump. See below for a quick example - using some tree bark texture.

Note that using a height map with a greyscale bump doesnt really make sense in general - although you can do it technically.

Without bump:

With bump (using the diffuse as bump):


Thanks! I got it! Seems to be working excellent now.