Gerar um mapa normal a partir de um mapa de altura?
Estou trabalhando na geração processual de manchas de sujeira usando fractais aleatórios para um videogame. Já gerei um mapa de altura usando o algoritmo de deslocamento do ponto médio e salvei em uma textura. Tenho algumas idéias de como transformar isso em uma textura de normais, mas alguns comentários serão muito apreciado
tualmente, a textura da minha altura é uma imagem em escala de cinza de 257 x 257 (os valores da altura são redimensionados para fins de visibilidade):
Meu pensamento é que cada pixel da imagem representa uma coordenada de treliça em uma grade de 256 x 256 (por isso, existem 257 x 257 alturas). Isso significaria que o normal na coordenada (i, j) é determinado pelas alturas em (i, j), (i, j + 1), (i + 1, j) e (i + 1, j + 1 ) (chame A, B, C e D, respectivamente).
Dadas as coordenadas 3D de A, B, C e D, faria sentid
divida os quatro em dois triângulos: ABC e BCDcalcule as normais dessas duas faces via produto cruzado divida em dois triângulos: ACD e ABDcalcule as normais dessas duas faces média dos quatro normais... ou existe um método muito mais fácil que estou perdendo?