0%

阴影是渲染中极其重要的一部分,好的阴影能够大幅提升画面表现力,离线渲染中的各种阴影生成算法或者光线追踪算法都能够做到非常精细和逼真的阴影,但在游戏等实时渲染中,对帧率要求很高的情况下如何以最低的代价生成高质量的阴影就是一个难题。这一节将对实时渲染中的阴影相关的算法原理进行总结。

阅读全文 »

游戏引擎中的渲染系统和我们之前学习的实时渲染或离线渲染系统不完全相同,游戏引擎中的渲染系统除了渲染外还需要考虑更多的事情。因为渲染系统只是游戏中的一部分,不可能将设备全部的资源投入到渲染中,因此大量游戏对象的绘制资源如何组织,如何管理,如何调度是游戏引擎的渲染系统需要额外考虑的事情。此外,游戏中的渲染对实时性要求更高,因此必须充分利用有限的资源来达到最好的效果,所以需要对渲染加速算法和 GPU 的架构有一定的了解。这一节我们对游戏引擎中的渲染系统所涉及的方方面面进行大致的了解。

阅读全文 »

在之前的光栅化渲染器中,我们在光栅化插值的过程中对所有顶点的属性都除以了该顶点的深度值 w,然后又在线性插值之后乘以了该点的深度值,这样才能得到正确的插值属性,这一步叫做透视插值校正。这一节我们来详细讨论透视插值校正的具体原理。

阅读全文 »

现在我们的渲染管线已经基本具备了所有的要素,但是作为光栅化渲染器,我们目前的光栅化算法太过老旧,扫描线算法简单高效,但难以并行化(毕竟操作的单位是一条线),并且在实现时还存在由于多次插值的精度损失导致的多个三角形间存在接缝等问题。因此现在已经不被使用,之前在图形学中我们学习过另一种光栅化方法,这节我们来讨论该方法的一些具体实现细节。

阅读全文 »

到目前为止我们的渲染管线已经基本为完整了,从模型加载到顶点着色器,再经过裁剪到片元着色器,但在片元着色器中我们目前还只是输出顶点颜色或者纹理值,还没有加入光照计算,这一节我们就来加入光照的计算。最简单的 Blinn Phong 模型我们已经非常熟悉了,所以这一节的重点并不是光照的计算,而是了解三种光源是如何实现的。

阅读全文 »

目前我们已经基本实现了一个最简单的渲染管线,不过还有很多功能没有加入,这一节开始来完善我们的渲染管线。首先在之前的实现中,正方体大多数情况下都只有 3 个面正对我们,其他三个面是看不见的,也就完全不需要渲染,为了之后应对更复杂的模型和场景,提高渲染效率,我们需要先实现剔除和裁剪算法。

阅读全文 »