【Watch記事検索】
最新ニュース
【11月30日】
【11月29日】
【11月28日】
【11月27日】
【11月26日】

3Dゲームファンのための「Half-Life 2: Lost Coast」エンジン講座
「Lost Coast」が実現するリアルHDRレンダリングの衝撃

5月18日~20日開催(現地時間)

会場:Los Angeles Convention Center

 E3会期中、Microsoftが運営するPCゲーム展示セクションである「Windows Gamingブース」にて、さりげなく展示されていたのが「Half-Life 2: Lost Coast」と名付けられた作品だ。経緯はどうあれ、世界的に有名になった「Half-Life 2」。このロゴに引き寄せられ、多くの来場者がこの展示マシンを取り囲んだ。

 「Half-Life 2: Lost Coast」とはいったいなにものなのか。今回は「Lost Coast」によって「Half-life 2」がどう進化するのか、そしてこの「Lost Coast」のコアとなるHDRレンダリング技術についてじっくり紹介していくことにしたい。

 なお、文末に「Half-Life 2: Lost Coast」テクノロジーデモの映像を掲載しているので、興味を覚えた3Dゲームファンはぜひ一度見ておいてほしい。

■ 「Lost Coast」はとどのつまりはHDRレンダリングパスのアップデートパッチ

丁度、デモ機のところに、Valve SoftwareのプログラマRobin Walker氏がいたので説明をして頂いた
 今回発表された「Half-Life 2: Lost Coast」(以下HL2LC)とは、簡単に言えば「Half-Life 2」エンジンのアップデートに相当するものだという。言い方を変えればHalf-Life2の「Lost Coastパッチ」というようなイメージだろうか。

 この「Lost Coast」パッチを適用することで、「Half-Life 2」がどう変わるのかと言えばそれはハイダイナミックレンジ(HDR)レンダリング・パスの洗練化。裏を返すと「それ以外には何も変わらない」(Walker氏)。

 そして、このエンジンのHDRレンダリング機能アップデートを記念して(?)、シングルプレイヤーモードの新ステージを提供するのだそうだ。新ステージは、「Half-Life 2」本編の中盤あたり、「Highway 17」の章を補間する内容になる。フレームむき出しのバギーで疾走した、あの海岸線のシーン。あのあたりだ。

 提供時期は今年2005年夏を予定。既に「Half-Life 2」本編を所有しているユーザーには、開発元Valveのオンラインコンテンツ取引システムであるSteam経由にて無償提供される。

 なお、現在、Valveでは、あの衝撃の「Half-Life 2」ラストシーン以降のエピソードを綴った「正当なる続編」の制作もスタートさせている。こちらは「Half-Life 2: Aftermath(余波)」と命名されており、今のところ、いつ完成するかは公言できない段階だという。

 今回、展示されていたHL2LCは同じ内容を無限ループで繰り返す、デモ映像であったが、この映像もテクノロジーデモムービーとして、夏に提供を開始するとのこと。こちらはBINKムービーのような形式で提供されると見られ、「Half-Life 2」本編ユーザー以外も入手することができると思われる。

■ 「ハイ・ダインミック・レンジ・レンダリング」とはそもそもなんなのか?

人間の視覚のダイナミックレンジ。FP16(64ビット浮動小数点バッファ)であれば、おおよそこのダイナミックレンジをカバーできる
レンダリングしたHDRシーンは任意の露出ポイントでラチチュード補正が可能。これをTONEMAPPINGという
 HL2LCで「HDRレンダリングが洗練された」というが、いったいなにがどう変わったのだろうか。今やPCゲームだけでなく、PS3、Xbox 360などの次世代ゲーム機関連のタイトル紹介を見ていても「HDRレンダリング」のキーワードを目にするようになってきた。まずは、簡単にHDRレンダリングとは何かを振り返りたい。

 現実世界はそれこそ液晶モニタやCRTテレビなどでは表現できないほどの幅の広い「明るさ」に満ちあふれている。

 たとえば、雪に当たる太陽の光は1.0E+6 Lum/m2だというし、夜の森の地表に当たる星の光は1.0E-6 Lum/m2だ。この例をいわゆるコントラスト比換算すれば1012:1ということになり、これを過不足なくレンダリングするためにはダイナミックレンジとして120dBが必要になる。

 いわゆる32ビットカラー(実際には24ビットカラーの1,677万色)では、各RGBが整数8ビット表現(255段階≒102.4)しかないのでダイナミックレンジとしてはわずか24dB。全く足りないことになる。ちなみに、人間の視覚システムはだいたい平均的に120~140dBくらいあると言われている。

 いくら人間の視覚細胞のダイナミックレンジが広くても、実際の人間の視覚システムは明るさのピークに引っ張られて、結局ある範囲の明るさのレンジしか一度に知覚できない。真っ暗な部屋で携帯電話の液晶画面は明るく見えるがこれを太陽下にもっていくと途端に見えにくくなる。これは人間の目が瞳を絞って視覚細胞への光量を調整しているからだ。携帯電話の液晶の明るさ自体は変わらなくても陽光下で見えなくなってしまうのは太陽光の明るさピークに合わせて瞳を絞って光量を制限してしまっているためだ。

 そこで、3Dゲームグラフィックスの世界でも、

(1)現実世界に近いダイナミックレンジでシーンをレンダリングする
(2)人間の視覚システムを模倣した形で、そのシーンのピーク輝度から一定範囲の色のみをディスプレイで表示可能な1,677万色にまるめこむ

としたほうが、「見た目としてリアル」になるんじゃないだろうかという仮定の下、生まれ出でてきたアイディアがHDRレンジレンダリングだ。

 用語的な定義としては(1)そのものがHDRレンダリングを指し、(2)は特に「トーンマッピング(Tone Mapping)」と呼が、今や一般的には(1)(2)の処理系全体をそう呼ぶことが多い。

 なお、1,677万色系に限定した従来のレンダリングシステムをHDRレンダリングに対し、ロー・ダイナミック・レンジ(LDR)レンダリングと呼ぶことがある。

HDRレンダリングのデモはGPUメーカーも提供している。ATIは「Rendering With Natural Light」、NVIDIAは「Timbury」が有名だ


■ HDRレンダリングのメリットとは?

 「結局1,677万色になるんなら意味ないのでは?」という意見もごもっとも。しかし、HDRレンダリングにはいくつかの「リアル」に結びつく“おいしい要素”がある。最もメジャーな2つを挙げるとしよう。

 たとえばアスファルトの反射率は実測によれば約0.07にしか満たないという。1,677万色系で最も明るい光“255”を当てても“17.85”となってしまい、ほとんど真っ黒になる。しかし、現実世界の昼間の太陽光が降り注ぐ世界のアスファルト道路を見ると鈍く光って見える。これは光源となっている太陽光が255どころか、ものすごい高い輝度の光源だから反射率が0.07でも、結果としてちゃんと目に見えるわけだ。

 HDRレンダリングは、1,677万色系に制限されるLDRレンダリングでは見えなくなってしまうようなディテールを見えるようにしてくれる可能性があるのだ。数学的に言えば、誤差の少ないレンダリングができるようになると言うことだ。これが1点目だ。

HDR光源を設定してLDRレンダリングした例。床のディテールは飛び、天井は階調不足が生じてしまっている HDR光源を設定してFP16-64ビットバッファにてHDRレンダリングした例。最終的にLDRバッファに落とし込んで表示しているのだが、床や天井の表現力の違いは一目瞭然


 人間の目やカメラで強い光を見ると、光が溢れ出して見える。たとえばうっそうと木が茂る森の中から太陽を見上げると本来は枝や葉に遮蔽されているはずなのに、木漏れ日がまぶしく溢れ輝いて見え、枝や葉の姿が光に塗りつぶされてよく見えなくなる。これは強い光がレンズ内を散乱したり、目の"まつ毛"で光が回折したりする現象がそう見させている。

 HDRレンダリングしても最終的にはピーク輝度を元に1,677万色LDRレンジに落とし込まれてしまうHDRレンダリングだが、その際に過度に輝いている部分について画像処理的に光を溢れさせる効果を描き込んだらば、より見た目としてリアルな「まぶしさ」を表現できるはずだ。これがHDRレンダリングの“おいしい”2点目だ。

 ただ、こうしたHDRレンダリング結果に対しておこなう「リアルに見えるようにする画像処理」に正しい回答はなく、どう見せるかはゲームエンジン設計者やデザイナ、アーティストにゆだねられる部分だったりする。

 レンダリング結果の強輝度部分にアニメチックな十字や★型の"煌めき"を書き込んだり、単純に強輝度部をただ柔らかくあふれ出したりと、この部分の処理はかなりアーティスティックなセンスに委ねられる。ちなみにこうした「光のあふれ出し」を特にライトブルーミング、グレア効果と呼んだりする。

「DOUBLE S.T.E.A.L.」(ぶんか社)より。高輝度部わから星形状に溢れ出る光の表現。映像中の高輝度部分にどんな「光のあふれ出し」を行なうかはアーティスティックなセンスに委ねられる


■ スプライトベースのレンズフレア表現から疑似HDRレンダリングへの進化

レンズフレア表現が印象的だった「Incoming」(Rage)。ゲームそのものの評価は低かったが、AGPビデオカード黎明期の標準ベンチマークソフトとして活躍した
疑似HDRレンダリングの概念図。CEDEC2002での発表「DOUBLE-S.T.E.A.L.におけるリアルタイムCG表現技法/ぶんか社、川瀬正樹氏」のスライドから
 「まぶしい表現だったら、昔から逆光のレンズフレア表現とかあったよね。Incomingとかの。あれとなにが違うの?」と思う人もいると思う。これは鋭い指摘だ。確かにこれは最も基本的な疑似HDR表現であったが、致命的な欠点があった。

 「Incoming」のレンズフレア表現は太陽やライトなどの、光源を直視したときを判別して出していたに過ぎない。だから「水面に映り込んだ太陽」とか「まばゆく輝く車のボディ」など、「反射の結果が明るい」、言い換えれば「レンダリングした結果として強輝度で輝いている」箇所にはこうしたフレアを出せなかったのだ。

 このレンズフレア的な発想を発展させたのがDirectX 8世代、プログラマブルシェーダ1.x世代に大流行した疑似HDRレンダリングだ。これはレンダリング処理系自体はLDRレンダリングで行なうが、太陽などのものすごく明るく光る光源に対し「HDR光源とみなします」という属性を与える点がキモだ。

 このHDR光源で照らされたピクセルには、通常の陰影処理結果の他に、HDR光源の影響がどのくらいあったかも計算してその結果も合わせて書き込んでいくのだ。

 グラフィックスの各ピクセルはαRGBの四要素からなることは知っている人も多いだろう。この疑似HDRレンダリングでは通常の陰影処理結果はRGBに書き込むようにし、この付加輝度情報はαチャンネルに書き込むようなピクセルシェーダを実行するのだ。本来αチャンネルは透明度合成に使うパラメータだが、これを付加輝度情報の一時記憶先として使ってやるわけだ。

 最終的なレンダリング結果からプログラマブルピクセルシェーダで、このαチャンネルに書き込まれた付加輝度を抽出。高輝度としての結果が残っている箇所に対して光のあふれ出る画像処理をしてやれば疑似HDR映像のできあがりだ。

 強輝度光源を反射した部分にもまぶしい表現を付加できることになり、光源直視時しかまぶしい表現ができなかったクラシックなレンズフレア表現よりも映像に説得力が増す。  ただし、実際のHDRレンダリングでないため、冒頭のアスファルトの例で示したような「誤差の少ないHDRレンダリング」をこの方法で行なうことは難しい。また、前述した(2)トーンマップの実現も一筋縄ではいかない。

「Tom Clancy's SplinterCell」も疑似HDRレンダリングを採用した3Dゲームの代表作の1つだ


■ “本物”のHDRレンダリングとは何か?

 それでは、本当のHDRレンダリングを行なうにはどうしたらよいのか。最も基本的な話として、それには1,677万色系ではない、HDRなレンダリングバッファを確保できるGPU(ビデオカード、あるいはゲーム機)が必要になる。

 結論から言えば、最新世代のGPU、PS3やXbox 360などの次世代ゲーム機はもれなくHDRバッファをサポートしている。そうしたHDRバッファは、いくつかが考案されていて、代表的な物には以下のような物がある。

(a)αチャネルが2ビット、RGBすべてが10ビット整数(Fx10)→32ビットバッファ、1ピクセルあたり4バイト
 ダイナミックレンジとして30dB

(b)RGBすべてが16ビット整数(Fx16)→64ビットバッファ、1ピクセルあたり8バイト
 ダイナミックレンジとして48dB。1,677万色LDRバッファの2倍

(c)αRGBすべてが16ビット浮動小数点実数(FP16)→64ビットバッファ、1ピクセルあたり8バイト
 ダイナミックレンジとして100dB。人間の視覚システムをおおよそカバーできる

(d)αRGBすべてが32ビット浮動小数点実数(FP32)→128ビットバッファ、1ピクセルあたり16バイト
 ダイナミックレンジとして380dB。人間の視覚システム以上の範囲をカバーできる

E3 2005のSCEプレスカンファレンスでは、PS3が128ビットHDRバッファに対応していることがアピールされた。しかし、帯域を食い過ぎる点、PCシステムと比べて使えるビデオメモリが圧倒的に少ない点、などから、やはり使われる機会は少ないと思われる
 (a)Fx10の32ビットバッファは、LDRバッファと同等の帯域で済むHDRバッファなわけだが、その表現幅もLDRに毛が生えた程度。またαチャネルが2ビットという制限、今のところATI RADEON系でしかサポートされていないといった制限もあって、あまり3Dゲームグラフィックス向けには使われないようだ(ATI系GPUを採用するXbox 360で、再び日の目を見るようになる可能性はある)。

 (b)と(c)のHDRバッファは、ATI RADEON9500以上、NVIDIA GeForceFX以降でサポートされる。またPS3、Xbox 360でもサポートされる。

 特に(c)FP16の64ビットバッファは、最新世代GPUや次世代ゲーム機ではαブレンディング、フィルタリングが取り扱えることもあり、その表現幅の広さとLDRバッファ同等の優れた活用性を両立できる点が評価され、3Dゲームグラフィックス用のHDRレンダリングの本命と見なされている。

 一方、(d)FP32の128ビットバッファは表現幅が広すぎて3Dゲーム用としてはいささかオーバースペックなこと、64ビットバッファの2倍もの帯域を消費することから、3Dゲーム向きでないとされている。

PCゲームの世界では「Tom Clancy's SplinterCell: Chaos Theory」「Age of Empires III」など、FP16-64ビットバッファを活用したHDRレンダリングを実装したことを公言するタイトルが増えてきた


■ 「Half-Life 2」のHDRレンダリングは実はニセモノだった?

 なお、オリジナル「Half-Life 2」のHDRレンダリングパスでは当初「(b)Fx16の64ビットバッファを使用している」と発表された。当時のATI RADEON9500以上でもFP16-64ビットバッファもサポートされていたが、αブレンディング、フィルタリングが適用できないという制限があり、これの使用を見送ったようだ。

 一方、Fx16-64ビットバッファの方はαブレンディングには対応できないものの、フィルタリングは活用できる。ちなみにFx16-64ビットバッファはNVIDIA GeForce系ではサポートされていない。にも関わらず採用に踏み切ったのはValve SoftwareがATIとの強力なパートナーシップを結んでいたため。

2003年、Valveは「Half-Life 2」のHDRレンダリングパス実装をアピールするテクノロジーデモを公開した


しかし製品版では、太陽がHDR光源として設定されブルーミングが発生しているのに、水面に映り込んだ太陽には発生していない


 「Half-Life 2」のHDRレンダリングは当初「本物のHDRレンダリングだ」と主張されてきたのだが、おかしな部分も多かった。

 まず、HDR光源を直接見たときには光が溢れ出る等のHDR表現を確認できるのだが、HDR光源の照明をうけた3Dオブジェクトの陰影からはHDR表現が有ったり無かったりしたのだ。

 また、冒頭で触れたトーンマッピング技術を実装して、明るいシーンや暗いシーンからの移り変わりで動的な露出制御をやっていると当初説明していたが、これも実際には怪しかった。

 どうも実際の映像を見る限りでは、「屋内から窓を通して屋外を見たとき」のように、明るいとわかり切っている箇所を意識的に飛ばし(オーバーブライト)気味にレンダリングしているだけのようであり、屋外シーンにてドラスティックに明暗が切り替わるところでは不自然な明暗で、ゲーム自体もプレイしにくかった。

 そこで、今回発表されたHL2LCでは、そうしたHDRレンダリングにまつわる疑惑を払拭し、本物のHDRレンダリングパスを実装したのだという。

こんな感じのトーンマッピングをやっているのかと思わせる表現もあったが……


同一シーンの日陰に入ってもシーンは暗いまま。動的な露出制御がなされているのならば適正な明るさになるはず


■ 「Half-Life 2: Lost Coast」のHDRレンダリングシステムはこうなる!!

天球がHDRに対応したHL2LCではHDR次元のイメージベースド・ライティングに対応する
 それでは、HL2LCエンジンのHDRレンダリングパスはどう進化したのだろうか。これについて、Valveよりリリース資料を頂いたので、「Half-Life 2: Lost Coast」のシーンを参照しながら、資料に記載されていた項目を順番にチェックしていくことにしたい。

●Blooming(ライトブルーミング)

 強輝度の光があふれ出して見える表現であるブルーミング。今回は、一次反射した情景や、HDR光源に照らされた陰影にもブルーミングが現れる。物理照明現象としてオリジナルよりも正しいHDRレンダリングとなった。

●HDR Skybox(HDRスカイボックス)

 Skybox(スカイボックス)とはそのシーンの天球映像のこと。具体的に言えばその名の通り空や雲のこと。HL2LCではこうしたスカイボックステクスチャもHDRバッファに描かれた物を採用する。実際のライティング時には、このHDRスカイボックス自身もHDR光源として処理される。

 このように、テクスチャとして描かれた背景映像全体の陰影を光源とみなして、そのシーンをライティングする処理系を、リアルタイム3Dグラフィックスの世界では「イメージベースド・ライティング」と呼ぶ。言い換えれば、HL2LCではこのイメージベースド・ライティングがHDRに対応したということだ。

●HDR Cube Maps(HDRキューブマップ)

 イメージベースド・ライティングを行なうためには、六面体状の全方位環境マップをレンダリングして生成する必要があるわけだが、HL2LCではこの生成がHDRレンダリングに対応した。

 この生成には、前述のHDRスカイボックス、後述するHDR光源やHDRライトマップがちゃんと正しく配慮される。HDRキューブマップはHDRなキューブ環境マップとしても利用され、映り込み素材として適用される。

●HDR Water Reflection/Refraction(HDR水面反射/屈折)

 オリジナル「Half-Life 2」と違い、水面の映り込んだ情景にもブルーミングが発生するようになる。前述したようにHDRなキューブ環境マップが導入されているので、別段特別な処理を必要とせず自ずと実現される。水面下に潜った状態から水面上の世界を見た情景も同様なHDR処理がなされる。

水面に周りの景色が映り込めば、その映り込んだ景色もHDRであり、強輝度であればそこにもブルーミングが発生する


●HDR Refraction Effect(HDR光屈折効果)

 HDR光源が半透明マテリアルを透過した際、その透過率が正しくHDRに配慮した形で計算されて伝搬される表現。いわゆる光筋の表現がHDRに対応したということのようだ。

HL2LCの新マップでは、廃墟となった修道院が登場し、太陽光はここのステンドグラスを透過して屋内に注ぎ込むわけだが、その透過してきた光は正しくHDR演算されて減衰、ステンドグラスの絵模様を反映した光源として振る舞う


天窓から注ぎ込むHDR光が壁に投射され、その光自体も強輝度であるためブルームを起こして見える
●HDR Light Maps(HDRライトマップ)

 ライトマップとは、光の明暗の分布を表したテクスチャ。画像テキスチャのように取り出したテクセルが描画画素として適用されるのではなく、ライトマップではその明暗テクセルでピクセル単位のライティング処理を行なうもの。懐中電灯などのスポットライトの表現や、局所的に複雑なライティングを行ないたい場合などに使う。

 HL2LCでは、このライトマップがHDRテクスチャベースとなる。なお、このHDRライトマップは、事前処理でそのシーン内の光分布をラジオシティ法を使ってレイトレーシングすることで生成される。

●HDR Light Sources(HDR光源)

 光源の輝度レンジを従来のRGB各8ビットレンジではなく、レンダリング対象バッファと同じようなダイナミックレンジに富んだ多ビット表現値で提供する。

●Exposure Control(露出制御)

 できあがったHDRレンダリング結果を表示するためにLDRへ変換する際、そのシーンの輝度ピークを中心に、もっとも映像が自然に見えやすい色輝度補正をピクセルシェーダで行なう。これは前述したトーンマッピングの処理系のことをいっている。

暗がりから明るいところへ飛び出す瞬間の写真。画面左がLDRレンダリング、画面右がHDRレンダリング。HDRレンダリングの方は、屋外のHDR光に照らされて出口付近の壁がハレーションを起こして眩しくなっている でも、そのまま屋外に行くと、徐々に目が慣れて適正な明るさに見えるようになる


■ Sourceエンジンはさらに進化する~次のお題は影生成!?

 どうやら、今度こそ、「Half-Life 2」は、本物のHDRレンダリングパスを実装したようだ。

 この大がかりなHDRレンダリングパスの進化改良に踏み切れたのは、ATI,NVIDIA両社のGPUが共にHDRレンダリングに関して十分な機能とパフォーマンスを兼ね備えるようになってきたからだろう。

 なお、今回取材を受けて頂いたWalker氏に、今や陳腐と言わざるを得ないクッキー投射ベースの「Half-Life 2」の影生成について聞いてみたところ、こんな返事が返ってきた。

 「影生成ね。それは多くのユーザーから指摘を受けている部分で、Valveでも重要な課題として受け止めている。今回のHL2LCアップデートはHDRレンダリングの強化改良だったが、実は影生成部の強化も研究開発中なんだ。時期は明かせないが、いずれ影生成も最先端なものに進化させたいと思っている。期待して待っててくれ」

 「Half-Life 2」エンジン(正式名はSourceエンジン)の進化に今後も期待したい。

「Half-Life 2: Lost Coast」テクノロジーデモ シーン1
今度は水面に映っている周囲の情景も強輝度箇所はブルームを起こしている。画面が分割されてLDRとHDRとの比較も見られるので注意深く観察してみよう
WMV形式・4分29秒[28.6MB]


「Half-Life 2: Lost Coast」テクノロジーデモ シーン2
トンネル状の階段を駆け上がるシーンに注目。トンネル内にいる時、内壁の陰影が正確に出ている反面、そこから見える屋外が白飛びに近い形で見えている。ところが、今度は屋外へ出ると、露出ポイントが変更されて屋外にあった見え方になる。これがリアルタイムなトーンマッピングによる効果だ
WMV形式・3分52秒[28.8MB]


(C) 2005 Valve Corporation. All rights reserved. Valve, the Valve logo, Half-Life, the Half-Life logo, and the Lambda logo are trademarks and/or registered trademarks of Valve Corporation.Sierra and the Sierra logo are registered trademarks or trademarks of Sierra Entertainment Inc., in the U.S. and/or other countries. Vivendi Universal Games and the Vivendi Universal Games logo are trademarks of Vivendi Universal Games Inc.

□Valve Softwareのホームページ
http://www.valvesoftware.com/
□「Half-Life 2」の公式ページ(英文)
http://www.half-life2.com/
□関連情報
【2003年5月23日】3Dゲームファンのための「Half-Life 2」エンジン講座(前編)
ゲームエンジンはついに地球シミュレーションの領域に突入する!!
http://game.watch.impress.co.jp/docs/20030523/e3valve1.htm
【2003年5月26日】3Dゲームファンのための「Half-Life 2」エンジン講座(後編)
ゲームエンジンはついに地球シミュレーションの領域に突入する!!
http://game.watch.impress.co.jp/docs/20030526/e3valve2.htm

(2005年5月25日)

[Reported by トライゼット西川善司]


Q&A、ゲームの攻略などに関する質問はお受けしておりません
また、弊誌に掲載された写真、文章の転載、使用に関しましては一切お断わりいたします

ウォッチ編集部内GAME Watch担当game-watch@impress.co.jp

Copyright (c)2005 Impress Corporation, an Impress Group company. All rights reserved.