Generación de un mapa normal a partir de un mapa de altura?

Estoy trabajando en la generación procesal de parches de suciedad utilizando fractales aleatorios para un videojuego. Ya he generado un mapa de altura usando el algoritmo de desplazamiento del punto medio y lo guardé en una textura. Tengo algunas ideas sobre cómo convertir eso en una textura de lo normal, pero algunos comentarios serían muy apreciados.

Mi textura de altura es actualmente una imagen de escala de grises de 257 x 257 (los valores de altura se escalan para fines de visibilidad):

Mi pensamiento es que cada píxel de la imagen representa una coordenada reticular en una cuadrícula de 256 x 256 (por lo tanto, hay 257 x 257 alturas). Eso significaría que la normal en la coordenada (i, j) está determinada por las alturas en (i, j), (i, j + 1), (i + 1, j) y (i + 1, j + 1 ) (llame a los A, B, C y D, respectivamente).

ntonces, dadas las coordenadas 3D de A, B, C y D, ¿tendría sentido:

divide los cuatro en dos triángulos: ABC y BCDcalcule las normales de esas dos caras a través del producto cruzado dividir en dos triángulos: ACD y ABDcalcule las normales de esas dos caras promediar las cuatro normales

... ¿o hay un método mucho más fácil que me estoy perdiendo?

Respuestas a la pregunta(4)

Su respuesta a la pregunta