Немного о цифровых значениях и математике. Можно пропустить, но не стоит.
Скалярный параметр - это одно число. Оно может быть любым - отрицательным, положительным, целым или дробным - любым значением. Можно отнестись к этому. как к одному каналу с одним пикселем, который растягивается на всё UV пространство.
2 Vector - Это уже параметр, который хранит в себе 2 скалярных значения. Можно представить себе этот параметр, как двуканальный тексель.
3 Vector - Это параметр, в котором есть 4 значения. Да, 4 значения. И это связано с тем, что обычно с помощью этого параметра указывают цвет. А там, где цвет, там и альфа-канал.
Теперь нам нужно понимать, как будет происходить перемножение этих всех параметров между собой.
Самое простое - это перемножение скалярного параметра с любым из других типов параметров. Скалярный параметр просто перемножает себя на все числа в векторах поочередно.
Рассмотрим умножение скалярного произведения на себя, на двумерный вектор и трехмерный вектор.
1Vector * 1Vector - это всегда просто перемножение двух чисел. Например, 5 * 8 = 40.
1Vector * 2 Vector - это перемножение скалярного значения (1Vector) на каждое значение двумерного вектора. То есть, если у нас есть скаляр = {2}, и 2Vector = {4, 3}, то их перемножение будет следующим = {2}x{4, 3}={2x4, 2x3}={7, 6}. То есть, результат всегда будет по бОльшему вектору. То же самое происходит и с перемножением скалярного числа с 3Vector.
1Vector * 3Vector - это перемножение скалярного значения (1Vector) на каждое значение трехмерного вектора. {2}x{4, 3, 8}={2x4, 2x3, 2x8}={7, 6, 16}.
Теперь рассмотрим чуть более сложные перемножения:
2Vector * 2 Vector - это перемножение чисел по своим позициям. Например, у нас есть 2 двумерных вектора {2, 5} и { 1, 3}. Перемножение будет следующим: {2, 5} * { 1, 3} = {2*1, 5*3} = {2, 15}.
3Vector * 3 Vector - то же самое происходит и при умножении трехмерных векторов: если 3V = {1, 2, 3} умножить на 3V {7, 9, 8}, то мы получим следующий результат:
{1, 2, 3}x{7, 9, 8}={1x7, 2x9, 3x8}={7, 18, 24}.
Часто мы либо перемножаем 1 канал (одно скалярное число) на различного размера вектора, либо перемножаем вектора на себе подобные размером вектора.
Вместо умножения можно ставить любой знак выражения: сложение, вычитание или деление.
На самом деле, практически такой уровень знаний и нужен вам будет - умножить, разделить, да прибавить или отнять. Не сложно, правда?
Очень редко, когда появляется необходимость перемножить 2Vector и 3Vector. Да и движок не рассчитан на подобные выражения. Поэтому для решения этой задачи 2V можно разбивать на отдельные скалярные значения и проводить математические действия раздельно, потом все складывая в кучу.
Отличная статья, спасибо!