每个对象运行时光照贴图

时间:2014-04-10 08:26:37

标签: xna directx coordinates lighting multipass

我正在XNA中构建游戏,但这个问题可能适用于大多数3D框架。

我的场景包含几个点光源。每个灯具有位置,强度,颜色和半径。它还包含几个可被点光源点亮的物体。

我已成功使用一个简单的前向渲染器来点亮这些物体,一次最多可点亮8个点光源。

但是,我还想尝试一些其他效果,例如点亮的物体,每个帧的光慢慢消失

我想使用多通道方法:

  • 每个被点燃的对象都有纹理和光照贴图(rendertexture)

然后,每个框架和每个对象:

  • 清除光照贴图(或淡化它)
  • 使用衰减等将每个灯光绘制到光照贴图中
  • 使用像素着色器
  • 中的纹理*光照贴图渲染对象

我的问题与纹理坐标有关。光照贴图应使用与纹理贴图相同的UV贴图,以便在绘制对象时,颜色为:

tex2D(TextureSampler, uv) * tex2D(LightMapSampler, uv)

或者换句话说,我需要计算光照贴图像素着色器中光照贴图中每个像素的世界位置,以计算它与每个光线的距离。

实现这一目标需要哪些坐标变换?

0 个答案:

没有答案