当面の質問は、HLSLでは、UV空間で生成されたサーフェス法線をどのように方向付けて、立方体の面に適用できるようにするかです。
全体的なプロジェクトは、手続き型の惑星ジェネレータを構築しようとしているということです。私は、各面が四分木である球に投影された立方体を使用しています。中間プロジェクトは、地形の法線マップを生成することです。私がこれを行う(そして私が何をしているかを理解する)ための最良の方法は、最初にキューブバージョンの法線を生成し、次に変換を実行してこれらの法線を球にワープすることです。
理想的には、この方法では、私が作業している面に基づいてコードを分岐する必要はありません(つまり、キューブの上面にいる場合、U = XおよびV = Y)。言い換えれば、私が望んでいるのは、「ああ、地形の法線に立方体の面の法線と何とか何とか何とか何とか」のドット積を掛けるだけのような数学の魔法です。
10/9/20 ETA:
平面の法線を計算する方法を知っています。私のその後の問題は2つあります。
- 法線マップを回転させて、立方体の各面で正しく方向付けするにはどうすればよいですか?
- 球をラップするようにフラット法線マップをワープするにはどうすればよいですか?
ヤコビ行列を使用するソリューションを1つ見つけましたが、それを機能させることができません。すべての法線がまっすぐ上を向いている場合(つまり、平面)でも、ヤコビアンを含むHLSLコードは照明を完全に乱雑にします。そのため、ソリューションの実装を信頼できなくなります。