GLSL 结构体和数组
结构体 着色语言还提供了类似于 C 语言中的用户自定义结构体,同样也是使用struct关键字进行声明,基本用法如下所示: struct info { vec3 color; vec3 postion; vec3 textureCoor; }...
obama阅读(5131)赞(6)
结构体 着色语言还提供了类似于 C 语言中的用户自定义结构体,同样也是使用struct关键字进行声明,基本用法如下所示: struct info { vec3 color; vec3 postion; vec3 textureCoor; }...
obama阅读(3290)赞(4)
GLSL 矩阵和采样器,3D场景中的移位、旋转、缩放等变换都是由矩阵的运算来实现的,因此3D场景的开发中会非常多地使用矩阵。故着色语言也提供了对矩阵类型的支持。这大大方便了开发。免去了自行构建矩阵的麻烦。 矩阵 矩阵按尺寸分为2×...
obama阅读(4386)赞(6)
GLSL 向量,着色语言中,向量可以看作是由同样类型的标量组成的,基本类型也分为 bool、int、uint 及 float 等 4 种。每个向量可以由 2 个、3 个 或者 4 个相同的标量组成,具体情况如下所示: 向量类型 说明 向量类...
obama阅读(3081)赞(8)
GLSL 标量,和 C 语言类似,着色语言中有许多内建的原生数据类型以及构建数据类型,如浮点型(float),布尔型(bool),有符号性(int),无符号性(uint),矩阵型(matrix)以及向量型(vec2,vec3等)等。总体来说...
obama阅读(6100)赞(10)
GLSL 着色语言,Vulkan 不再像 OpenGL 一样指定了高层的着色器编程语言(如 OpenGL 指定采用GLSL 着色器编程语言),而是采用一种被称为 SPIR-V 的二进制中间层格式。这样,开发人员在开发 Vulkan 着色器时...
obama阅读(12762)赞(6)
支持Vulkan的游戏,目前市面上已有几款知名游戏开始使用 Vulkan,但由于 Vulkan 诞生的时间不长,故使用 Vulkan 的游戏数量还不是太多。接下来,我们将对使用 Vulkan 的几款游戏进行简单的介绍。 支持Vulkan的G...
obama阅读(15695)赞(10)
支持Vulkan的GPU,GPU最早由NVDIA于1999年提出,指的是专门为执行图形渲染所需的复杂计算而设计的专用处理器,其在图形渲染工作的效率要远高于通用设计目标的CPU。对于3D图形相关开发人员及游戏爱好者而言,GPU能力是衡量PC或...
obama阅读(4941)赞(6)
Vulkan 基本类型,Vulkan 开发需要设计的类型非常多,本文介绍常用的 Vulkan 基本类型,主要包含设备、队列、命令缓冲、队列家族、渲染通,管线等,具体内容如下所示: VulkanTypeName Vulkan类型 说明 实例 ...
obama阅读(27952)赞(7)
Vulkan RunTime Libraries,你可能发现 Vulkan RunTime Libraries 程序安装在你的电脑上,但不确定这个程序到底是什么? 本教程会介绍它的用途,如何找到它,删除它,希望对你有所帮助。 每天,随着技术...
obama阅读(8460)赞(15)
Vulkan Visual Studio环境配置,本章详细介绍如何在Visual Studio中搭建Vulkan环境,创建vulkan工程,配置Vulkan SDK/library,运行Vulkan程序。 极客教程Vulkan 开发环境搭建...
obama阅读(40464)赞(64)
Vulkan和OpenGL区别,Vulkan与OpenGL相比,可以更详细的向显卡描述你的应用程序打算做什么,从而可以获得更好的性能和更小的驱动开销。Vulkan的设计理念与Direct3D 12和Metal基本类似,但Vulkan作为Op...
obama阅读(4629)赞(6)
Vulkan 多重采样(Multisampling),我们的程序现在加载了多层LOD的纹理,它修复了对象远离观察者时的锯齿问题。图像显得更加平滑,但是仔细观察,你会发现在绘制的几何图形的边缘上有锯齿状的图案。这在我们早期的一个程序中尤其明显...
obama阅读(5712)赞(4)
Vulkan 生成贴图(mipmap),现在我们的程序可以加载和渲染3D模型了。Mipmap广泛应用于游戏和渲染软件,对于如何创建它们,Vulkan给了我们完全的控制权。 Mipmap是缩小版本的image,每个新image是前一张图的宽度...
obama阅读(4976)赞(5)
Vulkan 加载模型(Loading models),应用程序现在已经可以渲染纹理3D模型,但是 vertices 顶点和 indices 索引数组中的几何体不是很有趣。在本章节我们扩展程序,从实际的模型文件冲加载顶点和索引数据,并使图形...
obama阅读(4073)赞(4)
Vulkan 深度缓冲区,到目前为止,我们所使用的几何图形为3D,但仍然完全扁平的。在本章节中我们添加Z坐标到3D模型数据中。我们将使用这个第三个坐标在当前平面上放置一个正方形,以查看几何图形没有进行深度排序造成的问题。 操作系统: Win...
obama阅读(3278)赞(2)
Vulkan 组合图像取样器,我们在教程的uniform缓冲区章节中首次了解了描述符。在本章节我们会看到一种新的描述符类型:组合图像取样器(combined image sampler)。该描述符使着色器通过类似上一章创建的采样器对象那样,...
obama阅读(3756)赞(2)
Vulkan 图像视图和采样器,在本章节我们将为图形管线创建另外两个资源来对图像进行采样。第一个资源我们之前已经接触过了,就是交换链,但是第二个资源比较新,它涉及着色器如何从图像中读取纹素。 操作系统: Windows8.1 显卡: Niv...
obama阅读(5938)赞(5)
Vulkan 图像(Images),到目前为止,几何图形使用每个顶点颜色进行着色处理,这是一个局限性比较大的方式。在本教程的一部分内容中,我们实现纹理映射,使得几何图形看起来更加生动有趣。这也会允许我们在未来的章节中加载和绘制基本的3D模型...
obama阅读(4624)赞(7)
Vulkan 描述符池和集合,描述符布局描述了可以绑定的描述符的类型。在本章节,我们创建描述符集,它将实际指定一个VkBuffer来绑定到一个uniform buffer描述符。 描述符池 描述符集合不能直接创建,它们必须像命令缓冲区一样,...
obama阅读(4406)赞(7)
Vulkan 描述符布局和缓冲区,在Vulkan中正确处理此问题的途径是使用资源描述符(resource descriptors)。描述符是着色器自由访问缓冲区和图像资源的一种方式。我们需要设置一个包含转换矩阵的缓冲区,并使顶点着色器通过描...
obama阅读(3781)赞(4)
Vulkan 索引缓冲区,索引缓冲区(index buffer)就是一个指向顶点缓冲区的指针数组,它允许我们重排列顶点数据,并复用多个已经存在的顶点数据,本章介绍了如何创建和使用索引缓冲区。 在实际产品的运行环境中3D模型的数据往往共享多个...
obama阅读(3878)赞(8)
Vulkan 临时缓冲区,在本章节我们创建两个顶点缓冲区,一个缓冲区提供给CPU-HOST内存访问使用,用于从顶点数组中提交数据,另一个顶点缓冲区用于设备local内存,我们将会使用缓冲区拷贝的命令将数据从临时缓冲区拷贝到实际的图形卡内存中...
obama阅读(7215)赞(5)
Vulkan 创建顶点缓冲区,在Vulkan中,缓冲区是内存的一块区域,该区域用于向显卡提供预要读取的任意数据。它们可以用来存储顶点数据,也可以用于其他目的。与之前创建的Vulkan对象不同的是,缓冲区自己不会分配内存空间。前几个章节了解到...
obama阅读(4317)赞(4)
Vulkan 顶点输入,在接下来几个章节中,我们将会使用内存顶点缓冲区来替换之前硬编码到顶点着色器中的顶点数据。我们将从最简单的方法开始创建一个CPU可见的缓冲区,并使用memcpy将顶点数据直接复制到缓冲区,之后将会使用暂存缓冲区将顶点数...
obama阅读(3772)赞(2)
Vulkan 重构交换链,现在我们已经成功的在屏幕上绘制出三角形,但是在某些情况下,它会出现异常情况。窗体surface会发生改变,使得交换链不在与其兼容。可能导致这种情况发生的原因之一是窗体的大小变化。我们必须在这个时机重新创建交换链。 ...
obama阅读(5339)赞(9)
Vulkan 渲染和显示,这一章节会把之前的所有内容进行整合,我们将会编写drawFrame函数,通过主循环main loop将三角形绘制到屏幕。drawFrame函数将会执行如下操作: 从交换链中获取一个图像 在帧缓冲区中,使用作为附件的...
obama阅读(5339)赞(7)
Vulkan 命令缓冲区,诸如绘制和内存操作相关命令,在Vulkan中不是通过函数直接调用的。我们需要在命令缓冲区对象中记录我们期望的任何操作。这样做的优点是可以提前在多线程中完成所有绘制命令相关的装配工作,并在主线程循环结构中通知Vulk...
obama阅读(6504)赞(4)
Vulkan 渲染通道,在我们完成管线的创建工作之前,我们需要告诉Vulkan渲染时候使用的framebuffer帧缓冲区附件相关信息。我们需要指定多少个颜色和深度缓冲区将会被使用,指定多少个采样器被用到及在整个渲染操作中相关的内容如何处理...
obama阅读(5106)赞(2)
Vulkan 集成管线,我们现在整合前几章节的结构体和对象创建图形管线!以下是我们现在用到的对象类型,作为一个快速回顾: Shader stages: 着色器模块定义了图形管线可编程阶段的功能 Fixed-function state: 结...
obama阅读(5811)赞(3)
Vulkan 帧缓冲区,我们在前面的章节中已经讨论了很多次framebuffers帧缓冲区,到目前为止我们配置了render pass渲染通道并希望输出一个与交换链图像格式一致的帧缓冲区,但是我们实际上还没有创建。 在render pass...