1

我在 HLSL 中有一个代码,旨在模拟 IBL(基于图像的光http://en.wikipedia.org/wiki/Image-based_lighting)。为了模拟 IBL,需要从对象周围的“世界”中获得纹理,我想通过对象的位置动态生成纹理。我有两个问题:

• 如何在物体周围生成360 度的世界纹理?我需要 6 个各 45 度的摄像头,或者只用一个可以做到这一点?

• 我已经知道如何使用“sampleCUBE”映射立方体纹理,但是我在 6 面有相同的图像,如何让每面都有自己的纹理?

http://i.stack.imgur.com/Iz6RZ.png

IBL 出现在 Forza 4 和 Crysys 2 等游戏中。

4

1 回答 1

1

您可能需要 6 次渲染(如果您设置了巨大的 FOV,可能需要 2 次或 4 次,但它会导致失真并且更难使用),或者如果您可以使用立方体贴图作为渲染目标或使用某种类型,您可以单程渲染它渲染到球形地图链接如果没有完整的图片,您将没有足够的数据来处理。但这些渲染可能包括非常基本的着色器和低分辨率输出。此外,您不需要每帧刷新它们,而是可以稍微移动纹理,每 5 帧刷新近物体,每 10 帧刷新远物体。最重要的是,您只需要在可见部分上使用“基于图像的光”,因此您最多只能使用 3 遍而不是 6 遍。

于 2012-11-24T16:06:57.993 回答