1

在编写游戏引擎的渲染端时,我现在似乎陷入了困境。我最初的计划是至少使用 HLSL 实现每个像素的动态光照,并让光照缓冲区与着色器通信,最多可以使用 8 个光照。

需要注意的是,到目前为止,我的整个地图都是由块组成的 3 维数组(64x64x64)。在一个非常基本的人脸减少算法之后,我正在查看 32x32x32x6 人脸,以便在最坏的情况下进行渲染。我将使用其他方法来减少负载,但首先我想解决这个问题。

目前,在着色器中有 8 个灯,我使用 GTX 470 获得了大约 60-120 的帧速率,这是一张不错的卡。显然,我必须研究许多其他优化,但由于动态光照对我来说并不重要(至少对于 8 盏灯来说不是),我一直在研究光照贴图。

如果我每个面有 4x4 流明,我正在为我的整个关卡的光照贴图寻找一个纹理图集,它是 32x32x32x6x16 大,每个像素 4 个字节。这就是我要使用的纹理,即 2048x2048(最接近的 2 次幂分辨率)。

我已经查看了几个来源,尤其是这个,http://www.flipcode.com/archives/Light_Mapping_Theory_and_Implementation.shtml,虽然我掌握了如何使用基本场景来实现它,但我对如何我可以用我当前的几何情况来实现它。

所以这是我的问题。有一个更好的方法吗?这种大小的光照贴图可以使用吗?我对每张脸使用 4x4 lumels 感觉很舒服,因为双线性过滤最终似乎真的使事情变得平滑了。此外,将静态光照贴图系统与每像素动态的光照贴图系统与 HLSL 结合起来是否相当简单?

4

1 回答 1

1

http://www.rastertek.com/dx10tut18.html

您使用的纹理将是“超级纹理”内的 4x4 迷你纹理。查看该链接,但老实说,您并没有付出太多。

于 2013-07-23T22:51:38.007 回答