Fenris Creationsは、ゲーム画面の陰影をリアルタイムに計算する技術「CORTAO」をオープンソースで公開しました。 画面に映る情報から周囲の物体による光の遮られ方を計算し、物体の接触部分や複雑な構造に奥行きのある陰影を加えます。 開発中の宇宙サバイバルMMO「EVE Frontier」でも使われています。
画面内の情報から環境光の遮蔽を計算
CORTAOは、環境光遮蔽と呼ばれる効果を画面内の情報から求める技術です。 環境光遮蔽は、近くの面が周囲からの光を遮ることで生じる、接触部分や隅の微妙な暗がりを表します。 物体同士の位置関係や形状を見分けやすくする効果があります。
画面の奥行き情報をサンプリングし、各画素の周囲にある面を円形の遮蔽物で近似します。 その近似形状に対して光線を追跡し、光が遮られる度合いを計算します。 事前に計算した参照表を使い、1画素当たり最大32本の光線を扱います。
CORTAOは、シーンの陰影をあらかじめ焼き込んだデータを使わずに計算します。 宇宙の広い空間や大規模な戦闘、巨大構造物、建物の内部など、異なる規模の場面を含むEVE Frontierで使われています。 Carbon Engine向けの実装は、同作の広い奥行き範囲に合わせて調整されています。
従来手法との比較と画面外の制約
開発者のDaniel Isheden氏は、従来の画面空間アンビエントオクルージョン(SSAO)手法では、カメラに正対しない傾いた面の遮蔽を正確に計算しにくいとしています。 比較対象のGTAOは、環境光の遮蔽を物理的なモデルに基づいて計算する手法です。 Isheden氏は、CORTAOが円形の近似形状に光線を追跡することで、この問題を回避するとしています。
Isheden氏らは、単純な場面でCORTAOがGTAOと同水準の精度と品質を半分未満のGPU処理時間で達成したとしています。 同じGPU処理時間では、平均二乗誤差が最大でGTAOの4分の1になったとしています。 奥行きが大きく変わる箇所の多い複雑な場面でも、低いサンプル数で誤差が小さかったとのことです。
一方、CORTAOの計算には画面内の奥行き情報が使われます。 一般に画面空間方式では、視野の外や奥行きバッファーの表面の裏にある遮蔽物が見えないため、遮蔽を過小に見積もる制約があります。 サンプルのばらつきも制約の一つで、フィルタリングによって対処します。
描画処理と開発環境の条件
CORTAOは、事前処理、中心となる計算処理、任意のフィルター処理で構成されます。 事前処理では奥行きと面の向きの情報をまとめ、中心の処理で遮蔽を計算します。 光が遮られていない方向の平均を表す「ベントノーマル」も出力できます。
任意のフィルターは、その後の時間方向のフィルタリングでノイズを除去しやすくするためのものです。 CORTAO自体には時間方向のフィルタリングは含まれず、利用者が別途実装します。 計算の入力には、場面の奥行きと面の向きを格納したバッファーを使います。
Carbon Engine向けの実装は、シェーダー言語HLSLのヘッダーとして公開されています。 通常はShader Model 6.7が必要で、旧版向けの回避手順も用意されています。 DirectX 12と、回避手順を適用したDirectX 11で動作が確認されています。
基準実装とCarbon向け実装を公開
CORTAOには、汎用的な基準実装と、Carbon Engine向けに最適化された実装があります。 Carbon Engine向けの実装は、EVE Frontierの極端に広い奥行き範囲を扱うため、画面空間の半径に上限を設けています。 両実装のソースコードと関連文書が公開されています。
CORTAOは多くの既存SSAO技術と同じ種類の入力を使い、同じ種類の出力を生成します。 Carbon Engine向けの実装では、計算に使う座標系はカメラから見た空間です。 対応する投影行列は透視投影に限られます。
Carbon Engine向けの実装では、奥行きと面の向きを一つの中間バッファーに収めます。 このため、16ビットの奥行きバッファーを使う既存のSSAOから切り替える場合は追加のメモリーが必要です。 解像度1920×1080では、CORTAOの中間バッファーは10.5MBです。
EVE Onlineを支える開発会社とエンジン
Fenris Creationsは、1997年にアイスランドのレイキャビクで設立されたゲーム開発会社です。 以前は主にCCP Gamesの名前で活動していました。 宇宙を舞台にしたオンラインゲーム「EVE Online」は2003年5月にサービスを開始しました。
同社のCarbon Engineは、EVE Onlineと開発中のEVE Frontierを支えるゲームエンジンの枠組みです。 物理シミュレーションや経路探索、グラフィックス、ネットワークなどを担う複数のモジュールで構成されます。 Carbon Engineは2026年に完全なオープンソースへの移行を終えています。
CORTAOは、同社のシニアレンダリングエンジニアであるIsheden氏が個人プロジェクトとして開発を始めました。 その後、会社の支援を受けて実際の制作に使う技術へと発展しました。 EVE Onlineでは、Carbon Engineを使った対人戦に8825人が参加した記録があります。











