开始学习前,首先明确一些基本概念。
1.1 图形学是什么
在国内,图形学是一门冷僻的学科。除了GPU设计者,其余从事图形学行业的人大多与游戏相关,因为需要处理游戏的图形渲染引擎或效率性能优化而研究图形学。关于图形学是什么、解决的是什么问题,我能够给出的回答是:图形学的任务是将数学公式描述的世界展示在屏幕上。如何展示这个问题,前人已经解决过了,我们需要做的就是更好地展示。如何做到更好?两个方面:一是更高性能,二是更好效果。在图形学中,这两个分支分别称为实时绘制技术和真实感绘制技术。
以下是之前随便制作的一张光线追踪渲染效果图。光线追踪,顾名思义,是让计算机用物理方法模拟光源,通过计算光线的反射、折射与衰减得到最终效果。该方法显然精确且耗时严重,但它能够得到非常好的真实感效果。
在达到一定的真实感效果前提下,我们希望加快绘制速度。比如围着这个场景转,多角度观察,而不想出现卡顿掉帧情况。如果实时进行光线追踪计算,以目前消费级显卡能力肯定是不可能的。因此考虑其它手段,比如把渲染后的结果作为纹理图片贴在几何体表面,这就是光照贴图技术,在Unity引擎中称为烘焙。烘焙一词在Unity中泛指预处理,光照贴图之外的其它预处理技术也叫作烘焙。
以下是NVidiaCUDA(关于CUDA,详见1.5 相关领域概念与技术)例程中提供的二次Mandelbrot图,这个分形图形是使人对图形学产生兴趣的最好的例子之一,它是由一个简单的递归函数生成的。