Shadow map ou Mapeamento de sombra é uma técnica para criar sombras adicionada em imagens 3D produzidas por computação gráfica. Esse conceito foi introduzido por Lance Williams em 1978, em um paper com o título "Casting curved shadows on curved surfaces". Desde então vem sendo usada em cenas pré-renderizadas ou tempo-real em diversos consoles ou jogos de PC. As Sombras são criadas testando quando um pixel está visível a partir fonte de luz comparando isso com o z-buffer ou com a visão de profundidade da imagem segundo a fonte de luz, guardada na form de textura.
Princípio da sombra e do mapeamento de sombra(shadow map)
Se for olhado de fora da fonte de luz, todos os objetos que você veria apareceriam iluminados. Qualquer coisa atrás desses objetos, portanto, estariam na sombra. Esse é o princípio básico usado para criar o mapeamento da sombra(shadow map). A visão que temos da parte iluminada é renderizada, guardando a profundidade de cada superfície que é vista(o shadow map). Depois, as cenas regulares são renderizadas comparando a profundidade de cada pixel desenhado(como se fosse visto pela luz e não apenas pelo vista) para esse mapeamento de profundidade.
Conceito
Com a técnica shadow map cria-se uma imagem vista da posição da luz que se deseja projetar a sombra. Ao contrário de uma imagem qualquer, cujos pixels armazenam cores, a imagem gerada armazena as distancias dos respectivos pixels em relação à luz.
Depois de criada essa imagem o processo de aplicar a sombra consiste em renderizar a cena vista da posição da câmera, e para cada pixel criado, o mesmo é transformado para a visão da luz. Então é feita uma comparação da distancia desse pixel com a luz e o valor armazenado no shadow map. Se a distância pixel-luz for maior que o valor armazenado no shadow map então o pixel está sombreado, pois existe um outro pixel com uma distância menor em relação a luz na frente dele projetando uma sombra; caso contrário, o pixel estará iluminado.