全局光照模型里面最著名的技术就是光线追踪算法(ray-tracing)。
所谓的光线追踪就是为了在全局光照模型下实现超高真实感的光线折射反射透射啥的效果。光线追踪算法是一种shader算法,发展了有十多年,一直没应用,是因为需要大量的计算,gpu硬件跟不上。所以基于一般显卡的设备不管是提供opengl还是d3d都是使用局部光照的模型,这时候的有专门提供各种各样模型的公司也有针对各种各样模型进行渲染的公司,局部光照模型可以直接调用现成的模型进行渲染,大大减少计算量,所以一般显卡都使用局部光照模型。
现在,比较好的N卡,比如RTX1080Ti在一些大型游戏中会提供用户选择打开实时渲染的选项,打开了就起飞啦,哈哈哈。
关于光线追踪算法的实现,就以一个最基本的算法实现。大致过程如下。
1. 设置好摄像头,view-plane等平面,角度坐标啥的各种参数。
2.在view-plane上对每行每个像素依次发射光线,然后判断这个光线与物体是否相交,这里要判断是跟物体的哪个三角面片相交,需要查找物体的所有的三角面片。如果相交返回最近的交点。
3. 根据算出的交点去找光源,然后根据材质光源来计算出这个交点的颜色信息,然后把颜色写在view-plane上的那个像素上。



参考文章
光照模型小结

网友评论