This is the documentation for Enlighten.

7.1. 低レベル ランタイム


低レベル ランタイム API は、制御を最大限にし、その使用に関する推定を最小限に留めます。具体的には、メモリの割り当てやファイルシステム操作をまったく行いません。これは、パフォーマンスの影響を受けないクロスプラットフォーム API であり、必要な部分にのみ各プラットフォームの違いがあります。詳細については、コア ランタイム API の参考ドキュメントをご覧ください。

ほとんどのケースでは、Enlighten の最も一般的なユースケースに効率的に対応する高レベル ランタイムの使用をお勧めします。

概要

低レベル ランタイム API 関数は、バッファ オブジェクトの読み取りと書き込みを行います。非常に時間のかかる可能性がある関数はすべて、API で「タスク」と呼ばれ、入力と出力にバッファを受け入れます。タスクは他のスレッドやプロセッサーに簡単にオフロードできるように設計されています。Enlighten ランタイムはそれ自体がメモリを割り当てることはなく、動作対象のバッファの外で内部状態を保持しません。幅広いバッファの使用により、Enlighten が使用するリソースを完全に制御できますが、結果をキャッシュして、入力に変更がないとわかっている場合に計算をスキップする簡単な方法も提供します。この低レベルアプローチにより、最大限の制御が可能になり、多数の最適化の機会が見つかります。

基本的な概要として、Enlighten ランタイムは直接光の記述を取得し、直接光の情報を入射光 バッファに書き込み、間接光を追加して入力ライティング バッファを作成し、「解決」タスクを実行して間接光の結果を生成します。ワークフローは以下のように視覚化できます。

ワークフローは以下の手順で構成されます。

  1. GPU で計算されたダスターの可視性を提供します (任意)。
  2. 入射光バッファに入力ライティングを書き込みます。入力ライティングをご覧ください。
  3. 入射光バッファから得られる直接入力ライティングとバウンス、アルベド、およびエミッシブを適用した間接光を合成し、入力ライティングバッファを生成する時間的解決のためにライティングの違いを計算します。
  4. ラジオシティを解決します。
  5. 出力テクスチャからライトを再サンプリングし、バウンスバッファを生成します。

共通するのは、直接光がバッファにキャプチャされ、合成され、その後出力を生成するために動作 (解決) するということです。図で示すように、より効率的な動作(時間的な最適化など) 可能にするためのわずかな違いや、追加情報 (追加の可視性データなど) の入力などがあります。その他の情報については、詳しい説明を低レベル ランタイムのウォークスルーでご覧ください。

メッセージ報告およびエラー処理

低レベル ランタイム API の使用時に問題が発生した場合は、GeoAttachSystemLogger/GeoAttachLogger 関数を呼び出してエラーおよび警告メッセージを発行します。その他の情報については、メッセージ報告およびエラー処理に関する API ドキュメントをご覧ください。