Rasterization 光栅化阶段:图元转换为像素,生成片段。
定义
把物体的「数学描述以及与物体相关的信息」转换为屏幕上用于「对应位置的像素及用于填充像素的颜色」这个过程成为光栅化
主要工作:将得到的新图元(添加额外的Virtex和计算图元的信息)转换成像素,超过像素中心店即为有效,将这个图元所需的像素信息生成一个片段(需要覆盖哪些像素区域)
主要目的:
将几何渲染之后的图元信息转换为像素(分配深度值和颜色将像素转换为二维图像产生的是片元),后续显示子屏幕上。根据图元信息计算中每个图元所覆盖的像素信息。根据是否跨过这个像素的中心店遍历出这个图元所需要覆盖的像素区域及深度值
片段是渲染一个像素所需要的所有数据也叫片元
像素处理阶段:处理像素,得到位图Bitmap。
主要工作
处理像素点,给这些像素进行上色(片段着色器做的事情)和处理片段位置(测试与混合采用“画家算法”)。这些处理后的像素点就是Bitmap位图
片段着色器:给每一个像素赋予正确的颜色,颜色的信息是通过顶点,纹理,光照信息得到的;对片段进行才叫,丢掉超出视图意外的所有像素(没有跨过中心店的像素就不需要绘制),该阶段处理纹理,光照等复杂信息,这部分也是整个系统的性能瓶颈
测试与混合:叫做Merging阶段,处理片段前后位置以及透明度。
根据片段的深度值z坐标判断片段前后位置(采用“画家算法进行渲染”,之前提供的离屏渲染也就是这个阶段),计算透明度alpha值,片段混合得到最终效果(如果需要针对之前的单个图层片段进行处理,那么就不可以了必须使用离屏渲染 将这部分图层延后合成处理)
这些点进行不同排列和染色组成不同的图样。当放大位图时就可以看到无数个单个方块
「这些方块的来历:CPU计算出图元,之后GPU拿到图元进行坐标转换,计算纹理光照,对图元添加额外的Virtex以便生成更复杂的几何图形和;连接这些Virtex图元就是由这些Virtex构成的;将图元转换成像素【覆盖过中心点的像素才是有用的需要进行渲染的】,对这些像素进行上色和采用画家算法进行合成图层缓存到back buffer中,等待Display取进行渲染)」
「如果想要更真实,就需要足够多的顶点和颜色,相应的也会产生更大的开销;」 但是为了提高生产效率和执行效率,开发者可以使用纹理来表现细节,纹理是一个2D图片。纹理可以直接作为图形渲染的第五阶段的输入。
这些流程是GPU的一些流水线程序、应用阶段是CPU做处理,而几何处理阶段和光栅化处理阶段里面的细节比如片段着色器,顶点着色器,这些着色器可以由开发者自己配置,着色器可以由多种语言编写。GPU厂商会提供OpenGl来实现,OpenGl提供了GLSL着色器语言。
原文始发于微信公众号(北洋洋洋):渲染流程之光栅化阶段及像素处理阶段
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/76053.html