初识Vulkan渲染管线

2023-05-16

目前参考《Vulkan规范》和《Vulkan开发实战详解》对渲染管线有了一个初步的认识。现结合中英文的渲染管线图进行笔记整理。中英文的渲染管线图分别如下所示:

 

绘制命令送入设备队列执行后,Vulkan将原始的物体顶点坐标数据、顶点颜色数据最终转化为屏幕中画面。上面中文管线结构图中有两个应用程序入口,左侧为简单示例入口,右侧为使用GPU进行高性能通用计算时的计算管线。

1.绘制:命令进入Vulkan图形渲染管线的位置。

       2.输入装配:读取顶点缓冲和索引缓冲中的数据,包含程序将要绘制物体的顶点信息数据(顶点位置坐标、顶点颜色、顶点法向量等),之后对数据分组进行组装。

       3.顶点着色器(Vertex Shader:可编程的处理单元,执行顶点的变换、完成光照与材质的运用及计算等相关操作,操作对象为每个顶点。工作流程:将原始的顶点坐标数据&其他属性值传送到顶点着色器中,再经由自己开发的顶点着色器处理后产生顶点纹理坐标、颜色、位置等属性值,传递到下一阶段。

       4.细分控制&细分求值着色器(Tessellation Control&Evaluation Shader:曲面细分时近代GPU提供的一项高级特性,可以再采用较少原始顶点数据的情况下绘制出如同采用海量数据描述的光滑曲面。曲面细分工作由细分控制着色器&细分求值着色器协同完成。具体过程:

--细分控制着色器负责确定执行细分的各项控制参数(边的切分数量、内部切分数量等)。

       --细分控制着色器计算完成之后,管线将执行细分图元生成固定功能。根据细分控制着色器中确定的各项控制参数生成细分后的各个图元。

       --细分求值着色器负责各个图元中计算每个顶点的各项属性数据(顶点位置、纹理坐标、法向量)

       5.几何着色器(Geometry Shader:近代GPU提供的高级特性,可以对图元进行处理。输入为一个图元,输出为一个或多个图元,图元类型可以不同。例如输入三角形,输出三角形的三条边和法线共四根线。可以使得再不重新组织绘制用原始数据的情况下,可以使用不同的模式进行绘制呈现。

       6.图元装配:第一个任务:把顶点着色器、细分求值着色器或几何着色器产生的结果顶点分组,根据绘制方式和顶点连接关系将顶点组成图元以供光栅化;第二个任务:组装完成后进行剪裁,若图元完全位于视景图和裁剪平面内部,则将完整的图元传递下去;若完全位于视景体或者自定义裁剪平面外部,则丢弃该图元;若一部分位于内部,一部分位于外部,则需要剪裁该图元。

       7.光栅化:将投影后的连续图元分解为一个一个离散化小单元的操作为光栅化,这些小单元成为片元。每个片元都对应帧缓冲中的一个像素,不能直接称之为像素是因为还需要深度信息进行遮挡处理才能最终成像。

       8.片元前操作:在片元着色器执行之前进行的预处理工作,根据程序设置情况,提出不需要处理的片元,提高后继片元着色器处理阶段的工作效率。

       9.片元着色器(Fragment Shader:用于处理光栅化阶段生成,并经过片元前操作处理的片元值及其相关数据的可编程处理单元。可以执行纹理的采样、颜色汇总操作,每个片元执行一次。

       10.片元后操作:片元着色器完成了对输入片元的处理后,还需要对片元进行一些特定的片元后操作:深度测试、模板测试。深度测试:指将输入片元的深度值与帧缓冲中存储的对应位置的深度值进行比较,将浅片元送入下一阶段,覆盖帧缓冲中原有片元/与帧缓冲中原有片元进行混合,或者丢弃片元。模板测试:将绘制区域限定在任意形状的指定范围内,一半用于镜像、睡眠倒影绘制场合。

       11.颜色混合:接受片元着色器和片元后操作结果,对每个片元执行一次。若开启混合,则根据混合因子、目标混合因子将片元颜色值与帧缓冲中对应位置的片元颜色值进行混合,否则送入的片元颜色值将覆盖帧缓冲中对应位置片元的颜色值。

       12.帧缓冲:Vulkan中的物体绘制时预先在帧缓冲中进行绘制,之后再绘制在屏幕上。帧缓冲是由一套附件组成的,组要包括颜色附件、深度附件、模板附件、输入附件。帧缓冲的操作会影响管线的最后几个阶段:深度和模板测试、混合、逻辑操作、多采样。

       --颜色附件:存储每个片元的颜色值,RGBA(透明)表示。应用程序中看到的即是颜色附件中的值。

       --深度附件:存储每个片元的深度值,深度值失值以特定的内部格式表示的从片元处到观察点(摄像机)的距离。

       --模板附件:存储每个片元的模板值,供模板测试使用。(非常灵活、复杂)

       --输入附件:一般在包含多个子渲染通道的渲染中使用。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初识Vulkan渲染管线 的相关文章

随机推荐

  • 洛桑联邦理工 TPAMI-2008 MTMC 概率占用图POM建模过程推导 笔记

    一切都要从2019年9月的那个秋天讲起 xff0c 林野哥向我推荐了这篇洛桑联邦理工的2008年TPAMI论文 xff0c 于是一个半月的时间都花在了这上面 Multi Camera People Tracking with a Proba
  • 知识图谱笔记(小象学院课程)

    2018年寒假看小象学院课程的时候写的笔记 xff0c 一共写了10页 xff0c 记得比较乱 因为纸质笔记不容易保存 xff0c 所以把它扫成了PDF以备后用 希望大家能够指出不足和错误
  • 隐马尔可夫模型HHM重要公式推导

    我终于把HMM看完了 xff0c 这些笔记都是看的过程中自己对推导过程写的注释 xff0c 还有知识框架 原来卡尔曼和粒子滤波都是属于HMM模型里面的 笔记结构如下 xff1a 1 HMM简介 xff1a 知识体系 43 一个模型 43 两
  • MOT指标笔记《CLEAR Metrics-MOTA&MOTP》2008年·卡尔斯鲁厄大学

    搞了这么久的MOT xff0c 到头来发现最基本的MOTA和MOTP还没有搞懂 xff0c 实在有点说不过去 今天花了一上午的时间阅读2008年卡尔斯鲁厄大学的 Evaluating Multiple Object Tracking Per
  • 概率图模型-知识结构

    两周多 xff0c 终于把概率图模型这一章看完了 xff0c 由于只是看了知识框架 xff0c 很多具体细节都还不理解 内容真的是好多啊 xff0c 而且都是理论 xff0c 没有实践 希望日后用到的时候能回忆的起来这些内容吧
  • 软件工程概论-课后作业1

    需要网站系统开发需要掌握的技术 1 网页设计 xff1a Photoshop Flash max Dreamweaver 2 网站程序 xff1a Dreamweaver Visual Studio NET 会asp asp net php
  • 《强化学习》——CH2 多臂赌博机 笔记

  • 相机几何学——投影矩阵P的构成(实验报告版)

    最近在可视化WildTrack数据集 xff0c 由于要对棋盘格点进行映射和绘制 xff0c 涉及到了P矩阵的计算 现在对P的来源进行了系统的整理 xff0c 以备后忘 在最后对场地端点映射产生的问题进行了讨论 xff08 事情开始变得有意
  • 约束优化方法_2_——Frank-Wolfe方法

    Frank Wolfe方法属于约束优化中可行方向法的一种 上一篇博文对同类型的Zoutendijk可行性方法进行了介绍 xff0c 这一部分着重关注Frank Wolfe方法 Frank Wolfe方法的基本思想是 xff1a 每次迭代中使
  • 二次规划_1_——Lagrange方法

    二次规化是非线性规化中的一种特殊情形 xff0c 其目标函数是二次实函数 xff0c 约束是线性的 考试中会考到四种方法 xff0c 分别为 xff1a Lagrange方法 起作用集方法 直接消去法和广义消去法 前两种在教材上有详细描述
  • 二次规划_2_——起作用集方法

    这个算法很反人类 xff0c 迭代过程相当复杂 xff0c 最优化老师说 xff1a 明确地告诉你要考的 起作用集方法适用于消元法和Lagrange方法无法处理的不等式约束二次规化问题 其主要思想是 xff1a 以已知点为可行点 xff0c
  • 约束非线性优化:几何意义&对偶形式

    借助老师的PPT对约束非线性优化问题的几何意义 和对偶形式 进行阐述 一 几何意义 xff08 1 xff09 等式约束 考虑只有等式约束h x 的非线性优化问题 xff0c 形式为 xff1a 可视化结果如下图所示 xff0c 红色曲线为
  • 转载篇:优秀博文汇总

    1 Pytorch中堆网络语法 xff1a nn moduleList 和Sequential由来 用法和实例 写网络模型 https blog csdn net e01528 article details 84397174 2 CNN中
  • 批量归一化:Batch Normalization层 原理+Pytorch实现

    一 BN层概念明晰 BN层存在的意义 xff1a 让较深的神经网络的训练变得更加容易 BN层的工作内容 xff1a 利用小批量数据样本的均值和标准差 xff0c 不断调整神经网络中间输出 xff0c 使整个神经网络在各层的中间输出的数值更加
  • 模型量化——基础知识 & LSQ论文阅读

    感谢陈老师给的机会 xff0c 有幸能够参加2020年的DAC比赛 我在其中负责目标检测器的调试和量化 自己第一次接触量化这个任务 xff0c 很多东西都是一点一点学 一 量化基础 对于一个全精度的值 v v v xff0c 若量化步长为
  • python3安装tensorflow遇到的问题

    1 使用命令 xff1a sudo pip3 install upgrade https storage googleapis com tensorflow linux cpu tensorflow 1 1 0rc2 cp35 cp35m
  • argparse模块使用说明

    深度学习的工程中 xff0c py文件中的main函数一开始总会有大量的参数传入 xff0c 而通常使用的方法就是使用argparse通过命令行传入 xff0c 这篇博文旨在记录argparse的常用方法 一 语句简介 1 载入argpar
  • Tensorboard在网络训练中的Logger使用方法

    做为神经网络训练中最常用的可视化工具 xff0c Tensorboard经常在Pytorch和Tensorflow框架中做为可视化工具 但是其使用的确是有点繁琐 xff0c 所以开设了一个这样的专题 xff0c 用于总结见过的工程里面的数据
  • Pytorch训练流程

    调试了很久YOLO的标准Pytorch实现 xff0c 将Train代码进行了重新整理 xff0c 抽出了标准的Pytorch训练框架 现在整理下来 xff0c 以备后用 整理后的代码分为三个大部分 xff0c 每个大部分分为三个小部分 x
  • 初识Vulkan渲染管线

    目前参考 Vulkan规范 和 Vulkan开发实战详解 对渲染管线有了一个初步的认识 现结合中英文的渲染管线图进行笔记整理 中英文的渲染管线图分别如下所示 xff1a 绘制命令送入设备队列执行后 xff0c Vulkan将原始的物体顶点坐