This is the documentation for Enlighten.

7.1.1.2.3. ディレクショナル イラディアンスのための解決

イラディアンスだけでなく、ディレクショナル イラディアンスを解決する方法は 2 つあります。輝度ベースでの主要な間接光の方向を含む単一のディレクショナル出力テクスチャでは、イラディアンスのための解決セクションのコード例に従って、以下を追加します。

irradianceTask.m_DirectionalOutput       = directionalOutput;
 
irradianceTask.m_DirectionalOutputStride = radCore->m_MetaData.m_OutputWidth;
// ここではストライド = 幅とみなしていますが、常に正しいわけではありません。

もう 1 つの方法として、間接光の赤、緑、青コンポーネント向けに個別にディレクショナル イラディアンスを解決するには、イラディアンスのための解決セクションのコード例に従って以下を追加します (赤のディレクショナル出力データでは m_DirectionalOutput が再使用されています)。

irradianceTask.m_DirectionalOutput       = directionalOutputR;
irradianceTask.m_DirectionalOutputG      = directionalOutputG;
irradianceTask.m_DirectionalOutputB      = directionalOutputB;
 
irradianceTask.m_DirectionalOutputStride = radCore->m_MetaData.m_OutputWidth;
// ここではストライド = 幅とみなしていますが、常に正しいわけではありません。

どちらのケースでも、イラディアンス単体については同じ関数呼び出し (SolveIrradianceTask) を行います。ディレクショナル出力データのテクスチャ形式は常に各ピクセルのチャンネルあたり 8 ビットです。主要な方向 {x、y、z} は、それぞれ { r、 g、 b } チャネルに格納されており、リスケーリング係数はアルファ チャネルに格納されています。出力のバイト オーダーはタスクの m_OutputFormatByteOrder パラメーターで制御できます。

方向ベクトルの長さは、入射光の「方向性」に対応します。ライトが完全に単一方向から集中している場合は、方向ベクトルの長さは 1 です。長さが 1 未満の場合、ライトは複数方向から来ています。ライトが半球全体に均等に分散している場合、方向ベクトルの長さは 0.5 であり、一部の光の分散では長さが 0 になることもある点に注意してください。