![画像集#002のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/002.jpg) |
Unity Dev Dayの開場を待つ開発者達 |
![画像集#003のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/003.jpg) |
David Helgason氏(CEO and Co-founder, Unity Technologies) |
北米時間2014年3月18日,米サンフランシスコ市で開催中のGame Davelopers Conference 2014(以下,GDC 2014)で,Unity Technologiesによる「
Unity Dev Day」が開かれた。
これは,統合開発環境「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
3月19日掲載の記事で紹介しているように,Unity 5における大きなポイントは,レンダリングシステムの一新にある
![画像集#004のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/004.jpg) |
新世代ゲームエンジンの代表格でもある「Unreal Engine 4」(以下,UE4)は,ダイナミックライティングに対応し,ゲームの制作時から実行時まで一貫して動的にライティングを扱っている(
関連記事)。そして,結論めいたことから先に述べると,Unity 5のレンダリングエンジンは,UE4とほぼ同等の作業環境と実行環境が実現されるシステムになっている。
では,UE4のような“GPUによるチカラワザ”が使われれているのかというとそうではなく,PCや新世代ゲーム機のみならず,(制限はあるものの)モバイルデバイスでも使えるものに仕上がっているのが大きな特徴だ。
Unity 5のデモより。動的な光源処理が行われている
![画像集#005のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/005.jpg) |
![画像集#006のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/006.jpg) |
![画像集#007のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/007.jpg) |
![画像集#008のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/008.jpg) |
動的光源1つとってみても,UE4とUnity 5の違いは大きい。UE4でEpic Gamesは,ボクセルコーントレーシング(Voxel Cone Tracing)という革新的なシステムを作り上げて動的光源を扱うのに対し,Unity 5の実行環境では,既存のミドルウェア「
Enlighten」を使っているようになっている。
Enlightenは,ライトマップやライトプローブベースの大域照明(グローバルイルミネーション)描画システムといえる存在だが,ベイクされたライトマップ以外に,リアルタイムの光源もかなり“軽く”扱えるという特徴を持つ。基本的には事前計算で作っておいたライトマップを使い,光源の移動や追加などはリアルタイムで計算した情報を上乗せすることで,動的光源でも破綻なく処理できるとして「Battlefield 3」(
PC /
PlayStation 3 /
Xbox 360)に採用されたことは記憶に新しい。
要するにEnlightenは,完全な動的光源が扱えるわけではないが,実用上,ほぼ同等のことができるシステムであったわけだ。
Enlightenで処理されている光の内容。左上はすべてを含む画像で,右上は直接光のみ,左下は間接光のディフューズ成分のみ,右下間接光の反射成分のみを適用した例だ
![画像集#010のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/010.jpg) |
![画像集#011のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/011.jpg) |
![画像集#012のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/012.jpg) |
![画像集#013のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/013.jpg) |
Unity 4でもライトマップ自体は実装されており,静的光源という条件であれば,非常にリアルな映像を作り出せていた。しかし制限もあり,ライトマップの制作に非常に時間がかかるため,シーンの変更などに支障が出ていたのだ。これに対し,Unity 5では,静的なライトマップの生成速度が向上しただけでなく,ライトマップの編集がほぼリアルタイムでできるようになったという。
現行のUnityが扱えるレンダリング技術と問題点
![画像集#014のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/014.jpg) |
![画像集#015のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/015.jpg) |
ライトマップの編集にあたって「Unity Editor」に取り入れられたのは,なんと
Imagination Technologiesのリアルタイムレイトレーシング技術だ。
Imagination Technologiesというと,グラフィックス&ビデオIPコア「PowerVR」がよく知られているが,それとは別に,レイトレーシングのハードウェア実行を目指したGPU「RTU」(Ray Tracing Unit)や機能ブロックの開発も行っている。付け加えると,それを担当しているのは,もともとリアルタイムレイトレーシングのソフトウェア実行エンジンを開発していたメンバーだったりすることから,ソフトウェアによるレイトレーシングの技術でも非凡なものを持っていたりするので,今回はそういう流れで採用に至ったのだろう。
さて,ここで使われているのは,視点から飛ばしたレイを反射面でランダムに分散して複数のレイを飛ばす,大域光源描画技法のパストレーシング(Path Tracing)という手法である。分散レイトレーシングが視点の複数のレイを飛ばすのに対し,反射面での散乱を主体とした処理になっている。
実際のところ,リアルタイムのゲームに使える速度にするのは難しいようだが,エディタ上での確認や,ライトマップの生成なら,ほぼリアルタイムでこなせるようだ。レスポンスを上げるために,プログレッシブリファインメント(Progressive Refinement)という手法も併用されている。
披露されたデモでは,光源をつかんで動かすと,直接光が当たる部分は瞬時に処理された一方,散乱光が影響する部分は,光がまだらになったような模様を描いていた。ランダムにレイを飛ばすパストレーシングらしい動作だが,マウスボタンを離して光源を配置すると,見る見るうちに綺麗な諧調の影になっていく。
セッションで披露されたデモより。左上→右上→左下→右下と見てほしい。部屋の構成要素を変更すると,移動させている間は天井などの間接光が乱れるのだが,配置を完了するとすぐに収まる
![画像集#018のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/018.jpg) |
![画像集#019のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/019.jpg) |
![画像集#020のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/020.jpg) |
![画像集#021のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/021.jpg) |
シーン内の光源配置が決まればトランスポータでEnlighten用のデータがベイクされるのだが,全体にほぼリアルタイム環境といってよいほどのレスポンスが実現されていたのは印象的だ。
では,これらの組み合わせでUE4と同等のものが低コストで実現されるかというと,それはちょっと微妙な話となりそうである。UE4では,光源処理の負荷が非常に高い一方,光源の数が増えても負荷は劇的には上がらない。それに対してEnlightenでは,動的光源が少なければ非常に“軽い”のだが,動的光源の数が増えると負荷がどんどん増大するという特徴がある。この点で,ゲームデザイン面の制限が出てくる可能性はあるだろう。
Unity 5ではシェーダ環境も一新
さて,ライティング周りが一新されたことに伴い,Unity 5ではシェーダ環境自体も一新されている。最近流行の「物理ベース」のシェーダだ。いわゆる「
Uber Shader」――1つの巨大な「なんでもできるシェーダ」――ですべての表現を行う方式が採用されている。実装にあたっては,2012年に公表されたDisneyの研究にインスピレーションを受けたとのことだ。
物理ベースであるため,「シェーダやマッピング素材を大量に組み合わせて独自の効果を作る」といったことはできない。基本的に指定しなければならないものは,
- ディフューズカラー(diffuse color,基本色)
- スペキュラカラー(specular color,反射光の色)
- 表面の粗さ
- ノーマルマップ(凸凹情報)
の4種類だけ。現状ではクリアコートのような表現とスキン表現(※おそらく半透明体のこと)などには対応していないというが,多くの素材感はこれらの情報だけで作っていくことになる。
単一のUber Shaderを使うとはいっても,実際に使うときは利用する機能だけを見繕った実行用のシェーダが生成される方式になっており,利用しない無駄コードは含まれない。そうでないと200MBもの容量になるらしいので,当然といえばそれまでだが,モバイルなどにも優しい実装だ。
素材データからレンダリングされる各種要素と合成の様子
![画像集#032のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/032.jpg) |
![画像集#033のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/033.jpg) |
![画像集#034のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/034.jpg) |
![画像集#035のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/035.jpg) |
![画像集#036のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/036.jpg) |
![画像集#037のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/037.jpg) |
![画像集#038のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/038.jpg) |
![画像集#039のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/039.jpg) |
![画像集#040のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/040.jpg) |
![画像集#041のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/041.jpg) |
![画像集#042のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/042.jpg) |
![画像集#043のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/043.jpg) |
シェーダの更新に伴って,Deferred Shadingの内容も追加されている
![画像集#044のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/044.jpg) |
以上,Unity 5では,ビジュアル面での大きな飛躍が期待されている。現状で最高レベルのグラフィックスが利用できるようになっており,しかもそれを比較的簡単に実現できるというわけで,開発者にとっては嬉しいアップデートとなりそうだ。
ライトプローブに似たリフレクションプローブというものも使われている
![画像集#045のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/045.jpg) |
![画像集#046のサムネイル/[GDC 2014]「Unity 5」のグラフィックスはここが新しい。動的光源処理を手軽にしたEnlightenとリアルタイムレイトレーシングの合わせ技とは](/games/210/G021014/20140320101/TN/046.jpg) |