OpenGL:渲染超过8个灯,如何?

2024-01-29

我应该如何在OpenGL中实现超过8个灯光?

我想有效地渲染无限量的灯光。

那么,执行此操作的首选方法是什么?


延迟着色。

简而言之,您无需任何灯光即可渲染场景。相反,您将法线和世界位置以及纹理像素存储到多个帧缓冲区(所谓的渲染目标)中。如果您使用多个渲染目标扩展,您甚至可以在一次传递中完成此操作。

一旦准备好缓冲区,您就可以开始渲染一堆全屏四边形,每个四边形都有一个像素着色器程序,可以读出法线和位置并计算一个或多个光源的光。

由于光是累加性的,您可以根据需要渲染尽可能多的全屏四边形,并根据需要累积尽可能多的光源的光。

最后一步是在灯光和未照亮的纹理帧缓冲区之间进行合成。

这或多或少是最先进的方法。然而,在这样的系统中实现雾化和透明度是一个挑战。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenGL:渲染超过8个灯,如何? 的相关文章

随机推荐