Unity+Shader入门精要(笔记一)渲染流水线基础概念

渲染流水线

一般分为三个阶段:应用阶段几何阶段光栅化阶段

应用阶段:单位为渲染图元,在CPU上进行

应用阶段分为三个阶段:

(1)准备哪些对象被渲染,哪些被剔除,然后将要渲染的对象从硬盘加载到内存,然后数据再加载到显存中 ,HDD(硬盘)->RAM(内存)->VRAM(显存)

(2)设置渲染状态,也就是设置对象所需的材质,纹理,着色器等。

(3)输出渲染图元,调用Draw Call,并将渲染图元传递给gpu

 

几何阶段:GPU上进行

几何阶段里面包括:

顶点着色器(把顶点坐标从模型空间转换到齐次裁剪空间),主要对cpu输出的渲染图元进行顶点空间几何变化以及顶点光照着色处理等。

曲面细分着色器,主要用来细分图元

几何着色器,主要用来逐个图元的着色操作,或者产生更多的图元。

裁剪,主要是对不在相机视野内的顶点进行裁剪,并剔除一些三角形图元面片。

屏幕映射(注意OpenGL左下角是(0,0) DirectX左上是(0,0)),主要负责将图元立方体坐标映射到屏幕坐标系中。

 

光栅化阶段:GPU上进行

光栅化阶段里面包括:

三角形设置,主要对几何阶段输出的屏幕坐标系中的顶点数据进行计算,获取光栅化网格所需要的数据信息的过程。

三角形遍历(生成片元,也称扫描变换),主要是对网格覆盖的每一个像素生成一个片元,并且片元的状态主要由像素插值进行计算获取。

片元着色器(可编程着色器阶段),主要对生成的片元进行处理输出一个或者多个像素。

逐片元操作(纹理采集 1.决定片元可见性   2.合并(片元->模板测试->深度测试->混合->颜色缓冲区))

gpu将最终的像素缓冲区的像素颜色放入到后缓冲区进行绘制,绘制完毕后就和前缓冲区交换并刷新显示到屏幕上。

 

注意:

CPU和GPU并行工作,用的是命令缓冲区。

减少DrawCall方法:批处理(1.避免使用大量很小的网格  2.避免使用过多的材质)

以上每一个渲染流程中的步骤在不同的图像编程接口(CG/HLSL/GLSL)以及gpu上可能会有所不同。

光栅化的逐片元操作中的可见性测试是十分耗时的过程,而且一旦测试不通过,之前做的所有操作都是白费,这样是十分浪费性能的做法,所以可以采用Early-z技术,也就是将可见性测试提到片元着色器的前面,一旦不通过直接舍弃而不至于浪费片元着色器操作时间,提高渲染速度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值