Какова точность выборки текстуры?

В OpenGL при выборке текстуры какая точность или формат используются для местоположения?

Чтобы уточнить: при выборке с помощью texture(sampler, vTextureCoordinates) в шейдере, например. precision highp float, вводятся два значения float32+. Однако используется ли эта точность для выборки текстуры или она будет ухудшаться (например, «привязана к фиксированной точке», как в d3d)?


Хотя меня в первую очередь интересует WebGL2, было бы интересно узнать и о других версиях OpenGL.

Мое текущее предположение состоит в том, что оно будет усечено до 16-битного нормализованного целого числа без знака, но я не уверен. Может быть, оно тоже не указано, в таком случае на что можно положиться?

Это связано с моим вопросом о неточности координат текстуры. Теперь, когда у меня есть несколько намеков на то, что эта деградация действительно может иметь место, я могу спросить о конкретной части. Если бы точность выборки действительно была 16-разрядным нормализованным целым числом, я мог бы закрыть и его.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это функция аппаратного обеспечения, а не графического API, управляющего этим оборудованием. Таким образом, не имеет значения, используете ли вы D3D, WebGL, Vulkan или что-то еще, точность выборки координат текстуры зависит от оборудования, на котором вы работаете.

Большинство API на самом деле не говорят вам, какова эта точность. Как правило, они требуют некоторой минимальной точности, но аппаратное обеспечение может различаться.

Vulkan фактически позволяет реализациям сообщать вам точность подтекселей. Минимальное требование — 4 бита точности субтекселя (16 значений). База данных оборудования Vulkan показывает, что оборудование варьируется от 4 до 8, причем 8 встречается в 10 раз чаще, чем 4.

DirectX 11 требует 8-битной точности субтекселей, поэтому, даже если OpenGL не требует этого, большинство аппаратных реализаций, вероятно, захотят соответствовать требованиям кросс-API. (См. learn.microsoft.com/en-us/windows/win32/direct3d11/… )

solidpixel 25.01.2023 00:23

Спасибо! Для меня также было важно отметить, что сначала обычно выполняется масштабирование, затем преобразование в фиксированную точку, и обычно это что-то вроде фиксированной точки 16,8, а не диапазон [0, 1] (последнее в ретроспективе также будет довольно неудобно, но я нашел только страницу для нормализованных целых чисел). Некоторое время я задавался вопросом, почему точность и размер текстуры не коррелируют.

Doofus 25.01.2023 18:47

Другие вопросы по теме