イベント
[CEDEC 2014]新世代レンダリングエンジン「Mizuchi」をシリコンスタジオ開発陣が解説。「ほぼ実写」のリアルタイムCGを動かすためのポイントは?
CEDEC 2014の初日となる9月2日には,発表されたばかりのMizuchiを,シリコンスタジオの開発陣が解説するセッションがあった。専門的な内容を扱うものであるにもかかわらず,満席になるほどの盛況ぶりだったのだが,本稿ではそんな濃密なセッションのエッセンスをお届けしたいと思う。
なお,登壇したのは,シリコンスタジオの田村尚希氏と安田 康氏,川瀬正樹氏の3名だ。
Mizuchiとは何か?
Mizuchiとは,PlayStation 4(以下,
光は,物質の表面に衝突すると,衝突した表面の材質特性に応じて反射したり吸収されたりするが,それを表す関数であるBRDF(Bidirectional Reflectance Distribution Function,双方向反射率分布関数)を用い,(よほど特別な材質でもない限り)少ない基本パラメータで「エネルギー保存」に則って計算していこうというのが物理ベースレンダリングの基本概念だ。
もう少し具体的に述べると,Mizuchiでは,Epic Gamesの「Unreal Engine 4」(以下,UE4)で採用されたパラメータセットである,
- BaseColor(ベースカラー)
- Normal(法線)
- Shininess(光沢度。UE4では「Roughness」を採用しているが,Mizuchiでは(1−Roughness)で求められるShininessを用いる)
- Metallic(金属度。1.0に近づくほど鏡面反射にベースカラーが乗りやすくなる)
- Cavity(微細凹度。遮蔽表現に影響する)
を用いている。BRDFにおける拡散反射のライティングモデルにはランバート(LambartもしくはLambartian)法,鏡面反射のライティングモデルにはクック・トランス(Cook-Torrance)法を採用しているとのことだ。
材質表現にあたってはいま挙げた5つのパラメータを1つのレイヤーとし,複数のレイヤーを重ねたり,それをマスクで抜いたりすることが可能になっている。このあたりは,UE4や,E3 2014のまとめ記事で紹介した「The Order: 1886」と共通の仕様と述べていいだろう。
Mizuchiでは,材質編集用の専用ツールも用意されており,そこではライティング環境を適宜変えながらのリアルタイムプレビューも可能とのこと。物理ベースライティングである以上,ライティング条件を変えても当然のことながら材質感は変わらないわけだが,それを実際に「ちゃんとそうなっているか」確認できるシステムが構築されているというわけだ。
間接光照明は,事前生成しておいたキューブマップでライティングするイメージベースライティング(Image Based Lighting,以下 IBL)方式を採用。背景オブジェクトなどに対しては,伝統的な事前焼き込みのライトマップなども利用できる。
IBLに必要なキューブマップの配置は自動ではなく,アーティストが手作業で設定する方式が採用された。冒頭でも紹介したMuseumデモだと,約90個のキューブマップ取得ポイントが設定されているそうだ。解像度は一律256×256テクセル,容量にして約50MBとのことである。
RLRは,通常のレンダリング結果と深度バッファの内容とを使って,画面座標系で局所的なレイトレーシングを行うテクニックだ。一般的には局所的な映り込み表現を作り出すために用いられるが,Mizuchiにおいては遮蔽感や接地感を出すのに大きく貢献したという。
MizuchiにおけるRLRは,IBL間接光照明と物理ベースレンダリングによって明るくなりがちな材質に対し,局所的な遮蔽感を与えて映像に説得力を増すのに貢献しているというわけだ。
Mizuchiはゲーム向けのリアルタイムグラフィックスエンジンだが,現状では,Museumデモのような技術デモ特化仕様となっており,半透明要素処理がなかったり,光源は太陽光に代表される平行光源のみで,点光源やスポットライトには対応していなかったりするそうだ。このあたりは年末の発売に向けて機能強化されるはずだ。
ちなみに,CEDEC 2014時点における開発期間は実質1年強だそうなので,実装すべき機能はまだまだ多いものと見られる。
「エイリアシング問題」に取り組むこととなった開発チーム
さて,ひととおりの機能がMizuchiに実装されて,技術デモもそれなりに動くようになってきた時点で,Mizuchiの開発チームは,ある恐ろしい事態に直面したという。
それはエイリアシングだ。
そしてここに物理ベースレンダリングが乗ってくると,きめ細かな高輝度ハイライトが出やすくなり,画面内の空間周波数はとても高くなる。カメラがゆっくり動くだけで,画面内が「星のきらめき」のようになってしまうこともままあったという。
こうしたエイリアシングに対しては,MSAAやFXAAといった,静止画として発生しているジャギーや,ポリゴン輪郭に発生しているジャギーを低減する効果のあるエイリアシング処理だと,ほとんど役に立たない。ここで起きているエイリアシングは,時間方向のエイリアシングだからだ。
ただ,この手法はあくまでも一時凌ぎだ。抜本的な解決にはならないため,開発チームは改善に乗り出すこととなった。
そして,その手段としてたどり着いたのが,時間方向の積分的アンチエイリアシング技法である「テンポラルスーパーサンプリング」(Temporal SuperSampling)的なアプローチだ。具体的には,「現在のピクセルに対し,過去フレームの位置にあるカラーをサンプルしてブレンドする」というもので,これは時間方向で積分したことに相当するため,時間方向の誤差拡散になるという副次的なメリットもある。
ちなみに,「過去フレームにある位置」(=着目しているピクセルの過去位置)は,モーションブラー生成などに利用される,ピクセル単位の速度ベクトルを格納するためのベロシティバッファ活用で算出可能だ。
とはいえ,「エイリアシング地獄」自体は回避できたため,Museumデモではこのアプローチを採択したとのことだった。
Mizuchiプロジェクトは開発者募集中
今世代のゲームグラフィックスでは,ジャギーを消すためのアンチエイリアシングだけではなく,時間方向のエイリアシングとどう向き合うかについても大きなテーマとなってくる可能性が高そうである。
なお,シリコンスタジオは,Mizuchiプロジェクトをさらに推し進めるべく,参加したい開発スタッフを募集している。腕に覚えがある人は応募してみてはどうだろうか。
シリコンスタジオのMizuchi告知ページ(エンジニア募集フォームへのリンクあり)
CEDEC 2014 公式Webページ
- 関連タイトル:
Mizuchi
- この記事のURL: