1

私は現在、OpenGL を使用した海洋レンダリング システムに取り組んでいます。高さマップは fft で計算され、見栄えがします。しかし、ハイトマップから法線マップを生成することでいくつかの問題があります。法線マップは、事前計算された高さマップをテクスチャとして使用して、フラグメント シェーダーで作成されます。法線を計算するには、sobel フィルターを使用します。コードは次のとおりです。

 // z0 -- z1 -- z2
 // |     |     |
 // z3 -- h  -- z4
 // |     |     |
 // z5 -- z6 -- z7

// Sobel Filter
normal.z = 1/normalStrength;
normal.x = z2 + 2*z4 + z7 - z0 - 2*z3 - z5;
normal.y = z5 + 2*z6 + z7 -z0 - 2*z1 - z2;

z0 - z7 は、高さマップ テクスチャからの高さ値です。法線は正しく計算されますが、法線テクスチャには島の段差/継ぎ目が現れ、法線マップの滑らかさが損なわれます。ハイトマップは継ぎ目/エッジがなく非常に滑らかに見えます。

高さの値との境界にそれぞれいくつかの数値の間違いがあると思いますが、それを修正する方法がわかりません。

4

0 に答える 0