物理ベースレンダリング(PBR)
Unity5からは物理ベースレンダリング(PBR:Physically Based Rendering)が導入され、一つのShaderで現実世界の様々な材質を表現できるようになりました。それが Standard Shader です。
レガシーシェーダーが普通だった時代(Xbox~PS3,Xbox360中期までの頃)は、みんなが好き勝手に現実世界を表現しようと、表現したい要望に対して様々なテクニックを編み出していきました。たとえば…
プラスティックに光沢を入れたい => Specular Shader
クリーチャーの肌の凸凹を表現したい => Bumped Diffuse Shader
クルマの車体に周囲を映り込ませたい => Reflective Diffuse
ネオンを光らせたい => Self-Illumin Diffuse
このように、表現したい一つ一つの項目に対して新しいShaderが作られていたのです。
レガシーシェーダーでは全体の雰囲気を合わせるのが難しく、一貫性のないバラバラな絵になりがち。画風の異なるイラストレーターがそれぞれ好き勝手に描いているような状態。
レガシーシェーダーには上記のような問題があり、昔の記事を見ると結構みんなそれで困っているのがわかります。そこに救世主として登場したのが物理ベースレンダリングです。難しいことは言いません。一言でいえば
現実の物理現象を基準に、画風を統一しましょう!という考え方。現実世界は一つなので必ず統一されるし、物理現象を元にしているので結果リアリティも向上する。
アニメ制作における作画監督のようなもの、と例えればよいでしょうか。それまで少し自由すぎたのです。
Standard Shader のパラメータ解説
table:Rendering Mode
Opaque 不透明な素材。最もよく使う。
Cutout 不透明だが、アルファ付きテクスチャで穴を開けられる素材。フェンスや木の葉など、ポリゴンで作るには大変な部分に用いる。
Fade 半透明な素材。同時に反射も透明になるので、物理的に正しくない。UIなど非現実的なものに用いる。
Transparent 半透明な素材。物理的に正しい反射をする。ガラスなどに用いる。
table:Main Maps
Albedo 素材の色(+透明度orスムースネス)を指定する
Metallic 素材の金属、非金属を指定する
Smoothness 素材表面の滑らかさ(つるつる、ざらざら)を指定する
NormalMap 法線マップを指定する
HeightMap 視差マッピング用の高さマップを指定する
Occlusion 遮蔽マップ(AO)を指定する。奥まったところや、傷などを暗くするのに用いる。
Detail Mask セカンダリマップの適用量をマスクで指定する。標準では全適用
table:Emission
Emission(チェックボックス) 発光するかどうか指定する
Color 発光の色と強さを指定する
Global Illumination GIやライトマップベイクに影響する手法を選択する
table:Texture Settings
Tiling テクスチャのタイリング(スケール)を指定する
Offset テクスチャのオフセットを指定する
table:Secondary Maps
Detail Albedo 詳細(ズームアップ)な色を指定
Normal Map 詳細(ズームアップ)な法線を指定
Tiling テクスチャのタイリング(スケール)を指定する
Offset テクスチャのオフセットを指定する
UV Set セカンダリマップで使用するUVチャネルを指定する