[GLSL 4.6和GLSL ES 3.2规范都说:
此函数[interpolateAtOffset]支持的偏移量的范围和粒度取决于实现。
这似乎过于开放,无用。我应该如何知道哪些将在多个供应商中真正起作用?标准中是否至少指定了最小支持范围?如果不是,我可以依靠的主要供应商是否支持某些事实?
对于Vulkan,the 1.2 specification要求使用minInterpolationOffset
,maxInterpolationOffset
和subPixelInterpolationOffsetBits
报告范围和粒度,其中:
minInterpolationOffset
和maxInterpolationOffset
值描述了支持的插值偏移的闭合间隔:[minInterpolationOffset
,maxInterpolationOffset
]。 ULP由subPixelInterpolationOffsetBits
确定。如果subPixelInterpolationOffsetBits
为4,这将提供(1/24)= 0.0625的增量,因此支持的插值偏移范围将为[-0.5,0.4375]。
基于规范要求的最小值,如果支持sampleRateShading
,则可以至少依赖[-0.5,0.4375]。
如果OpenGL规范中有相关的部分,我还没有找到。