このライティングエフェクトを地形に再現するシェーダーを作成するにはどうすればよいですか?


8

コロネードから反射する敷石に落ちる光を見る

反射が最も強く、太陽、地面、観測者の間の角度が最も鋭いところに注意してください

各画像の主要な光源が地面で反射する方法に注目してください。光源と観察者の間の距離(?)の関数です。

これは(バンプされた)鏡面反射光マップですか?効果はWorld of Warcraftのいたるところに見られます。私は特にダン・モローの雪の上やダロウミア湖のほとりでそれを覚えています。太陽を直視する必要があります。この影響は、RLとCGの水面にもよく見られます。具体的には、光源に近い地表面ほど反射が強く、見る人に近づくにつれて落ちるような効果を作りたいと思います。


2
バンプマップされたサーフェス上のフォン
ラチェットフリーク

回答:


14

私がそのようなシェーダーを構築するつもりなら、私が開始する特定の現象があると想像します。

まず、太陽光は方向性があります。つまり、位置も減衰もありません。

次に、拡散成分は、太陽の方向と表面法線の間の内積をとることによって単純に計算されます。法線マッピングを追加すると、詳細が追加される場合があります。

トリッキーな部分は、太陽の指向性鏡面反射コンポーネントのモデリングです。したがって、同様の効果を達成するには、それを小さな問題に分割します。

  • 1つは、バンプまたは法線マッピングの任意のバリエーションを使用してシミュレートできる表面のマイクロファセットです。これは、拡散コンポーネントと鏡面反射コンポーネントの両方に適用できます。
  • 2番目の部分は、鏡面反射照明の不均一な分布です。これは、ある種のスペキュラマップを使用して行うことができます。
  • ここで最もトリッキーな部分は指向性スペキュラマップです。これは、ウォード異方性ライティングモデルを使用して実現できます。これにより、鏡面反射の異方性を制御する2つのパラメータが得られますAx, Ay

ワードの方程式

どこ:

  • dot(NL)<0またはdot(NR)<0の場合、鏡面反射項はゼロです。
  • ベクトルRは、表面からの光ベクトルの鏡面反射です。
  • Lは、サーフェスポイントからライトへの方向です。
  • Hは半角方向です。
  • Nは表面法線です。
  • XとYは、垂直方向の2つの直交ベクトルであり、異方性の方向を指定します。接線ベクトルと接線ベクトルをベクトルとして使用できますX,Y。特に、接線空間は、任意のエンジンで計算できるコンピューターグラフィックスで一般的です(通常は計算されます)。テクスチャ座標に基づいて)。

ここに画像の説明を入力してください

画像では、一般的なPhong鏡面反射光とは異なり、鏡面反射照明が指向性を持っていることに注目してください。これは、ウォードモデルと、さまざまな効果を実現する方法に関する記事です。編集ビューアに近い方の光強度を減らすという観点からのBRDFの適合性に関する詳細情報は、こちらで確認できます

ワード異方性鏡面反射光

最後に、別の(オプション)2つのポイントを最終的な画像に追加できると思います。

  • まず、アンビエントオクルージョンを使用すると、より信頼できる結果が得られると確信しています。
  • 2つ目は、ある種のフレネル反射を実装すると、特に水や氷のシーンで、画像に素晴らしい効果を加えることができるということです。

1
+1良い答えのコンセプト3d、そしてあなたがそれを書くためにすべての努力に行ってすみませんでした-@JoshPetrieは私の質問のタイトルを "WHAT(これはシェーダーです)"から "HOW(私はそれを構築しますか)に変更しました」ですから、あなたの努力はいくぶん無駄になるかもしれませんが、それでもあなたの担当者のために良いことをしたようで、それは良いリソースです。
エンジニア

@NickWiggillは問題ありません。良いリソースとしてここに残ります:)
concept3d 2013

@JoshPetrieは編集がどういうわけか私の答えを無効にしましたが、現在の形式の質問はもう少し合理的です。
concept3d 2013

1
代わりにあなたのものを受け入れます。その理由は、あなたがBRDFについて言及していることと、それがまさに私が念頭に置いていた種類の概念であり、それを読んだことで、これがまさに私が必要としているものであることがわかります。BRDFについてより詳細に回答を編集しました。
エンジニア

1
@NickWiggill詳細を追加していただきありがとうございます。詳細情報は決して悪くありません:)
concept3d

3

反射自体は、特定の照明モデルの関数の出力として取得する鏡面反射です。

これに類似した反射形状を生成する複雑さのレベルが異なる多くの異なる照明モデルがありますが、これと同様の外観は、おそらく(現在)おそらく最も多い単純な裸の骨のブリンホーン照明モデルですでに達成できます。 グラフィックエンジンで使用されている基本的なライティングモデルで、おそらくWorld of Warcraftでも使用されています。

物理的に正しくなく、画像と完全に同じになることはありませんが、非常によく似ています。Concept3DのWardモデルの例はより物理的に正確であり、より複雑な表面タイプ(つまり、表面の微細なバンプが均一に分布していないが、確率分布が異なる材料)で機能しますが、具体的な例はわかりません品質/パフォーマンスの面で不十分なゲインのため、それを使用するリアルタイムレンダラーの

実際には、サーフェスでのこのようなタイプの反射は、追加の鏡面反射光/光沢テクスチャと通常のテクスチャによって補足され、サーフェスの光沢/粗さ、および表面の法線の方向をそれぞれ変更します。これらは両方ともライティング方程式への入力です。典型的な照明モデルの。これは、現実の世界では、ほとんどの場合、表面の物理的特性(プラスチックや鏡のようなものを除く)が表面全体で同じままではなく、ピクセルごとに大きく異なる可能性があるためです。


はい、トラビスに感謝します。私がblinn + phongを何らかのマスクテクスチャと一緒に使用して、地形上で必要な場所にのみピクセルをレンダリングし、鏡面反射の基になる粒状感を作成することで、何か問題があると思いますか?
エンジニア

マスクテクスチャのために破棄された後、それらのピクセルがまったく照らされていない場合は、おそらく正しくない/奇妙に見えます。通常の方法は、実際には、照明方程式の入力の一部を変更するサーフェスのバンプマップと鏡面反射光マップの組み合わせです。
TravisG 2013

0

鏡面バンプマッピング(通常のマッピング)または視差マッピング。


7
これを証拠や参照で具体化すると、はるかに良い答えになります。
MichaelHouse
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.