2

私はシェーダー プログラムをゼロから作成することを学んでおり、現在は拡散照明を使用しています。現在、方程式は

Diffuse Intensity = Intensity of light * 'k' diffuse constant of material * (dot product of surface's normal vector and light direction vector)

問題は、白い素材の場合、k 定数は 1 であり、素材が黒い場合、k は 0 であると読んだことがあります。これは、現実の世界の場合ではありません。なぜなら、私の黒いオブジェクト、光にさらすと明るくなるからです。ソース。なぜアルゴリズムはこのようなものですか?

UnityでGLSLを書く方法を教えているこのリンクから勉強しています。Unity でシェーダーを使って実験しやすいようにシーンをセットアップできます。 http://en.wikibooks.org/wiki/GLSL_Programming/Unity/Diffuse_Reflection

4

1 に答える 1

4

コンピュータ グラフィックスの照明モデルは、単純化/現実の近似にすぎません。ほとんどの紹介はPhong モデルから始まります。あなたのリソースはこれからの拡散部分のみを使用します。シェーダーがスペキュラー ライトで拡張されている場合、黒いオブジェクトにスペキュラー ハイライトがある効果が得られます。

現実世界のオブジェクトの反射は、Phong モデルの拡散成分と鏡面反射成分だけで表現できるものよりも、おそらくはるかに複雑です。

また、拡散光のみを反射する現実世界の表面 (ランバート反射体)を見つけることも重要です。

于 2012-11-11T19:01:19.990 に答える