博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
什么是渲染流水线
阅读量:5032 次
发布时间:2019-06-12

本文共 1071 字,大约阅读时间需要 3 分钟。

  渲染流水线的工作任务在于由一个三维场景出发、生成(或者说渲染)一张二维图像。换句话说,计算机需要从一系列的定点数据、纹理等信息出发,把这些信息最终转换成一张人眼可以识别的图像。而这个工作通常是由CPU和GPU共同完成的。

  渲染流程分为3个阶段:应用阶段(Application)、几何阶段(Geometry Stage)、光栅化阶段(Rasterizer Stage).

  注意,这里仅仅是概念性阶段,每个阶段本身通常也是一个流水线系统,即包含了子流水线阶段下图显示了3个概念阶段之间的联系。

应用阶段

  从这个名字我们可以看出,这个阶段是由我们的应用主导的,因此通常由CPU负责实现,换句话说,我们这些开发者具有这个阶段的绝对控制权。

  在这个阶段中,开发者有3个主要任务:首先,我们需要准备好场景数据,例如摄像机的位置、视锥体、场景中包含了哪些模型、使用了哪些光源等等;其次,为了提高渲染性能,我们往往需要做一个粗粒度的剔除(culling)工作,以把那些不可见的物体剔除出去,这样就不需要再移交给几何阶段处理;最后,我们需要设置好每个模型的渲染状态。这些渲染状态包括但不限于它使用的材质(漫反射颜色、高光反射颜色)、使用的纹理、使用的Shader等。这一阶段最重要的是输出渲染所需要的几何信息,即渲染图元(rendering primitives)、通俗来讲,渲染图元可以是点、线、三角面等。这些渲染图元将会被传递给下一个阶段——几何阶段。

几何阶段

  几何阶段用于处理所有和我们要绘制的几何相关的事情。例如,决定需要绘制的图元是什么,怎样绘制它们,在哪里绘制它们。这个阶段通常在GPU上进行。

  几何阶段负责和每个渲染图元打交道,进行逐定点、逐多边形的操作。这个阶段可以进一步分成更小的流水线阶段,几何阶段的一个重要任务就是把定点的坐标转换屏幕空间中,再交给光栅器进行处理。通过对输入的渲染图元进行多步处理后,这一阶段将会输出屏幕空间的二维定点坐标、每个定点对应的深度值、着色等相关信息,并传递给下一个阶段。

光栅化阶段

  这一阶段将会使用上个阶段传递的数据产生屏幕上的像素,并渲染出最终的图像。这一阶段也是在GPU上运行。光栅化的任务主要是决定每个渲染图元的哪些像素应该被绘制在屏幕上。它需要对上一个阶段得到的逐顶点数据(例如纹理坐标、顶点颜色等)进行插值,然后再进行逐像素处理。

文章参考:Shader入门精要

转载于:https://www.cnblogs.com/xhg986/p/7451984.html

你可能感兴趣的文章
Confluence 6 SQL Server 数据库驱动修改
查看>>
Confluence 6 通过 SSL 或 HTTPS 运行 - 备注和问题解决
查看>>
【47.76%】【Round #380B】Spotlights
查看>>
Git(使用码云)
查看>>
分享Java web 开发必游之路
查看>>
IIS初始化(预加载),解决第一次访问慢,程序池被回收问题(转载)
查看>>
Bean的Scope
查看>>
【BZOJ】3142: [Hnoi2013]数列
查看>>
http初探
查看>>
W3C标准以及规范
查看>>
elasticsearch的安装
查看>>
__next__()
查看>>
爬取:中国大学排名
查看>>
聊天室(C++客户端+Pyhton服务器)_1.框架搭设
查看>>
UpdatePanel 内控件 更新“外的”控件【转】
查看>>
[CF508E] Arthur and Brackets
查看>>
[CF1029E] Tree with Small Distances
查看>>
tp5.0中及其常用方法的一些函数方法(自己看)和技巧(不断添加中)
查看>>
美团推荐算法实践
查看>>
自定义注解使用
查看>>