AGAL - Optcode NRM - нормализует вектор до размера 1 - почему он используется?

Добрый вечер всем!

У меня есть пример кода, который я пытаюсь понять:

// fragment
tex ft0, v0, fs0 <2d,repeat,linear,miplinear>
nrm ft1.xyz, v1
nrm ft2.xyz, v2
nrm ft3.xyz, v3
dp3 ft5.x, ft1.xyz, ft2.xyz
max ft5.x, ft5.x, fc0.x
add ft5, fc1, ft5.x
mul ft0, ft0, ft5
mov oc, ft0

Хотя я не могу представить большинство операций (я пытаюсь выполнить все вычисления на бумаге, чтобы понять смысл программы - я думаю, что это возможно), но опткод NRM смущает меня больше всего. Я не могу понять, почему мы это делаем. Как я обнаружил, каждый вектор имеет длину от 0,0,0 до его координат. Нормализованный вектор имеет длину 1. Как это может помочь при расчетах? Заранее спасибо!

1 ответ

Нормализованные векторы полезны для вычисления точечных произведений между двумя векторами. Например, если "нормаль" грани модели (вектор, указывающий на грани под углом 90 градусов) не нормализован, вы получите очень странные результаты, если вы поставите точку с другим вектором.

Другие вопросы по тегам