实时渲染,一般有三种渲染方法,多光源一次渲染,多光源多次渲染和延迟着色。
多光源一次渲染:对于每个物体,计算所有光源对其的影响来对该物体进行渲染
for each object do
for each light do
framebuffer = light_model(object,light);
这是一个简单的方法,但是存在一些问题和缺陷。
第一个问题由于光照是针对每一个物体进行的,因此*之前渲染着色的对象能够被之后渲染着色的对象所取代*,换句话讲,对隐藏对象进行着色是浪费的。
第二个问题是如何在可编程渲染管线中,在一次渲染过程中管理多个光源。此外,该方法很难与阴影算法进行集成。
多光源多次渲染:对于每一个光照计算过程,执行所有光照计算。因此,对于每一个光源,所有被该光源影响的物体会被渲染。