目前参考《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(透明)表示。应用程序中看到的即是颜色附件中的值。

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

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

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

初识Vulkan渲染管线相关推荐

  1. 高性能跨平台渲染引擎系列一: 跨平台渲染引擎简介

    引言: 一直工作比较忙,很久就想写点东西做个备忘,拖延至今.本系列也期望督促自己坚持记录分享,文中如有笔误或者理解偏差,欢迎各位指正交流.也期望未来基于该系列文章的相关代码同步到git上,最终完成一款 ...

  2. layui循环数据并渲染_从简单到复杂三维图形渲染管线

    一.什么是三维图形渲染管线 3D Graphics Rendering Pipeline 1.三维 3D,三维空间的简称. 在笛卡尔空间坐标系内,一般使用x.y.z三个分量表示一个位置. 2.图形 图 ...

  3. ios跨线程通知_一种基于Metal、Vulkan多线程渲染能力的渲染架构

    快手Y-tech  原创最新技术干货分享 随着3D渲染场景规模越来越复杂,单线程渲染架构在满足业务性能要求时已经捉襟见肘,因此,多线程渲染显得愈发重要.本文首先介绍了新一代图形渲染接口Metal.Vu ...

  4. DirectX12(D3D12)基础教程(四)——初识DirectXMath库、使用独立堆创建常量缓冲、理解管线状态对象、理解围栏同步

    目录 1.前言及本章内容提要 2.初识DirectXMath库 3.使用独立堆创建常量缓冲 4.理解管线状态对象 5.理解围栏同步 6.完整代码 1.前言及本章内容提要 经过了之前3篇教程的跨度有点大 ...

  5. 【Vulkan学习记录-基础篇-1】用Vulkan画一个三角形

    好久没有更新过博客了,上半年一直忙着找实习的事情,不过现在已经入职一段时间了,也可以抽出时间来继续整理一些内容,所以最近会尽量变得勤快一点来写博客. Vulkan是新一代的图形API,具有跨平台.高性 ...

  6. Vulkan Programming Guide::Chapter1::Overview of VulKan(纵观VulKan)

    VulKan 编程指南::第一章::纵观VulKan 在这一章你将会学习什么 什么是VulKan和背后的原理 如何去创建最简单的VulKan应用 本书会用到的一些专业术语和概念 在这一章我们将会介绍并 ...

  7. Vulkan 学习笔记

    VKInstance.VKPhysicalDevice.VKDevice.VKQueue.VKSwapChain.VKRenderPass.VKFrameBuffer.VKCommandPool.VK ...

  8. Unity3d轻量渲染管线(LWRP)民间文档

    转载:https://blog.csdn.net/weixin_42163773/article/details/84317223 近日在学习Unity3d的SRP,由于官方未正式发布,故几乎没有文档 ...

  9. 进击的 Vulkan 移动开发(一)之今生前世

    捋一捋 Vulkan . Vulkan 是什么 ? 文章开始之前先来讲一讲<王者荣耀>,作为曾经珠海市香洲区第五十号鲁班七号,可是有着辉煌的战绩. 18年9月份的时候,小米出了小米8青春版 ...

最新文章

  1. git部署与基本命令汇总
  2. HD 1213 How Many Tables(裸 并查集)
  3. python读取html_从零开始的Python爬虫教程(一):获取HTML文档
  4. pyqt5 下拉 多页 点击_PyQt5实战——自定义翻页控件实现
  5. sql缩进提高语句的可读性_为什么要使用列缩进来提高代码的可读性
  6. python字符串内建函数_Python的字符串内建函数(字符串处理)
  7. 【JVM】ZGC简介
  8. gd动态曲线 php_PHP 高级编程之多线程
  9. 判断一个文本文件的编码格式
  10. 第14章 使用Kotlin 进行 Android 开发
  11. 【2020模拟考试T1】【PAT乙】1031 查验身份证 (15分)模拟
  12. 在eclipse-oxygen-sts中,关于快捷键[CTRL + SHIFT + O]失效的问题
  13. Python对象加减法
  14. NMEA-0183 协议
  15. MIDAS截面特性计算器说明
  16. Linux系统操作命令
  17. CVPR 2022 Oral | MLP进军底层视觉!谷歌提出MAXIM:刷榜多个图像处理任务,代码已开源!...
  18. 《华尔街》观后笔记8——明暗创新
  19. Opencv 特征训练分类器
  20. 镀铬亮条怎么修复_汽车镀铬亮条生锈腐蚀怎么办如何修复

热门文章

  1. 蓝桥 卷“兔”来袭编程竞赛专场-10仿射加密 题解
  2. 白杨SEO:从百度一下到抖音搜索关键词进行查找信息,挖掘用户需求的新机会你知道吗?
  3. electron之坑addon
  4. 自建网盘利用OneDrive,oneindex网盘
  5. 用正点原子的精英版与onenet云平台连接
  6. Js年龄计算,精确到岁、月、小时
  7. 大同linux培训班,大同一对一高中辅导中心地址
  8. 2023软件测试最难求职季,哪些测试技能更容易拿到offer?
  9. php 星际争霸 面向对象,星际争霸之php面向对象(一)
  10. 微信打飞机小游戏的尝试