はじめに
内積 を使って任意方向のグラデーションを作る方法を紹介します。
UV座標と2次元ベクトルの内積 = グラデーション
以下のシェーダーグラフを見てください。
UV座標とベクトル(1, 0.5) の内積をとると、(1, 0.5)の方向へ増加するグラデーションができます。
数式による解説
UV座標 と ベクトル の内積を計算すると、 になります。
この式がある色の値 をとると考えた場合、以下のような直線の方程式を得ます。
グラデーションの色の値
の値を変えながら、グラデーションの上に直線 を引いてみると以下のようになります。
このグラデーションは直線 が表す領域であるとも言えます。
ちなみに、直線 はベクトル と垂直になっています。
内積に使用するベクトルは正規化したほうが良い
内積に使用するベクトルの長さが変化すると、内積結果は変わってしまいます。
内積に使用するベクトルは Normalizeで長さを1にした方が良いでしょう。
3次元座標と3次元ベクトルの内積をとると、これもベクトル方向へ増加するグラデーションになります。
ベクトル(1, 2, 3)の正規化 と3次元座標の内積をとると、(1, 2, 3) の方向へ増加するグラデーションになります。