диапазон параметра смещения interpolateAtOffset () - PullRequest
0 голосов
/ 27 мая 2020

И GLSL 4.6, и GLSL ES 3.2 spe c говорят:

Диапазон и степень детализации смещений, поддерживаемых этой функцией [interpolateAtOffset], зависят от реализации.

Это кажется слишком открытым, чтобы быть полезным. Как я могу узнать, что на самом деле будет работать у нескольких поставщиков? Есть ли в стандартах хотя бы минимальный поддерживаемый диапазон? Если нет, то есть ли что-то де-факто, поддерживаемое основными поставщиками, на что я могу положиться?

1 Ответ

2 голосов
/ 27 мая 2020

Для Vulkan спецификация 1.2 требует, чтобы диапазон и детализация сообщались с помощью minInterpolationOffset, maxInterpolationOffset и subPixelInterpolationOffsetBits, где:

Значения minInterpolationOffset и maxInterpolationOffset описывают закрытый интервал поддерживаемых смещений интерполяции: [minInterpolationOffset, maxInterpolationOffset]. ULP определяется subPixelInterpolationOffsetBits. Если subPixelInterpolationOffsetBits равно 4, это обеспечивает приращение (1/24) = 0,0625, и, таким образом, диапазон поддерживаемых смещений интерполяции будет [-0,5, 0,4375].

На основе минимальных значений из них, требуемых спецификацией, вы можете рассчитывать на наличие как минимум [-0,5, 0,4375], если поддерживается sampleRateShading.

Для OpenGL спецификация 4.6 говорит:

Встроенная функция interpolateAtOffset будет производить выборку переменных с заданным ( x , y ) смещением относительно центра пикселя. Диапазон и степень детализации смещений, поддерживаемых этой функцией, зависят от реализации. Если любой из компонентов указанного смещения меньше значения MIN_FRAGMENT_INTERPOLATION_OFFSET или больше значения MAX_FRAGMENT_INTERPOLATION_OFFSET, позиция, используемая для интерполяции переменной, не определена. Не все значения смещения могут поддерживаться; Смещения x и y могут быть округлены до значений с фиксированной точкой с количеством дробных битов, заданным значением константы, зависящей от реализации FRAGMENT_INTERPOLATION_OFFSET_BITS.

Требуемые минимумы такие же, как у Vulkan.

Попытка искать в PDF-файлах болезненна, поэтому я не буду утруждать себя изучением ES spe c, полагаю, что это то же самое.

...