イベント
[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは
Unity Dev Dayの開場を待つ開発者達 |
David Helgason氏(CEO and Co-founder, Unity Technologies) |
これは,統合開発環境「Unity」の最新情報を伝えるセッションが丸1日分集まった“イベント内イベント”だ。開場前には,ちょっと笑えるレベルで聴講希望者の列ができ,ゲーム開発者達の関心が高いことが窺えた。
そんなUnity Dev Dayの目玉は,GDC 2014に合わせて発表された「Unity 5」(Unity 5.0)だ。冒頭で創業者兼CEOのDavid Helgason氏が挨拶したあと,創業者兼CTOのJoahim Ante氏らにより,「Unity 4」世代の4.5と4.6における新しいGUI,そしてUnity 5の紹介があったので,本稿では,Unity 5の新機能に関する部分をピックアップしてまとめてみたいと思う。
UE4並みの作業環境と実行環境が整備されたUnity 5
では,UE4のような“GPUによるチカラワザ”が使われれているのかというとそうではなく,PCや新世代ゲーム機のみならず,(制限はあるものの)モバイルデバイスでも使えるものに仕上がっているのが大きな特徴だ。
Enlightenは,ライトマップやライトプローブベースの大域照明(グローバルイルミネーション)描画システムといえる存在だが,ベイクされたライトマップ以外に,リアルタイムの光源もかなり“軽く”扱えるという特徴を持つ。基本的には事前計算で作っておいたライトマップを使い,光源の移動や追加などはリアルタイムで計算した情報を上乗せすることで,動的光源でも破綻なく処理できるとして「Battlefield 3」(PC / PlayStation 3 / Xbox 360)に採用されたことは記憶に新しい。
要するにEnlightenは,完全な動的光源が扱えるわけではないが,実用上,ほぼ同等のことができるシステムであったわけだ。
Unity 4でもライトマップ自体は実装されており,静的光源という条件であれば,非常にリアルな映像を作り出せていた。しかし制限もあり,ライトマップの制作に非常に時間がかかるため,シーンの変更などに支障が出ていたのだ。これに対し,Unity 5では,静的なライトマップの生成速度が向上しただけでなく,ライトマップの編集がほぼリアルタイムでできるようになったという。
Imagination Technologiesというと,グラフィックス&ビデオIPコア「PowerVR」がよく知られているが,それとは別に,レイトレーシングのハードウェア実行を目指したGPU「RTU」(Ray Tracing Unit)や機能ブロックの開発も行っている。付け加えると,それを担当しているのは,もともとリアルタイムレイトレーシングのソフトウェア実行エンジンを開発していたメンバーだったりすることから,ソフトウェアによるレイトレーシングの技術でも非凡なものを持っていたりするので,今回はそういう流れで採用に至ったのだろう。
実際のところ,リアルタイムのゲームに使える速度にするのは難しいようだが,エディタ上での確認や,ライトマップの生成なら,ほぼリアルタイムでこなせるようだ。レスポンスを上げるために,プログレッシブリファインメント(Progressive Refinement)という手法も併用されている。
披露されたデモでは,光源をつかんで動かすと,直接光が当たる部分は瞬時に処理された一方,散乱光が影響する部分は,光がまだらになったような模様を描いていた。ランダムにレイを飛ばすパストレーシングらしい動作だが,マウスボタンを離して光源を配置すると,見る見るうちに綺麗な諧調の影になっていく。
シーン内の光源配置が決まればトランスポータでEnlighten用のデータがベイクされるのだが,全体にほぼリアルタイム環境といってよいほどのレスポンスが実現されていたのは印象的だ。
Unity 5ではシェーダ環境も一新
物理ベースであるため,「シェーダやマッピング素材を大量に組み合わせて独自の効果を作る」といったことはできない。基本的に指定しなければならないものは,
- ディフューズカラー(diffuse color,基本色)
- スペキュラカラー(specular color,反射光の色)
- 表面の粗さ
- ノーマルマップ(凸凹情報)
の4種類だけ。現状ではクリアコートのような表現とスキン表現(※おそらく半透明体のこと)などには対応していないというが,多くの素材感はこれらの情報だけで作っていくことになる。
単一のUber Shaderを使うとはいっても,実際に使うときは利用する機能だけを見繕った実行用のシェーダが生成される方式になっており,利用しない無駄コードは含まれない。そうでないと200MBもの容量になるらしいので,当然といえばそれまでだが,モバイルなどにも優しい実装だ。
Unity TechnologiesのUnity 5紹介ページ
- 関連タイトル:
Unity
- この記事のURL: