渲染管线详解

news2024/11/24 10:34:45

光栅化的渲染管线一般分为三大阶段:应用程序阶段->几何阶段->光栅化阶段

也可以四大阶段: 应用程序阶段->几何阶段->光栅化阶段->逐片元操作阶段

更详细的流程如下:

Vertex Specification(顶点规范化):

在渲染管线中,Vertex Specification 通常发生在顶点着色器(Vertex Shader)之前。顶点着色器(Vertex Shader)是渲染管线中的一个重要阶段,主要负责处理顶点数据。在顶点着色器之前,需要先进行顶点规范(Vertex Specification),即确定渲染所需的顶点数据,包括顶点的位置、纹理坐标、法线向量等信息。这些顶点数据会被送入渲染管线,并在后续的阶段中被处理和渲染。因此,Vertex Specification 可以看作是渲染管线中顶点着色器的前置处理阶段。 

Vertex Processing(顶点处理):

Vertex Processing(顶点处理)是渲染管线中的一个重要阶段,主要负责处理顶点数据。具体来说,顶点处理涉及以下几个主要方面:

  1. 顶点着色器(Vertex Shader):用于对每个顶点进行各种操作,例如变换(transformation)、光照(lighting)等。
  2. 曲面细分着色器(Tessellation Shader)主要用于对网格中的三角形进行细分,以增加物体表面上的三角形数量,从而提升模型表面的细节和平滑度。 曲面细分着色器通过将低精度网格转换为高精度网格,使得渲染结果更加细腻和逼真。曲面细分着色器通常位于顶点着色器之后,图元装配和光栅化之前。通过将顶点着色器的输出传递给曲面细分着色器,并使用相应的算法进行细分处理,可以得到更加丰富的三角形网格,从而提升模型表面的细节和表现力。
  3. 几何着色器(Geometry Shader):

    几何着色器的主要功能是对输入的图元(如点、线段、三角形)进行操作,并根据需要生成零个、一个或多个输出的新的图元。

    几何着色器可以实现一些有趣的效果,例如对图元进行细分、放大缩小、几何形状的变换等。此外,几何着色器还可以用于实现粒子系统、草地生成等特殊效果。

    几何着色器的输入是完整的图元,输出是新的图元。在渲染管线的运行过程中,几何着色器阶段将接收来自顶点着色器的输出数据,并对其进行进一步处理。然后,根据需要生成新的图元,并将它们传递给下一个阶段进行处理。

Vertex Post Processing(顶点后处理阶段)发生在顶点处理阶段结束后,图元装配和光栅化之前。这个阶段主要进行一些顶点的优化和调整操作,例如对顶点位置进行修正、对顶点进行合并等。 在顶点后处理阶段,通常会使用一些数学函数或算法对顶点数据进行处理,例如对顶点位置进行修正可以使用线性插值等方法。此外,这个阶段还可以对顶点进行合并操作,以减少图元的数量和减小渲染的复杂度。

  1.         Transform Feedback(变换反馈)是OpenGL ES 3.0渲染管线中的一个步骤,发生在顶点处理阶段结束后,图元装配和光栅化之前。这个步骤可以重新捕获即将装配为图元(点、线段、三角形)的顶点,并将它们的部分或者全部属性传递到缓存对象。Transform Feedback的主要作用是将顶点着色器的处理结果输出,并且可以有多个输出,这样可以将大量的向量或矩阵运算交给GPU并行处理。每个顶点在传递到图元装配阶段时,将所有需要捕获的属性数据记录到一个或者多个缓存对象中,程序可以通过这些缓存读出这些数据,可以将它们用于后续的渲染操作。

图元装配(Primitive Assembly)在渲染管线的顶点处理阶段之后,图元装配和光栅化之前。它负责将顶点着色器处理过的顶点组装成一个一个独特的可以被渲染的几何图元,如三角形、线、点块纹理。在组装好图元之后,它会判断该图元是否处于屏幕的可显示的范围内,如果图元完全不在屏幕的可显示范围内,那么它就会丢弃该图元,如果图元有一部分在可显示的范围内,则裁切图元,丢弃不在屏幕显示范围内的部分。(Face Culling)除此之外,图元装配也会去判断图元的朝向是面向正面还是背面,如果图元是面向背面的,那么该图元也会被丢弃。

光栅化(Rasterization)操作是指将几何图形(例如点、线、多边形等)转换为像素图像的过程。这个过程涉及到将几何图元的顶点坐标转换为屏幕坐标,并对图元的几何信息进行插值和填充。在光栅化过程中,需要将连续的几何图形映射到离散的像素上,并根据像素的位置和属性来确定其颜色和深度等值。

片元着色器(Fragment Shader)主要负责计算每个像素的颜色值。在光栅化阶段中,几何图形被转换为一个个的片段(Fragments),每个片段对应于屏幕上的一个像素这些片段会传递给片元着色器进行处理,以计算出最终的像素颜色值。

在片元着色器中,开发人员可以定义像素的颜色计算方法,例如根据纹理采样结果计算像素颜色、进行光照计算等等。开发人员还可以使用片元着色器来实现各种图形特效和渲染技术,例如透明度、阴影、反射等等。

Per-sample processing(逐片元操作)主要用于对光栅化生成的每个片元进行处理。

逐片元操作的主要内容:

像素所有权测试→裁剪测试→透明度测试→模板测试→深度测试→透明度混合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1189453.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPTZero:论文打假神器

记住这张脸他是全美学生的公敌。 别的学生在AI大浪潮间翻云覆雨,有的用GPT代写作业,有的用GPT代工论文,大家都忙的不亦乐乎。 正在大家都在欢呼雀跃跟作业拜拜时,就是这个小伙,普林斯顿大学的华裔小天才Edward Tian…

Git入门---简介,常用命令

🎬 艳艳耶✌️:个人主页 🔥 个人专栏 :《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 越努力 ,越幸运。 1.Git 的简介 1.1. 介绍 Git是一个开源的分布式版本控制系统,最初由Linus Torvalds于2005年创…

Adobe Illustrator 2021 下载及安装教程

目录 下载地址: 安装教程: 下载地址: Adobe Illustrator 2021安装包 链接:https://pan.baidu.com/s/1UIzjbS5pRuL7Zpt9RrU5lQ 提取码:lxwj 安装教程: 1、下载压缩包,解压文件 2、双击Set_up.exe&#…

数据分析实战 | 线性回归——女性身高与体重数据分析

目录 一、数据集及分析对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型评价 九、模型调参 十、模型预测 实现回归分析类算法的Python第三方工具包比较常用的有statsmodels、statistics、scikit-learn等&#…

刚接触银行新业务测试的一些问题

在银行金融领域的测试工作,相信很多测试工程师都会遇到自己不熟悉的业务。然后开始看文档,问开发或者需求人员。搞懂了大概的流程,然后开始进行测试。 不过遇到复杂的业务情况时,真的很需要时间去梳理。而且测试环境的配置问题、不…

ruoyi前后端分离版本开发框架解读---让你快速入门

后端结构 com.ruoyi ├── common // 工具类 │ └── annotation // 自定义注解 │ └── config // 全局配置 │ └── constant // 通用常量 │ └── core …

【Linux】第十四站:进程优先级

文章目录 一、Linux内核怎么设计各种结构二、进程优先级1.基本概念2.是什么3.为什么要有优先级4.批量化注释操作5.查看优先级6.PRI and NI 三、位图与优先级 一、Linux内核怎么设计各种结构 我们前面所写的数据结构都是比较单纯的。 而linux中就比较复杂了,同一个…

深入分析MySQL索引与磁盘读取原理

索引 索引是对数据库表中一列或者多列数据检索时,为了加速查询而创建的一种结构。可以在建表的时候创建,也可以在后期添加。 USER表中有100万条数据,现在要执行一个查询"SELECT * FROM USER where ID999999",如果没有索…

数据结构与算法C语言版学习笔记(5)-串,匹配算法、KMP算法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、串的定义二、串的存储结构1.顺序结构2.链式结构 三、串的朴素的模式匹配算法(暴力匹配算法)1.背景2.假设我们要从下面的主串 S"…

VS Code+DevChat助力非专业开发也能玩转代码编程

一、前言 偶然间网上瞎逛,看到DevChat 发布了一款 VS Code 插件,可提供类似chatgpt一样的“一站式 AI 辅助编程”体验。据说, DevChat 直接对接 GPT-4 还让免费用,目前免费注册收邮件即可获取key,再也不用麻烦的外部手…

人工智能在汽车业应用的五项挑战

在汽车行业扩展人工智能应用时需要注意的问题 随着更多企业投资于汽车人工智能 (AI) 解决方案,我们也愈加接近大规模部署 5 级全自动驾驶汽车。汽车行业的组织如果希望加入这场 AI 带来的颠覆性变革,就应该已提前考虑如何成功和大规模地将人工智能部署到…

商人宝:收银系统一般多少钱

推荐方案基于来自各大电商平台的用户评价数据,为您推荐以下收银系统数据: 1.硬件方面 小票打印机、扫码枪、收银盒等硬件终端设备都是不可或缺的。一般小票打印机、扫码枪、收银盒,价格在2-500元之间,性能稳定、使用寿命长、使用…

记录第一次银行测试岗面试【总结几点面试不要犯得错误】

LZ在一个18线小城市做测试,近来想走出自己的舒适区,去做一点不一样的测试工作。 18线地区,测试工作并不多。最好的差不多就是LZ目前待着的公司了。遂决定去魔都闯荡几年,对一个在魔都无房无车无户口的人来讲,这意味着…

循环链表的设计与基本操作的实现

目录 一.循环链表的设计 二.循环链表的实现 三.循环链表的总结 一.循环链表的设计 1.循环链表的结构设计: typedef struct CNode{int data;struct CNode* next;}CNode ,*CList; 2.循环链表的示意图: 3.循环链表和单链表的区别: 唯一区别,没有空指针,尾节点的后继为头,为循…

订水商城实战教程09-跑马灯

目录 1 跑马灯效果2 创建数据源3 创建变量4 搭建组件5 数据绑定6 录入测试数据总结 上一篇我们介绍了轮播图如何开发,本节我们介绍一下跑马灯的效果开发。 1 跑马灯效果 通常小程序会增加一点动画的效果来让页面显得不那么死板,我们这里增加了一个跑马灯…

软件测试|测试方法论—边界值

边界值分析法是一种很实用的黑盒测试用例方法,它具有很强的发现故障的能力。边界值分析法也是作为对等价类划分法的补充,测试用例来自等价类的边界。 这个方法其实是在测试实践当中发现,Bug 往往出现在定义域或值域的边界上,而不…

深度学习4:BatchNormalization(批规范化)

一、起源 训练深度网络的时候经常发生训练困难的问题,因为,每一次参数迭代更新后,上一层网络的输出数据经过这一层网络计算后,数据的分布会发生变化,为下一层网络的学习带来困难。 Batch Normalizatoin 之前的解决方…

【小黑送书—第四期】>>用“价值”的视角来看安全:《构建新型网络形态下的网络空间安全体系》

经过30多年的发展,安全已经深入到信息化的方方面面,形成了一个庞大的产业和复杂的理论、技术和产品体系。 因此,需要站在网络空间的高度看待安全与网络的关系,站在安全产业的高度看待安全厂商与客户的关系,站在企业的高…

excel表的筛选后自动求和

一般都使用subtotal函数。 通过看一个大佬的视频,发现可以有更简单的方法。 首先任意筛选数据(ctrlshiftl), 然后选中需要求和的列的最下方的空白单元格,再按alt。 回车即可。 实质它还是用的subtotal函数