深度缓存、着色和图形管线

在最终的结果图上,是可以看到每个物体的远近程度,和他们自己的颜色。在这里使用两个数组来存储每个像素的颜色和深度值

根据像素的深度值来进行覆盖,从而表现出最终的结果:

 

 

着色:光线打到不同的材质上有着不同的结果,(Blinn-Phong Reflectance Model)

 

在考虑着色时忽略阴影:

 

 

先考虑漫反射:漫反射是一束光线打到某个点后,会向周围均匀反射

 

 

漫反射时,物体表面所接受到的能量受光线与物体表面法线的夹角有关

 

 

 

物体表面所接受的到能量与光源的距离有关:

 

 

 漫反射的计算表达式:图中max(0, n · l)表示当光线从物体下面入射时为0,即光线与物体表面法线的夹角大于90度。

 

 

kd表示漫反射系数:kd越大会越亮,反之则越暗。

 

 

 

高光:当光线打到某个比较光滑物体的表面时,在反射方向极小的附近时是镜面反射

 

 

 

用半程向量h=v+l,与物体表面法向量是否足够接近来表示v是否与R足够接近

 

 

 

其中p越大说明只要离法向量n有一点远就会急剧变化

 

 

 

ks与p的变化对比图

 

 

 

环境光是常数,不论从什么方向入射和出射

 

 

 

最后的结果是环境光加漫反射再加高光

 

 

 

着色频率:在一个平面上着色,在顶点着色,在像素上着色

 

 

 

平面着色:获取平面的法向量,然后着色

 

 

顶点着色:在一个三角形内,获取三角形三个顶点的法向量,三角形内通过插值的方法平滑过度着色

 

 

 

像素着色:通过三角形三个顶点的法向量,来进行插值,得到三角形内部对应的每个像素的法向量,来进行着色。

 

 

 

在考虑着色时,要根据模型的面数来实际考虑,当模型面数足够多的时候,用平面着色,很少的时候用像素着色。

 

 

实时渲染管线:从一个场景到最后的一张图的过程。

先是对顶点的处理,即经过MVP变换和视口变换,把三维的点呈现到二维的屏幕像素上,然后进行光栅化,即对像素采样,哪些像素在三角形内,

计算深度值。然后进行像素的着色,最后呈现到屏幕上。

 

 

 

posted @ 2022-08-15 16:36  捞的不谈  阅读(32)  评论(0编辑  收藏  举报