近似间接漫反射

时间:2016-10-15 01:54:14

标签: opengl opengl-es glsl glsles

我正在努力在我的渲染器中实现间接漫反射,我正在查看第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是什么......

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

1 个答案:

答案 0 :(得分:1)

本文的8.4.1部分,您从中复制了代码,几乎解释了它。 cAmbientCube是六个光值的数组,每个主方向一个:负x,正x,负y,正y,负z,正z。虽然典型的环境术语被假定为从所有方向照射的恒定光,但本文中描述的环境立方体技术是对此的概括,其假设来自这些方向中的每一个的不同光。您发布的代码负责从这个特殊的六边形立方体贴图纹理中进行采样。