карты рельефа ставит текстуру на модели, где яркость каждого TEXEL определяет высоту этого тексела.
Высота каждого текселя затем используется, чтобы нарушить освещение по поверхности.
Нормальное отображение помещает текстуру в модель, где каждый цвет текселя представляет собой три значения, которые определяют направление, в котором расположены точки поверхности.
Например, цвет (255, 0, 0) может означать, что поверхность в этом месте указывает на положительную ось X.
Другими словами, каждый тексель является нормальным.
Название Dot3 происходит от того, что вы на самом деле делаете с этими нормалями.
Предположим, у вас есть вектор, который указывает в направлении ваших источников света. И предположим, что у вас есть вектор, который является нормальным в определенном текселе на вашей модели, который сообщает вам, в каком направлении тексель указывает.
Если вы простой математике уравнение называется "скалярное произведение" на этих двух нормальных векторов, например, так:
Dot = N1x N2X + N1Y N2y + N1z * N2z
Затем полученный value - это число, которое сообщает вам, сколько этих двух векторов указывает в одном направлении.
Если значение равно -1, то они указывают в противоположных направлениях, что на самом деле означает, что тексель указывает на источник света, а источник света указывает на тексель, поэтому тексель должен быть освещен.
Если значение равно 1, то они указывают в том же направлении, что означает, что тексель указывает от источника света.
И если значение равно 0, то один из векторов указывает на 90 градусов относительно другого. Т.е.: Если вы стоите на земле с нетерпением, то ваш вектор взгляда находится на 90 градусов относительно нормали земли, которая указывает вверх.
Освещение DOT3 по-прежнему работает с изменяющейся точкой обзора? Нормали должны быть преобразованы с помощью матрицы обратного отображения модели (которая изменяется в соответствии с вашей точкой зрения). Благодаря текстурному освещению, использующему DOT3, нет никакого преобразования! – prideout
@prideout Вместо преобразования нормалей вы преобразуете направление света в пространство нормальной карты. Это можно сделать либо на GPU (если у вас есть шейдеры), либо на CPU, если вы используете аппаратное обеспечение с фиксированной функциональностью. –