1、渲染简单的理解可能可以是这样:就是将三维物体或三维场景的描述转化为一幅二维图像,生成的二维图像能很好的反应三维物体或三维场景。

2、渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的的并行处理单元。一个流水线是一序列可以并行和按照固定顺序进行的阶段。每个阶段都从它的前一阶段接收输入,然后把输出发给随后的阶段。

渲染管线大致分为:顶点变换、图元装配、光栅化、插值、贴图、着色、光栅操作几个阶段。

  • 顶点变换主要是在每个顶点上执行一系列的数学操作。这些操作包括把顶点位置变换到屏幕位置以便光栅器使用,为贴图产生纹理坐标,以及照亮顶点以决定它的颜色。

顶点在不同坐标系中的变换过程:

模型空间——>世界空间——>视觉空间(眼空间)——>裁剪空间——>投影空间——>屏幕空间(窗口坐标)

这一系列变换会涉及到各个坐标系中的矩阵变换,再将顶点变换给读者完整的展现一次,效果如下所示:

  • 图元装配也叫面处理,即将顶点根据primitive(原始的连接关系)还原成网格结构。网格由顶点和索引组成,在之前流水线中是对顶点的处理,在这个阶段是根据索引将顶点连接在一起,组成线、面单元。之后就是对超出屏幕外的三角形进行裁剪。

面处理,面处理主要包括:

面的组装,面截取,面剔除,整个流程如下所示:

  • 光栅化是一个决定哪些像素被几何图元覆盖的过程。多边形、线段和点根据为每种图元指定的规则分别被光栅化。光栅化的结果是像素位置的集合和片段的集合。当光栅化后,一个图元拥有的顶点数目和产生的片段之间没有任何关系。例如,一个由三个顶点组成的三角形占据整个屏幕,因此需要生成上百万的片段。片段和像素之间的区别变得非常重要。一个像素(Pixel)对应一个Fragment,但二者并不等同。因为Fragment还包含了其他信息,比如这个像素的颜色,这个像素的深度值等等等等。

  • ​ 当一个图元被光栅化为一堆零个或多个片段的时候,插值、贴图和着色阶段就在片段属性需要的时候插值,执行一系列的贴图和数学操作,然后为每个片段确定一个最终的颜色。除了确定片段的最终颜色,这个阶段还确定一个新的深度,或者甚至丢弃这个片段以避免更新帧缓存对应的像素。允许这个阶段可能丢弃片段,这个阶段为它接收到的每个输入片段产生一个或不产生着过色的片段。

  • 光栅操作阶段在最后更新帧缓存之前,执行最后一系列的针对每个片段的操作。这些操作是OpenGL和Direct3D的一个标准组成部分。在这个阶段,隐藏面通过一个被称为深度测试的过程而消除。其它一些效果,例如混合和基于模板的阴影也发生在这个阶段。

​ 光栅操作阶段根据许多测试来检查每个片段,这些测试包括剪切、alpha、模板和深度等测试。这些测试涉及了片段最后的颜色或深度,像素的位置和一些像素值(像素的深度值和模板值)。如果任何一项测试失败了,片段就会在这个阶段被丢弃,而更新像素的颜色值(虽然一个模板写入的操作也许会发生)。通过了深度测试就可以用片段的深度值代替像素深度值了。在这些测试之后,一个混合操作将把片段的最后颜色和对应像素的颜色结合在一起。最后,一个帧缓存写操作用混合的颜色代替像素的颜色。

​ 图5显示了光栅操作阶段本身实际上也是一个流水线。实际上,所有之前介绍的阶段都可以被进一步分解成子过程。

渲染管线详细概念讲述相关推荐

  1. PKS中服务器和系统什么关系,PKS系统介绍详细版讲述.ppt

    PKS系统介绍详细版讲述 Honeywell 的技术领导地位 Honeywell PKS 价值定义范围 我们的目标 什么是EPKS? Experion PKSTM系统概貌 融入霍尼韦尔数十年的过程控制 ...

  2. teamviewer 文件传输服务器关机,teamviewer进行文件传输的详细步骤讲述

    最近很多人在使用teamviewer软件的时候,不熟悉其中是怎么进行文件传输的?今日这篇教程就为各位带来了teamviewer进行文件传输的详细步骤讲述. teamviewer进行文件传输的详细步骤讲 ...

  3. Linux云计算虚拟化-Kubernetes 容器集群管理系统基础概念讲述

    文章目录 Linux云计算虚拟化-Kubernetes 容器集群管理系统基础概念讲述 1. kubernetes简介 2. k8s常见组件介绍 3. k8s原理持续更新...... Linux云计算虚 ...

  4. 【Servlet】这一文详细的讲述了Servlet的知识,呕心沥血,终于文成。

    文章目录 什么是Servlet? Servlet的使用 1.创建一个Web项目,并集成Tomcat 2.引入Servlet的依赖 3.创建一个Web启动类 第一个是重写Servlet接口 第二个是继承 ...

  5. 使用acmesh免费开启https(详细概念介绍与操作步骤记录)

    前言 记录一次使用acme.sh免费开启https的过程,前半部分列举一些用到的概念,后半部分记录具体操作步骤.文章已调整好线性阅读顺序,按顺序阅读即可.流程中涉及的概念会尽量进行讲解,以减少阅读此篇 ...

  6. 详细地讲述我是如何从传统行业突出重围的

    ❝ 来自读者的投稿,本文以读者的第一视角来讲述的! ❞ 背景 自我介绍下,四年工作经验,头两年全栈开发,后两年专职做前端,目前已达到高级前端工程师水平,经历过三家公司.第一家公司,电商行业,做阿里 I ...

  7. 高可用详细概念及三种决策方式分析

    文章目录 1.基本概念 1.计算高可用 2.存储高可用 高可用状态决策 1.独裁式 2.协商式 3.民主式 1.基本概念 这个定义的关键在于"无中断",但恰好难点也在"无 ...

  8. 什么是进程? ( 进程的详细概念 )

    进程管理是操作系统重点.难点问题,也是贯穿Linux学习的知识点.那么什么是进程? 为什么引入进程的概念?  从理论角度看,是对正在运行的程序过程的抽象:  从实现角度看,是一种数据结构,目的在于清晰 ...

  9. C ++ 指针 | 指针的详细概念和使用_1

    目录 指针 指针取值 指针 指针是存储其他变量地址的变量,内存地址可以用C ++访问. int a = 54; 54 是变量的值,换句话说,它是存储在称为 "a" 的变量保留的位置 ...

最新文章

  1. Python expandtabs() 方法
  2. linux注入内存泄露,Linux 内存泄露小结
  3. (四)Java B2B2C o2o多用户商城 springcloud架构-断路器(Hystrix)
  4. 《智慧书》格言211-220
  5. Microsoft SQL server 2008 安装未取得权限操作
  6. vrrp路由器三种状态_VRRP技术详解和实战演练
  7. java中vi是什么意思_java中的public void是什么意思?
  8. [Android] Bitmap OOM解决办法一
  9. Win8 Metro(C#)数字图像处理--2.50图像运动模糊
  10. Mongo DB命令简介
  11. python练手程序_写的python练习程序
  12. Visual C++ 时尚编程百例013(CRect类)
  13. 边城工具集:绘图及标注工具
  14. 艺龙深耕酒店VS携程 布局旅游全产业
  15. Objective-C 协议最基本解释
  16. CSS 权威指南 读书笔记(二)
  17. 工业封装胶粘剂市场现状及未来发展趋势
  18. 使用OMF(Oracle Managed Files,Oracle管理的文件)的场景示例
  19. h5显示微信公众号文章
  20. 完全拷贝的一份,程序员阅读书单

热门文章

  1. 人工神经网络算法的应用,人工神经网络算法步骤
  2. VMware无法连接网络问题不显示网络连接
  3. [转载]打工辛酸路:我是一朵飘零的花之94
  4. linux端口隔离,华为MA5626 取消端口隔离
  5. HeadFir st 设计模式学习笔记8--模板方法模式
  6. 盘点国内外8个好用的二维码平台
  7. HTML中的表单的使用
  8. Docker前世今生
  9. catboost和xgboost_Boosting算法大比拼:XGBoost vs. LightGBM vs. Catboost
  10. STM32驱动Marvell 88W8686 WiFi模块代码说明(20180129版)