オススメ機能
Twitter
お気に入り
記事履歴
ランキング
4Gamer.net
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[SIGGRAPH ASIA]モバイル機器でのレイトレーシング実現も近い? 狭メモリ帯域に対応してメモリアクセスを減らしたレイトレ手法とは
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2015/11/04 18:03

イベント

[SIGGRAPH ASIA]モバイル機器でのレイトレーシング実現も近い? 狭メモリ帯域に対応してメモリアクセスを減らしたレイトレ手法とは

ミドルウェア/開発ツール
 兵庫県・神戸コンベンションセンターで開催されている「SIGGRAPH ASIA 2015」の講演から,フィンランドのタンペレ工科大学のTimo Viitanen氏による「MergeTree:a HLBVH Constructor for Mobile Systems」と題した,モバイル機器でレイトレーシングを実現するための講演を紹介してみたい。

 演題を見ても何関係の話題か分かる人のほうが珍しいと思うので少し説明しておこう。HLBVHとはHierarchical LBVHの略であり,LBVHというのがさらにLinear BVHの略で,BVHがBounding Volume Hierarchiesの略なので,HLBVHは“Hierarchical Linear Bounding Volume Hierarchies”の略ということになる。
 SIGGRAPHは専門の研究者が集まる学会なのでこういった略語や概念は「当然知ってるでしょ」という前提で話が進んでいく。とはいえ,一般読者の多くには無縁の概念なのでなにをやっているのかが想像できる程度にまで噛み砕いておくことにしよう。
 まず,BVHだ。BVHとはオブジェクトごとに,形状をすっぽり包み込む直方体,つまりバウンディングボックスで囲んだ空間(バウンディングボリューム)として登録しておき,さらにそれを階層構造(木構造)にして複雑なものも管理できるようにしようという考え方である。
 そもそも,レイトレーシングは視点位置から画面上の各ドットに向かってレイ(光線)を飛ばす。空間内のオブジェウトとレイがぶつかると画面にそのオブジェクトが表示されるという仕組みだ。オブジェクトとレイが交差するかどうかについては,単純にやるなら,レイのすべての本数とすべてのオブジェクトの間での交差を調べればよい。
 しかしこの手法では物体が多くなるともの凄く重くなる。レイトレーシングが重たい処理の代名詞だった時代もあったくらいだ。
 特定のオブジェクトについて言えば,視線から放たれたレイのほとんどは当たらない。当たるはずのないレイを除いて処理すると劇的に高速化できるのは当然の話で,一時期からは空間を分割して処理することが当たり前になってきた。
 四半世紀前には,空間を単純な立方体で賽の目に区切ったボクセル分割が最先端処理だったものだが,BVHが登場し,BVHでオブジェクトごとに箱に入れられたシーンは,空間を1本の線でくまなく走査する関数によって1次元化される(端から走査された順に番号をつけられる)ことで単純化され,高速処理が可能になり(LBVH),さらに複雑なシーンに対応するためにそれ自体が階層化されて管理されるようになった(HLBVH)。進化を続けて最先端といえる位置にあるのが,HLBVHなのである。

 ゲームなどでは,突然オブジェクトをシーンに加えるような処理は多発する。HLBVHで扱うデータは高速処理のため1次元化されているわけだが,1次元化されたデータに新たなデータを登録する処理が必要になる。今回の研究はそのあたりに関するものだ。

今回の研究のシステム図
ミドルウェア/開発ツール

 まず,モバイル機器のメモリ帯域の狭さについての状況が語られた。
 PCだと,GeForce GTX 980で224GB/s,Radeon R9 Fury Xだと512GB/sという広帯域のメモリが使えるのに対し,モバイル機器ではiPhoneのA8Xで25.6GB/s,次世代のSnapdragon 820でさえ29.8GB/sという狭さに喘いでいる。

ミドルウェア/開発ツール

 LBVHで使用する木構造(1次元データ列)に新しいポリゴン1個を加える際のメモリアクセス量が示された。最低限必要なのは,頂点データの読み込みで36バイト,木構造への書き込みで56バイトの92バイトとなる。
 図中のBinned SAH(Surface Area Heuristic)というのはまっとうに処理したときのメモリアクセス量だと思っておけばいいだろう。それに対して,手動で1ポリゴンを加えた場合の処理が比較されている。木構造の質は最適ではなくなるが,メモリアクセスを26%削減できたとされている。

ミドルウェア/開発ツール

 メモリ消費の内訳を見ると,ソート処理が大半を占めていることが分かる。ちなみにRadixソートはGPUでよく使われる並列並べ替え手法だ。メモリ帯域の狭いモバイル機器では,メモリアクセスが多発すると,それだけで低速化の要因になってしまう。ソートアルゴリズムに問題があるのではないかと,Viitanen氏らは,大昔のメモリが非常に遅かった時代にはどうやって対処されていたのかを調べたのだという。そこで出てきたのが,マルチマージソートである。

ミドルウェア/開発ツール ミドルウェア/開発ツール

 とはいえ,じゃあなんでそのアルゴリズムがあまり使われていないのかなどを調べつつ,ソフトウェアで実行すると遅いヒープの挿入処理などをハードウェア化してやろうというのが研究の主たる部分となる。現在,FPGA(プログラム可能なLSI)で試作品が作られているという。

ミドルウェア/開発ツール ミドルウェア/開発ツール
ミドルウェア/開発ツール ミドルウェア/開発ツール

 その結果としての性能を見ると,なにもやらない場合に比べてメモリアクセスを1/3に低減できたとしている。特徴は機器側のメモリ帯域がPoorな場合でもあまり性能が落ちないというところで(高速なほうがもちろん速い),すでに発表されているほかの方式と比べても高い性能を発揮できているようだ。

ミドルウェア/開発ツール
ミドルウェア/開発ツール

 「モバイル機器でレイトレーシングは重すぎるのではないか」と思う向きはあろうが,今回のSIGGRAPH ASIAではモバイル関係のグラフィックスの話は,ほぼ100%がレイトレーシングについてじゃないかというくらいの状況で,次世代モバイルグラフィックスではレイトレーシングが本命視されている感じが伝わってきた。
 モバイルのプロセッサはどんどん速くなっているので,演算能力についてはあまり心配している人はいないようだが,「メモリがヤバい」と思っている人は少なからずいるようだ。今回の講演も「メモリ帯域が足りない」というあたりから出てきたものだが,ほかにも「レイテンシ大きすぎ」といったあたりから研究を発表している人もいた。
 最新のレイトレーシングアルゴリズムとその処理に特化したハードウェアで,数年後には当たり前にスマートフォンゲームがレイトレーシングで描画されるようになる可能性がある。ラスタライズ処理に慣れた身には馴染みのない概念が多く登場するので,次世代のモバイルコンテンツ開発を目指す人は,いまのうちから勉強しておいたほうがいいのかもしれない。

SIGGRAPH ASIA 2015関連記事

  • 関連タイトル:

    ミドルウェア/開発ツール

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
トピックス
スペシャルコンテンツ
注目記事ランキング
集計:12月12日〜12月13日