SubpassInput 由片段着色器隐式寻址。我想用我自己的纹理坐标处理输入。类似于纹理(采样器,texCoord)
这不可能。如果您想在着色器内对图像进行采样,则(通常)有两种可能性:
您可以将描述符集与类型为采样图像或组合图像采样器的描述符一起使用。这样你就可以随意解决它。但是在渲染通道中充当附件的图像不能用于在它们用作附件的同一渲染通道中的此类描述符。为此,您需要结束一个渲染过程并开始另一个渲染过程。在第二个渲染通道中,您可以使用此类图像并从着色器中对其进行采样。
如果您想在渲染过程中使用图像作为附件,并且如果您想在同一个渲染过程中(但在以后的子过程中)对这样的图像进行采样,则只能使用输入附件描述符(着色器内的 subpassInput )。这样你就不需要结束渲染通道并开始另一个渲染通道,但你只能采样与片段着色器坐标相关的位置。
此限制来自渲染高度并行的事实。在上一个子通道的所有操作完成之前,下一个子通道的某些部分可能已经开始处理(想想平铺渲染器)。如果您开始从在前一个子通道中渲染的图像中读取数据,并且如果图像的某些部分的渲染尚未完成,您可能会得到不正确的值。这就是为什么您只能从渲染通道内的单个位置读取(使用输入附件时)。
也许有一个扩展可以解除这些限制,但我没有读到任何这样的扩展。核心规范只允许以上两种选择。