![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
vulkan
文章平均质量分 94
奇迹小缘
博客https://my.oschina.net/u/3763247 搬家到csdn
展开
-
Vulkan基础
客户端 + 服务端 / 逻辑段 + 渲染端 / CPU + GPUHost:一切由CPU与内存为基础进行的操作,例如模型的读取,鼠标键盘的事件响应,游戏引擎碰撞的逻辑,定时器等等。Device:一切由GPU与显存为基础的图形渲染、后处理等操作。原创 2023-08-21 16:49:42 · 548 阅读 · 0 评论 -
Vulkan Tutorial 10 重采样
这个新的缓冲区与我们一直在渲染的普通图像略有不同–它们必须能够存储每个像素的一个以上的样本。我们的程序现在可以为纹理加载多层次的细节,这修复了在渲染离观众较远的物体时出现的假象。现在的图像平滑了许多,然而仔细观察,你会发现在绘制的几何图形的边缘有锯齿状的图案。在普通的渲染中,像素的颜色是根据单个采样点确定的,在大多数情况下,这个采样点就是屏幕上目标像素的中心。我们也只使用一个mip级别,因为这是Vulkan规范在每个像素有一个以上的样本的情况下强制执行的。MSAA所做的是,它使用每个像素的。原创 2023-07-04 21:47:48 · 199 阅读 · 0 评论 -
Vulkan Tutorial 0 引言
这次旋风式的旅行应该让你对绘制第一个三角形的工作有一个基本的了解。一个真实世界的程序包含更多的步骤,比如分配顶点缓冲区、创建统一缓冲区和上传纹理图像,这些将在随后的章节中讲述,但我们将从简单的开始,因为Vulkan的学习曲线已经足够陡峭了。请注意,我们将通过最初在顶点着色器中嵌入顶点坐标而不是使用顶点缓冲器来欺骗一下。这是因为管理顶点缓冲器需要先熟悉一下命令缓冲器。所以简而言之,为了绘制第一个三角形,我们需要。原创 2023-06-08 15:56:52 · 810 阅读 · 0 评论 -
Vulkan Tutorial 9 模型加载&Mipmaps
向量包含很多重复的顶点数据,因为很多顶点被包含在多个三角形中。我们应该只保留唯一的顶点,并在它们出现的时候使用索引缓冲区来重用它们。它的速度很快,而且很容易集成,因为它是一个像stb_image一样的单文件库。在这一章中,我们还不会启用灯光,所以使用一个将灯光烘烤到纹理中的样本模型会有帮助。该网站上的许多模型都是以OBJ格式提供的,并有许可权。我调整了该模型的大小和方向,将其作为当前几何形状的替代品。在你的程序中放两个新的配置变量来定义模型和纹理的路径。不幸的是,我们还没有真正利用好索引缓冲区的优势。原创 2023-06-01 11:52:39 · 649 阅读 · 0 评论 -
Vulkan Tutorial 8 深度缓冲
深度缓冲区是一个额外的附件,它存储每个位置的深度,就像颜色附件存储每个位置的颜色一样。到目前为止,我们所处理的几何体是投射到三维的,但它仍然是完全平面的。我们将使用这第三个坐标在当前的正方形上放置一个正方形,看看几何体不按深度排序时出现的问题。与纹理图像不同,我们不一定需要一个特定的格式,因为我们不会直接从程序中访问纹理。它只需要有一个合理的精度,在现实世界的应用中,至少有24比特是常见的。格式,因为对它的支持是非常普遍的(见硬件数据库),但在可能的情况下,为我们的应用增加一些额外的灵活性也是不错的。原创 2023-05-31 12:16:11 · 659 阅读 · 1 评论 -
Vulkan Tutorial 7 纹理贴图
我们将从创建暂存资源并用像素数据填充它开始,然后将其复制到我们将用于渲染的最终图像对象。我们将首先创建这个缓冲区并用像素值填充它,然后我们将创建一个图像来将像素复制到。新建文件夹textures,放入图像texture.jpg,将其大小调整为 512 x 512 像素,但您可以随意选择您想要的任何图像。,这些布局会影响像素在内存中的组织方式。在对图像执行任何操作时,您必须确保它们具有最适合该操作的布局。stb_image库实现都写在头文件中,不需要编译成库,项目中直接引用头文件目录即可。原创 2023-05-30 14:59:10 · 1157 阅读 · 0 评论 -
Vulkan Tutorial 6 统一缓冲区
接下来的三个参数指定第一个描述符集的索引、要绑定的集的数量以及要绑定的集的数组。我们现在可以将任意属性传递给每个顶点的顶点着色器,模型-视图-投影矩阵将其作为顶点数据包含在内,但这是一种内存浪费。我们需要提供有关着色器中用于管道创建的每个描述符绑定的详细信息,设置一个新函数来定义所有这些信息,称为。到目前为止我们忽略的一件事是 C++ 结构中的数据应该如何与着色器中的统一定义匹配。将分配描述符集,每个描述符集都有一个统一的缓冲区描述符。函数,以实际将每个帧的正确描述符集绑定到着色器中的描述符。原创 2023-05-29 14:36:21 · 853 阅读 · 0 评论 -
Vulkan Tutorial 5 顶点缓冲区
我们将用内存中的替换顶点着色器中的硬编码顶点数据。我们将从最简单的方法开始,即创建 CPU 可见缓冲区并使用memcpy直接将顶点数据复制到其中。顶点着色器首先更改顶点着色器,使其不再在着色器代码本身中包含顶点数据。顶点着色器使用关键字从顶点缓冲区获取输入in。顶点数据我们将顶点数据从着色器代码移动到程序代码中的数组。首先包括 GLM 库,它为我们提供线性代数相关类型,如向量和矩阵。我们将使用这些类型来指定位置和颜色向量。该stride参数指定从一个条目到下一个条目的字节数,该inputRate。原创 2023-05-29 11:44:01 · 772 阅读 · 0 评论 -
Vulkan Tutorial 4
我们已经将渲染传递设置为期望一个与交换链图像格式相同的单一帧缓冲,但我们还没有实际创建任何图像。在渲染过程创建期间指定的附件通过将它们包装到一个对象中来绑定。帧缓冲区对象引用代表附件的所有对象。原创 2023-05-24 14:57:25 · 744 阅读 · 0 评论 -
Vulkan Tutorial 3 图形管线基础
我们将设置一个图形管道,并将其配置为绘制我们的第一个三角形。图形管道是将网格的顶点和纹理一直带到渲染目标中的像素的操作序列。带有绿色的阶段被称为固定功能阶段。这些阶段允许你使用参数来调整它们的操作,但它们的工作方式是预定义的。另一方面,橙色的阶段是 “可编程”的。Vulkan的图形管道几乎是完全不可改变的,所以如果你想改变着色器、绑定不同的帧缓冲器或改变混合功能,你必须从头开始重新创建管道。顶点着色器处理每个进入的顶点。它将其属性,如世界位置、颜色、法线和纹理坐标作为输入。原创 2023-05-23 17:50:56 · 763 阅读 · 0 评论 -
Vulkan Tutorial 2 presentation
由于Vulkan是一个与平台无关的API,它自己不能直接与窗口系统对接。为了在Vulkan和窗口系统之间建立连接,将结果呈现在屏幕上,我们需要使用WSI(窗口系统集成)扩展。。它暴露了一个对象,它代表了一种抽象的表面类型,用于呈现渲染的图像。我们程序中的表面将由我们已经用GLFW打开的窗口来支持。实际上我们已经启用了它,因为它被包含在返回的列表中。在调试回调的下面添加一个surface类成员。尽管Vulkan的实现可能支持窗口系统集成,但这并不意味着系统中的每个设备都支持它。因此我们需要扩展。原创 2023-05-23 12:08:34 · 829 阅读 · 0 评论 -
Vulkan Tutorial 1 实例和物理设备
首先包括LunarG SDK的Vulkan头,它提供了函数、结构和枚举。iostream’头文件被包括在内,用于报告和传播错误initVulkanmainLoopcleanup之后的每一节都会增加一个新的函数,该函数将从initVulkan中调用,并在cleanup中为需要在最后释放的私有类成员增加一个或多个新的Vulkan对象。Vulkan对象要么用这样的函数直接创建,要么通过这样的函数分配给另一个对象。在确保一个对象不再被用于任何地方后,你需要用对应的和销毁它。原创 2023-05-23 10:51:57 · 705 阅读 · 2 评论