0

我正在考虑在 DX9 中编写一些执行阴影映射的代码。我只有一个光源的阴影贴图的示例代码。来自多个光源的阴影贴图性能是否可行?我的场景很容易渲染——没有纹理,只有几百或几千个顶点。

问题是我的场景发生在太空中,靠近太阳。我打算将太阳创建为一个球体,并将每个顶点渲染为一个光源——这也将为各种科幻太空飞船效果产生一些良好的效果。但是通读代码,我非常担心这会破坏我的表现,而且我不完全确定它会产生我正在寻找的令人难以置信的照明效果。我只是在这里矫枉过正吗?

4

3 回答 3

1

一种简单的方法来渲染每个投射阴影的多个灯光----->

对于循环中的每盏灯,请执行以下操作:

{

清除 Offscreen RenderTarget 黑色。

仅使用当前灯光渲染场景……在 Offscreen RenderTarget 上。

然后打开 Blending(Add, One to One),将 Offscreen RenderTarget 绘制/覆盖到您的主后缓冲区。

}

渲染完所有灯光后,呈现场景。因为光最终只是添加,你可以继续渲染尽可能多的光。无论您是否使用不同的照明,此方法都将起作用。您还可以为每个灯光打开或关闭阴影。

如果其中任何一个不清楚并且需要更好的解释,请告诉我......

于 2011-01-04T20:19:03.813 回答
0

如果您正在寻找“高级”效果/技术的 DX 或 OGL 代码,请查看Humus 3D,其中有一些阴影贴图示例,其中一个应该有多个来源。GPU Gems 3 的这一部分可能也很有趣。

于 2011-01-03T09:11:02.133 回答
0

TBH你只是矫枉过正。来自大球体中每个顶点的光源太多了。如果您在获得阴影上的柔和边缘之后,那么总体上研究柔和阴影效果会好得多。

举个例子,《半条命 2》通过将阴影贴图渲染到单独的渲染缓冲区(同时使用主渲染缓冲区中的 Z 缓冲区)来实现软阴影。然后模糊该缓冲区并将其应用回主渲染缓冲区。结果是非常漂亮的阴影......

于 2011-01-08T00:34:24.233 回答