This is the documentation for Enlighten.

7.1.3. 低レベル ランタイムのデバッグ


概要

GeoRadiosity は、エンジンにインテグレートできる多くの視覚化サービスを提供します。それまでは、HLBS 経由でエクスポートしたシーンを GeoRadiosity にロードして、見た目を確認できます。(ゲームの) 重要なランタイム データをディスクに保存することにより、GeoRadiosity を使用してインテグレート コードが想定通りに機能しているかどうかを確認し、GeoRadiosity の他のデバッグ機能を使用することもできます。

有効性の確認

NULL、無効、破損したデータをできる限り早く検出するため、すべてのポインターは API 関数への入力時に確認されます。先に自分自身でこれらのオブジェクトを確認したい場合 (ロード後など)、EnlightenDebugging.h のコードに IsValid() があります。メモリにロードできるすべての API オブジェクトについて、オーバーロードを利用できます。また、関数が失敗した際にエラーログにテキスト文字列が含まれるように指定することもできます。

データの生成

これらのデータ オブジェクトはエンジン インテグレートの一部であるため、出力データを保存するために実行する単純なステージはありません。その代わり、視覚化できる各オブジェクトは EnlightenUtils での読み取りと書き込みのメソッドを備えています。これらのファイルを簡単に GeoRadiosity にロードするには、GeoEn2Support/SceneDesc.cpp のファイル名生成関数を使用します。これらのファイル名は、既定のシーンの _Build_XXX_ フォルダのデバッグ サブフォルダ内の場所を指しています。

デバッグ オブジェクト

デバッグに必須のランタイム オブジェクトは以下のとおりです。

InputLightingBuffer
bool GEO_CALL WriteInputLightingBuffer(const Enlighten::InputLightingBuffer* inputLightingBuffer, Geo::IGeoStream& stream);
bool GEO_CALL WriteInputLightingBufferToFile(const Enlighten::InputLightingBuffer* inputLightingBuffer, const Geo::c16* filename);
 
Geo::GeoFileString BuildDebugInputLightingBufferFilename(Geo::s32 systemIdx, Geo::ePlatform platform) const;

入力ライティング バッファは、書き込み/終了入力ライティング ステージのライティング値を保持します。これを GeoRadiosity にロードし、適切なライティングを得ることで、このインテグレートのステージが正しいことが裏付けられます。

RadIrradianceTask
bool WriteRadIrradianceTaskOutput(const RadIrradianceTask* task, Geo::IGeoStream& stream);
bool WriteRadIrradianceTaskOutputToFile(const RadIrradianceTask* task, const Geo::c16* filename);
 
Geo::GeoFileString BuildDebugRadTaskFilename(Geo::s32 systemIdx, Geo::ePlatform platform, Enlighten::eRadTaskDump radTaskType) const;

イラディアンス タスクの正しさは、入力ライティングに依存するため、入力ライティング チェックを最初に実施します。このデータを GeoRadiosity にロードし、適切なライティングを得ることで、イラディアンス ソルバーがインテグレートで正しい値を生成していることが裏付けられます。

RadProbeTask
bool GEO_CALL WriteRadProbeSetCore(const Enlighten::RadProbeSetCore* probeSet, Geo::IGeoStream& stream);
bool GEO_CALL WriteRadProbeSetCoreToFile(const Enlighten::RadProbeSetCore* probeSet, const Geo::c16* filename);
 
Geo::GeoFileString BuildDebugProbeTaskFilename(Geo::s32 probeSetIdx, Geo::ePlatform platform) const;

ラジオシティ プローブ タスクは、動的オブジェクトまたはその他のプローブでライティングされているオブジェクトをデバッグする際に保存する必要があります。これを GeoRadiosity で視覚化するには、 Rendering > ProbeSets オプションを有効化する必要があります。

その他の情報については、API 参考ドキュメントで Debugging Utilities モジュールをご覧ください。