LoginSignup
2
0

More than 3 years have passed since last update.

単位ベクトルの1要素の値を残りの要素から逆算する

Posted at

単位ベクトルの定義

\begin{align}
1 &= |e| \\
&= \sum R = \sum_{x^2 \in R } x^2 = \sum_{i=1}^{n} x^2_i \\
&= (x^2_1 + x^2_2 + \cdots + x^2_n) \\
\end{align}

三次元ベクトルのZを解く

\begin{align}
X^2 + Y^2 + Z^2 &= 1 \\
Z^2 &= 1 - (X^2 + Y^2) \\
Z &= \sqrt{1 - (X^2 + Y^2)}
\end{align}

コードにしてみる

float z = sqrt(1.0 - (x*x + y*y))

求める要素の方向は分からないので、方向が確定していない場合は使えない。

演算効率

ALU x 4, SFU x 1 (ALU x 2, ALU[FMA] x 1, SFU x 1)
それぞれの演算装置の計算に4サイクル必要として、20サイクル。
NormalMap のチャンネルを節約することで、テクスチャサンプルが減るのであれば演算コストはペイできる。

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0