Анизотропная фильтрация «сохраняет резкость текстуры, которая обычно теряется при попытках текстуры карты MIP избежать наложения». Статья в Википедии дает подсказки о том, как ее можно реализовать («исследовать текстуру (...) для любой ориентации анизотропии»), но она мне не очень понятна.
Кажется, что существуют различные реализации, как было предложено в тестах, показанных в примечаниях к презентации. Приблизительные модели для физического рендеринга :
Какие конкретные вычисления выполняются (современными) графическими процессорами для выбора правильного уровня MIP при использовании анизотропной фильтрации?
GL_EXT_texture_filter_anisotropic
очень подробно. Может быть, это поможет вам лучше понять процесс.Ответы:
Аппаратное обеспечение фильтрации текстуры берет несколько выборок различных уровней mipmap (максимальное количество выборок указывается уровнем анизотропной фильтрации, хотя точное количество выборок, взятых в данной операции фильтрации, будет зависеть от соотношения между производными на фрагменте. ) Если вы проецируете конус, рассматривая поверхность под наклонным углом к текстурному пространству, это приведет к приблизительно овальной проекции, которая более вытянута для более наклонных углов. Дополнительные образцы берутся вдоль оси этого овала (с правильных уровней mip, чтобы воспользоваться преимуществами предварительной фильтрации, которую они предлагают) и объединяют, чтобы получить более четкий образец текстуры.
Другая техника, известная как Rip- Mapping (упоминается в статье Википедии о Mipmapping), которая не являетсяобычно встречается в современных графических процессорах, использует предварительную фильтрацию текстур. В отличие от мипов, текстура не уменьшается равномерно, а использует разные соотношения высоты и ширины (до соотношения, зависящего от выбранного вами уровня анизотропной фильтрации). Вариант - или, может быть, два варианта при использовании трилинейной фильтрации - текстуры затем выбирается на основе угла поверхности, чтобы минимизировать искажения. Значения пикселей выбираются с использованием методов фильтрации по умолчанию (билинейный или трилинейный). Rip-карты не используются ни на одном из известных мне аппаратных средств из-за их запредельного размера: в то время как mip-карты используют дополнительное хранилище на 33%, rip-карты используют 300%. Это можно проверить, отметив, что требования к использованию текстуры не увеличиваются при использовании AF, а только пропускная способность.
Для дальнейшего чтения вы можете взглянуть на спецификацию расширения OpenGL EXT_texture_filter_anisotropic . В нем подробно описываются формулы, используемые для расчета выборок, и способы их объединения при использовании анизотропной фильтрации.
источник
Требования к API можно найти в любой из спецификаций или расширений. Вот один из них: https://www.opengl.org/registry/specs/EXT/texture_filter_anisotropic.txt
Все поставщики графических процессоров, вероятно, отклоняются от спецификации, поскольку качество AF раньше являлось частью многих тестов. И текущие реализации продолжат развиваться, поскольку новые рабочие нагрузки подчеркивают существующие приближения. К сожалению, чтобы точно знать, что либо делает, вам нужно быть частью одной из компаний. Но вы можете оценить спектр возможностей из следующих работ, перечисленных в порядке возрастания качества и стоимости реализации:
Цитирую из спецификации:
источник