vulkan相关内容

我可以将R8G8B8A8放在UBO中,并将其用作ve4吗?

我尝试优化工作的计算着色器。它的目的是创建一个图像:找到好的颜色(使用一个小调色板),然后调用imageStore(image, ivec2, vec4)。 颜色在统一缓冲区的uint数组中进行索引。 此UBO中的一种颜色被包装在一个Uint内,如{0-255,0-255,0-255,0-255}。 代码如下: struct Entry { *some other da ..
发布时间:2022-08-04 14:01:43 其他开发

有没有办法将VkDescriptorImageInfo设置为空,或者有某种方法跳过使用VkWriteDescriptorSet而不会出现Vulkan抱怨

我将使用的一些网格并不总是有DiffuseMap或specularMap。当我试图加载没有漫反射和镜面反射贴图的对象时,程序崩溃,因为DiffuseMap.ImageView/specularMap.ImageView中没有任何内容,因为它没有指向任何内容。如果我尝试将Imageview/Sample设置为VK_NULL_HANDLE,程序会显示以下内容并在vkUpdateDescriptorSe ..
发布时间:2022-04-16 18:15:35 C/C++开发

在不同队列族上重复使用相同的主机可见缓冲区

考虑主机可见的缓冲区(主要与流缓冲区相关,即由VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT内存支持的缓冲区),让我们假设以下使用模式: 将新数据写入主机上的映射地址(在正确同步之后)。 使用步骤1中写入的内容读取队列族A上的缓冲区。 将新数据写入主机上的映射地址(在正确同步之后)。 使 ..
发布时间:2022-04-04 20:43:11 其他开发

如何测量伏尔坎管道的执行时间

摘要 我希望能够在GPU上测量运行整个图形流水线的时间(以毫秒为单位)。目标:能够在优化代码之前/之后保存基准(下一步将是mipmap纹理)以查看改进。这在OpenGL中非常简单,但我是Vulkan新手,可能需要一些帮助。 我已经浏览了相关的现有答案(here和here),但它们确实没有太大帮助。而且我在任何地方都找不到代码示例,所以我敢在这里问。 通过文档页,我发现了几个我认为应该 ..
发布时间:2022-03-13 12:15:03 其他开发

用于均匀缓冲区的Vulkan存储器对齐

我正在学习联机教程:vulkan-tutorial其中作者正在添加描述符池和描述符集的功能。 我使用的是Vulkanv1.2.135.0,我的着色器设置为#version 450 我几乎完成了本教程的这一部分,我能够渲染旋转正方形,并且在调试模式下编译和运行时没有收到来自Vulkan层的错误。 我在上面的链接提供的页面底部附近,他在UniformBufferOjbect结构中引入 ..
发布时间:2022-03-11 19:45:15 C/C++开发

使用哪种方式来同步 vkQueueSubmit()?

我有一个将数据从一个缓冲区复制到另一个缓冲区的函数,我需要同步它的执行. 我有一个糟糕的选择: void MainWindow::copyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, VkDeviceSize 大小){VkCommandBuffer 命令缓冲区;vkAllocateCommandBuffers(logicalDevice, &al ..
发布时间:2022-01-22 20:44:56 C/C++开发

我应该在统一缓冲区或着色器存储缓冲区对象中使用“vec3"吗?

vec3 类型是一个非常好的类型.它只占用 3 个浮点数,而我的数据只需要 3 个浮点数.我想在 UBO 和/或 SSBO 的结构中使用一个: layout(std140) 统一 UBO{vec4 数据1;vec3数据2;浮动数据3;};布局(std430)缓冲区 SSBO{vec4 数据1;vec3数据2;浮动数据3;}; 然后,在我的 C 或 C++ 代码中,我可以这样做来创建匹配的数据结 ..
发布时间:2022-01-09 08:42:43 其他开发

我应该在统一缓冲区或着色器存储缓冲区对象中使用 `vec3` 吗?

vec3 类型是一个非常好的类型.它只占用 3 个浮点数,而我的数据只需要 3 个浮点数.我想在 UBO 和/或 SSBO 的结构中使用一个: layout(std140) 统一 UBO{vec4 数据1;vec3 数据2;浮动数据3;};布局(std430)缓冲区SSBO{vec4 数据1;vec3 数据2;浮动数据3;}; 然后,在我的 C 或 C++ 代码中,我可以这样做来创建匹配的数据 ..
发布时间:2021-12-19 17:33:28 其他开发

在 VsCode 中按键执行 bat 文件

我正在为 vulkan 编写着色器,必须将其编译为 spir-v.我有一个非常好的批处理文件,它将使用 GLSlangvalidator 完成并为我构建着色器.我正在尝试使用按键在 VsCode 中运行我的批处理文件,以便我可以检查我的代码是否有错误并构建它.我有以下内容: {"key": "f5",“标签":“构建",“类型":“外壳",“命令":“workbench.action.term ..
发布时间:2021-12-17 12:38:07 其他开发

如何将 Android MediaCodec Surface 连接到 Vulkan

我对使用 Android MediaCodec 进行解码以及通过 Surface 将 YUV 馈送到 OpenGL 纹理有很好的理解.我想用 Vulkan 做类似的事情.但是我没有成功找到任何文档或示例代码. 我的问题是:我将如何连接以下管道? MediaCodec 视频解码器 ⇨ 表面 ⇨ 纹理 ⇨ Vulkan 详情 使用 MediaCodec#configure Surfa ..
发布时间:2021-11-27 19:39:47 移动开发

Android Studio - 启动模拟器出错 - Vulkan-1.dll

当我在 Android Studio 中启动模拟器时,事件日志中出现以下两个错误: 模拟器:handleCpuAcceleration:hvf 的功能检查模拟器:无法添加库 vulkan-1.dll:失败 有人知道怎么解决吗?谢谢, 马可 解决方案 我升级android模拟器到30.7.5时遇到这种情况 您需要创建 “advancedFeatures.ini" 在and ..
发布时间:2021-11-21 21:11:47 Android

Vulkan 中 memoryTypes 的含义

我使用了 Vulkan 函数 vkGetPhysicalDeviceMemoryProperties 来获取特定物理设备(即 GPU)的内存属性. 我已经打印出这个函数的返回值(左起第一列是它们的枚举值.根据这个输出,我可以看到有 2 个内存堆和 11 个内存类型. 内存:-memoryTypeCount: 11-memoryTypes[VK_MAX_MEMORY_TYPES]:-0,属 ..
发布时间:2021-09-20 20:33:41 其他开发

创建逻辑设备时获取访问冲突

我收到以下错误: VkLayer_khronos_validation.dll 抛出异常在 0x00007FFA5252DD05 (VkLayer_khronos_validation.dll) 访问冲突读取位置 0xFFFFFFFFFFFFFFFF 处抛出异常. 我的代码: void LogicalDevice::createLogicalDevice(VkPhysicalDevi ..
发布时间:2021-09-20 20:33:38 其他开发

升级到 1.2.162.1 后: vkQueueWaitIdle == VK_ERROR_DEVICE_LOST

我最近将我的光线追踪渲染器从 Vulkan SDK 版本 1.2.148.0 升级到 1.2.162.1.这是必要的,因为光线追踪扩展超出了测试版,因此现在适用于非测试版图形驱动程序(我的 RTX 2070 SUPER 版本为 461.40).它需要我对渲染器的光线跟踪方面进行相当多的更改感谢 nvidia 教程. 不幸的是,曾经可以工作的代码现在开始导致错误.在许多情况下,提交单个时间命令 ..
发布时间:2021-09-20 20:33:35 C/C++开发

如何使用 Vulkan 时间戳查询?

这是我尝试测量 GPU 工作负载的简化伪代码: for(N) vkCmdDrawIndexed();vkCmdWriteTimestamp(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT);vkCmdWriteTimestamp(VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT);提交();vkDeviceWaitIdle();vkGetQueryPo ..
发布时间:2021-09-20 20:33:32 其他开发

每个顶点 ID 而不是顶点索引?

我试图在 Vulkan 中渲染一堆小轴对齐 (2d) 四边形,而不是使用非索引绘制调用,我想尝试最小化传输开销并使用以下方案的索引绘制: #version 450vec2 inTopleft 中的布局(位置 = 0);vec2 inExtent 中的布局(位置 = 1);vec2 位置[6] = vec2[](vec2(0, 0),vec2(0, 1),vec2(1, 0),vec2(0, 1) ..
发布时间:2021-09-20 20:33:27 其他开发

vkCreateSwapchainKHR 因 VK_ERROR_OUT_OF_DEVICE_MEMORY 而失败

我在成功创建实例、表面和设备后尝试创建交换链.但是,vkCreateSwapchainKHR 因 VK_ERROR_OUT_OF_DEVICE_MEMORY 而失败. 这是什么意思,可能的原因是什么? 设备信息: 设备名称:GeForce GTX 970 驱动程序版本:1602764800 Vulkan API 版本:4194346 API 转储:https://pas ..
发布时间:2021-09-20 20:33:23 其他开发

存储动画顶点数据的最佳方式

据我所知,有几种方法可以将顶点数据存储和传输到 GPU. 使用临时暂存缓冲区并将其每帧复制到独立的 GPU 内存 使用共享缓冲区(这很慢?)并且每帧更新共享缓冲区 永久存储每个网格的暂存缓冲区,而不是每帧重新创建它并将其复制到 GPU 哪种方法最适合存储快速变化的动画网格数据? 解决方案 这取决于硬件和它宣传的内存类型.请注意,以下所有内容都要求您使用 vkGetBuffe ..
发布时间:2021-09-20 20:33:20 其他开发