标签:
在渲染管线中是最慢的阶段决定整个渲染的速度。
我们一般使用吞吐量(throughput)来描述一个阶段的处理速度,而不是帧率。因为帧率会受到设备更新的限制而导致实际速度比帧率所标示的更慢。
一个例子:
假设一个设备为60赫兹,这意味着这个设备16.666666ms刷新一次,这时恰好有一管线阶段花费了62.5ms执行完成,由于63大于16.666666*3,小于16.666666*4,所以他实际上想要最终完成工作必须等待下一次设备刷新。所以真实的执行时间折算下来其实不止62.5ms而是趋近于66ms。当然,如果关闭了垂直同步就另当别论了。
一个渲染管线可以粗略的按照执行顺序分成三大阶段:
这些阶段又可以细分为更多的子阶段,注意这些都是功能性的分配,在实现上为了效率等因素往往会合并一些阶段或者拆分一些阶段等等。
下面是一张图:
一、应用阶段
这个阶段的目标就是为几何阶段产生合适的图元数据,一般来说,很多工作都在这个阶段完成,诸如碰撞检测、动画、输入、当然还有一些加速管线的算法,比如层次视椎剔除(hierarchical view frustum culling)等等。
二、几何阶段
几何阶段集中于逐多边形操作和逐顶点操作。
三、光栅阶段
最后要梳理一下各种shader通常都做什么:
vertex shader:模型-视图转换,顶点着色,投影
geometry shader:操作图元顶点(primitive概念看下方)——图元着色、销毁/创建图元
pixel(fragment) shader:像素着色
几何primitive: points、lines、triangles
标签:
原文地址:http://www.cnblogs.com/wubugui/p/4309205.html