Shadow Normals

This tool addresses a minor problem with unity’s standard shader, too much light reflecting off occluded surfaces. Areas that are exposed to less light should reflect less. When PBR textures represent a crevasse or recessed area, it reflects too much in shadowy areas. Shadow Normals scales down normal reflections based on ambient occlusion.

This program does not necessarily make a material look better. It makes the image look flat since you are damping down on fake geometry, even if those reflections are unrealistic. You will probably want to use it with LOD objects since the unrealistic reflections can be jarring when you jump to a lower polygon object. Otherwise, use it or don’t use it based on which result you like more.

Shadow Normals has more impact on models with recessed regions that are relatively dark on the ambient occlusion map.

Shadow Normals scales down evenly the red, green, and blue channels of the normal map using the ambient occlusion and the parameter Scale AO Influence to create a scaling factor.

X^2+Y^2+Z^2=1
(cX)^2+(cY)^2+(cZ)^2=(1-(1-AO)*Scale AO Influence)

X’ = cX
Y’ = cY
Z’ = cZ

Note: The red, green, and blue channels are scaled around 0.5 with values of r,g, and b ranging from 0 to 1. It is scaled down around the midpoint due to the nature of normal maps and how they are stored.

This program should be the last you use on an image.

Parameters

Normal Texture

This is the input normal texture that is going to be altered.

AO Texture

This is the input ambient occlusion texture that is going to be used to alter the normal texture.

+ and –

These buttons allow you to run multiple inputs at the same time.

Use AO Color Channel

Only one color channel is used from this program’s ambient occlusion map. This parameter chooses which channel is used.

Scale AO Influence:

This parameter is used to increase or decrease the scale of ambient occlusion influence on the normal texture.