Half lambert model

  All posts Previous Next

Half-lambert model

Technique originally created by Valvle during the developement of Half Life. It prevents the rear of an object losing its shape and looking too flat. It is a non-realisitc shading method that aims to enhance the aestetics of the object.

alix.jpg
Alyx model showing Lambert vs Half-Lambert lighting model

To achieve the Half-Lambert ligthing model we start with the Lambert equation: $$I = \hat{L} \cdot \hat{N}$$

where

$$\mathit{\hat{I} = Light \; direction}$$ $$\mathit{\left |L \right | = Light \; intensity}$$ $$\mathit{\hat{N} = Surface \; normal}$$

the result laying between -1 and 1 we usually clamp the result because in a physically accurate world the dot product of the lambert reflectance model doesn’t produce results below zero, we don’t want light from below the surface. But for our puprose we want to use another approach, so we always have a positive value and a nice falloff.

So we scale the previous dot product by 0.5 and add 0.5 before we square the whole result. Now we get a more pleasing falloff.

$$I = (\hat{L} \cdot \hat{N} * 0.5 + 0.5)^{2}$$

The following graph shows the clear difference between the two falloffs:

graph.jpg
Comparison of a standard lambert model versus the half-lambert one.

References:

  1. https://developer.valvesoftware.com/wiki/Half_Lambert