渲染管线详解

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

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

更详细的流程如下:

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.mzph.cn/news/136087.shtml

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

相关文章

一文搞定多端开发,做全栈大牛 附三大企业实战项目

一个功能三套代码 一改需求就是加不完的班? 不存在的,告别改改改 拥抱多端开发 一套代码搞定多个平台 高效开发:一套代码,多端通用 根据统计数据,全球移动设备用户数已经超过了50亿。随着智能手机、平板电脑等移动…

JSON——数组语法

一段JSON可能是以 ”{“ 开头 也可能仅包含一段JSON数组 如下 [ { "name" : "hello,world"}, {"name" : "SB JSON”}, {“name” : "SB互联网房地产CNM“}, ] 瞧,蛋疼不...CJSON过来还是得搜下网…

【ES专题】Logstash与FileBeat详解以及ELK整合详解

目录 前言阅读对象阅读导航前置知识笔记正文一、ELK架构1.1 经典的ELK1.2 整合消息队列Nginx架构 二、LogStash介绍2.1 Logstash核心概念2.1.1 Pipeline2.1.2 Event2.1.3 Codec (Code / Decode)2.1.4 Queue 2.2 Logstash数据传输原理2.3 Logstash的安装(以windows为…

Python tkinter用iconphoto方法修改窗口标题的图片

修改Python Tkinter窗口的标题图片,可以使用PhotoImage、iconphoto方法。这个方法允许你设置窗口的图标。 运行结果 代码示例如下: import tkinter as tkroot Tk()# 加载图片,记住一定是要PNG图片 icon tk.PhotoImage(filephoto\\图片.pn…

python的format函数的用法及实例

目录 1.format函数的语法及用法 (1)语法:{}.format() (2)用法:用于格式化字符串。可以接受无限个参数,可以指定顺序。返回结果为字符串。 2.实例 (1)不设置位置&…

ChatGPT - 在ChatGPT中设置通用提示模板

文章目录 Prompt设置验证 Prompt VERBOSITY: 我可能会使用 V[0-3] 来定义代码的详细程度:V0 简洁明了 V1 简练 V2 详细 V3 非常详细,附有例子助理回应 您是用户问题背景下的主题专家。我们一步一步来:除非您只是回答一个简短的问题&#xff…

探索环保葡萄酒之生物动力

根据生物动力农业和园艺协会的说法,生物动力农业是“一种精神-伦理-生态的农业、园艺、食品生产和营养方法。”生物动力农民将他们的农场或葡萄园视为一个坚固的有机体,一个自我维持的生态系统。这些农业哲学和实践在整个农业周期中应用了一种整体方法。…

计算机毕业设计基于springboot+java+vue的健身房课程预约信息网站

运行环境 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven 项目介绍 本健身网…

C/C++轻量级并发TCP服务器框架Zinx-游戏服务器开发005:守护进程与进程监控

文章目录 1 守护进程1.1 进程组和会话1.2 会话的相关概念1.3 守护进程的概念1.4 守护线程的特点1.5 守护进程创建的基本步骤1.6 本项目守护进程的实现 2 进程监控2.1 进程监控的实现 1 守护进程 1.1 进程组和会话 进程除了有进程的PID之外还有一个进程组,进程组是…

AD9371 Crossbar

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 : AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射: AD9371 官方例程之 tx_jesd 与 xcvr接口映射 AD9371 官方例程 时钟间的关系与生成 : AD9371 官方…

Ubuntu18.04安装pcl-1.12.1,make时报错:/usr/bin/ld: cannot find -lvtkIOMPIImage

解决方案: 在vtk安装包中,重新打开cmake-gui,然后勾选上VTK_Group_MPI和VTK_Group_Imaging。 cd VTK-8.2.0 cd build cmake-gui然后重新编译生成。 make -j8 # 或者j4,量力而行。 sudo make install 就可以解决了。 然后重新回到pcl安装…

web3 从redux中拿出所有已完成订单 并渲染到对应的Table列表中

上文web3 React dapp项目通过事件从区块链中拿到 已取消 已完成 和所有的订单数据 并存入redux中 中 我们已经从 区块中拿到了自己的订单 然后 我们恢复一下上文的环境 ganache ganache -d然后 登一下 MetaMask 然后 用我们的项目 发布一下合约 truffle migrate --reset然后…

Win10 180天后怎么才能继续体验,自动保持续期,无需手动JH

环境: Win10 专业版 自制小程序 问题描述: Win10 180天后怎么才能继续体验,自动保持续期,无需手动JH 解决方案: 在执行本程序前需要以管理员身份运行!关闭杀毒软件,否则会失败,本方案只能在个人电脑测试体验, 只能用于学习测试体验 ,勿用与商业行为 1.先完全JH…

配置资源管理

Secret Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险。 三种类型: kubernetes.io/service-accoun…

2023.10月考试战报|华为认证HCIP考试100%通过

相关文章: 考试战报|2023.7月-8月思科认证、华为认证-CSDN博客 2023.4月及5月最新HCIP 考试战报来袭_厦门微思网络的博客-CSDN博客 HCIP 3-4月考试战报_厦门微思网络的博客-CSDN博客 2023年HCIP/CCNP考试战报_厦门微思网络的博客-CSDN博客 2023年10月&#xff0…

卸载QQ后聊天记录怎么恢复?这3个有效方法送给大家!

近年来,微信崛起,已经逐渐占据了人们的日常生活,成为大家不可或缺的东西。这也导致了如今使用QQ的用户变得越来越少。如果用户使用QQ的频率比较低,那么他们可能会选择卸载QQ以此来节省手机空间。 一旦将QQ卸载,这意味…

集合贴3——智能客服系统

基础课17——智能客服系统-CSDN博客文章浏览阅读56次。近年来,实体客服机器人开始出现在银行办公厅、电信商务厅等场合,形成了网络智能客服、电话智能客服、实体客服机器人综合智能客服系统,这初步形成了一种新的产业形式。https://blog.csdn…

强化您的应用安全,从app加固开始

强化您的应用安全,从app加固开始 目录 强化您的应用安全,从app加固开始 摘要 引言 1. 加密和数据保护 2. 代码混淆 3. 防止反编译 4. 安全测试 5. 更新和补丁 6. 权限控制 7. 输入验证和输出过滤 8. 日志记录和监控 9. 安全设计和架构 10.…

Python 函数定义详解(More on Defining Functions)- 默认参数/位置参数/关键字参数

1.函数的定义和调用方法 1.1函数定义方法 """def 关键字用来定义一个函数。function_name 是函数名,应遵循命名规范。parameter1, parameter2, ... 是函数的参数列表,可以是任意数量和类型的参数。函数体是用缩进(通常为4个…

Cesium 相机设置

1.setView 直接跳转到目的地 // 设置相机位置 const position Cesium.Cartesian3.fromDegrees(113, 31, 20000); // setView通过定义相机目的地(方向),直接跳转到目的地 viewer.camera.setView({ destination: position, // 位置设置 orientation: { //…