多灯快速照明


10

如何实现多灯快速照明?

我不想束缚玩家,他可以放置无限数量,并且可以在关卡中重叠(点)灯。

问题在于,包含动态循环(用于计算光照)所必需的着色器往往非常慢。

我的想法是,如果有可能在编译时编译一个着色器n次,其中n是光照数量。如果在编译时知道数字n,则可以自动展开循环。是否可以仅使用不同数量的灯光来生成同一着色器的n个版本?

然后,在运行时,我可以决定将哪个着色器用于关卡的哪个部分。


如果灯光是由播放器动态添加的,那么“编译时”着色器如何才能成为正确的答案?
塞斯·巴丁

如我所写,编译器可以为1,2,3,.. lights生成着色器,并且在运行时我可以决定为该级别的哪一部分使用哪个着色器
codymanix 2013年

编译时着色器需要知道要将灯光放置在哪里,灯光的任何动态都会破坏它们
棘手的怪胎

只有灯光数量应该是动态的。位置将作为参数提供。
codymanix

1
听起来您有答案。您知道最大的灯光数量和可能的位置范围。
ashes999

Answers:


8

我相信您正在寻找的被称为延迟渲染。这是一种渲染技术,可以在很多光线下很好地缩放,因此可以用于动态间接照明。这意味着屏幕上有成千上万的灯。

基本上,这是一种技术,您首先将所有几何数据(位置,法线,深度)渲染到中间像素缓冲区(称为G缓冲区)中。然后在第二遍中,渲染一个浅色形状及其参数。第二遍的着色器从G缓冲区获取信息,应用光计算,然后将其混合到最终图像中。

您可以在此处找到实施细节

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.