SubpassInput由片段着色器隐式寻址。
我想用我自己的纹理坐标处理输入。
类似于纹理(采样器,texCoord)

最佳答案

这不可能。如果要在着色器中对图像采样,通常有两种可能性:

  • 您可以将描述符集与类型为采样图像或组合图像采样器的描述符一起使用。这样,您可以根据自己的喜好解决它。但是,在渲染通道内充当附件的图像不能在用作附件的同一渲染通道内用于此类描述符。为此,您需要结束渲染过程并开始另一个过程。在第二个渲染过程中,您可以使用此类图像并从着色器中对其进行采样。
  • 如果要使用图像作为渲染过程中的附件,并且要在同一渲染过程中(但在以后的子过程中)对此类图像进行采样,则只能使用输入附件描述符(内部的subpassInput着色器)。这样,您无需结束渲染过程并开始另一个过程,而仅可以采样与片段着色器的坐标关联的位置。

    此限制来自渲染高度并行的事实。下一个子通道的某些部分可能已在上一个子通道的所有操作完成之前开始处理(考虑平铺渲染器)。而且,如果您开始从上一个子通道中渲染到的图像读取数据,并且对于图像的某些部分尚未完成渲染,则可能会得到不正确的值。这就是为什么您只能从渲染过程中的单个位置读取(使用输入附件时)。

  • 也许有一个扩展程序可以解除这些限制,但是我没有读过任何此类扩展程序。核心规范仅允许上述两个选项。

    关于vulkan - 有没有办法解决Vulkan中的subpassInput?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45154213/

    10-09 07:48