>   >  UE4のレイトレーシング実装が広げる、リアルタイムCGの可能性〜「UE4 Ray Tracing Night @ Tokyo」レポート
UE4のレイトレーシング実装が広げる、リアルタイムCGの可能性〜「UE4 Ray Tracing Night @ Tokyo」レポート

UE4のレイトレーシング実装が広げる、リアルタイムCGの可能性〜「UE4 Ray Tracing Night @ Tokyo」レポート

3月末にリリースされたUnreal Engineの最新バージョン4.22に、試験的な機能としてついにリアルタイムレイトレーシングが実装された。これにより、ゲーム業界のみならず、様々な映像制作の業界から改めてUE4に注目が集まっている。4月24日(水)に開催された「UE4 Ray Tracing Night @ Tokyo」ではEpic Games Japan後援のもと、この新機能の紹介とともに様々な業界からリアルタイムレイトレーシングによってどのような効果が期待でき、どう仕事に活用できるのかといったユーザー視点からの情報交換が行われた。

TEXT&PHOTO_安藤幸央(エクサ)/ Yukio Ando(EXA CORPORATION)
EDIT_小村仁美 / Hitomi Komura(CGWORLD)

<1>UE4のレイトレで出来ること/出来ないこと by もんしょ

イベント主催者のもんしょ氏

まず最初にUE4やSubstance製品、DirectXなどを幅広く解説するWebサイト「もんしょの巣穴」管理人のもんしょ氏より「UE4のレイトレでできること/できないこと」という観点で、リアルタイムレイトレーシングの使い方、パストレーシングとの違い、レイトレーシング関連の各機能紹介といった技術的解説が行われた。

●リアルタイムレイトレーシングの使い方

まず、UE4.22から実装されたばかりのリアルタイムレイトレーシングは、「Experimental」と呼ばれる試験的な実装であるため、いろいろと不十分な部分もあるが、とても期待できるともんしょ氏は述べた。使用する環境としてはWindows 10(2018 October Update以降)、NVIDIA Turing、Volta世代以降のGPUもしくは一部のPascal世代GPU(Titan V、GeForce RTXシリーズ、GTX 1060以上)が搭載されている必要がある。UE4.22の起動オプションで -dx12 を追加していくつかの設定を有効化し、再起動すると使える状態になる。デバッグコマンドは r.RayTracing、r.PathTracingにまとまっている。

●リアルタイムレイトレーシングとパストレーシング

レイトレーシングは視点と方向をもった光線(レイ)を追跡する技術。パストレーシングは光の経路(パス)を追跡する技術。レイトレーシングを使って映像を作成する方法を「パストレーシング」と呼ぶ。パストレーシングはレイトレーシングの一種とも言える。UE4にはリアルタイムレイトレーシングとパストレーシングの機能があるが、何がちがうのだろうか?

UE4でいうところの「パストレーシング」機能は、レイトレーシング計算のみで映像を生成する。これは本来のパストレーシングの意味と同じもの。一方でUE4の「リアルタイムレイトレーシング」は一部の映像表現のみレイトレーシングを用い、基本的なレンダリングには従来型のラスタライザを用いているものである。

内部的には Microsoft の DirectX Raytracing (DXR) を用いてハイブリッド描画を実現している。DXRはDirect3D 12 の拡張機能で、ラスタライザでは表現が難しい、スクリーンに映っていないものの反射や映り込みなどを考慮した映像づくりに向いている。

●リアルタイムレイトレーシングで使える技術

リアルタイムレイトレーシングで描画できるものと描画できないものがある。描画できるものは限られているため、どんなシーンでもリアルタイムレイトレーシングが使えるわけではない。また描画できたとしても状況によって全ての機能が使えるわけではないので、注意が必要とのこと。


  • UE4のリアルタイムレイトレーシングで描画できるもの、できないもの

  • UE4で使えるリアルタイムレイトレーシングの機能

●UE4で使えるリアルタイムレイトレーシングの技術

続いて、UE4.22で利用可能なレイトレーシングの技術についてそれぞれ解説が行われた。レイトレーシングAO(アンビエントオクルージョン)は、SSAO(Screen Space Ambient Occlusion) の代替として利用できる。レイトレーシングAOの方が自然な描画。レイトレーシングしたままではノイズが多く、デノイズ処理を施すことで多少レイの数が少なくても品質が良くなる。逆にデノイズ処理が重くなる場合は、レイの数を増やして対処する。

レイトレーシングAOとスクリーンスペースAOとの比較

リフレクション(反射)はリアルタイムレイトレーシングの目玉機能。SSR(Screen Space Reflection)の完全反射は粗が目立つためぼやけた反射にすることが多いが、リアルタイムレイトレーシングの場合は完全反射の方が有利に働く。

レイトレーシングリフレクションは、合わせ鏡のような処理ができる。MaxBouncesの設定ができ、通常は1なので真っ黒になってしまうが、4回ほど反射させると、合わせ鏡っぽい表現が可能だ。ぼやけた反射の場合、ピクセルごとのサンプル数1、4、16の3つのケースでは相当描画品質が異なり、1、4のケースはノイジーすぎて使えない。

リフレクション表現のサンプルピクセル数によるちがい

レイトレーシングでのシャドウは、動的シャドウ(シャドウマップ)の代替として使える。ライトごとに設定が可能でシャドウマップとレイトレーシングシャドウの両方を使うこともできる。ただ、スタティックライト向けには無効で、スタティックライトの場合のシャドウは焼き付けのみ。Source Radius の設定でソフトシャドウの実現が可能になる。

レイトレーシングシャドウと、シャドウマップの比較

このシャドウは、光源のサイズがあるような場合に有効に機能する。スポットライト処理や半影、ソフトシャドウがきれいに表現されている。半透明の物体に対しては、根元に近い部分はちゃんとシャドウが出ていて、根元から離れている部分はソフトシャドウが弱く出ているという正しい表現になっている。

グローバルイルミネーションの機能はライトマップと併用も可能。静的なシーンであれば、処理が重いので、あまり使わない方が無難だと思われる。ピクセルごとのサンプル数16ぐらいでやっとノイジーな感じがなくなる程度だという。スクリーンパーセンテージを50%くらいまで下げて使うのがコツとのこと。

サンプル数、スクリーンパーセンテージのちがいの比較

スカイライトについては、通常のMovable Lightと異なり、遮蔽情報を使うことができる。ON/OFFはライト単位で、Cast Raytraced Shadowを有効化することで利用できる。デノイザーを ONにしてもサンプル数1、4ならかなりノイジーな描画になってしまう。だいたいサンプル数16ぐらいが現実的だろう。

スカイライトのサンプル数のちがいの比較

矩形ライトがONのときはレイトレーシングのみで照明計算が行われ、遮蔽も照明計算の中で行われる。デノイズされないためそのままではノイジー。やはりサンプル数16くらいが現実的。

矩形ライトのサンプル数による比較

「半透明なんてなくなればいいのに!」というもんしょ氏の発言が会場の笑いを誘ったように、半透明表現はオフラインレンダリングにおいて最も制作者を困らせる要素と言える。半透明の物体にぶつかった後にその先にレイを飛ばす数が少ないと、その先に何があっても無視してしまうことになる。そうなるとシーンの後ろの方の半透明物体が消えていってしまう。

レイトレーシングによる半透明表現は、ラスタライズ描画のときとは異なり、描画順序を意識する必要がない。透過レイのトレース回数を指定する方法で、指定回数以上になると計算が途中で打ち切られる。

半透明表現におけるサンプル数のちがいの比較

また、屈折表現をする場合、マテリアルのSpecularで調整することになるが、現行のUE4.22ではSpecular = 0.5 でガラスの設定になるはずが、なぜかガラスっぽくならないという現象が確認されているという。

なぜかガラスっぽい表現にならない事例

そして、リアルタイムレイトレーシングとは別に、リファレンス用としてパストレーサーが実装されている。これは先ほど説明したように、ラスタライズをまったく使わずに、レイトレーシングのみでレンダリングを行うもの。計算は重いので、この描画モードでインタラクティブに操作するのは現実的には難しい。「リファレンス」といわれているが、フレーム描画が進むと、おかしな状態になることもあり実際のところリファレンスとするのは厳しい。

リアルタイムレイトレーシングとパストレーシングの比較

その後、現状のUE4でのリアルタイムレイトレーシングの制約や処理速度について語られ、最後にまとめとして「リアルタイムレイトレーシングはいくつかの既存技術を代替していく」と述べたもんしょ氏。主にスクリーンスペース系の変化は大きいが、基本はやはりラスタライザによる描画。リアルタイムレイトレーシングによって、従来技術では対応できない表現が可能になる。例えば反射が顕著な例や、光源に大きさがある場合のシャドウにも良い結果を及ぼしている。

ただし、かなり制約がある。パフォーマンスの問題は顕著で、パフォーマンスを犠牲にすればできる表現もあるが、そもそも技術的にできないこともある。特に半透明表現やパーティクルの表現でリアルタイムレイトレーシングを使う場合、様々な問題が出てくる。Experimental(試験的)な機能であるため、ドライバやOSのクラッシュも伴う。不具合を見つけたらどんどんバグ報告してほしいと考えている、と発表をしめくくった。

●発表資料

UE4のレイトレで出来ること/出来ないこと from Satoshi Kodaira

次ページ:
<2>レイトレーシングで変わる? UE4での建築ビジュアライズ by 真茅健一

特集