回答:
私がそのようなシェーダーを構築するつもりなら、私が開始する特定の現象があると想像します。
まず、太陽光は方向性があります。つまり、位置も減衰もありません。
次に、拡散成分は、太陽の方向と表面法線の間の内積をとることによって単純に計算されます。法線マッピングを追加すると、詳細が追加される場合があります。
トリッキーな部分は、太陽の指向性鏡面反射コンポーネントのモデリングです。したがって、同様の効果を達成するには、それを小さな問題に分割します。
Ax, Ay
。どこ:
X,Y
。特に、接線空間は、任意のエンジンで計算できるコンピューターグラフィックスで一般的です(通常は計算されます)。テクスチャ座標に基づいて)。画像では、一般的なPhong鏡面反射光とは異なり、鏡面反射照明が指向性を持っていることに注目してください。これは、ウォードモデルと、さまざまな効果を実現する方法に関する記事です。編集ビューアに近い方の光強度を減らすという観点からのBRDFの適合性に関する詳細情報は、こちらで確認できます。
最後に、別の(オプション)2つのポイントを最終的な画像に追加できると思います。
反射自体は、特定の照明モデルの関数の出力として取得する鏡面反射です。
これに類似した反射形状を生成する複雑さのレベルが異なる多くの異なる照明モデルがありますが、これと同様の外観は、おそらく(現在)おそらく最も多い単純な裸の骨のブリンホーン照明モデルですでに達成できます。 グラフィックエンジンで使用されている基本的なライティングモデルで、おそらくWorld of Warcraftでも使用されています。
物理的に正しくなく、画像と完全に同じになることはありませんが、非常によく似ています。Concept3DのWardモデルの例はより物理的に正確であり、より複雑な表面タイプ(つまり、表面の微細なバンプが均一に分布していないが、確率分布が異なる材料)で機能しますが、具体的な例はわかりません品質/パフォーマンスの面で不十分なゲインのため、それを使用するリアルタイムレンダラーの
実際には、サーフェスでのこのようなタイプの反射は、追加の鏡面反射光/光沢テクスチャと通常のテクスチャによって補足され、サーフェスの光沢/粗さ、および表面の法線の方向をそれぞれ変更します。これらは両方ともライティング方程式への入力です。典型的な照明モデルの。これは、現実の世界では、ほとんどの場合、表面の物理的特性(プラスチックや鏡のようなものを除く)が表面全体で同じままではなく、ピクセルごとに大きく異なる可能性があるためです。