お気に入りタイトル/ワード

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

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

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

LINEで4Gamerアカウントを登録
NVIDIAが公式blogで「レイトレーシングの歴史」を振り返る
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2018/08/10 16:58

リリース

NVIDIAが公式blogで「レイトレーシングの歴史」を振り返る

レイトレーシングの先駆者が明かす、グローバルイルミネーションに巡り会うまでの経緯
配信元 NVIDIA 配信日 2018/08/10

<以下,メーカー発表文の内容をそのまま掲載しています>

レイトレーシングの先駆者が明かす、グローバルイルミネーションに巡り会うまでの経緯
執筆者:J. Turner Whitted

執筆者:みなさんはレイトレーシングのことを聞いたことがないかもしれませんが、見たことはあるはずです。このグラフィックスレンダリング技術は、現実世界での光の働きを模倣するもので、ほぼすべての近代映画において、特殊効果を織り込む手法として採用されています。NVIDIA では RTX リアルタイム レイトレーシング技術を通じて、この洗練された手法をより速く、より簡単に利用できるようにし、映画のような品質をゲームや製品デザインの分野でも実現可能にする取り組みを推進しています。今、NVIDIA では、この技術の先駆者の1 人であるJ. Turner Whitted 氏が知る、レイトレーシングの発展に関する数多くストーリーを共有したいと考えています。現在、NVIDIA Research に所属する Whitted 氏は、現代のレイトレース法コンピュータグラフィックスの基礎を築いたと高く評価されている論文「An Improved Illumination Model for Shaded Display」の執筆者です。

レイトレーシングとグローバル イルミネーション
みなさんの多くが高校の物理で習ったように、レイトレーシングという考えは何世紀も前からありましたが、コンピュータグラフィックスのグローバルイルミネーションの歴史は、比較的浅いものです。

Henri Gouraud やBui Tuong Phong らが提唱した初期のコンピュータグラフィックスのシェーディングモデルでは、光源と表面のある点との空間関係にもとづいて反射が計算されていました。その後、Jim Blinn は、表面の微細構造の相互反射を説明したKen Torrance の論文を参考にして反射モデルを構築しました(後日、そのモデルは、Rob Cook と Ken Torrance 自身によって、広く普及したCook-Torrance shading model へと発展しました)。さらにそのすぐあとに発表されたBlinn とMartin Newell が発表した論文では、光源を周辺環境の360 度テクスチャ マッピングに置き換えた環境マッピングについての記述が紹介されています。

私は、この環境マッピングの発展に興味を抱きました。光沢のあるティーポットのレンダリングとその表面に映されているドアと窓には、私が想像していた、コンピュータで生成されたイメージを凌駕するリアルさがありました。私はそのイメージを何時間も凝視し、これをさらに改良することは可能なのかと考えました。環境マッピングには、レンダリングされているオブジェクトの近くにあるオブジェクトの反射を正確にレンダリングできないという、大きな制限がありました。

Turner Whitted 氏の1979 年のシーグラフ(SIGGRAPH)向け論文に掲載されていたイメージ。ニュージャージー州ホルムデルにあるベル研究所の建物に似せた構造物で、Whitted はこの場所で論文を書き上げました。
画像集 No.001のサムネイル画像 / NVIDIAが公式blogで「レイトレーシングの歴史」を振り返る

Phong のモデルの効果は明らかに部分的なものであり、Torrance のモデルとその派生モデルはきわめて小規模なものです。Blinn とNewell のモデルをその大きさから「グローバル」と分類するのが自然であるように思われました。その結果、「グローバルイルミネーション」という用語が生まています。その当時は、環境マップの限界に左右されることなく、いかにそれを導入するかということが課題となっていました。

レイトレーシングがグローバルイルミネーションの当然の選択肢だという理由
きわめてシンプルなレイトレーシングは、コンピュータ グラフィックスにグローバルイルミネーションを導入するため、当然の選択であるべきでした。イメージ生成のためのレイキャスティングは、IBM のArthur Appel が先がけとなり、MAGI のRobert Goldstein とその仲間たちによって商業化されていました。MAGI は当初、タンク内のラジエーションをトレースするために、マルチバウンスのレイトレーシングを利用していました。キャリア初期の頃、私は海洋音響学に関わっており、海洋の深さを変えることで屈折し、表面から反射される音をレイトレーシングしたダイアグラムがあったのを覚えています。最終的には、そのダイアグラムの記憶が私の脳裏に浮かび上がり、Blinn とNewell が始めたグローバルイルミネーションの手法を改良する方法がはっきりと閃いたのです。

私がレイトレーシングの採用をためらったのは、性能についての懸念があったからです。リアルタイムインタラクション用のコンピュータグラフィックスと映画用のグラフィックスには、いつも少しばかり違いがあります。General Electric の月着陸シミュレーターは、宇宙飛行士を追うために、どうしてもリアルタイムで作動する必要がありました。この制約は、David Evans とIvan Sutherland のフライトシミュレーターおよびユタ大学の関連調査でも課題となりました。Henri Gouraud のスムースシェーディングは、ほぼ費用なしで、リアルタイムで実現しました。Bui Tuong Phong の学位論文のなかのあまり知られていない章のなかには、リアルタイムシェーディングの回路構成についての記述もあります。もっとも、Phong のシェーディングはリアルタイムでは実現できませんでした。

コンピュータグラフィックスの世界を劇的に変えたのは、フレームバッファの登場でした。フレームバッファにより、CRT のリフレッシュレートでイメージをレンダリングするのではなく、あらゆるスピードでレンダリングを行い、静的なイメージをスクリーン上で見ることが可能となりました。また、Ed Catmull のサブディビジョンアルゴリズムとZ バッファを組み合わせることにより、複雑な曲線を持つ表面を、ミリ秒とはいきませんが数分でフレームメモリに任意にレンダリングすることが可能となりました。BlinnとNewell の環境マッピングの所要時間は、フレーム当たり数十分でした。より低いレートでよりリアルなものを作るという、この傾向は、より低いレートのものを試してやろうという勇気を私に与えてくれました。

シャドウ、屈折を加える
1978年、ベル研究所のコンピュータシステムリサーチ研究所にDigital Equipment のPDP-11/45ミニコンピュータと1ピクセル当たり9ビットのフレームバッファが置かれました。これらのリソースとプログラミング言語C の組み合わせは、Blinn とNewell のスキームのレイトレーシングを改良するための理想的な環境となりました(最初のC プログラムを書く前に、Brian Kernighan と Dennis Ritchie のプログラミング マニュアルをもっとよく読むべきでした。アセンブリ言語のプログラマーだった私は、C では再帰処理が可能であることを理解していなかったのです。その代わり、私は、わざわざ自身のスタックを構築し、言語自体に備わっている再帰処理を使わず、マルチバウンスの再帰的なレイトレーシングプログラムを手作業で書きました)。

最終的には、相互反射する球体のイメージがスクリーン上に現れました。Newell も Frank Crow も、初期のイメージにチェッカーボードを入れていましたので、私もそれを真似る必要があると感じました。ここまでは問題なし。この時点で、光源までの追加のレイをトレースするのは、簡単でした。それによって現れるシャドウには少し時間がかかりましたが、追加のコーディングはさほどではなく、やってみるだけの価値はありました。

コーディングを少し代えることで、リスト化されていたレイがツリー化されるようになりました。コンピュータサイエンスのバックグラウンドのない電気技術者兼ハードウェア設計者にとってみれば、これは、これまで取り扱ったことのないデータ構造でした。
にもかかわらず、これはうまくいきました。

1979年、Whitted 氏がコンピュータで生成した、相互に反射し合う球体の画期的なイメージにより、グローバル イルミネーションにおけるレイトレーシングの価値が明らかにされました。
画像集 No.002のサムネイル画像 / NVIDIAが公式blogで「レイトレーシングの歴史」を振り返る

そこで、もしそこまでできるのなら、さらに踏み込み、高校の物理で習ったような屈折を付け加えたらどうだろう、ということになったわけです。これはけっこう苦労しましたが、すばらしい成果が生まれました。

状況に応じたスーパーサンプリングという救済策
想像できるかもしれませんが、これらの積み重なった機能の実行時間は、とんでもないものとなりました。イメージごとのレンダリング時間を推定するために、私は解像度を64 で割って512×512に減らし、時計で時間を測定しました。その時間に64をかけると、フル解像度のレンダリングの時間がある程度正確に推測できました。ただし、フル解像度では目に見えるジャギーを減らす必要があり、スーパーサンプリングがそのための唯一の現実的なアプローチでした。そのときには、推定レンダリング時間は、さらに16倍長くなり、まさにパニック状態となりました。

私は、シーグラフ会議に提出する論文のドラフトを書いており、その論文に含まれるイラストのレンダリングを行っていました。論文提出の期限は間近に迫っていましたが、16倍の時間がかかるスーパーサンプリングを採用したため、推定レンダリング時間は、提出期限を越えてしまいました。スーパーサンプリングを状況に応じて使うという、そのときに閃いたアイディアには、助けられました。必要な場合に追加のサンプルを加えるだけでよかったからです。この方法は数時間のうちに完了し、イラストをレンダリングしながら論文を編集し、この新しいアイデアを同論文に含めることができました。

数か月後のランチの席で、ベル研究所の幹部から、リアルタイムでレイトレーシングができるようになるにはどれくらいの時間がかかるか、と訊ねられました。当時、私たちの新しいVAX-11/780は、1つの画面のピクセル当たりの計算時間が60分の1秒でしたので、私は、Cray スーパーコンピュータをずらりと並べ、ピクセルごとに1台を割り当て、それぞれの上に赤、緑、青の電球をつけることを提案しました。それは、冗談だと受け取られました。しかし、それは冗談ではなかったことがのちにわかったのです。

リアルタイムのレイトレーシング
レイトレーシングに関する、私の1979年の初期の論文では、複数のプロセッサでタスクを分担する方法についての記述があります。その後、レイトレーシングの話のなかで、私は、「驚異的並列(embarrassingly parallel)」という用語を耳にするようになりました。前述の初期論文のなかでも、球体が他の球体のなかに内包される場合の加速化構造のヒントが書かれていました。それから2年も経たないうちに、私はSteve Rubin とコンビを組み、階層的なバウンディングボリュームについての彼のアイデアをレイトレーシングに応用しようとしました。この試みはうまくいき、私たちは、チェッカーボードの上に浮かぶ球体よりも複雑なシーンをレンダリングできるようになりました。しかし、まだリアルタイムではありませんでした。

光と影:窓のなかのこのボトルは、バウンディングボリューム階層を使ったレイトレーシングの加速を紹介した、1980 年のシーグラフ向け論文に掲載されました。
画像集 No.003のサムネイル画像 / NVIDIAが公式blogで「レイトレーシングの歴史」を振り返る

その後の数年間、私は授業用にわかりやすい2つのレイトレーシング教材を執筆しましたが、基本的に私の関心は他のことに移っていました。しかし、他の研究者たちが、加速化手法で代役を務め、実用的ではなかったアルゴリズムを実用的なものに転換してくれました。そのときには、さらなる発展があり、イメージ品質は、球体とチェッカーボードの時代より大幅に進化していました。

このような進化を支えたのは、ムーアの法則の発展と並行処理の実用化でした。コンピュータグラフィックスのリップ・バン・ウィンクルのように、私はおよそ40年後に再び目を覚まし、リアルタイムのレイトレーシングが当たり前のことになっているのを目撃したのです。一体、どうしたのだろう? 何人かのとても賢い人々がそのために懸命に努力をしたのはわかりました。

NVIDIA公式blogのポスト:A Ray-Tracing Pioneer Explains How He Stumbled into Global Illumination(英語)

  • 関連タイトル:

    NVIDIA RTX,Quadro,Tesla

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