Vulkan 基础
介绍Vulkan渲染知识。
美颜特效.音视频
这个作者很懒,什么都没留下…
展开
-
Vulkan Android 实战 - 环境搭建
大家好,接下来将为大家介绍Vulkan Android 实战 - 环境搭建。原创 2020-04-10 22:14:48 · 1933 阅读 · 1 评论 -
Vulkan shader编译
大家好,接下来将为大家介绍Vulkan shader编译。一、编译shader在项目根目录下创建一个子目录,名shaders用于存储顶点着色器文件shader.vert和片段着色器文件shader.frag。GLSL着色器官方没有约定的扩展名,但是这两个扩展名是比较普遍通用的。shader.vert内容如下:#version 450#extension GL_ARB_separ...原创 2020-04-09 12:11:44 · 1727 阅读 · 1 评论 -
Vulkan shader模块使用
大家好,接下来将为大家介绍Vulkan shader模块使用。与之前的图像API不同,Vulkan中的着色器代码必须以二进制字节码的格式使用,而不是像GLSL和HLSL这样具有比较好的可读性的语法。此字节格式成为SPIR-V,它可以与Vulkan和OpenCL一同使用。这是一种可以编写图形和计算着色器的格式,但我们重点介绍本教程中Vulkan图形流水线使用的着色器。使用二进制字节码格式的优...原创 2020-04-08 21:52:07 · 1859 阅读 · 1 评论 -
Vulkan 渲染管线
大家好,接下来将为大家介绍Vulkan 渲染管线。我们将会开启有关图形管线的话题,通过对图形渲染管线的配置完成最后的三角形绘画。所谓图形管线就是将mesh使用到的vertices定点数据和贴图数据,转化为渲染targets像素的操作序列。简要的概述如下图所示:Input assembler:收集最原始的顶点数据,并且还可以使用索引缓冲区复用这些数据元素,而不必复制冗余的顶点数据副本。...原创 2020-04-08 21:29:53 · 1036 阅读 · 1 评论 -
Vulkan 图像与视图
大家好,接下来将为大家介绍Vulkan 图像与视图。使用任何的VkImage,包括在交换链或者渲染管线中的,我们都需要创建VkImageView对象。从字面上理解它就是一个针对图像的视图或容器,通过它具体的渲染管线才能够读写渲染数据,换句话说VkImage不能与渲染管线进行交互。除此之外,图像视图可以进一步定义具体Image的格式,比如定义为2D贴图,那么本质上就不需要任何级别的mipmapp...原创 2020-04-08 13:29:17 · 850 阅读 · 1 评论 -
Vulkan 同步机制 Event Barrier
大家好,接下来将为大家介绍Vulkan 同步机制 Event Barrier 。接着上一节的内容Vulkan 同步机制 Fence Semaphore,继续介绍Vulkan 同步机制 Event Barrier。1、BarrierBarrier是同一个queue中的command,或者同一个subpass中的command所明确指定的依赖关系。barrier的中文释义一般叫栅栏或者屏障...原创 2020-04-08 11:29:07 · 1595 阅读 · 2 评论 -
Vulkan 同步机制 Fence Semaphore
大家好,接下来将为大家介绍Vulkan 同步机制。在Vulkan中,对资源读写所需要的同步操作是应用程序开发者的职责,Vulkan本身只提供了很少的隐式同步机制,其余的都需要在程序中显式地使用Vulkan中的同步机制来实现。一、提交顺序提交顺序是Vulkan中的一个非常基本的概念,它本身并不具有任何同步的意义,但是不管是Vulkan提供的隐式同步,还是用户要自己实现的显式同步,都要以这...原创 2020-04-08 10:32:21 · 2496 阅读 · 1 评论 -
Vulkan 多线程综述
大家好,接下来将为大家介绍Vulkan 多线程综述。一、Vulkan多线程支持Vulkan多线程支持示意图如下图所示: Vulkan作为一个直接提供GPU硬件功能的接口,而不再负责多线程渲染的调度,以及线程并发访问的安全保护等工作,这意味着Vulkan接口内部不再像OpenGL ES一样有过度的线程同步,CPU/GPU之间的同步等操作。这些操作会为渲染接口的运行效率带...原创 2020-04-08 09:24:52 · 2104 阅读 · 1 评论 -
Vulkan Android 实战 - 接口导入
大家好,接下来将为大家介绍Android Vulkan 使用配置。首先要确定手机是否支持Vulkan,可以下载一个AIDA64应用app,在设备中如果能找到vulkan设备,说明支持,否则不支持。严格按照官方介绍的步骤一步步执行,就能获得官方推荐的可执行的例子,大家可以试一试。原创 2020-04-07 21:19:40 · 2806 阅读 · 1 评论 -
Vulkan - 高性能渲染 详述
Vulkan - 高性能渲染 详述。更依赖于程序自身的认知,让程序有更多的权限和责任自主的处理调度和优化,而不依赖于驱动尝试在后台的优化。程序开发者应该程序的最优化行为最为了解,传统图形API则靠驱动分析程序中调用API模式来揣测并且推断所有操作的优化方法。多线程友好。让程序尽可能的利用所有CPU计算资源从而提高性能。Vulkan中不再需要依赖于绑定在某个线程上的Context,而是用全新的基于Queue的方式向GPU递交任务,并且提供多种Synchronization的组件让多线程编程更加亲民。强调原创 2020-04-07 19:29:35 · 3637 阅读 · 1 评论 -
Vulkan 究竟是什么
Vulkan是一个图形和计算硬件的API(Application Programming Interface)。这个API由很多命令组成,它们允许程序员指定着色器程序,计算内核,对象和操作 产生高质量的图像,特别是三维对象的彩色图像。...原创 2020-04-07 18:55:30 · 12570 阅读 · 2 评论 -
Vulkan Window 窗口 Surface
大家好,接下来将为大家介绍Vulkan Window Surface。Vulkan是一个与平台特性无关联的API集合。它不能直接与窗口系统进行交互。为了将渲染结果呈现到屏幕,需要建立Vulkan与窗体系统之间的连接,我们需要使用WSI(窗体系统集成)扩展。在本小节中,我们将讨论第一个,即VK_KHR_surface。它暴露了VkSurfaceKHR,它代表surface的一个抽象类型,用以呈现渲染图像使用。我们程序中将要使用到的surface是由我们已经引入的GLFW扩展及其打开的相关窗体支持的。简单来原创 2020-04-07 17:51:29 · 1734 阅读 · 1 评论 -
Vulkan 交换链详解
大家好,接下来将为大家介绍Vulkan 交换链详解。在这一章节,我们了解一下将渲染图像提交到屏幕的基本机制。这种机制称为交换链,并且需要在Vulkan上下文中被明确创建。从屏幕的角度观察,交换链本质上是一个图像队列。应用程序作为生产者会获取图像进行绘制,然后将其返还给交换链图像队列,等待屏幕消费。交换链的具体配置信息决定了应用程序提交绘制图像到队列的条件以及图像队列表现的效果,但交换链的通常使...原创 2020-04-07 17:17:13 · 2811 阅读 · 2 评论 -
Vulkan 验证层详解
大家好,接下来将为大家介绍Vulkan 验证层。Vulkan API的设计核心是尽量最小化驱动程序的额外开销,所谓额外开销更多的是指向渲染以外的运算。其中一个具体的表现就是默认条件下,Vulkan API的错误检查的支持非常有限。即使遍历不正确的值或者将需要的参数传递为空指针,也不会有明确的处理逻辑,并且直接导致崩溃或者未定义的异常行为。之所以这样,是因为Vulkan要求每一个步骤定义都非常明...原创 2020-04-07 16:54:29 · 2565 阅读 · 2 评论 -
Vulkan 应用程序框架
大家好,接下来将为大家介绍Vulkan 应用程序框架。构建一个基于GLFW的Vulkan应用程序原型框架的雏形。一、框架原型#include <vulkan/vulkan.h>#include <iostream>#include <stdexcept>#include <functional>class HelloTria...原创 2020-04-07 15:53:33 · 809 阅读 · 1 评论 -
Vulkan:逻辑设备与队列
大家好,接下来将为大家介绍Vulkan:创建一个逻辑设备。创建一个VkDevice逻辑设备对象,它对应于系统上的一个物理设备。逻辑设备是稍后用于将图形命令定向到硬件的关键对象。到目前为止,已经可以确定有多少物理设备。列举这些设备的示例工具函数确保了至少有一个设备,否则它会以不正确的断言停止运行。一、选择一个设备// Get the number of devices (GPUs)...原创 2020-04-07 15:06:51 · 1208 阅读 · 1 评论 -
Vulkan:物理设备与队列族
大家好,接下来将为大家介绍Vulkan 物理设备与队列。创建完了instance后,loader知道了你有多少个物理设备(显卡)是可用的,但是application是不知道的。application可以通过Vulkan的API来获得可用的物理设备列表。物理设备与实例相关,如上图所示。...原创 2020-04-07 11:48:41 · 845 阅读 · 1 评论 -
Vulkan:创建Vulkan实例
大家好,接下来将为大家介绍Vulkan:创建Vulkan实例。与Vulkan打交道,通常的步骤是创建一个intance去初始化Vulkan library。这个instance是您的应用程序与Vulkan库之间的连接桥梁,通常创建过程中,需要向驱动程序提供一些应用层的信息。1、创建一个实例Vulkan API使用vkInstance对象来存储所有每个应用的状态。应用程序必须在执行任何其...原创 2020-04-07 10:22:00 · 750 阅读 · 1 评论 -
Vulkan 简介及其特点
大家好,接下来将为大家介绍Vulkan 简介及其特点。1、Vulkan是一个跨平台的2D和3D绘图应用程序接口(API)。2、VulkanAPI被称为“次世代OpenGL行动”(next generation OpenGL initiative)或“glNext”,就像OpenGL,Vulkan针对实时3D程序(如电子游戏)设计,Vulkan并计划提供高性能和低CPU管理负担(overhe...原创 2020-04-06 21:34:59 · 9463 阅读 · 1 评论