本文通过简短的语言解释渲染管线,无论是第一次了解渲染管线,还是回顾,都有帮助。

一、完整渲染流程

在介绍渲染管线之前,先全局视角了解一下整个渲染引擎

整个渲染分为五个阶段,如图

工具阶段、资产调节阶段、应用程序阶段、几何阶段、光栅化阶段

每个字停留一秒,多看几眼。专业名称自带劝退buff

一句话概括

渲染引擎:对各种模型进行染色、光照、阴影等渲染,绘制出屏幕画面的功能模块。

每个阶段都是干啥的呢?

一句话概括

工具阶段:制作模型(鬼话版:定义几何和表面特性)

资产调节阶段:转换模型格式(处理几何和材质)

应用程序阶段:为渲染管线做准备。准备要渲染的模型(网格)

几何阶段:处理网格顶点数据,转成屏幕空间的顶点信息

光栅化阶段:着色,输出最终效果

已经尽量少专业名词了。

二、渲染管线的介绍

回到这张图

渲染管线:严格来讲,是GPU处理数据生成图像的整个过程

渲染流程:图像绘制的流程。CPU和GPU一起完成的

但是不可否认,CPU也是整个过程必不可少的,所以把它加上。变成这样。

基本信息了解之后,下面进入管线细节。(八股文警告

2.1 GPU渲染管线

整个管线流程图长这样。

介绍的图很多,偏爱这张。各个图流程介绍细节上有所不同,重点在于便于理解

一句话概括:

一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程

渲染管线特点:

1. 前一阶段输出作为下一阶段输入

2.可以并行执行

2.2 应用程序阶段:3件事

可见性判断:仅提交可见物体给GPU

提交几何图元:提交网格、材质等数据,建立GPU命令表

控制着色器参数: uniform

tips:

应用程序阶段做的事情偏引擎向,所以介绍渲染管线的文章基本都不会提及干了啥,只会说,提供顶点数据。

事实上3件事中每件都是一个大的模块,非引擎程序员了解干了啥就足够了。

2.3 几何阶段

几何几何,从名字就知道,处理的是几何数据。

主要流程包括:顶点着色器、图元装置(投影变换)、裁剪和屏幕映射

顶点着色器:进行顶点坐标变换。将输入的模型空间顶点坐标变换到裁剪空间顶点坐标

图元装配:将顶点装配成指定图元的形状(如三角形)。

几何着色器:改变图元。通过产生新顶点构造出新的图元来生成其他形状。外壳着色器和域着色器可编程,镶嵌器是由硬件管理。

tips:

事实上,图云装置阶段可以细分,有的地方叫曲面细分。增加表面的三角面的数量,包括外壳着色器、镶嵌器和域着色器构成,其中外壳着色器和域着色器是可编程的,而镶嵌器是有硬件管理。

2.4 光栅化阶段

把图元映射为最终屏幕上显示的颜色。

光栅化:把图元映射为最终屏幕上相应的像素(把三角型切分成一个个像素)。

片段着色器:计算每个像素的最终颜色。

深度测试和混合阶段:判断像素的遮挡关系和透明度,决定是否应该丢弃和怎么显示。

三、面试环节

问:

了解渲染管线吗?

说说渲染管线?

答:

回答思路:

1.是什么、有什么用

2.具体过程

参考答案

基础版

1. 渲染管线就是一堆原始图形数据经过各种变化处理最终出现在屏幕的过程。

渲染管线可分为三个阶段,应用程序阶段,几何阶段,和光栅化阶段

2. 应用程序阶段由CPU主要负责。CPU将GPU渲染需要的灯光、模型准备好,并设置好渲染状态,为GPU渲染做好准备。

3. 几何阶段把输入的3D数据转换成2D数据。包括顶点着色器、图元装置、裁剪和屏幕映射几个过程。

顶点着色器主要进行顶点坐标变换。将输入的模型空间顶点坐标变换到裁剪空间顶点坐标

图元装配顶点装配成指定图元的形状。

几何着色器改变图元。通过产生新顶点构造出新的图元来生成其他形状。

4. 光栅化阶段把图元映射为最终屏幕上显示的颜色。包括光栅化,片段着色,深度测试和混合。

光栅化将顶点转为屏幕上的像素。

片段着色器计算每个像素的最终颜色。

深度测试通过深度信息判断像素的遮挡关系

混合阶段通过透明度将像素进行混合。

5. 最终渲染好的颜色先被送入后置缓冲,随后再替换前置缓冲,显示在屏幕上。

深入版

1. 渲染管线就是一堆原始图形数据经过各种变化处理最终出现在屏幕的过程。

渲染管线可分为三个阶段,应用程序阶段,几何阶段,和光栅化阶段。

2. 应用程序阶段由CPU主要负责。CPU将GPU渲染需要的灯光、模型准备好,随后向GPU下达一个渲染指令Draw Call,即往命令缓冲区中放入命令,GPU则依次取出命令执行

3. 几何阶段把输入的3D数据转换成2D数据。包括顶点着色器、图元装置、裁剪和屏幕映射几个过程。

顶点着色器主要进行顶点坐标变换。将输入的模型空间顶点坐标变换到裁剪空间顶点坐标

图元装配顶点装配成指定图元的形状。可以细分为外壳着色器、镶嵌器和域着色器。

几何着色器通过产生新顶点构造出新的图元来生成其他形状。

图元组装将输入的顶点组装成指定的图元。

图元组装后会进行屏幕映射的操作,包括透视除法(投影、裁剪转成2维)和视口变换(映射,适配到屏幕),将图元从三维空间映射到二维平面上,这是由硬件完成的。

(tips: 注形状(图元)组装和图元装配的区别。翻译成中文容易产生歧义

形状装配(shape assemly),把点装成一个个的图元(如三角型),传入几何着色器

图元组装(primitive setup),把3D转2D,并适配

晕了.....没事

哪个叫组装哪个叫装配无所谓,只要记住具体的做法就行,名字混了也无所谓。)

4. 光栅化阶段把图元映射为最终屏幕上显示的颜色,包括光栅化,片段着色,透明度测试和模板测试和混合。

光栅化将顶点转为屏幕上的像素。会进行三角形遍历。三角型遍历,检测出所有被三角型覆盖的像素。(此处可拓展出怎么划分片元、怎么抗锯齿)

片段着色器计算每个像素的最终颜色。是一个可编程的阶段,主要的光照处理都在这个阶段。

透明度(Alpha)测试通过深度信息决定像素是否显示可设置阈值,显示的像素将与颜色缓冲区中颜色混合。

模板测试通过片元的模板值与模板缓冲区的模板值的比较来筛选像素。

深度测试通过深度信息判断像素的遮挡关系。筛选掉被遮挡的像素。现在大多数 GPU 都支持提前深度测试(Early depth testing),在片元着色器之前测试,由硬件功能完成。

5. 最终渲染好的颜色先被送入后置缓冲,随后再替换前置缓冲,显示在屏幕上

使用深入版有可能下一步面临问题:

常见的坐标系有哪些?有什么含义?为什么需要?怎么转换?

透视除法和视口变换详细讲一下?

渲染半透明物体的前后顺序是什么样的,为什么?

常见的光照模型有哪些?

光栅化常见算法有哪些?

抗锯齿算法有哪些?

在学习阶段,可以也通过这些问题深入了解渲染管线,扎实理解。

以上仅供参考,完全可根据自身了解情况深入或者删减。最好能用自己的话复述一遍。

最后欢迎大家加入 音视频开发进阶 知识星球 ,这里有知识干货、编程答疑、开发教程,还有很多精彩分享。

更多内容可以在星球菜单中找到,随着时间推移,干货也会越来越多!!!

给出 10元 优惠券,涨价在即,目前还是白菜价,基本上提几个问题就回本,投资自己就是最好的投资!!!

加我微信 ezglumes ,拉你进技术交流群

推荐阅读:

音视频开发工作经验分享 || 视频版

OpenGL ES 学习资源分享

开通专辑 | 细数那些年写过的技术文章专辑

Android NDK 免费视频在线学习!!!

你想要的音视频开发资料库来了

推荐几个堪称教科书级别的 Android 音视频入门项目

觉得不错,点个在看呗~

渲染管线----通俗易懂向面试官介绍相关推荐

  1. 在面试时,向面试官介绍项目的基本要点

    面试官:你给我简要介绍一下银行柜台系统(功能)? 答:1.简易银行柜台系统是模拟银行柜台的基本功能而做的一个系统. 2.系统分前台和后台部分,前台部分是银行柜台人员操作的,包括:注册登录模块.开销户模 ...

  2. 如何清晰、高质量的给面试官介绍自己的电商项目

    面试有两点:1.技术过硬.2.能说会道 如果自己的技术还过的去,但是表述的不尽人意,其实是吃了很大亏的,下面我来介绍一个大神的面试过程: 面试官:请介绍一下你的电商项目. 大神:该商城是一个综合性的B ...

  3. 面试官这样,面试就有戏了!

       前程无忧论坛(bbs.51job.com)上有位面霸曾分享过这样一则面试经验:"面试这么久,从面试官的言行我就能判断出面试结果!"换言之就是,面试时,我们可以根据面试官的某些 ...

  4. 聊聊我当面试官的感受吧

    聊聊最近我当面试官面试的主观感受 大家好,我是鱼尾~,最近这段时间,真的是忙的不可开交啊.工作上的一堆事情,面试招人,新人培训等等,黑眼圈又加重了. 近期呢,部门需要招人,我有幸被选为当面试官来面试, ...

  5. 在面试中如何回答面试官的问题

    在面试中如何回答面试官的问题 首先,来个自我介绍: 面试官老师,您好!我叫XXX,是XX大学XX学院的硕士,我的专业是XXXX.我本科就读于XX大学XX专业.我今年X岁,来自XX. 今天我来应聘的岗位 ...

  6. 面试可以问面试官哪些问题?这些问题需要弄清楚

    在参加面试过程中,面试官通常会给你提供询问的机会,让你了解公司.职位和工作环境.在这个过程中,你可以通过提问来更好地了解公司.职位和工作环境,也能够让面试官感受到你对公司的兴趣和热情.那么都有哪些问题 ...

  7. 【软件测试面试】面试技巧,让面试官记住的自我介绍,疯狂收割offer.....

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  8. 软件测试自我介绍 说什么才能让面试官一下子记住你!

    国庆假期刚过,又逢金九银十,复工大潮开启,想必很多小伙伴都迎来了期待已久的面试! 在面试中,自我介绍是面试官对你提出的第一个问题,这直接关系到面试官对你的第一印象,如果回答得不好,直接被毙掉也是可能的 ...

  9. 面试第一问:简单做个自我介绍吧,怎么回答才让面试官频频点头?

    面试第一问:简单做个自我介绍吧,怎么回答才让面试官频频点头? 前言 个人的基本信息,扬长避短 突出自己的技能 个人兴趣爱好与结尾 总体案例: 前言 面试问题第一问,99.99999%都是:请先做个自我 ...

最新文章

  1. NeurIPS 2019揭榜!华人作者贡献42%,谷歌170篇屠榜;国内清华第一,腾讯领衔产业界(附链接)...
  2. XAMPP 相关设置(linux下的)
  3. matlab fminimax 多变量,Matlab应用实例(8)—fminimax
  4. Cisco 3550-EMI 交 换 机 配 置 教 程
  5. 乐在其中设计模式(C#) - 原型模式(Prototype Pattern)
  6. 计算机里什么文件无法删除,电脑上的文件删不掉怎么办
  7. python可变序列_Python3基础(二)—— Python可变序列
  8. 魅族前副总裁李楠谈“苹果对5G判断”,理解万岁!
  9. sublime text 2 解决错误 [Decode error - output not utf-8]
  10. 全面超越人类!Google称霸SQuAD,BERT横扫11大NLP测试
  11. Hbase完全分布式集群安装配置(Hbase1.0.0,Hadoop2.6.0)
  12. 【剑指 offer】(十八)—— 树的子结构
  13. SMOTE过采样算法
  14. Photoshop通道抠图
  15. “互联网+”的公司里哪些职业比较热门?学好他们,不愁没工作!
  16. 电子凸轮和电子齿轮的差别
  17. 鹏哥手把手带我刷好题 · 编程练习 · I
  18. xampp中MySQL启动错误问题
  19. 必须要了解的物联网安全知识
  20. 大型企业如何搭建私有云计算平台

热门文章

  1. 关于构建之法中小飞问题的个人看法
  2. 机房布线网络布线之常用兵器谱
  3. 研究生周报(第十九周)
  4. 神探夏洛克第一季/全集Sherlock1迅雷下载
  5. coreldraw x4如何出血_coreldraw x4教程
  6. 汽车制造行业工厂数据、互联数据和移动数据存储解决方案
  7. css 毛玻璃_我写CSS的常用套路(附demo的效果实现与源码)
  8. mysql数据模型三要素_E-R模型的三要素为实体、属性、联系-智慧树数据库原理章节答案...
  9. PL/0语言 词法分析
  10. 全球与中国婚纱市场深度研究分析报告