近似间接漫反射

Approximate Indirect Diffuse

我正致力于在我的渲染器中实现间接漫反射,我正在查看第 8.4.1 节 of this paper from Valve

在我的渲染器中,我有一个 256x256x256 的体素网格,注入了辐射和阴影,我试图 convert/use 论文中的这个片段来计算我的体素的环境光照:

float3 AmbientLight( const float3 worldNormal )
{
  float3 nSquared = worldNormal * worldNormal;
  int3 isNegative = ( worldNormal < 0.0 );
  float3 linearColor;
  linearColor = nSquared.x * cAmbientCube[isNegative.x]   +
                nSquared.y * cAmbientCube[isNegative.y+2] +
                nSquared.z * cAmbientCube[isNegative.z+4];
  return linearColor;
}

问题是在计算中无法弄清楚cAmbientCube是什么...

这个变量是什么,它来自哪里?

论文的 8.4.1 部分(您从中复制了代码)对它进行了相当多的解释。 cAmbientCube 是一个包含六个光值的数组,每个主方向一个:负 x、正 x、负 y、正 y、负 z、正 z。虽然典型的环境项被假定为从各个方向照亮的恒定光,但论文中描述的环境立方体技术是对此的概括,它假设每个方向都有不同的光。您发布的代码负责从这个特殊的六面立方体贴图纹理中采样。