0

頂点からピクセルへの OpenGL パイプライン プロセスを理解できないようです。

これら 2 つのシェーディング手法で頂点法線がどれほど重要か教えてもらえますか? 私の知る限り、グーローでは、ライティングは各頂点で計算され、結果の色は頂点間のポリゴン全体に補間されます (これはラスタライズの前にフラグメント操作で行われますか?)、フォン シェーディングは最初に頂点の法線を補間することで構成されます次に、これらの法線のそれぞれでイルミネーションを計算します。

もう 1 つの問題は、バンプ マッピングが平面 (2 つの三角形) に適用され、レンガ テクスチャがそのリスペクト バンプ マップを使用して拡散する場合です。これらすべてにグーロー シェーディングが適用されます。バンプ マッピングは、バンプ マップに応じてグラデーションによって法線を変更することで構成されます。しかし、4 つの法線 (4 つの頂点 = 平面) しかなく、4 つすべてが同じである場合、どの法線が変更され、いつ (フラグメント シェーダーで?) 変更されますか? グーローでは、イルミネーションの計算後に各頂点の色を補間しますが、この計算は法線を変更した後に行われます。

照明はどのように機能しますか?

4

3 に答える 3

1

頂点法線は、グーロー シェーディングとフォン シェーディングの両方にとって絶対に不可欠です。

グーロー シェーディングでは、照明は頂点ごとに計算され、三角形全体に補間されます。

フォン シェーディングでは、法線が三角形を横切って補間され、計算はピクセル/フラグメントごとに行われます。

バンプ マッピングは、さまざまなテクノロジを指します。法線マッピング (おそらく最近では最も一般的な方法) を実行する場合、法線、バイタンジェント (誤ってバイノーマルと呼ばれることが多い)、およびタンジェントが頂点ごとに計算されて基底行列が作成されます。次に、この基底行列が三角形全体に補間されます。法線マップから取得された法線は、この基本マトリックスによって変換され、ライティングはピクセルごとに実行されます。

上記の法線マッピング手法には、バンプが背後にある他のバンプを隠すことができる拡張機能があります。これは通常、法線マップとともに高さマップを保存し、高さマップをレイ マーチングして隠蔽されている部分を見つけることによって実行されます。この技法はレリーフ マッピングと呼ばれます。

DUDV バンプ マッピング(環境マップ、バンプ マッピング、または EMBM として DirectX 6 で実装された)などの他の古い形式があります。

また、バンプ マッピングを行う非常に初期の方法であるエンボス バンプ マッピングもあります。

編集:コメントへの回答として、エンボスバンプマッピングはグーローシェーディングされた三角形で実行できます。他の形式のバンプ マッピングは、必然的にピクセル単位になります (ピクセル単位 (または、少なくともテクセル単位) でサーフェス法線を変更することによって機能するため)。頂点ごとのライティングで実行できる他の方法があったとしても、私は驚かないでしょうが、私の頭の上からは何も考えられません。ただし、結果は、ピクセルごとに行う場合と比較して、かなりゴミに見えます.

Re: Tangents と Bi-Tangents は、理解すれば実際には非常に単純です (ただし、何年もかかりました;))。任意の 3D 座標フレームは、直交基底行列を形成する一連のベクトルによって定義できます. 頂点ごとに法線、タンジェント、およびバイタンジェントを設定することにより、各頂点で座標フレームを設定するだけです。これにより、ワールドまたはオブジェクト空間のベクトルを三角形自体の座標フレームに変換できます。ここから、単純にライト ベクトル (または位置) を三角形の表面上の特定のピクセルの座標フレームに変換できます。これは、法線マップの法線をオブジェクトの空間に格納する必要がないことを意味します。したがって、これらの三角形が動き回ると (たとえば、アニメートされる場合)、法線はすでに独自のローカル空間で処理されています。

于 2013-05-14T14:21:54.093 に答える
0

まず第一に、単純なシェーダーを作成するためにグラフィックス パイプライン全体を理解する必要はありません :)。しかし、もちろん、何が起こっているのかを知っておく必要があります。グラフィックス パイプラインの章は、リアルタイム レンダリングの第 3 版 (möller、hofmann、akenine-moller) で読むことができます。あなたが説明するのは、頂点ごとおよびフラグメントごとの照明です。どちらの計算でも、頂点の法線は方程式の一部です。バンプ マッピング シェーダでは、補間された法線を変更します。したがって、ラスタライズ後、最終的なピクセルの色を決定するために欠落しているデータを計算する必要があるフラグメントがあります。

于 2013-05-14T11:05:02.123 に答える