This is the documentation for Enlighten.

13.1. Enlighten SDK 3.1 リリース ノート


新機能

Enlighten の実装を促進するための新しいドキュメントとサンプルです。

  • アーティストのワークフローを追加し、アーティスト向けの効果的なワークフローの提供を支援しています。
  • 実装ガイドセクションを追加し、 エンジンに Enlighten パイプラインとワークフローの実装を支援しています。
  • Sample PipelineSample Runtime アプリケーションにより、主要な Enlighten の機能を実装する方法を実演します。

ツールへのプリコンピュート パイプラインの実装を簡素化します:  Enlighten Pipeline ライブラリ (アーリー アクセス)。

大規模なワールドのプリコンピュートがスピードアップしました。 

  • 新しいプローブの領域オブジェクトにより、大規模なワールドでの自動プローブ配置の実装を簡単かつ効率的に行えます。
  • インスタンス、プローブの領域、キューブ マップをゾーンにグループ化し、ラジオシティの依存関係を制限して、大規模なワールドでのプリコンピュートにかかるメモリ使用量と時間を制限します。
  • インスタンスをゾーンごとにグループ化し、プリコンピュート中にラジオシティ システムを自動的に生成します。 

改善点

新しいプローブ セットを大量に追加する際に、コンソール プラットフォームでの AddPppiProbeSet にかかる時間を短縮しました。

高レベル ランタイム API の合理化:

  • 高レベル ランタイムピクセルごとのプローブ ライティングを追加しました。
  • 単一のライトマップ LOD を持つシステムを割り当てる簡単な方法を追加しました。出力テクスチャのセットを受け取る AllocateSystem オーバーロードを使用します。
  • 出力テクスチャは、常に更新マネージャーが作成されたものと同じスレッドで解放されるようになりました。
  • オブジェクト パラメーターを設定する際のバイナリ サーチは不要になりました。オブジェクトに対するポインターを取る、代わりの EnqueueSetObjectParameter 実装を追加します。

ランタイム マテリアル カラー API の簡素化:

  • 新しい関数 InitialiseMaterialDynamicity および SetMaterialAlbedoColour を追加しました。これはGUID のセットではなく、SurfaceSelection を使用してシステムのサーフェスを識別します。
  • 実装を簡素化するには、IPrecompInputMesh::AddMaterialGuidMapping が選択できるようになり、メッシュ オブジェクトgeommeshmaterial 要素の guid 属性を指定する必要がなくなりました。

Visual Studio ビルド:

  • Visual Studio 2017 15.7.1 および MSVC ツール バージョン 14.14.26428 でコンパイルされた Win32、Win64、XboxOne 向けの事前ビルドされたバイナリを追加しました
  • CodeBuildTool は現在、Visual Studio 2017 と MSVC ツール バージョン 14.14 以降でのビルドをサポートしています。
  • Enlighten は、-std:c++17 オプションで MSVC によりコンパイルされたプロジェクトで使用できるようになりました。
  • Visual Studio でビルドされた Enlighten 静的ライブラリには、.lib ファイルに組み込まれたデバッグ情報が含まれるようになりました。これらのライブラリ用の別の .pdb ファイルは不要になりました。Enlighten コードのデバッグ能力に対する影響はありません。

バグ修正

  • BaseSystem::SetAlbedoData に提供されるバッファは、同じバッファを未指定のままにする後続の呼び出しではオーバーライドされなくなりました。
  • ワールドの特定の場所だけで発生する、ピクセルごとのプローブ ライティング出力のシームを修正しました。
  • 壁の近くの一部のエリアで、ピクセルごとのプローブ ライティングが消える現象を修正しました。
  • プローブ グリッドに対して厳密に揃えられたサーフェスに対してピクセルごとのプローブ ライティングを使用する場合の少量のライティング アーティファクトを修正しました。
  • デバッグと最適化された Windows ビルドの間で出力の違いを生じさせる、Enlighten::EncodeRGBM でのゼロ除算を修正しました。

非推奨

全般:

コア ランタイム:

  • SetMaterialAlbedoColour でのインスタンス、マテリアル、メッシュ GUID の使用は非推奨になりました。以下のアップグレード ノートを参照してください。
  • 低レベル API 関数である IPrecompSystemDependencies::SaveAsXml および IPrecompSystemDependencies::SaveBodyAsXml は非推奨になりました。
  • SetSamplePositions は非推奨になりました。代わりに、プリコンピュートされたサンプル位置を使用してください。
  • InputWorkspaceDebugPoint::m_LightValue は非推奨になりました。代わりに、GetInputLightingBufferLightValue を使用してください。
  • InputWorkspaceDebugPoint::m_Albedo は非推奨になりました。代わりに、GetDebugAlbedoValue を使用してください。
  • InputWorkspaceDebugPoint::m_AreaLightId は非推奨になりました。代わりに、GetDebugEmissiveValue を使用してください。

High Level Build System:

  • High Level Build System:: の OptimiseScene ターゲットは非推奨になりました。プリコンピュート中は、インスタンスをラジオシティ システムに自動的にグループ分けすることをお勧めします。以下のアップグレード ノートを参照してください。
  • Enlighten シーンprobeOctree 要素は非推奨になりました。以下のアップグレード ノートを参照してください。

高レベル ランタイム:

  • MultithreadCpuUpdateManager::Create に対する ILogHandler 引数は非推奨になりました。以下のアップグレード ノートを参照してください。
  • IGpuTextureAllocator は非推奨になりました。以下のアップグレード ノートを参照してください。
  • IUpdateManager::IsSystemStatic、IsProbeSetStatic、IsCubeMapStatic は非推奨になりました。
  • 高レベル ランタイムでレガシー プローブ セット ソルバーを使用するオプションは非推奨になりました。
  • IUpdateManager::EnqueueAddDynamicObject での useVolumeTexture オプションの使用は非推奨になりました。大きく移動するメッシュのライティングでは、ピクセルごとのプローブ ライティングの使用をお勧めします。
  • IUpdateManager::EnqueueRemoveSystem の REMOVE_UPDATES_AND_INPUT オプションは非推奨になりました。代わりに、REMOVE_COMPLETELY を使用してください。

ビルド構成:

  • Visual Studio 2013 のサポートは将来非推奨になる予定です。必要な場合はお知らせください。
  • Visual Studio 2012 のサポートは非推奨になりました。事前にビルドされたバイナリは、要求に応じて提供可能です。
  • 以下のプロジェクトについて、32 ビットのサポートが非推奨になりました。事前にビルドされたバイナリについては要求に応じて提供可能です。
    • コア ライブラリ:EnlightenPrecomp2、EnlightenBake、GeoRayTrace。 
    • サンプル フレームワーク ライブラリ:GeoLua、GeoUI、OpenExr。
    • サンプル フレームワーク アプリケーション:GeoConvert、GeoPrecompute、GeoPrecompMonitor、GeoPrecomp2、GeoRadiosity、BasicRadiosity2、BasicLightmapBaking。

削除

  • Forge は、サンプル フレームワークの一部として含まれなくなりました。Enlighten の実装方法の例としては、SamplePipeline と SampleRuntime の使用をお勧めします。
  • Visual Studio 2010 は以前のリリースで非推奨となり、今回からサポートされなくなりました。現在、Visual Studio 2010 でコンパイルされた、事前にビルドされたバイナリは提供していません。
  • 現在、WindowsExtra パッケージには、EnlightenPrecomp2、EnlightenBake、GeoRayTrace 向けの事前にビルドされたバイナリのみが含まれています。残っている Enlighten ライブラリの確認済みまたは静的構成をビルドする必要がある場合は、これらの説明に従ってソースからコンパイルしてください。
  • PlayStation Vita のサポートは終了しました。
  • Windows Phone と Windows RT プラットフォームのサポートは終了しました。
  • GroupInstancesIntoSystems 関数は以前のリリースで非推奨になり、今回削除されました。
  • BaseProbeSet::GetAndClearUpdated は以前のリリースで非推奨になり、今回削除されました。

アップグレード ノート

コア ランタイム:

  • マテリアル GUID を使用して一様なマテリアル カラー データを提供している場合、以下の方法で実装を更新し、SurfaceSelection を使用してください。
    1. 実装ガイドの説明にあるように、マテリアル GUID でシステムの各サーフェスを関連付けるためのマッピングを構築します。
    2. または、各メッシュ オブジェクトのマテリアル要素から guid 属性を削除し、IPrecompInputMesh::AddMaterialGuidMapping への呼び出しを削除します。
    3. 既定のマテリアル GUID に対して一様なカラーを提供するには、その GUID に関連付けられている各サーフェスの SurfaceSelection で SetMaterialAlbedoColour を呼び出します。

      SamplePipeline と SampleRuntime プロジェクトは、実行時に使用するマテリアル カラー データを作成する方法を示しています。

  • キューブマップ出力テクスチャのアルファ チャネルは、エミッシブ環境が提供されている場合にのみ、そのエミッシブ環境から来る光の割合を示すようになりました。値が 0 の場合、すべての入力光がエミッシブ環境からのものであることを示し、値が 1 の場合、すべての入力光がラジオシティ システムからのものであることを示します。Enlighten 3.09 では、エミッシブ環境が提供されていないときにのみ発生します。実装でキューブマップ出力テクスチャのアルファ チャネルを使用している場合、この動作に関する変更に対応するために、実装を更新しなければならない可能性があります。

高レベル ランタイム:

  • 高レベル ランタイムでは、Entire Probe Set Solver を使用するようになりました。Entire Probe Set Solver のラジオシティ データは小さく、過去のプローブ ソルバーよりも速度が大幅に向上しています。非推奨の警告を回避するには、UpdateManagerProperties::m_UseEntireProbeSetSolver を設定しないままにしておきます。
  • デフォルトで、更新マネージャーはシステム、プローブ セット、キューブマップの継続的な更新を行うようになりました。INFINITE_UPDATES による EnqueueSetAllUpdateCounters への呼び出しは冗長になったため、安全に削除してランタイムのオーバーヘッドを減らすことができます。以前の動作に戻すには、UpdateManagerProperties::m_UpdateCounterDefault = 0 に設定します。
  • MultithreadCpuUpdateManager::Create に対する ILogHandler 引数は不要になりました。高レベル ランタイムの警告およびエラー出力を取得するには、更新マネージャーを作成する前に GeoAttachLogger を呼び出します。
  • テクスチャ アロケーターは不要になりました。高レベル ランタイムに出力テクスチャを提供するには、以下を行います。
    1. UpdateManagerProperties::m_TextureAllocator を設定しないままにしておきます。
    2. GetOutputTextureSize を呼び出して、システムの出力テクスチャの幅と高さを確認します。
    3. 以前の IGpuTextureAllocator::Create 実装の結果により、IUpdateManager::AllocateSystem を呼び出します。
    4. 以下の例から始め、イラディアンス出力形式が IUpdateManagerProperties::m_IrradianceOutputFormat と一致するように変更します。 

      Enlighten::IGpuTexture* outputTextures[Enlighten::ENLIGHTEN_NUM_OUTPUT_TEXTURE_TYPES] = {
          myAllocator.Create(width, height, TextureFormat_A16B16G16R16F), // イラディアンス: 適切なテクスチャ形式を置き換え、Enlighten::eOutputFormat をご覧ください
          myAllocator.Create(width, height, TextureFormat_A8R8G8B8), // directional
      };

      SampleRuntime プロジェクトは、システムとキューブマップに出力テクスチャを提供する方法を示します。

  • 高レベル ランタイムは、常に指定した出力テクスチャの所有権を得るようになりました。高レベル ランタイム:が IGpuTexture::Release の実装を呼び出すまで、出力テクスチャを削除しないでください。
  • 既存のピクセルごとのプローブ ライティングの実装を更新するには、実装ガイドに従ってください。高レベル ランタイムを使用する場合は、既存のPppiManager インスタンスを PppiWorld に置き換えてください。
  • BaseProbeSet::m_SelectedLod はプライベートになりました。代わりに、BaseProbeSet::SetLod を使用してください。

High Level Build System:

  • 作成したシーン ファイルに問題がある場合、ビルド システムがエラーを報告し、停止するようになりました。そのままプリコンピュートを続ける場合、コマンド ラインで /p:Permissive を指定します。
  • 実装がインスタンスをラジオシティ システムにグループ化する方法を簡素化するには、プリコンピュートが自動的にインスタンスをグループ化できるように許可します。 
    1. ラジオシティ インスタンスからsystemId および systemGuid 属性を削除します。
    2. zone 属性を使用してインスタンスをできる限り少ないグループにまとめます。ワールドがストリーミングのためにいくつかのまとまりに分割されている場合、zone 属性を使用してそれぞれのまとまりについて、インスタンスを単一のゾーンにグループ化します。
    3. プリコンピュートの後、各ゾーンについて、IPrecompGeneratedSystems オブジェクトをロードして、それぞれ自動的にグループ化されたシステムEnlighten ランタイム データを識別します。
    4. プリコンピュートをスピードアップするためにラジオシティの依存関係を制限する必要がある場合、各ゾーンにゾーンの依存関係を追加します。
  • プリコンピュートをスピードアップするためにキューブマップのラジオシティの依存関係を制限する必要がある場合、以下を行います。
    1. ワールドがストリーミングのためにいくつかのまとまりに分割されている場合、zone 属性を使用してそれぞれのまとまりについてキューブマップを単一のゾーンにグループ化します。
    2. 各ゾーンに、ゾーンの依存関係を追加します。
  • 実装でプローブ オクトリー オブジェクトを使用している場合、安全かつ簡単に新しいプローブの領域オブジェクトに更新するためには、以下を行います。
    1. IPrecompInputProbeOctree オブジェクトを IPrecompInputProbeRegion オブジェクトに置き換えます。
    2. IPrecompInputProbeOctree::Create への呼び出しを同じ voxelSize 値の IPrecompInputProbeRegion::Create に置き換えます。
    3. IPrecompInputProbeRegion::AddVolume、IPrecompInputProbeRegion::AddPoints、または IPrecompInputProbeRegion::AddBoxes を呼び出して、以前 IPrecompInputProbeOctree::Create に指定したものと同じ入力を指定します。 
    4. Enlighten シーンの各 probeOctree 要素を、同じ nameprobeRegion 要素に置き換えます。
    5. probeRegion 要素の zone 属性を name 属性と同じ値に設定します。
    6. プリコンピュートをスピードアップするためにラジオシティの依存関係を制限する必要がある場合、各ゾーンにゾーンの依存関係を追加します。