物理ベースシェーディング
物理ベースシェーディング (Physically-based shading、PBS) とは、物理法則をベースとしたシェーディングのことであり、物理ベースレンダリング (PBR) において使われている。PBSシェーディングモデルとしては、メタルネス (金属さ) ワークフローで有名な「Disney 原則BRDF」が代表的だが、それを拡張した「Disney BSDF」もある。これらをベースとしたシェーダーは、PBRシェーダーとも呼ばれている。
物理ベースシェーディングは、写実的レンダリングだけでなく、非写実的レンダリング (NPR) にも使われている。
2003年、三菱電機の研究拠点の一つ Mitsubishi Electric Research Laboratories (MERL) は、幅広いマテリアルの測定を行ってデータベース化したMERL BRDF Databaseを発表した。
その後、ウォルト・ディズニー・アニメーション・スタジオは、BRDF Explorerを開発し、そのツールとMERL BRDF Databaseのデータを用いて新たなシェーディングモデルの開発を行い、2012年、SIGGRAPH 2012 Courseの「Physically-Based Shading at Disney」の中で、「Disney “principled” BRDF」(Disney 原則BRDF) を発表した。
2015年、DisneyはDisney BRDFに鏡面反射BSDF (反射+透過)とより正確な表面下散乱を統合したDisney BSDFを発表した。
物理ベースレンダリングにおいては、基本的にエネルギー保存の法則を守る必要がある。PBSのシェーダーモデルは、パラメータを変更してもエネルギーが保存されるようになっている。なお、光の相反性については、透過を実装するために使われるBTDFに相反性が無いとされる。
マイクロファセット (微細表面) 理論導入前のシェーディングモデルは、経験則に頼っていた。特にGPUによる固定パイプラインにおいて、拡散反射は完全拡散反射を前提とするランバート反射モデルのみであり、鏡面反射は経験則ののみであった。
マイクロファセット理論導入後、シェーディングモデルは「表面の粗さに対応する拡散反射モデル」 (オーレン・ネイヤー反射モデル等) と「表面の粗さに対応する鏡面反射モデル」 (Cook-Torranceモデル (Beckmann分布関数ベース)、Walterモデル (GGX分布関数ベース)等) の合成となった。しかし、拡散反射のオーレン・ネイヤー反射モデルがフレネル反射に未対応であったり、拡散反射のオーレン・ネイヤー反射モデルと鏡面反射の反射モデルでラフネス相当のパラメータの範囲が異なっていたりなど、問題が多かった。
2012年、「Disney 原則BRDF」が登場し、独自の拡散反射モデル (Disney diffuse BRDF)と、GTR分布関数 (GGX分布関数を拡張したもの) ベースの鏡面反射モデルの合成により、両反射モデルのラフネスパラメータが統合された。また、メタルネス (金属さ) が導入され、光の透過や表面下散乱 (含拡散反射) のほぼ起きない「導体 (金属) 」と、金属光沢 (鏡面反射色のある強い鏡面反射) の起きない「誘電体 (非金属)」が別扱いされるようになった。また、影響の大きな色である導体の鏡面反射色および誘電体の拡散反射色が基本色 (ベースカラー)として同一に扱われるようになった。
なお、従来の鏡面反射モデルは単一散乱のみしか考慮されておらず、2016年に多重散乱 (Multiscatter) を考慮する鏡面反射モデルが登場し、その後、多重散乱の高速な近似が登場している。
レイトレーシング導入前の透過には、2次元的なアルファブレンドが用いられていた。
レイトレーシング導入後、屈折の再現が可能となり、その後、ベールの法則の導入により、半透明における、より正しい体積吸収 (ボリュームアブソープション) の再現が可能となった。
薄いサーフィスにおいては、「表面下散乱による拡散透過」が導入されたほか、屈折にもマイクロファセット理論が導入され、粗い (ラフネスの高い) 表面により拡散された拡散透過および鏡面透過の再現が可能となった。
「Disney 原則BRDF」には、ベースカラー (アルベド)、メタルネス (金属度)、ラフネス (粗さ)、スペキュラレベル (鏡面反射量) だけでなく、表面下 (サブサーフィス)や異方性 (アニソトロピック)ややクリア塗装 (クリアコート)も含まれている。しかし、物理ベースシェーディングの実装によっては、それらの幾つかが省略されているものもある。
ディズニーの元資料の「Disney 原則BRDF」にあるパラメータは以下となっている。ディズニー子会社のピクサーがRenderManのPxrDisneyシェーダーで実装していた拡張パラメータには以下がある。ディズニーのDisney BSDFの資料にある拡張パラメータには以下がある。なお、フラットネス (平坦さ)については、上記のサブサーフィスの項を参照。
スキンシェーダーとは、肌の皮脂膜、表皮 (メラニン層)、真皮 (ヘモグロビン層)、皮下組織の各層の反射・散乱に対応するシェーダーのことであり、一部のレンダラーが標準でこれに対応していた。現在は別の方式に置き換えられている。ヘアシェーダーの鏡面反射では、1989年に登場したKajiya-Kayモデルで異方性反射が導入され、2003年に登場したMarschner反射モデルで縦方向と方位角の反射が分離され、その後、2011年のd'Eon et al.の論文でMarschner反射モデルが改良されて「エネルギー保存の法則」を満たすようになった。
ヘアシェーダーの拡散反射では、Marschnerベースの反射モデルに近接場の問題があり、1989年に登場したKajiya-Kayモデルの拡散反射が長らく使われていた。2007年に近接場散乱モデルのZinkeモデルが登場した。
2016年、Walt Disney Animation Studiosは、鏡面反射のd'Eonモデルと拡散反射のZinkeモデルをベースに改良したChiang et al.の論文を公表した。
また、ファー向けのシェーダーモデルも開発された。動物の毛は人毛と異なりメデュラ（毛髄質)が目立つため、それを考慮したYan et al.の論文が2015年に登場し、2017年にはそれを高速化するためのファーモデルが登場した。
物理ベースより前のMarschner鏡面反射モデルでは、一次鏡面反射 (Primary Specular; R (反射))、二次鏡面反射 (Secondary Specular; TRT (透過-反射-透過))、透過鏡面反射 (Transmit Specular; TT (透過-透過))のそれぞれに反射色や鏡面反射の角度シフトを指定していた。また、これらとは別に拡散反射色を指定することもあった。
物理ベースの後は反射パスを分けずに、髪色および角度シフトの指定を単一で行うようになった。また、髪色は基本色だけでなくメラニン色素ベースの指定も可能となった。d’Eon et al. (2014)の論文では、メラニン色素とRGB吸収係数との関係に以下を提示している (定数はそれぞれの吸収断面積を表す):当初、輝度のみの解析的なスカイモデルとして、1993年にPerezスカイモデルが登場し、1994年にそれを少し変更したCIEスカイモデルが登場した。しかし、これらのモデルはパラメータが多く使い難い上、輝度のみにしか対応していないため色が無く、レンダリングには適さないものであった。
色のあるものとしては、シミュレーション的なスカイモデルが登場した。1993年に大気の散乱をベースとするNishitaスカイモデル (1993年版) が登場したものの、単一散乱のみの考慮となっていた。その後、1996年に大気の多重散乱を考慮するNishitaスカイモデル (1996年版) が登場した。
1999年、色に対応する解析的なスカイモデルとしてPreethamスカイモデルが登場し、レンダリングに広く使われるようになった。このPreethamスカイモデルは、Perezの解析的なスカイモデルをベースに、Nishitaのシミュレーション的なスカイモデルの生成結果を当て嵌めた上でパラメータを単純化したものであり、色に対応しながらも使いやすいものとなっていた。2012年、Preethamスカイモデルをベースとして光の全スペクトルを考慮するようにしたHosek-Wilkieスカイモデルが登場した。