制作点光源的最佳方法

Best methods to do Point lights

我正在尝试做 directx 11 的东西,我想知道实现点光源的最佳方法是什么,我喜欢一个关卡中的 2000 个...

目前我正在做 rastertek 的教程...它正在使用着色器实现光 class...我认为每个着色器有一个 3d 模型 class,他还声明NUM_LIGHTS 在着色器中,4 在教程中...

我想要多个 3d 模型并想要实现影响它们的多个点光源...如何实现...

如果您要进行前向照明,4 到 8 个灯是一个常见的限制,不会开始影响帧速率。如果你是一个绝对的初学者,我建议你现在只使用 8 个灯,直到你更好地理解 D3D11 api。当您熟悉 API 并且可以轻松更改渲染器的程序结构时,您可以研究更高级的照明方案,例如延迟照明或前向+照明。有一篇很好的博客文章描述了所有三种(前向、延迟和前向+)光照 techniques using DirectX 11. With the source is available on Github. Another resource is Learning Opengl,其中也描述了延迟光照。

Forward+ is the way to go currently. By implementing Forward+, you also get a free depth pre-pass, which you can use in other rendering techniques/procedures too, for example HBAO,代表“Horizo​​n Based Ambient Occlusion”