【问题标题】:Lightmapping with Voxel Geometry使用体素几何体进行光照贴图
【发布时间】:2013-02-27 04:59:20
【问题描述】:

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

值得注意的是,到目前为止,我的整个地图都是由块 (64x64x64) 组成的 3 维数组。在一个非常基本的人脸减少算法之后,我正在查看 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 结合起来是否相当简单?

【问题讨论】:

  • 每张脸都有不同的纹理吗?您是否为每个立方体单独调用drawprimitive?此外,如果您将“体素”密度提高 4 倍,它对帧速率的影响有多大?我怀疑您受照明的限制较少,而受非最佳渲染选择的限制更多...
  • 不,我已经做了很多工作来最小化批次计数。我使用大约 32 个绘制调用渲染每个立方体,并且没有着色器,我每秒获得大约 900 帧。
  • 另外,我的工作不需要超高体素密度。 64-128 的场跨度就足够了,而且我得到了非常好的帧速率。
  • 32 次抽奖!?每帧有多少次绘制调用?
  • 我每帧总共使用了大约 40 个绘制调用,这确实很少。

标签: c++ direct3d directx-9 direct3d9


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-05-27
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多