「IMDT分享会」是由深互动设计硕20班班委自发组织、同学们自主参与的一项内部分享活动。分享嘉宾包括本班同学、院内前辈、行业嘉宾等,分享内容是与游戏领域相关的一切。
「IMDT分享会#2」光线追踪,主要包括光线追踪原理和算法实践,希望对你有帮助。
开学的第三周,IMDT的同学们组织进行了第三周的分享会,本周的分享会主题围绕游戏中一个重要的学科,计算机图形学展开。杨斌同学就图形渲染领域的两大渲染方式,光栅化和光线追踪,给同学们做了丰富的分享。
▲同学们落座于分享教室
光栅化是实时渲染中大量应用的一个最基本的过程,几乎所有三维软件和游戏引擎中的实时渲染效果都是由光栅化来的。光线追踪则因为逼真的渲染效果而广泛应用在离线渲染中,各种影视剪辑中使用的都是光线追踪的应用。
首先杨斌同学介绍了关于光线追踪和光栅化的基本概念,介绍了他们分别在游戏中会被应用在什么领域。杨斌同学认为,光栅化和光线追踪是同一个问题的两个方面,前者是从物体出发到摄影机,且遵循一套像美术人员作画一样的层层渲染方式,而后者则从相机本身出发,对图像里每个像素的值进行计算。
▲讲稿
杨斌同学然后介绍了光栅化的整个GPU渲染过程中会经历的几个阶段,然后通过他绘制的草图进行了更深入的讲解。
在大致介绍过光栅化后,杨斌同学对光栅化的特点进行了总结,然后在此基础上开始介绍光线追踪的方法。光线追踪是一种更加符合物理的方法,从光路可逆这一最基本的原则出发,这种算法将光在场景中的各种弹射最后打到我们的眼睛里这一过程,转化成从眼睛发射射线来逆向搜索场景中的弹射的方法。这一方法可以被写成一个递归函数,通过不断的深入最后获得一根光线返回的像素值。
在解释这个过程后,杨斌同学继续讲解了这个过程中的两个问题,即如何定义光线和如何判断光线与场景中的物体是否相交的问题。而后杨同学概括性的介绍了著名的渲染方程,以及用蒙特卡罗方法求解渲染方程的想法。
最后,杨斌同学给我们分享了本次分享会的主要参考教程。
即PeterShirley的raytracinginoneweekend系列三部曲。并带同学们快速浏览了第一本书的内容,根据书中的代码进行了更直观的光线追踪讲解。
参考文献:
[1]Haines,E.,Hoffman,N.,Pesco,A.,etal.Real-TimeRendering.FourthEdition[M].CRCPress.:11-27.
[2]冯乐乐.UnityShader入门精要[M].人民邮电出版社.:5-18.
[3]PeterShirley.RayTracinginOneWeekend[EB/OL].