gpt4 book ai didi

glsl - Vulkan 采样器的 maxLod 会不会太高?

转载 作者:行者123 更新时间:2023-12-05 01:01:47 25 4
gpt4 key购买 nike

假设我正在制作一个 VkSampler,或者可能是一组 VkSampler,我打算将它与多个纹理一起使用。每个纹理都有多个 mip 级别,并且 mip 级别的数量因纹理而异。我希望所有纹理的所有采样器选项都相同,可能有异常(exception) maxLod .

我其实并不想要 maxLod阻止使用任何特定的 mip 级别;我只希望以一种普通的、正确的方式使用每个纹理的所有级别。那么我是否可以只抛出一个高得离谱的上限并对所有纹理使用相同的采样器:

VkSamplerCreateInfo samplerCreateInfo;

...
samplerCreateInfo.minLod = 0;
samplerCreateInfo.maxLod = 1048576;

...或者我是否需要为每个纹理创建不同的采样器并设置 maxLod对于该纹理的唯一最大 mip 索引的采样器?

我认为答案可能是即使我的采样器的 maxLod 我也可以指望发生合理的钳位。非常高 - 即使我明确地将一个无用的高值传递给 textureLod在着色器中 - 但我不完全确定我是否正确解释了 Vulkan 和 GLSL 规范中的相关部分。

最佳答案

不,您可以制作 maxLod大到你想要的大小。如果存在“太高”的情况,它们将被列为有效使用要求。根据规范,唯一的要求是它大于或等于 minLod ,如果 unnormalizedCoordinates为真,则它必须为零。除此之外,它仅用于限制计算的 lod。访问的实际 mipmap 级别是计算出的 lod(限制为 maxLod),进一步限制为纹理中实际可用的 mipmap 级别数。

在规范语言中,maxLod用于限制 λ ( Level of Detail Operation ) 的值。然后访问的 mipmap 级别是 d' = levelbase +clamp(λ, 0, levelCount - 1 ) ( Image Level(s) Selection )。所以如果 maxLod大于 levelCount - 1 ,不会影响结果。

关于glsl - Vulkan 采样器的 maxLod 会不会太高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51659923/

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