ここ十年でゲームのグラフィックはどれほど進化したでしょうか。まるで目の前に現実が広がっているかのようなゲーム世界を作ることだってできる時代になりました。
そしてそんな「リアルな世界」を作るにあたって最近注目されつつあるのが「リアルタイム・レイ・トレーシング」技術です。 GPUで有名なNvidiaが「RTXシリーズ」を発表したことからその言葉が急速に世界に広がっていきましたが、一体リアルタイムレイトレーシングとは何者なのでしょうか?
ここではサルでもわかるように簡単に図を用いて説明していきます。
あ、決してサルをバカにしているわけではありません。サルは大好きです。
この記事を無理やり2文でまとめると
- リアルタイムレイトレーシングとは、リアルタイムで光線の動きをシミュレーションし、より現実的な光の反射等を描画する処理技術
- これからのゲームでは当たり前のように用いられるだろう
リアルタイムレイトレーシングとは?
それでは早速リアルタイムレイトレーシングについて説明していきます。
どういう意味?
そもそもこの長いカタカナは何を表しているのでしょうか。何となく想像はつきますが、これは英語をカタカナにしたものになります。 英語では「Real-time Ray Tracing:即時 光 追跡」と表記します。
リアルタイムという単語は聞き覚えがあるかと思います。つまりこれは「リアルタイムにレイトレーシング処理を行う」という意味です。
ではレイトレーシング処理とは一体何なのでしょうか?
レイトレーシングとは?
レイトレーシングとは文字通り「光を追跡する(たどる)」という意味で、3D描画におけるレンダリング工程での手法のひとつです。
レンダリングとは?
レンダリングというのは要はコンピュータにしかわからないような図形の情報等を、私たちがモニターを通して確認できるような「画像」に変える処理です。 その処理においてはいろいろな方法がありますが、その中に「レイトレーシング」と呼ばれるものがあるだけです。
仕組み
そしてレイトレーシングではあらゆる光をたどることによってより現実的な光の映え方を実現することができます。これは一体どういうことでしょうか?
まず最初にわかりやすくするためにかなり簡素にした図を見せます。 この図では男の子が鏡を見つめています。3Dゲームにおける話なので、ここでいう男の子の視野がそのままゲーム画面に映るという感じですね。
そしてレイトレーシングではまず男の子の目から見つめている先である「鏡」に向けて一本の線を描きます。 そしてこの線には光と同じような性質を与えるので、鏡まで来たところで反射します。この反射の仕方は物質によって変わります。
そして反射した後、この線がぶつかる物体などを検知して、鏡に何がどう映るのかを忠実に再現します。これがレイトレーシング法です。 レイトレーシングでは物体から出る光をたどるのではなく、その光を逆算して視点からシミュレーションします。
これが基本的なレイトレーシングの考え方です。
そしてゲーム内ではこの物体や視点、それから光源が常に動き回りますのでリアルタイムでこのレイトレーシング処理を行います。
レイトレーシングの種類
一口にレイトレーシングといってもかなり簡素化されたものから、現実世界と同等のシミュレーションを施したものまでさまざまな種類があります。 ここではレイトレーシングの種類について説明します。
反射
レイトレーシングの基本は反射です。上の図はNvidia公式ホームページから引用したものになりますが、物体を見つめている視点から線を出してシミュレーションしているのがわかります。 この時、上にある照明の光量もシミュレーションに組み込まれて、球には光と陰が描かれるようになっています。
この時、照明(光源)を数個にしてシミュレーションする方法もありますが、より進化したレイトレーシングでは照明から入ってくる直接的な光だけでなく、一度物体に反射した光が光源となる「間接照明」についても考慮されます。
そのため光源は無数にできるのでかなりの処理能力が必要になりますが、より自然な反射を描くことができます。
影
光を追跡するわけですから、もちろん影の生成にも関わってきます。あらゆる照明からの光を考慮して、どのように影が映えるのかをシミュレーションしています。そして左図のようにきれいに影を落とすことができるのです。
そしてさらに高度になると、ある一点の照明から出た光を拾った周りのすべての物質が間接照明の光源となり、そこからの光線も考慮します。 つまり、より現実世界に近い状態を作り上げます。
この方式を採用しているゲームはあまり無いですが、採用したとしてもかなりの処理能力が必要になってくるので今のところは普及していません。
このように、レイトレーシングでは光に関わる全ての処理を行うのです。でもこの世の中で物が見えているのはすべて光のおかげなのですから、すなわちゲーム内では常にレイトレーシング処理が必要になってきます。 その部分をこれまでは計算でごまかしつつ作っていたわけですが、これからはレイトレーシングを用いることによって本格的に描画ができそうです。
ちなみにNvidiaのCEOは「これからはレイトレーシングが当たり前の世の中になる」と発言したそうです。
レイトレーシングの効果
では具体的にこの「リアルタイム・レイトレーシング」を用いることでどのような効果を得ることができるのでしょうか。 Nvidiaの公式Youtubeチャンネルに上がっていた例をいくつか紹介します。
ビルへの反射
細かいことですが、このガラス張りのビルにくっきりと景色が映えているのもレイトレーシングのおかげです。このレイトレーシング処理を行わないと右図のようにぼんやりとした何となくの反射になってしまいます。 レイトレーシング処理を行わなくても、これくらいの反射であれば左の図のように描画できると思いますが、やはり光の動きはシミュレーションするのが一番効率的かつリアルです。
水槽
上の図は水槽のガラスに周りの景色が映りつつ、中にある潜水艦のようなものにも光が映っているという複雑な状況です。
こんな時、従来の処理では複雑すぎてうまく光の描画を行うことができませんが、レイトレーシング処理を行えばすべての水槽の中の物質にも、水槽のガラス自体にもうまく光を反射させることができます。
もちろんこれらのレイトレーシングの処理にはたくさんの処理能力が必要になってくるわけですがそれでもレイトレーシングのおかげでかなり効率的に光を描くことができています。
以上でレイトレーシングの説明は終わりです。これからの3Dゲームではよりリアリティを求めて確実にレイトレーシングが多用されるようになるでしょう。そしていつかゲーム内に「世界」を作ることができるようになるかもしれませんね。
※私はレイトレーシングのプロではないので一部の説明に誤りがあるかもしれませんが、ご了承ください。