"Нормы" из контрольной сетки не совсем нормальны для начала. Это просто выдуманные векторы в каждой вершине, а не то, что вы хотите интерполировать.
Вместо этого используйте производные трафареты, которые дают касательные векторы в двух направлениях. Получив касательные векторы, скрестите их, чтобы получить нормальное значение. Производные трафареты:
1 4 1
0 (0) 0
-1 -4 -1
and
-1 0 1
-4 (0) 4
-1 0 1