至今为止,我们用的光照都是前向渲染(forward rendering),这是一种直接的渲染物体和光照的方法。对于每个物体,都要计算一次着色和光照,这虽然很容易实现,但性能不怎么好,且让片段着色器跑了许多用不到的信息。

而延迟渲染(Deferred Rendering)就是为了解决这个问题出现的。该方式给了我们很多显著优化多光源场景的选择,允许我们一次渲染成百上千的光源,且帧率可接受。例如下面1847个点光源:

阅读全文 »

明亮的光源和区域很难表现出来,因为显示器的亮度范围有限。一种在显示器上区分明亮光源的方式是让他们发出光芒,光芒从光源向四周发散。

这种后处理效果是“泛光(Bloom)”:

阅读全文 »

C++20提供了两种线程协调机制,std::latch(闩)和std::barrier(屏障),允许任何数量的线程阻塞阻塞,直至期待数量的线程到达。

阅读全文 »
0%