gpt4 book ai didi

vulkan - 如何创建具有两个计算着色器的 Vulkan 图形管道

转载 作者:行者123 更新时间:2023-12-05 03:56:39 29 4
gpt4 key购买 nike

我正在尝试进行一个模拟,该模拟涉及渲染前的两个计算步骤。我目前有一个计算基础物理的计算管道,然后是一个图形管道。我希望能够添加第二个计算着色器以在第一个计算着色器之后运行。

首先,Vulkan 中是否可以有两个连续的计算着色器?

我尝试了几种不同的变体来获取第二个计算着色器。我认为最有前途的方法是在调用 vkCreateComputePipelines 时,传入 VkComputePipelineCreateInfo 和 VkPipeline 的数组,并将 createInfoCount 更改为 2。根据文档,似乎 createInfoCount 指的是 createInfo 和管道的数量,这导致我们相信有多个管道是可能的,但这会导致崩溃。只有一个计算着色器,我没有传入长度为 1 的数组,而是直接传入了 createInfo 和管道的地址。将 createInfo 更改为数组效果很好,但是一旦我尝试将管道参数更改为指向一个数组(即使该数组中只有一个管道),它就会导致崩溃。是否需要调整标志或参数以允许创建多个管道?

我们考虑的另一种方法是将多个 computeShaderStageInfo 添加到 VkComputePipelineCreateInfo,然后只有一个 createInfo 和一个计算管道。然而,与 VkGraphicsPipelineCreateInfo 不同,它似乎只允许一个阶段,而不是阶段数组。

我还尝试为第二个计算着色器创建第二个 VkCommandBuffer。我能够将描述符集绑定(bind)到两个命令缓冲区,但只运行了最后调度的那个。

最佳答案

First, is it possible to have two consecutive compute shaders in Vulkan?

没有。计算着色器没有用户定义的输入,也根本没有输出,因此包含连续计算着色器的管道没有直接的通信方式。每个分派(dispatch)操作执行一个计算着色器阶段,仅此而已。

如果你想要两个连续的计算着色器,你需要两个管道,每个管道都有不同的计算着色器,以及它们之间适当的同步原语,以便它们可以通信。

关于vulkan - 如何创建具有两个计算着色器的 Vulkan 图形管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59164726/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com