![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
vulkan
文章平均质量分 70
略略鱼子酱
这个作者很懒,什么都没留下…
展开
-
vulakn技巧调用ssbo的值
【代码】vulakn技巧调用ssbo的值。原创 2022-09-25 20:58:41 · 221 阅读 · 0 评论 -
Vulkan-官方示例解读-子通道
使用子通道和输入附件在单个渲染通道中从帧缓冲区附件(仅相同位置)写入和读取数据的高级示例。这用于实现延迟渲染合成,并在单次传递中增加了前向透明度.原创 2022-07-18 21:17:48 · 474 阅读 · 0 评论 -
Vulkan-官方示例解读-RayTracingShadows&在这里边使用模型(2)
上篇内容介绍了光线追踪的前半部分包括两层加速结构以及着色器绑定表的创建接下来万层下半部分内容五种shader具体的调用流程图如下(你也可以把此图看成Vulkan光追的渲染管线示意图):1)创建光线追踪调度的描述符集2)创建光线追踪管线(先于描述符集的创建)用于绑定着色器要调用的缓冲数据3)创建用于将矩阵传递到光线追踪光线生成着色器的统一缓冲区4)生成命令和缓冲5)创建存储图像二、Shader文件光线追踪管道的行为更像计算管道而不是光栅化图形管道。vk光线追踪在抽象的 3Dwidth/heigh原创 2022-06-11 22:16:14 · 499 阅读 · 2 评论 -
Vulkan-官方示例解读-RayTracingShadows&在这里边使用模型(1)
使用新的光线追踪扩展将光线追踪阴影投射添加到更复杂的场景中。展示如何添加多个命中和未命中着色器以及如何修改现有着色器以添加阴影计算。2.公共函数二、raytracingshadows.cpp文件1.引入库代码如下(示例):2.类以及类变量属性代码如下(示例):2.主要函数-1建立加速结构1)创建包含场景实际几何图形(顶点、三角形)的底层加速度结构。在本例中,我们将加载一个更复杂的场景,而不是一个简单的三角形。2)顶级加速结构包含场景的对象实例3.主要函数-2创建着色器绑定表详细内容参原创 2022-06-10 23:19:41 · 405 阅读 · 0 评论 -
Vulkan-官方示例解读-Shadows(光栅化)
2.重要函数1)为屏幕外帧缓冲区设置单独的渲染通道。这是必需的,因为屏幕外帧缓冲区附件使用的格式与示例中的格式不同。2)设置屏幕外帧缓冲器,用于将场景从光源的视点渲染。然后,此帧缓冲器的深度连接将用于从阴影通道的片段着色器中采样。3)该示例中的创建命令缓冲:注意用到了两个渲染通道,第一个用于生成阴影贴图,而选择是否用光源视角进行渲染则在第二个中。4)描述符布局5)描述符集6)管线7)uniform二、Shader1.offscreen 阴影贴图渲染vertfrag2.scene模型渲原创 2022-06-09 20:45:43 · 562 阅读 · 0 评论 -
Vulkan-官方示例解读-RayTracing
VK_KHR_acceleration_structure 和 VK_KHR_ray_tracing_pipeline 扩展进行硬件加速光线追踪的基本示例。展示了如何设置加速结构、光线追踪管线和进行实际光线追踪所需的着色器绑定表。2.RayTracing类2.函数创建暂存缓冲区以保存光线追踪加速结构的临时数据创建加速结构Buffer从用于光线追踪的某些缓冲区所需的缓冲区获取设备地址设置光线生成着色器将要被写入的存储图像创建包含场景实际几何图形(顶点、三角形)的底层加速度结构设置高层级的加速原创 2022-06-06 20:39:56 · 762 阅读 · 0 评论 -
Vulkan-官方示例解读-cube map&skyBox
从包含六个不同面的磁盘加载立方体贴图纹理。所有面和 mip 级别都上传到视频内存中,立方体贴图显示在天空盒上作为背景,并显示在 3D 模型上作为反射。并且演示了天空盒子的用法。2.函数加载cubemapbuildCommandBuffersloadAssetsDescriptorSets 描述符渲染管线UniformBuffer二、Shader1.skybox.vert代码如下(示例):2.skybox.frag代码如下(示例):3.reflect.vert代码如下(示例):原创 2022-06-05 21:36:03 · 1005 阅读 · 0 评论 -
Vulkan-官方示例解读-Specialization constants(专业化常数)
使用 SPIR-V 专业化常量从单个“超级”着色器创建具有不同照明路径的多个管道。给shader使用同一个uniform buffer2.函数buildCommandBufferspreparePipelines:使用specializationData 专业化数据。着色器阶段的每个着色器常量对应于一个地图条目。基于特化常量的着色器绑定由新的“constant_id”布局限定符标记。分配的专用化信息是着色器阶段(modul)的一部分,必须在创建模块后和创建管道之前进行设置。最后给每一个shader都创原创 2022-06-04 20:38:22 · 324 阅读 · 0 评论 -
Vulkan-官方示例解读-push constants推送常量而无需同意缓冲区
使用推送常量(存储在命令缓冲区中的小块统一数据)将数据传递给着色器,而无需统一缓冲区。使用推送常量,可以将一小段静态数据传递给着色器,该着色器存储在命令缓冲区统计信息中这非常适合传递例如静态每个对象的数据或参数,而无需描述符集该示例使用这些参数来推送不同的静态参数来呈现多个对象示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。代码如下(示例):2.函数设置球形物体函数:void buildCommandBuffers()void setupDescript原创 2022-06-03 23:04:14 · 353 阅读 · 0 评论 -
Vulkan-官方示例解读-动态统一缓冲区
动态统一缓冲区用于渲染具有存储在单个统一缓冲区对象中的多个矩阵的多个对象。各个矩阵在描述符绑定时间上动态寻址,最大限度地减少所需描述符集的数量。为每个对象使用一个统一缓冲区,而是分配一个大的统一缓冲区。关于设备通过 minUniformBufferOffsetAlignment 报告的对准包含场景中对象的所有矩阵。使用的描述符类型VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC然后允许设置动态偏移量,用于将数据从单个统一缓冲区传递到连接的着色器绑定点。用于对齐内存分配的原创 2022-06-03 22:24:24 · 558 阅读 · 0 评论 -
Vulkan-官方示例解读-descriptorSet(描述符集)以及Descriptorpool(描述符池)
文章目录前言一、descriptorSets.cpp1.类以及击沉变量2.函数二、着色器1.cube.vert2.cube.frag前言描述符用于将数据传递给着色器绑定点。设置描述符集、布局、池,基于集合布局创建单个管道,并使用不同的描述符集渲染多个对象。也是用来传递layout的方式,如:layout (set = 0, binding = 0) uniform UBOMatrices一、descriptorSets.cpp本示例使用了两个cube进行测试1.类以及击沉变量class Vu原创 2022-05-30 17:21:37 · 1449 阅读 · 0 评论 -
Vulkan-官方示例解读-piplines 2- 静态
文章目录前言一、主函数文件二、注意修改UI1.修改UI前言这个是渲染管线的拓展内容,主要还是集中在渲染管线的创建以及命令缓冲创建上,添加了统计数据功能以及在UI上进行改变操作。主要可以学习的是渲染模型的位置效果如何改变。提示:以下是本篇文章正文内容,下面案例可供参考一、主函数文件创建命令缓冲: void buildCommandBuffers() { VkCommandBufferBeginInfo cmdBufInfo = vks::initializers::commandBuf原创 2022-05-30 16:10:47 · 443 阅读 · 0 评论 -
Vulkan-官方示例解读-piplines
文章目录前言一、piplines.cpp1.基本变量2.函数二、GLSL1.phone2.toon3.wireframe前言piplines:使用将状态信息(光栅化状态、剔除模式等)与着色器一起烘焙到单个对象中的管道状态对象 (pso),使实现更容易优化使用(与 OpenGL 的动态状态机相比)。本例子还演示了管道导数的使用。后面进一步还有静态渲染管线。提示:以下是本篇文章正文内容,下面案例可供参考一、piplines.cpp1.基本变量class VulkanExample: publ原创 2022-05-30 15:32:05 · 410 阅读 · 0 评论 -
Vulkan-官方示例解读-Model-gltfscenerendering
文章目录前言一、gltfscenerendering.h文件1.VulkanglTFScene类:2.VulkanExample 类:二、CPP文件1.VulkanglTFScene函数2.glTF rendering函数3.Vulkan Example类函数三、shader1.创建shader2.scene.vert3.scene.frag前言渲染从 glTF 2.0 文件加载的完整场景(sponza宫殿)。该示例基于 glTF 模型加载示例,并添加了使用 Crytek 的 Sponza 模型以及每原创 2022-05-29 16:23:09 · 372 阅读 · 0 评论 -
Vulkan-官方示例解读-glTF model loading and rendering
文章目录前言一、文件结构分析二、代码分析1.VulkanglTFModel类的变量2.VulkanExample类总结前言加快vulkan的应用速度,直接分析model加载的代码。这些示例详细展示了如何实现 glTF 2.0 3D 格式 3D 传输文件格式的不同功能。展示如何从 glTF 2.0 文件加载完整的场景。 glTF 2.0 场景的结构被转换为使用 Vulkan 渲染场景所需的数据结构。一、文件结构分析直接定义了一个VulkanglTFModel类包含在 Vulkan 中渲原创 2022-05-28 21:59:32 · 664 阅读 · 0 评论 -
Vulkan-官方示例解读-Base&First triangle
Vulkan-官方示例解读-First triangle文章目录前言一、Base1、Base的基本内容2、Base的文件内容二、Triagle1.VulkanExample类创建:2.Triangle类用到的函数3.具体执行总结前言从头创建vulkan框架太过复杂,选择直接用官方的示例架构,从这里直接创建项目,第一步就是解读官方示例代码一、Base1、Base的基本内容base的核心是对原本vulkan所用到的一些列代码进行封装,之后在同一个解决方案下直接创建项目,这样重新创建项目的时候.原创 2022-05-28 15:45:47 · 541 阅读 · 0 评论