最初に、レンダリングの物理学を扱ったNaty HoffmanのSiggraph プレゼンテーションを読むことを強くお勧めします。そうは言っても、彼のプレゼンテーションから画像を借りて、あなたの特定の質問に答えようとします。
単一のライトパーティクルがマテリアルの表面上のポイントに当たると、反射または屈折の2つのことができます。反射光は、鏡のように表面から跳ね返ります。屈折した光は材料内部で跳ね返り、入射した場所から少し離れて材料から出る場合があります。最後に、光が材料の分子と相互作用するたびに、いくらかのエネルギーが失われます。エネルギーが十分に失われた場合、完全に吸収されたと見なされます。
Natyを引用すると、「光は電磁波で構成されています。そのため、物質の光学的性質はその電気的性質と密接に関連しています。」これが、材料を金属または非金属としてグループ化する理由です。
非金属は反射と屈折の両方を示します。
金属材料には反射のみがあります。屈折した光はすべて吸収されます。
軽い粒子と材料の分子との相互作用をモデル化しようとすると、法外な費用がかかります。代わりに、いくつかの仮定と単純化を行います。
ピクセルサイズまたはシェーディングエリアが出入口距離と比較して大きい場合、距離が事実上ゼロであると仮定できます。便宜上、光の相互作用を2つの異なる用語に分割します。表面反射の用語を「鏡面反射」と呼び、屈折、吸収、散乱、再屈折から生じる用語を「拡散」と呼びます。
ただし、これはかなり大きな仮定です。ほとんどの不透明な素材の場合、この仮定は問題なく、現実とあまり変わりません。ただし、あらゆる種類の透明性を持つマテリアルの場合、仮定は失敗します。たとえば、牛乳、肌、石鹸など。
材料の観察される色は、吸収されない光です。これは、反射光と、素材から出る屈折光の両方の組み合わせです。たとえば、純粋な緑色の材料は緑色ではないすべての光を吸収するため、目に届く光は緑色の光だけです。
したがって、アーティストは、マテリアルの減衰関数、つまりマテリアルが光をどのように吸収するかを与えることにより、マテリアルの色をモデル化します。簡略化された拡散/鏡面反射モデルでは、これは拡散色と鏡面反射色の2色で表すことができます。物理ベースの素材が使用される前は、アーティストはこれらの色をそれぞれ任意に選択していました。ただし、これら2つの色が関連していることは明らかです。これがアルベド色の出番です。たとえば、UE4では、次のように拡散および鏡面反射色を計算します。
DiffuseColor = AlbedoColor - AlbedoColor * Metallic;
SpecColor = lerp(0.08 * Specular.xxx, AlbedoColor, Metallic)
ここで、Metallicは非金属の場合は0、金属の場合は1です。「鏡面反射光」パラメータは、オブジェクトの鏡面反射性を制御します(ただし、通常は材料の99%に対して一定の0.5です)