我正在努力在我的渲染器中实现间接漫反射,我正在查看第8.4.1节of this paper from Valve。
在我的渲染器中我有一个256x256x256的体素网格,注入了辐射和阴影,我试图转换/使用纸上的这个片段来计算环境照明对我的体素:
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是什么......
这个变量是什么?它来自哪里?
答案 0 :(得分:1)
本文的8.4.1部分,您从中复制了代码,几乎解释了它。 cAmbientCube
是六个光值的数组,每个主方向一个:负x,正x,负y,正y,负z,正z。虽然典型的环境术语被假定为从所有方向照射的恒定光,但本文中描述的环境立方体技术是对此的概括,其假设来自这些方向中的每一个的不同光。您发布的代码负责从这个特殊的六边形立方体贴图纹理中进行采样。