vulkan 中是否有无样本立方体贴图?

Is there a sample-less cubemaps in vulkan?

在我的游戏引擎中,所有静态纹理都绑定在一个大的描述符集上(我为此使用动态索引),现在我还想在这个描述符数组内的轨道索引处绑定一个立方体纹理。 我所有的纹理在没有任何采样器的情况下完全有界(为此我使用名为“GL_EXT_samplerless_texture_functions”的 glsl-extention)。

在 vulkan-glsl 中有没有办法实现无采样纹理的立方体采样?

对不起我的英语。

texelFetch 函数用于从给定的 mipmap 级别和图像层访问特定的纹素。纹理坐标在“texel space”中明确显示,而不是任何其他 space。不需要翻译,甚至不需要反规范化。

相比之下,从 3D 方向访问立方体贴图需要一些工作。 3D 方向必须转换为 2D XY 纹素坐标和立方体贴图中的面。

不进行此类翻译是 texelFetch 的重点。这就是在没有 采样器的情况下访问纹理 的含义。因此,texelFetch 立方体贴图没有任何意义(只有 texelFetch 函数可用于在没有采样器的情况下访问纹理)。

因此,如果您想访问立方体贴图,您需要以下两种方式之一:

  1. 您想传递一个 3D 方向,它会转换为 2D 坐标和面索引。

    你需要一个采样器。期间.

  2. 你在纹理中有一个 2D 坐标 space 和一个面索引,你想从纹理中访问那个纹素。

    在这种情况下,您访问的不是立方体贴图;您正在访问 2D 数组纹理 。实际上,Vulkan 中没有“立方体贴图图像”这样的东西;只有一个二维数组图像,上面设置了一个标志,允许它与立方体贴图图像 views 相关联。也就是说,“立方体贴图”是一种访问二维数组的特殊方式。但是您可以轻松地创建同一图像的二维数组视图并将其绑定到描述符。

    那就这样吧。