渲染管线流程描述精简

渲染管线流程

渲染管线流程:顶点数据输入、顶点着色器、曲面细分过程、几何着色器、图元组装、裁剪剔除、光栅化、片段着色器、混合测试
每个阶段会把前一个阶段的输出作为该阶段的输入

各项流程简述

1.顶点数据输入:输入装配阶段,送入到渲染管线的数据包括顶点坐标、纹理坐标、顶点法线和顶点颜色等顶点属性。
顶点数据在流水线中以图元的方式处理,常见的图元包括:点、线、线条、三角面
2.顶点着色器:主要功能是进行坐标变换,将输入的局部坐标变换到世界坐标、观察坐标、裁剪坐标。

  • 平面着色:最简单最快效果也是最差的着色方式;
  • 高洛德着色:中等的一种,因为高光并非是线性变换,所以插值得到的效果较差;
  • 冯氏着色:在片段着色器阶段进行的一种着色方式,效果最好,但计算量最多,自然也最慢

3.曲面细分:可选,曲面细分是利用镶嵌化处理技术对三角面进行细分,以此来增加物体表面的三角面的数量。
曲面细分由外壳着色器镶嵌器域着色器构成,其中外壳着色器和域着色器可以编程,镶嵌器是硬件管控的。
我们可以借助曲面细分技术实现细节层次的机制,使得离摄像机越近的物体具有更加丰富的细节,反之则具有较少的细节。
4.几何着色器:可选,几何着色器的输入是完整的图元,可输出图元或者不输出图元,亮点在于它可以创建或销毁图元。
几何着色器可以将输入的点或线扩展成多边形。
5.图元组装:图元组装将输入的顶点组装成指定的图元。图元组装阶段会进行裁剪和背面剔除相关的优化,以减少进入光栅化的图元的数量,加速渲染过程。

  • 剪裁:完全位于视锥体外部的图元会被裁剪掉,部分位于视锥体外部的图元会被进行剪裁操作。
  • 背面剔除:背对摄像机的图元会被剔除掉

6.屏幕映射的操作透视除法视口变换两个操作,这两个操作主要是硬件实现,不同厂商会有不同的设计。最后会得到窗口坐标。
7.光栅化:光栅化将变换到屏幕空间的图元离散化为片元的过程。主要包括两个过程:三角形的组装和三角形的遍历

  • 三角形组装:对顶点的输入数据进行插值,得到每个片段的数据值
  • 三角形遍历:遍历三角图元覆盖了哪些片段的采样点,随后得到图元所对应的片元

8.片段着色器:片段着色器用来决定屏幕上像素的最终颜色。在这个阶段会进行光照计算以及阴影处理。

  • Phong光照模型:朗博余弦定理计算漫反射,半朗博模型提高了漫反射量度信息。反射光线夹角大于90度时镜面反射分量会被消除,高光不连续
  • Blinn-Phong光照模型:引入了半角变量,半角向量和法线夹角不会超过90度,不会出现高光不连续的问题
  • PBR光照模型:考虑了光照能量守恒,基于粗糙度值,计算了法线半球内所有入射光线经过直接反射到观察点的占比

9.测试混合阶段:测试包括裁切测试、Alpha测试、模板测试和深度测试。经过测试的片段会进入混合阶段。混合阶段进行Alpha混合。测试混合阶段是不可编程阶段,但是我们可以通过OpenGL或DirectX提供的接口进行配置,定制混合和测试的方式。

  • 裁切测试:可选,当视口比屏幕窗口小时应用裁切测试将渲染窗口变得和视口一样大,超出的部分进行裁切。
  • Alpha测试:根据Alpha值来裁剪片段
  • 模板测试:可选,高度可配置,控制选区片段可见性,超出的部分进行裁剪
  • 深度测试:统一片段的多个片段,根据深度值,保留并更新深度缓存和颜色缓存,并丢弃其余片段
  • Alpha混合:根据片段的alpha值进行混合,用来产生半透明的效果。

更加详细的请参考下述参考链接:
参考来源:https://zhuanlan.zhihu.com/p/79183044

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值