例如在《我的世界》中,您可以在任何地方放置火把,每个火把都会影响世界中的光照水平,并且您可以在世界中放置无限数量的火把/光源。我有99%的把握,火把的照明效果是由CPU处理并存储在每个方块中的,因此在渲染时,只需要将该特定方块的光值传递到着色器中,但由于这个原因,光源无法移动。如果您有一个可以放置可以移动的光源(点燃的箭头,带灯的矿车,发光的能量球)并且光照不是很简单(包括颜色),那么计算光照效果最有效的方法是什么。
从我的研究中,我发现了多种渲染、多种光照、动态创建具有不同数量光源的着色器以及使用for循环(由于展开无法使用uniforms)和静态光线图(这些可能仅用于静止的灯光)。是否有其他计算光照的方法,例如执行《我的世界》所做的操作,但允许移动光源,或者是否可以采用无限数量的光源,将它们数学组合成仅涉及少量光源的近似值(这是我想出的一个主意,但我无法弄清楚它如何完成)?
如果有帮助的话,我是一名在OpenGL(传统和现代)方面具有相当经验的程序员,因此您可以给我提供代码片段,尽管我在照明方面做得不太多,但简要的解释将不胜感激。如果您能指点我正确的方向,我也愿意做进一步研究!
从我的研究中,我发现了多种渲染、多种光照、动态创建具有不同数量光源的着色器以及使用for循环(由于展开无法使用uniforms)和静态光线图(这些可能仅用于静止的灯光)。是否有其他计算光照的方法,例如执行《我的世界》所做的操作,但允许移动光源,或者是否可以采用无限数量的光源,将它们数学组合成仅涉及少量光源的近似值(这是我想出的一个主意,但我无法弄清楚它如何完成)?
如果有帮助的话,我是一名在OpenGL(传统和现代)方面具有相当经验的程序员,因此您可以给我提供代码片段,尽管我在照明方面做得不太多,但简要的解释将不胜感激。如果您能指点我正确的方向,我也愿意做进一步研究!