Билинейная фильтрация текстур


Содержание

Билинейная фильтрация текстур

5. Билинейная фильтрация текстур

Да-да, это именно тот метод, с помощью которого смазывают текстуры всякие ускорители типа 3Dfx. Итак, пусть у нас есть какая-то текстура. Текстура у нас — это 2D картинка, а 2D картинка в свою очередь — набор замеров цвета через какие-то промежутки. В реальной же жизни цвет не меняется скачком через каждый, например, миллиметр, а является какой-то непрерывной функцией от положения, причем меняется довольно плавно. При обычном текстурировании мы получаем координаты в текстуре, округляем их до ближайшего

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

При билинейной фильтрации цвет всего-навсего линейно интерполируется между узлами сетки замеров. То есть. Пусть в текущей точке у нас получились координаты текстуры u, v — какие-то нецелые, вообще говоря, числа. Тогда по целым частям u, v определяется, между какими узлами сетки (если угодно, между какими пикселами текстуры) находится наша точка, а по дробным — как близко она находится к каждому из узлов. Вот картинка.

Здесь 1, 2, 3, 4 — «окружающие» точку пикселы текстуры (они же узлы сетки замера цвета). Пусть iu, iv — целые части координат текстуры точки u, v; fu, fv — дробные части. Тогда 1, 2, 3, 4 имеют координаты в текстуре (iu,iv), (iu+1,iv), (iu,iv+1), (iu+1,iv+1). Проинтерполируем какую-то компоненту цвета (R, G или B) по прямым 1-3 и 2-4:

Теперь проинтерполируем цвет по прямой ab в нашей точке:

Проинтерполировав по этой формуле каждую компоненту цвета, получим наконец готовый результат — цвет точки, но уже с учетом билинейной фильтрации.

Здесь у нас получилось по три умножения на компоненту. То есть в сумме девять умножений на пиксел. Можно, конечно, честно считать по этим формулам, делая девять умножений для каждого пиксела. Но можно заменить все умножения на выборки по таблице. u, v обычно — это fixedpoint; fu, fv — тоже (кстати, в случае с fixedpoint целые и дробные части вычисляются ровно одним and’ом). Пусть мы используем 24-битный цвет и 16:16 fixedpoint; тогда одна компонента цвета занимает 8 бит, а дробную часть можно одним сдвигом перевести в 24:8 fixedpoint. Получаем 256 возможных значений для любой компоненты цвета и 256 возможных значений для дробной части, то есть — табличка 256×256. Если цвет 15/16-битный, или используется более грубое (скажем, до пяти бит) округление дробной части, то табличка становится еще меньше. Памяти, конечно, не жалко, но кэш-память пока не резиновая, так что чем меньше lookup-таблица, тем оно лучше для скорости. Вот и все.

Осталось только упомянуть, что лучше занести в табличку не байты, а слова, для данного примера это будет 8:8 fixedpoint, и складывать все результаты тоже как слова, а потом сдвигом переводить обратно в целые числа. Иначе (особенно в случае 15/16-битных режимов) будет заметен небольшой шум на текстуре, появляющийся из-за ошибок округления

Современные технологии улучшения качества 3D-изображений

Фильтрация текстур

Текстурирование является важнейшим элементом сегодняшних 3D приложений, без него многие трехмерные модели теряют значительную часть своей визуальной привлекательности. Однако процесс нанесения текстур на поверхности не обходится без артефактов и соответствующих методов их подавления. В мире трехмерных игр то и дело встречаются специализированные термины типа «мип-мэппинг», «трилинейная фильтрация» и т.п., которые как раз и относятся к этим методам.

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

Представьте себе черно-белую шахматную доску большого, практически бесконечного размера. Допустим, мы рисуем эту доску на экране и смотрим на нее под небольшим углом. Для достаточно удаленных участков доски размеры клеток неизбежно начнут уменьшаться до размера одного пикселя и меньше. Это так называемое оптическое уменьшение текстуры (minification). Между пикселями текстуры начнется «борьба» за обладание пикселями экрана, что приведет к неприятному мельтешению, что является одной из разновидностей эффекта ступенчатости. Увеличение экранного разрешения (реального или эффективного) помогает только немного, потому что для достаточно удаленных объектов детали текстур все равно становятся меньше пикселей.

С другой стороны, наиболее ближние к нам части доски занимают большую экранную площадь, и можно наблюдать огромные пиксели текстуры. Это называется оптическим увеличением текстуры (magnification). Хотя эта проблема стоит не так остро, для уменьшения негативного эффекта с ней тоже необходимо бороться.

Это текстура шахматной доски Плоскость с наложенной текстурой. Обратите внимание на искажения, возникающие при уменьшении клеток
Рисунок 6.

Для решения проблем текстурирования применяется так называемая фильтрация текстур. Если разобраться в процессе рисования трехмерного объекта с наложенной текстурой, можно увидеть, что вычисление цвета пикселя идет как бы «наоборот», — сначала находится пиксель экрана, куда будет спроецирована некоторая точка объекта, а затем для этой точки находятся все пиксели текстуры, попадающие в нее. Выбор пикселей текстуры и их комбинация (усреднение) для получения финального цвета пикселя экрана и называется фильтрацией текстуры.

Рисунок 7. Область экрана и ее образ в текстуре

В процессе текстурирования каждому пикселю экрана ставится в соответствие координата внутри текстуры, причем эта координата не обязательно целочисленная. Более того, пикселю соответствует некоторая область в изображении текстуры, в которую могут попадать несколько пикселей из текстуры. Будем называть эту область образом пикселя в текстуре. Для ближних частей нашей доски пиксель экрана становится значительно меньше пикселя текстуры и как бы находится внутри него (образ содержится внутри пикселя текстуры). Для удаленных, наоборот, в каждый пиксель попадает большое количество точек текстуры (образ содержит в себе несколько точек текстуры). Образ пикселя может иметь различную форму и в общем случае представляет собой произвольный четырехугольник.

Рассмотрим различные методы фильтрации текстур и их вариации.

Ближайший сосед (nearest neighbor)

В этом, наиболее простом, методе в качестве цвета пикселя просто выбирается цвет ближайшего соответствующего пикселя текстуры. Этот метод самый быстрый, но и наименее качественный. По сути, это даже не специальный метод фильтрации, а просто способ выбрать хоть какой-то пиксель текстуры, соответствующий экранному пикселю. Он широко применялся до появления аппаратных ускорителей, вместе с широким распространением которых появилась возможность использовать более качественные методы.

Фильтрация методом ближайшего соседа Билинейная фильтрация
Рисунок 8.

Билинейная фильтрация (bilinear)

Билинейная фильтрация находит четыре пикселя текстуры, ближайшие к текущей точке экрана и результирующий цвет определяется как результат смешения цветов этих пикселей в некоторой пропорции.


Фильтрация методом ближайшего соседа и билинейная фильтрация работают достаточно хорошо когда, во-первых, степень уменьшения текстуры невелика, а во-вторых, когда мы видим текстуру под прямым углом, т.е. фронтально. С чем это связано?

Если рассмотреть, как описывалось выше, «образ» пикселя экрана в текстуре, то для случая сильного уменьшения он будет включать в себя очень много пикселей текстуры (вплоть до всех пикселей!). Кроме того, если мы смотрим на текстуру под углом, этот образ будет сильно вытянут. В обоих случаях описанные методы будут работать плохо, поскольку фильтр не будет «захватывать» соответствующие пиксели текстуры.

Для решения этих проблем применяют так называемый мип-мэппинг и анизотропную фильтрацию.

Мип-мэппинг

При значительном оптическом уменьшении точке экрана может соответствовать достаточно много пикселей текстуры. Это значит, что реализация даже самого хорошего фильтра будет требовать достаточно много времени для усреднения всех точек. Однако проблему можно решить, если создавать и хранить версии текстуры, в которых значения будут усреднены заранее. А на этапе визуализации для пикселя искать нужную версию исходной текстуры и брать значение из нее.

Термин mipmap произошел от латинского multum in parvo — многое в малом. При использовании этой технологии в памяти графического ускорителя в дополнение к изображению текстуры хранится набор ее уменьшенных копий, причем каждая новая ровно в два раза меньше предыдущей. Т.е. для текстуры размером 256×256 дополнительно хранятся изображения 128×128, 64×64 и т.д, вплоть до 1×1.

Далее для каждого пикселя выбирается подходящий уровень мипмапа (чем больше размер «образа» пикселя в текстуре, тем меньший мипмап берется). Далее значения в мипмапе могут усредняться билинейно или методом ближайшего соседа (как описано выше) и дополнительно происходит фильтрация между соседними уровнями мипмапа. Такая фильтрация называется трилинейной. Она дает весьма качественные результаты и широко используется на практике.

Рисунок 9. Уровни мипмапа

Однако проблема с «вытянутым» образом пикселя в текстуре остается. Как раз по этой причине наша доска на большом расстоянии выглядит очень нечеткой.

Анизотропная фильтрация

Анизотропная фильтрация — это процесс фильтрации текстуры, специально учитывающий случай вытянутого образа пикселя в текстуре. Фактически, вместо квадратного фильтра (как в билинейной фильтрации), используется вытянутый, что позволяет более качественно выбрать нужный цвет для экранного пикселя. Такая фильтрация используется вместе с мипмэппингом и дает весьма качественные результаты. Однако, существуют и недостатки: реализация анизотропной фильтрации достаточно сложна и при ее включении скорость рисования значительно падает. Анизотропная фильтрация поддерживается последними поколениями графических процессоров NVidia и ATI. Причем с различным уровнем анизотропии — чем больше этот уровень, чем более «вытянутые» образы пикселей можно корректно обрабатывать и тем лучше качество.

Сравнение фильтраций

Итог следующий: для подавления артефактов алиасинга текстур аппаратно поддерживаются несколько методов фильтрации, различающиеся по своему качеству и скорости работы. Наиболее простой метод фильтрации — метод ближайшего соседа (который фактически не борется с артефактами, а просто заполняет пиксели). Сейчас чаще всего используется билинейная фильтрация вместе с мип-мэппингом или трилинейная фильтрация. В последнее время графические процессоры начали поддерживать наиболее качественный режим фильтрации — анизотропную фильтрацию.

Ближайший сосед Билинейная
Трилинейная Анизотропная
Рисунок 10.

Бамп-мэппинг (Bump mapping)

Бамп-мэппинг (bump mapping) — это тип графических спецэффектов, который призван создавать впечатление «шершавых» или бугристых поверхностей. В последнее время использование бамп-мэппинга стало чуть ли не стандартом игровых приложений.

Основная идея бамп-мэппинга — использование текстур для управления взаимодействием света с поверхностью объекта. Это позволяет добавлять мелкие детали без увеличения количества треугольников. В природе мы различаем мелкие неровности поверхностей по теням: любой бугорок будет с одной стороны светлым, а с другой — темным. Фактически, глаз может и не различать изменения в форме поверхности. Этот эффект и используется в технологии бамп-мэппинга. Одна или несколько дополнительных текстур накладываются на поверхность объекта и используются для вычисления освещенности точек объекта. Т.е. поверхность объекта не меняется вовсе, только создается иллюзия неровностей.

Существует несколько методов бамп-мэппинга, но прежде чем мы перейдем к их рассмотрению, необходимо выяснить, собственно как задать неровности на поверхности. Как уже говорилось выше, для этого используются дополнительные текстуры, причем они могут быть разных видов:

Карта нормалей. В этом случае каждый пиксель дополнительной текстуры хранит вектор, перпендикулярный поверхности (нормаль), закодированный в виде цвета. Нормали используются для вычисления освещенности.

Карта смещений. Карта смещений представляет собой текстуру в градациях серого, в каждом пикселе которой хранится смещение от оригинальной поверхности.

Эти текстуры готовятся дизайнерами трехмерных моделей вместе с геометрией и основными текстурами. Существуют и программы, позволяющие получать карты нормалей или смещений автоматически

Препроцессированный бамп-мэппинг (Pre-calculated bump mapping)

Текстуры, которые будут хранить информацию о поверхности объекта, создаются заранее, до этапа визуализации, путем затемнения некоторых точек текстуры (и, следовательно, самой поверхности) объекта и высветления других. Далее во время рисования используется обычная текстура.

Этот метод не требует никаких алгоритмических ухищрений во время рисования, но, к сожалению, изменений в освещении поверхностей при изменении положений источников света или движения объекта не происходит. А без этого действительно успешной симуляции неровной поверхности не создать. Подобные методы используются для статических частей сцены, часто для архитектуры уровней и т.п

Бамп-мэппинг с помощью тиснения (Emboss bump mapping)

Эта технология применялась на первых графических процессорах (NVidia TNT, TNT2, GeForce). Для объекта создается карта смещений. Рисование происходит в два этапа. На первом этапе карта смещений попиксельно складывается сама с собой. При этом вторая копия сдвигается на небольшое расстояние в направлении источника света. При этом получается следующий эффект: положительные значения разницы определяют освещенные пиксели, отрицательные — пиксели в тени. Эта информация используется для соответствующего изменения цвета пикселей основной текстуры.


Бамп-мэппинг с помощью тиснения не требует аппаратуры, поддерживающей пиксельные шейдеры, однако он плохо работает для относительно крупных неровностей поверхности. Также объекты не всегда выглядят убедительно, это сильно зависит от того, под каким углом смотреть на поверхность.

Карта смещений Карта смещений складывается сама с собой, но сдвинутой на небольшое расстояние Конечная текстура с эффектом тиснения
Рисунок 11.
Илон Маск рекомендует:  Парсер Avito скачать с использованием PHP Curl

Пиксельный бамп-мэппинг (Pixel bump mapping)

Пиксельный бамп-мэппинг — на данный момент вершина развития подобных технологий. В этой технологии все вычисляется максимально честно. На вход пиксельному шейдеру дается карта нормалей, из которой берутся значения нормали для каждой точки объекта. Затем значение нормали сравнивается с направлением на источник света и вычисляется значение цвета.

Эта технология поддерживается в аппаратуре начиная с видеокарт уровня GeForce2.

Объект с основной текстурой Карта нормалей Результат бамп-мэппинга

Рисунок 12.

Итак, мы увидели, каким образом можно использовать особенности человеческого восприятия мира для улучшения качества изображений, создаваемый 3D-играми. Счастливые обладатели последнего поколения видеокарт NVidia GeForce, ATI Radeon (впрочем, и не только последнего) могут самостоятельно поиграть с некоторыми их описанных эффектов, благо настройки устранения ступенчатости и анизотропной фильтрации доступны из опций драйверов. Эти и другие методы, оставшиеся за рамками данной статьи, успешно внедряются разработчиками игр в новые продукты. В общем, жизнь становится лучше. То-то еще будет!

Билинейная фильтрация текстур

Параболическое текстурирование.

Перспективно-корректное текстурирование.

Аффинное текстурирование.

Точное текстурирование.

Пусть вершины грани есть точки A(Ax,Ay,Az), B(Bx,By,Bz) и C(Cx,Cy,Cz), а соответствующие им точки текстуры – (Au,Av), (Bu,Bv) и (Cu,Cv). XSize и YSize – размеры экрана, dist – расстояние от него до центра координат. Тогда для точек (x,y,z), проекцией которых является точка (sx, sy), имеем:

sx = XSize/2 + x*dist/(z+dist)

sy = YSize/2 + y*dist/(z+dist)

Для упрощения формул будем использовать следующие обозначения:

Рассмотрим точку D, принадлежащую грани. Она однозначно задается парой чисел (a,b): D=A+a*(B-A)+b*(C-A)

Для нее координаты текстуры будут такие:

Пусть проекция D на экран как раз и имеет координаты (sx, sy), тогда для нее выполнены написанные выше соотношения:

Опустим некоторые математические выкладки, из которых видно, что:

Где С1, …,С9 – просто какие-то коэффициенты, зависящие от грани. То есть, можно посчитать эти коэффициенты один раз для каждой грани, а потом считать u и v. Однако получается как минимум одно деление на точку. Это слишком трудоемко. Поэтому все методы текстурирования используют приближенные вычисления. При этом грань не обязательно должна быть треугольной; можно взять любые три вершины многоугольной грани (это справедливо и для остальных методов наложения текстур).

Этот метод основан на приближении u и v линейными функциями. Итак, пусть u – линейная функция, u=k1*sx+k2*sy+k3. можно посчитать k1, k2, k3, исходя из того, что хотя бы в вершинах грани u должно совпадать с точным значением – это дает три уравнения, из которых находятся коэффициенты. Но этот способ вычисления все равно медленный – два умножения на пиксель. Общепринято рисовать грань по строкам, это просто и не доводит до умопомешательства кэш-память процессора.

Этот способ основан на приближении u и v кусочно-линейными функциями. Каждая строка разбивается на куски (обычно несколько кусков длиной 8/16/32 пикселей плюс остаток), в начале и конце каждого куска u и v считаются точно, а внутри куска интерполируются линейно.

Этот метод основан на приближении u и v квадратичными функциями, то есть параболами. Для каждой строки строятся приближающие u и v квадратичные функции, дальше с их помощью они интерполируются по строке. Здесь понадобятся точные значения u и v в трех точках – начале, конце и середине строки.

Это метод при помощи которого смазывают текстуры устройства 3Dfx. Пусть имеется какая либо текстура. Текстура – это 2D картинка, а 2D картинка, в свою очередь – набор замеров цвета через какие-то промежутки. В реальной жизни цвет меняется не скачкообразно, а довольно плавно. При обычном текстурировании мы получаем координаты в текстуре, округляем их до ближайшего целого числа и выбираем нужный цвет из текстуры – поэтому цвет меняется резко, оставаясь непрерывным между узлами сетки; возникает эффект больших квадратов.

Не нашли то, что искали? Воспользуйтесь поиском:


Лучшие изречения: На стипендию можно купить что-нибудь, но не больше. 8987 — | 7235 — или читать все.

Фильтрация текстур — Texture filtering

В компьютерной графике , фильтрация текстур или текстуры сглаживание является методом , используемым для определения цвета текстуры для текстуры отображается пикселя , используя цвет соседних текселей (пиксели текстуры). Есть две основных категорий текстурной фильтрации, фильтрации увеличения и фильтрации минификации. В зависимости от фильтрации ситуация текстуры является либо тип реконструкции фильтра , где разреженный данные интерполируются , чтобы заполнить пробелы (увеличение), или тип сглаживанием (AA), где существуют образцы текстуры на более высокой частоте , чем это требуется для частоты дискретизации необходимо для заполнения текстур (минификация). Проще говоря, фильтрация описывает , как применяется текстура на многих различных форм, размеров, углов и масштабов. В зависимости от выбранного алгоритма фильтра результатом будет показывать различную степень размытости, детали, пространственного наложения спектров, временного наложения спектров и блокировки. В зависимости от обстоятельств фильтрации может быть выполнена в программном обеспечении (например, рендеринг пакета программного обеспечения) или в аппаратных средств для реального времени или GPU ускоренного рендеринга или в смеси обоихов. Для получения наиболее распространенных интерактивных графических приложений современная фильтрация текстур выполняются с помощью специальных аппаратных средств , который оптимизирует доступ к памяти через кэширование памяти и предварительную выборку и реализует выбор алгоритмов , доступных для пользователя и разработчика.

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

содержание

Необходимость фильтрации

Во время процесса отображения текстуры для любой произвольной 3D поверхности ,, текстуры поиск происходит , чтобы узнать, где на каждый пиксель текстуры центр падает. Для получения текстуры отображенных полигональных поверхностей , состоящих из треугольников , типичных для большинства поверхностей в 3D игр и фильмах, каждый пиксель (или подчиненный образец пикселя ) эта поверхность будет связан с некоторым треугольником (ов) и набором барицентрических координат , которые используются для обеспечить положение в текстуру. Такое положение не может лежать совершенно на «пиксельной сетке,» требуя некоторые функции для учета этих случаев. Другими словами, поскольку текстурированная поверхность может быть в произвольном расстоянии и ориентации по отношению к зрителю, один пиксель обычно не соответствует непосредственно одному тексела. Определенная форма фильтрации должна быть применена , чтобы определить наилучший цвет пикселя. Недостаточная или неправильная фильтрация будет отображаться на изображении в виде артефактов (ошибки в изображении), такие как «блочность», ступенчатость , или мерцание.

Там могут быть различные типы соответствия между пикселем и тексела / текселей он представляет на экране. Они зависят от положения текстурированной поверхности по отношению к зрителю, и различные формы фильтрации необходимы в каждом конкретном случае. Учитывая квадратную текстуру отображенной на квадратные поверхности в мире, на некотором расстоянии просмотра размера одного пикселя экрана точно так же , как один тексел. Ближе , чем, тексели больше , чем пиксели экрана, и должны быть расширены надлежащим образом — процесс , известный как текстуры увеличение . Подальше, каждый тексель меньше пикселя, и поэтому один пиксель охватывает несколько текселей. В этом случае соответствующий цвета должен быть выбран на основе покрытых текселей, с помощью текстуры минификации . Графика API — интерфейсы , такие как OpenGL позволяют программисту задавать различные варианты для минификации и увеличений фильтров.

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

Мипмаппинг

Мипмаппинг стандартный метод , используемый для сохранения некоторых из фильтрующех работ , необходимых в процессе текстуры минификации. Кроме того , весьма полезна для кэша когерентности — без него шаблон доступа к памяти при отборе проб из отдаленных текстур будут демонстрировать очень плохое расположение, отрицательно влияя на производительность , даже если фильтрация не выполняется.

При увеличении текстуры, количество текселей , которые должны быть рассмотрены для любого пикселя всегда четыре или меньше; во минификации, однако, как текстурированный полигон двигается дальше потенциально вся текстура может попасть в один пиксель. Это потребует бы чтение всех своих текселей и объединение их значения , чтобы правильно определить цвет пикселя, а чрезмерно дорогостоящей операции. Мипмаппинг позволяет избежать этого, Предфильтрации текстуры и хранить его в меньших размерах вплоть до одного пикселя. По мере того как текстурированная поверхность движется дальше, текстура применяется переключатели в предварительно отфильтрованный меньшего размера. Различные размеры MIPMAP называются «уровнями», с уровнем 0 является наибольшим размером (используется ближе всего к зрителю), а также увеличению уровней , используемым при увеличении расстояния.

методы фильтрации

В этом разделе перечислены наиболее распространенные методы фильтрации текстур, в порядке возрастания стоимости вычислений и качества изображения.

Ближайший сосед интерполяция

Ближайший сосед интерполяция является наиболее простым и грубым методом фильтрации — он просто использует цвет тексела ближайшую к пиксельному центру для цвета пикселя. В то время как простые, это приводит к большому количеству артефактов — текстуры «блочность» при увеличении, а также сглаживание и мерцающее во минификации. Этот метод является быстрым при увеличении , но при минификация походку через память становится сколь угодно большим , и это часто может быть менее эффективным , чем MIP-отображение из — за отсутствия пространственно — когерентного доступа к текстурам и повторное использование кэш-линии.

Ближайший сосед с Mipmapping

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

Линейный MIPMAP фильтрация

Менее часто используется, OpenGL и другие интерфейсы API поддерживают ближайшие сосед выборку из отдельных мипмапов в то время линейной интерполяции два ближайших мипа, имеющего отношение к образцу.

билинейная фильтрация

Билинейная фильтрация является следующим шагом вверх. В этом методе четыре ближайших текселей к пикселю центру отбираются (на самом близком уровне MIPMAP), и их цвета сочетаются с средневзвешенным в соответствии с расстоянием. Это устраняет «квадратики» видели во время увеличения, так как теперь плавный градиент изменения цвета от одного тексел к другому, а не резкий скачок в качестве пикселя центра пересекает границу текселя. Билинейная фильтрация для фильтрации увеличения является общей. При использовании для минификации он часто используется с Mipmapping; хотя он может быть использован без, он будет страдать от такого же ступенчатости и мерцающих проблемы , как ближайшие соседи фильтрация , когда уменьшенный слишком много. Для скромных коэффициентов минификации, однако, он может быть использован в качестве недорогой аппаратного ускорения взвешенной текстуры сверхтипового.

фильтрация Trilinear

Трилинейная фильтрация является средством к общему артефакта видел в мипе билинейно отфильтрованных изображениях: резкое и очень заметное изменение качества на границах , где рендерер переключается с одного уровня MIPMAP к следующему. Трилинейная фильтрация решает эту проблему, делая текстуры поиск и билинейной фильтрации на двух ближайших уровней MIPMAP (один выше и один ниже , качество), а затем линейно интерполирования результаты. Это приводит к гладкой деградации качества текстуры , как расстояние от зрителя увеличивается, а не серии резких падений. Конечно, ближе , чем уровень 0 существует только один уровень мипмапа доступен, и алгоритм возвращается к билинейной фильтрации.

Анизотропная фильтрация

Анизотропная фильтрация является высокое качество фильтрации доступны в текущих потребительских 3D графических карт . Проще, «изотропные» методы используют только квадратный мип , которые затем интерполяцию с использованием би- или трилинейной фильтрации. ( Изотропная означает одинакова во всех направлениях, и , следовательно , используется для описания системы , в которой все карты являются квадраты , а не прямоугольники или других четырехугольников.)


Когда поверхность находится на высоком углом по отношению к камере, область заполнения для текстуры не будет приблизительно квадратом. Рассмотрим общий случай пола в игре: площадь заполнения гораздо шире, чем в высоту. В этом случае ни один из квадратных карт не очень подходит. Результатом является размытость и / или мерцающий, в зависимости от того, как выбирается нужным. Анизотропная фильтрация корректирует это путем дискретизации текстуры как не квадратной формы. Цель состоит в том, чтобы попробовать текстуру, чтобы соответствовать пиксель след, как проецируется в пространстве текстуры, и следует отметить, что такой след не всегда ось выровнена с текстурой. Кроме того, при работе с теорией выборки пиксель не маленький квадрат поэтому его след не был бы проектируемый квадрат. Footprint сборка в пространстве текстурных выборок некоторого приближение вычисленной функции проектируемого пикселя в пространстве текстуры, но детали часто приближенное, весьма патентованное и погруженный в мнениях о теории выборки. Концептуально, хотя цель состоит в том, чтобы попробовать более правильный анизотропный образец соответствующей ориентации, чтобы избежать конфликта между ступенчатостью на одной оси против размывания с другой стороны, когда проектируются отличается размером.

В анизотропных реализациях, фильтрация может включать в себя те же алгоритмы фильтрации, используемых для фильтрации квадратных карт традиционного Mipmapping во время строительства промежуточного или конечного результата.

Процент Ближе фильтрации

На основе глубины отображения теней можно использовать интересный Процент Closer фильтра (ППР) с глубиной отображаются текстурами , которые расширяют одни восприятия видов фильтров текстуры , которые могут быть применены. В PCF карта глубины сцены визуализируются от источника света. Во время последующего рендеринга сцены этой карта глубины затем проецируется обратно на сцену с позиции света и выполняются сравнение между проективной глубиной и координатами извлечённой глубиной текстуры образца. Проекционный координат будет глубина сцены пикселей от света , но извлеченная из глубины карты глубины будет представлять глубину сцены по этому проектируемому направлении. Таким образом , определение видимости к свету и поэтому освещению света может быть сделано для оказанного пикселя. Таким образом , эта операция текстурирования является логическим тестом ли горят пиксель, однако многократные образцы могут быть проверены для данного пикселя и суммируются булевы результаты и усреднены. Таким образом , в сочетании с различными параметрами , такими как отобранное расположение текстурного и даже jittered места проекции карты глубины среднего после глубины сравнения или процент образцов ближе и , следовательно , освещаемые может быть вычислено для пикселя. Чрезвычайно важно, суммирование результатов булевых и генерация процентного значения должно быть выполнены после того, как сравнение глубины проективной глубины и образца выборки, так что эта глубина сравнение становится неотъемлемой частью фильтра текстуры. Этот процент затем может быть использован для вычисления веса осветительного и обеспечивает не только булево значение освещенности или тень , но мягкий результат тени полутени. Вариант этого поддерживается в современном оборудовании , где выполняется сравнение и пост — фильтр булева сравнения билинейного расстояния применяется

Фильтрация текстур

7zx #1 Отправлено 22 дек 2011 — 15:49

HardCat #2 Отправлено 22 дек 2011 — 15:53

Old_Shot #3 Отправлено 22 дек 2011 — 15:53

7zx #4 Отправлено 22 дек 2011 — 15:56

hitman_74 #5 Отправлено 22 дек 2011 — 15:56

12345nik12345 (22 Дек 2011 — 15:49) писал:

__PRAIM #6 Отправлено 22 дек 2011 — 15:59

Sport Fishing on Feeder

Old_Shot (22 Дек 2011 — 15:53) писал:

Антизатропная 16x стоит, FPS ниже 60 не опускается. В Среднем 80-90.
Как ты можешь утверждать про его фпс, незная его характеристик компа?

Настройки графики в играх: на что они влияют?

Поделитесь в соцсетях:

В современных играх используется все больше графических эффектов и технологий, улучшающих картинку. При этом разработчики обычно не утруждают себя объяснением, что же именно они делают. Когда в наличии не самый производительный компьютер, частью возможностей приходится жертвовать. Попробуем рассмотреть, что обозначают наиболее распространенные графические опции, чтобы лучше понимать, как освободить ресурсы ПК с минимальными последствиями для графики.

Илон Маск рекомендует:  Определение языка на PHP

Анизотропная фильтрация

Когда любая текстура отображается на мониторе не в своем исходном размере, в нее необходимо вставлять дополнительные пикселы или, наоборот, убирать лишние. Для этого применяется техника, называемая фильтрацией.

трилинейная анизотропная

Билинейная фильтрация является самым простым алгоритмом и требует меньше вычислительной мощности, однако и дает наихудший результат. Трилинейная добавляет четкости, но по-прежнему генерирует артефакты. Наиболее продвинутым способом, устраняющим заметные искажения на объектах, сильно наклоненных относительно камеры, считается анизо­тропная фильтрация. В отличие от двух предыдущих методов она успешно борется с эффектом ступенчатости (когда одни части текстуры размываются сильнее других, и граница между ними становится явно заметной). При использовании билинейной или трилинейной фильтрации с увеличением расстояния текстура становится все более размытой, анизотропная же этого недостатка лишена.

Учитывая объем обрабатываемых данных (а в сцене может быть множество 32-битовых текстур высокого разрешения), анизотропная фильтрация особенно требовательна к пропускной способности памяти. Уменьшить трафик можно в первую очередь за счет компрессии текстур, которая сейчас применяется повсеместно. Ранее, когда она практиковалась не так часто, а пропуская способность видеопамяти была гораздо ниже, анизотропная фильтрация ощутимо снижала количество кадров. На современных же видеокартах она почти не влияет на fps.

Анизотропная фильтрация имеет лишь одну настройку – коэффициент фильтрации (2x, 4x, 8x, 16x). Чем он выше, тем четче и естественнее выглядят текстуры. Обычно при высоком значении небольшие артефакты заметны лишь на самых удаленных пикселах наклоненных текстур. Значений 4x и 8x, как правило, вполне достаточно для избавления от львиной доли визуальных искажений. Интересно, что при переходе от 8x к 16x снижение производительности будет довольно слабым даже в теории, поскольку дополнительная обработка понадобится лишь для малого числа ранее не фильтрованных пикселов.

Шейдеры

Шейдеры – это небольшие программы, которые могут производить определенные манипуляции с 3D-сценой, например, изменять освещенность, накладывать текстуру, добавлять постобработку и другие эффекты.


Шейдеры делятся на три типа: вершинные (Vertex Shader) оперируют координатами, геометрические (Geometry Shader) могут обрабатывать не только отдельные вершины, но и целые геометрические фигуры, состоящие максимум из 6 вершин, пиксельные (Pixel Shader) работают с отдельными пикселами и их параметрами.

Шейдеры в основном применяются для создания новых эффектов. Без них набор операций, которые разработчики могли бы использовать в играх, весьма ограничен. Иными словами, добавление шейдеров позволило получать новые эффекты, по умолчанию не заложенные в видеокарте.

Шейдеры очень продуктивно работают в параллельном режиме, и именно поэтому в современных графических адаптерах так много потоковых процессоров, которые тоже называют шейдерами. Например, в GeForce GTX 580 их целых 512 штук.

Parallax mapping

Parallax mapping – это модифицированная версия известной техники bumpmapping, используемой для придания текстурам рельефности. Parallax mapping не создает 3D-объектов в обычном понимании этого слова. Например, пол или стена в игровой сцене будут выглядеть шероховатыми, оставаясь на самом деле абсолютно плоскими. Эффект рельефности здесь достигается лишь за счет манипуляций с текстурами.

Исходный объект не обязательно должен быть плоским. Метод работает на разных игровых предметах, однако его применение желательно лишь в тех случаях, когда высота поверхности изменяется плавно. Резкие перепады обрабатываются неверно, и на объекте появляются артефакты.

Parallax mapping существенно экономит вычислительные ресурсы компьютера, поскольку при использовании объектов-аналогов со столь же детальной 3D-структурой производительности видеоадаптеров не хватало бы для просчета сцен в режиме реального времени.

Эффект чаще всего применяется для каменных мостовых, стен, кирпичей и плитки.

Anti-Aliasing

До появления DirectX 8 сглаживание в играх осуществлялось методом SuperSampling Anti-Aliasing (SSAA), известным также как Full-Scene Anti-Aliasing (FSAA). Его применение приводило к значительному снижению быстродействия, поэтому с выходом DX8 от него тут же отказались и заменили на Multisample Аnti-Аliasing (MSAA). Несмотря на то что данный способ давал худшие результаты, он был гораздо производительнее своего предшественника. С тех пор появились и более продвинутые алгоритмы, например CSAA.

AA off AA on

Учитывая, что за последние несколько лет быстродействие видеокарт заметно увеличилось, как AMD, так и NVIDIA вновь вернули в свои ускорители поддержку технологии SSAA. Тем не менее использовать ее даже сейчас в современных играх не получится, поскольку количество кадров/с будет очень низким. SSAA окажется эффективной лишь в проектах предыдущих лет, либо в нынешних, но со скромными настройками других графических параметров. AMD реализовала поддержку SSAA только для DX9-игр, а вот в NVIDIA SSAA функционирует также в режимах DX10 и DX11.

Принцип работы сглаживания очень прост. До вывода кадра на экран определенная информация рассчитывается не в родном разрешении, а увеличенном и кратном двум. Затем результат уменьшают до требуемых размеров, и тогда «лесенка» по краям объекта становится не такой заметной. Чем выше исходное изображение и коэффициент сглаживания (2x, 4x, 8x, 16x, 32x), тем меньше ступенек будет на моделях. MSAA в отличие от FSAA сглаживает лишь края объектов, что значительно экономит ресурсы видеокарты, однако такая техника может оставлять артефакты внутри полигонов.

Раньше Anti-Aliasing всегда существенно снижал fps в играх, однако теперь влияет на количество кадров незначительно, а иногда и вовсе никак не cказывается.

Тесселяция

С помощью тесселяции в компьютерной модели повышается количество полигонов в произвольное число раз. Для этого каждый полигон разбивается на несколько новых, которые располагаются приблизительно так же, как и исходная поверхность. Такой способ позволяет легко увеличивать детализацию простых 3D-объектов. При этом, однако, нагрузка на компьютер тоже возрастет, и в ряде случаев даже не исключены небольшие артефакты.

На первый взгляд, тесселяцию можно спутать с Parallax mapping. Хотя это совершенно разные эффекты, поскольку тесселяция реально изменяет геометрическую форму предмета, а не просто симулирует рельефность. Помимо этого, ее можно применять практически для любых объектов, в то время как использование Parallax mapping сильно ограничено.

Технология тесселяции известна в кинематографе еще с 80-х го­дов, однако в играх она стала поддерживаться лишь недавно, а точнее после того, как графические ускорители наконец достигли необходимого уровня производительности, при котором она может выполняться в режиме реального времени.

Чтобы игра могла использовать тесселяцию, ей требуется видеокарта с поддержкой DirectX 11.

Вертикальная синхронизация

V-Sync – это синхронизация кадров игры с частотой вертикальной развертки монитора. Ее суть заключается в том, что полностью просчитанный игровой кадр выводится на экран в момент обновления на нем картинки. Важно, что очередной кадр (если он уже готов) также появится не позже и не раньше, чем закончится вывод предыдущего и начнется следующего.

Если частота обновления монитора составляет 60 Гц, и видео­карта успевает просчитывать 3D-сцену как минимум с таким же количеством кадров, то каждое обновление монитора будет отображать новый кадр. Другими словами, с интервалом 16,66 мс пользователь будет видеть полное обновление игровой сцены на экране.

Следует понимать, что при включенной вертикальной синхронизации fps в игре не может превышать частоту вертикальной развертки монитора. Если же число кадров ниже этого значения (в нашем случае меньше, чем 60 Гц), то во избежание потерь производительности необходимо активировать тройную буферизацию, при которой кадры просчитываются заранее и хранятся в трех раздельных буферах, что позволяет чаще отправлять их на экран.

Главной задачей вертикальной синхронизации является устранение эффекта сдвинутого кадра, возникающего, когда нижняя часть дисплея заполнена одним кадром, а верхняя – уже другим, сдвинутым относительно предыдущего.

Post-processing

Это общее название всех эффектов, которые накладываются на уже готовый кадр полностью просчитанной 3D-сцены (иными словами, на двухмерное изображение) для улучшения качества финальной картинки. Постпроцессинг использует пиксельные шейдеры, и к нему прибегают в тех случаях, когда для дополнительных эффектов требуется полная информация обо всей сцене. Изолированно к отдельным 3D-объектам такие приемы не могут быть применены без появления в кадре артефактов.


High dynamic range (HDR)

Эффект, часто используемый в игровых сценах с контрастным освещением. Если одна область экрана является очень яркой, а другая, наоборот, затемненной, многие детали в каждой из них теряются, и они выглядят монотонными. HDR добавляет больше градаций в кадр и позволяет детализировать сцену. Для его применения обычно приходится работать с более широким диапазоном оттенков, чем может обеспечить стандартная 24-битовая точность. Предварительные просчеты происходят в повышенной точности (64 или 96 бит), и лишь на финальной стадии изображение подгоняется под 24 бита.

HDR часто применяется для реализации эффекта приспособления зрения, когда герой в играх выходит из темного туннеля на хорошо освещенную поверхность.

Bloom

Bloom нередко применяется совместно с HDR, а еще у него есть довольно близкий родственник – Glow, именно поэтому эти три техники часто путают.

Bloom симулирует эффект, который можно наблюдать при съемке очень ярких сцен обычными камерами. На полученном изображении кажется, что интенсивный свет занимает больше объема, чем должен, и «залазит» на объекты, хотя и находится позади них. При использовании Bloom на границах предметов могут появляться дополнительные артефакты в виде цветных линий.

Film Grain

Зернистость – артефакт, возникающий в аналоговом ТВ при плохом сигнале, на старых магнитных видеокассетах или фотографиях (в частности, цифровых изображениях, сделанных при недостаточном освещении). Игроки часто отключают данный эффект, поскольку он в определенной мере портит картинку, а не улучшает ее. Чтобы понять это, можно запустить Mass Effect в каждом из режимов. В некоторых «ужастиках», например Silent Hill, шум на экране, наоборот, добавляет атмосферности.

Motion Blur

Motion Blur – эффект смазывания изображения при быстром перемещении камеры. Может быть удачно применен, когда сцене следует придать больше динамики и скорости, поэтому особенно востребован в гоночных играх. В шутерах же использование размытия не всегда воспринимается однозначно. Правильное применение Motion Blur способно добавить кинематографичности в происходящее на экране.

Эффект также поможет при необходимости завуалировать низкую частоту смены кадров и добавить плавности в игровой процесс.

Ambient occlusion – техника, применяемая для придания сцене фотореалистичности за счет создания более правдоподобного освещения находящихся в ней объектов, при котором учитывается наличие поблизости других предметов со своими характеристиками поглощения и отражения света.

Screen Space Ambient Occlusion является модифицированной версией Ambient Occlusion и тоже имитирует непрямое освещение и затенение. Появление SSAO было обусловлено тем, что при современном уровне быстродействия GPU Ambient Occlusion не мог использоваться для просчета сцен в режиме реального времени. За повышенную производительность в SSAO приходится расплачиваться более низким качеством, однако даже его хватает для улучшения реалистичности картинки.

SSAO работает по упрощенной схеме, но у него есть множество преимуществ: метод не зависит от сложности сцены, не использует оперативную память, может функционировать в динамичных сценах, не требует предварительной обработки кадра и нагружает только графический адаптер, не потребляя ресурсов CPU.

Cel shading

Игры с эффектом Cel shading начали делать с 2000 г., причем в первую очередь они появились на консолях. На ПК по-настоящему популярной данная техника стала лишь через пару лет, после выхода нашумевшего шутера XIII. С помощью Cel shading каждый кадр практически превращается в рисунок, сделанный от руки, или фрагмент из детского мультика.

В похожем стиле создают комиксы, поэтому прием часто используют именно в играх, имеющих к ним отношение. Из последних известных релизов можно назвать шутер Borderlands, где Cel shading заметен невооруженным глазом.

Особенностями технологии является применение ограниченного набора цветов, а также отсутствие плавных градиентов. Название эффекта происходит от слова Cel (Celluloid), т. е. прозрачного материала (пленки), на котором рисуют анимационные фильмы.

Depth of field

Глубина резкости – это расстояние между ближней и дальней границей пространства, в пределах которого все объекты будут в фокусе, в то время как остальная сцена окажется размытой.

В определенной мере глубину резкости можно наблюдать, просто сосредоточившись на близко расположенном перед глазами предмете. Все, что находится позади него, будет размываться. Верно и обратное: если фокусироваться на удаленных объектах, то все, что размещено перед ними, получится нечетким.

Лицезреть эффект глубины резкости в гипертрофированной форме можно на некоторых фотографиях. Именно такую степень размытия часто и пытаются симулировать в 3D-сценах.

В играх с использованием Depth of field геймер обычно сильнее ощущает эффект присутствия. Например, заглядывая куда-то через траву или кусты, он видит в фокусе лишь небольшие фрагменты сцены, что создает иллюзию присутствия.

Влияние на производительность

Чтобы выяснить, как включение тех или иных опций сказывается на производительности, мы воспользовались игровым бенчмарком Heaven DX11 Benchmark 2.5. Все тесты проводились на системе Intel Core2 Duo e6300, GeForce GTX460 в разрешении 1280×800 точек (за исключением вертикальной синхронизации, где разрешение составляло 1680×1050).

Как уже упоминалось, анизо­тропная фильтрация практически не влияет на количество кадров. Разница между отключенной анизотропией и 16x составляет всего лишь 2 кадра, поэтому рекомендуем ее всегда ставить на максимум.


Сглаживание в Heaven Benchmark снизило fps существеннее, чем мы того ожидали, особенно в самом тяжелом режиме 8x. Тем не менее, поскольку для ощутимого улучшения картинки достаточно и 2x, советуем выбирать именно такой вариант, если на более высоких играть некомфортно.

Тесселяция в отличие от предыдущих параметров может принимать произвольное значение в каждой отдельной игре. В Heaven Benchmark картинка без нее существенно ухудшается, а на максимальном уровне, наоборот, становится немного нереалистичной. Поэтому следует устанавливать промежуточные значения – moderate или normal.

Для вертикальной синхронизации было выбрано более высокое разрешение, чтобы fps не ограничивался вертикальной частотой развертки экрана. Как и предполагалось, количество кадров на протяжении почти всего теста при включенной синхронизации держалось четко на отметке 20 или 30 кадров/с. Это связано с тем, что они выводятся одновременно с обновлением экрана, и при частоте развертки 60 Гц это удается сделать не с каждым импульсом, а лишь с каждым вторым (60/2 = 30 кадров/с) или третьим (60/3 = 20 кадров/с). При отключении V-Sync число кадров увеличилось, однако на экране появились характерные артефакты. Тройная буферизация не оказала никакого положительного эффекта на плавность сцены. Возможно, это связано с тем, что в настройках драйвера видеокарты нет опции принудительного отключения буферизации, а обычное деактивирование игнорируется бенчмарком, и он все равно использует эту функцию.

Если бы Heaven Benchmark был игрой, то на максимальных настройках (1280×800; AA – 8x; AF – 16x; Tessellation Extreme) в нее было бы некомфортно играть, поскольку 24 кадров для этого явно недостаточно. С минимальной потерей качества (1280×800; AA – 2x; AF – 16x, Tessellation Normal) можно добиться более приемлемого показателя в 45 кадров/с.

Фильтрация текстур

Цвет пиксела на экране теоретически должен однозначно определяться. Однако правило это справедливо только в простых случаях. Пиксел лишь в математическом смысле именуется точкой, но физически он в любом случае имеет конкретные размеры и выглядит как квадрат, размер которого зависит от разрешения монитора и разрешения текстуры. То есть один пиксель текстуры при 100% увеличении равен одному пикселю изображения.

Как только мы аппаратно увеличиваем разрешения картинки, оставляя при этом увеличение прежним, получается, что на один пиксел изображения приходится несколько пикселов монитора. Если и дальше продолжать увеличивать изображение, то получится ужасное изображение.

Илон Маск рекомендует:  Что такое код mcrypt_module_is_block_algorithm_mode

Для улучшения качества изображения в самом простейшем случае используют поточную выборку. Очевидно, что при увеличении размера изображения в него добавляются новые пикселы так, чтобы разрешение изображения соответствовало разрешению монитора. Цвет новых пикселов выбирается либо в точности такой, какой был у каждого отдельного пиксела до увеличения, или берется среднее арифметическое цветов всех соседних пикселей. То есть цвет нового пиксела определяется по цвету пикселей, расположенных рядом. Получаемый при это результат выглядит достаточно грубым, ведь новые пиксели по сути являются не существующими в реальном изображении. Для того, чтобы максимально сгладить данный эффект, существует несколько алгоритмов: билинейная, трилинейная и анизотропная фильтрация.

Билинейная фильтрация

Технология используется для улучшения изображения. В случае билинейной фильтрации принято считать, что часть фильтруемого изображения, ограниченного пределами одного пиксела, представляет собой как бы круг, а цвет пиксела рассчитывается путем аппроксимации цветов четырех примыкающих к нему пикселов. При сильном программном увеличении изображения случается, что в круг попадает слишком мало пикселей и тогда изображение выглядит размытым.

Трилинейная фильтрация

Технология используется с целью улучшить качество изображения. Является комбинацией двух других технологий: MIP mapping и билинейную фильтрацию. В MIP mapping используются текстуры с различной степенью разрешения в зависимости от коэффициента увеличения изображения. При трилинейной фильтрации берутся несколько пикселей, окружающих пиксель, который необходимо обработать. Ко всем этим пикселям последовательно применяется технология билинейной фильтрации. В итоге аппроксимация производится уже не по четырем пикселам, как при билинейной фильтрации, а по восьми или более. Получаемый результат выглядит более реалистичным.

Анизотропная фильтрация

На сей момент считается лучшей технологией фильтрации изображения. Существует несколько алгоритмов анизотропной фильтрации, суть которых состоит в как можно более точном рассчете цвета пикселов с учетом не только соседних, но и основываясь на более глубоком анализе обрабатываемого участка изображения.

Настройки «глобальных параметров» драйвера для видеокарт NVidia

Anisotropic filtering (Анизотропная фильтрация) — ставим значение Application-controlled (Управление от приложения). Проверьте значение в самом приложении. Желательно не более 8х.

Анизотропная фильтрация нужна для повышения четкости изображения 3д объектов относительно камеры (персонажа, машины и т.д). Выставляем значение Application-controlled (Управление от приложения) — это означает, что приложение будет автоматически выбирать нужный режим анизотропной фильтрации, или же фильтрация управляется в самом приложении (программе, игре), чем выше значение фильтрации, тем четче будет изображение. На производительность практически не влияет.

Для каждого приложения данный параметр можно настроить отдельно (вкладка программные настройки), получив более высокое качество, если приложение не поддерживает или некорректно обрабатывает анизотропную фильтрацию.

Antialising — Gamma correction (Сглаживание — гамма- коррекция) — ставим значение On (Вкл)

«Сглаживание гамма коррекции» сглаживает гамму при переходе от светлого тона к темному или же наоборот. Включение дает возможность сглаживать моменты, например, при «свечении» лица персонажа в лучах света (прямой пример — игра Devil May Cry 4 с отличной игрой светлый и темных тонов). На производительность не влияет.

Antialising Mode (Сглаживание — режим) — ставим значение Application-controlled (Управление от приложения)

Очень важный параметр, включение режима сглаживания дает возможность избавления от эффекта лесенок на трехмерном объекте. Выставляем значение Application-controlled (Управление от приложения). — это означает, что приложение будет автоматически выбирать нужный режим сглаживания, или же сглаживание будет управляться в самом приложении (программе, игре), чем выше значение сглаживания, тем меньше эффекта лесенок будет, чем ниже будет производительность приложения, тем меньше будет кадров в секунду. На производительность влияет негативно.
Для каждого приложения данный параметр можно настроить отдельно (вкладка программные настройки), при этом вам станет доступен пункт Antialising Setting (Сглаживание — параметры), где вы сможете вручную задать уровень сглаживания от 2х до 16х. Даже если приложение не поддерживает сглаживание, это будет делать за него сам драйвер видеокарты.

Anti-aliasing Setting (Сглаживание — параметры) — автоматическое значение Application-controlled (Управление от приложения). Проверьте значение в самом приложении. Желательно не более 4х.

При включении предыдущего пункта Anti-aliasing Mode (Сглаживание — параметры) — Application-controlled (Управление от приложения) текущее значение будет неактивно, активно лишь в том случае, если значение Anti-aliasing Mode (Сглаживание — параметры) — Enhance the application setting) (Замещение настроек приложения или увеличение настроек приложения).
Для каждого приложения данный параметр можно настроить отдельно (вкладка программные настройки), получив более высокое качество, если приложение не поддерживает или некорректно обрабатывает Anti-aliasing (сглаживание). Читайте пункт выше.

Anti-aliasing — Transparency (Сглаживание — прозрачность) ставим значение Off (Выкл)

Сглаживание прозрачных поверхностей означает, что объекты, не имеющие структуру, будут сглаживаться. Например, будет сглаживать «прозрачные» места в текстурах лестницы, ведь лестницы, например, рисуют единой текстурой, использую альфа-канал для указания прозрачных и не прозрачных мест. На производительность влияет не очень сильно, но если вам производительность все же важнее, можете поставить «Выкл».
В целом же, особой разницы в качестве картинки между ситуациями, когда эта опция включена или выключена, замечено не было.


Conformant texture clamp (Соответствующая привязка текстуры) — параметр Use hardware (Используются аппаратные средства)

Как видно из названия, выбор метода текстурирования, конечно же, оптимальным в качестве и производительности выбираем на уровни железа — Use hardware (Используются аппаратные средства) — что естественно производительней чем софтвенный (программный) режим.

Error reporting (Сообщения об ошибках) — значение Off (Выкл)

Бессмысленный параметр, включение которого дает возможность при случае ошибки драйвера отправлять все данные о ошибке и конфигурацию ПК разработчикам NVidia.
(Один из бессмысленных параметров, выключение которого позволит сделать безлимитный доступ драйверу к коду приложения при обработке графики, естественно, все ограничения снимаем значением Off (Выкл))

Force mipmaps (Включение масштабируемых текстур) — значение None (Нет)

Устаревшие значение работы 3д приложений. Отключаем, так как приложения уже не используют данный метод, значение — None (Нет).

Maximum pre-render frames (Максимальное количество заранее подготовленных кадров) — значение 1 или 2 (выбирайте в зависимости от мощности вашего ЦП)

Максимальное количество кадров после первого, которые может подготовить ЦП для дальнейшей обработки ГП видеокарты. При одном кадре, от 1 до 8 кадров будут подготавливаться наперед, загружаться в память, нагружая ваш ЦП во время подготовки этих кадров. Ставим значение 1 или 2, это позволит капитально увеличить скорость обработки графики в реальном времени. Кол-во кадров выберете сами, но все же рекомендую не более 3. Ориентируйтесь, исходя из мощности вашего ЦП (центральный процессор, не путайте с ГП — графическим процессором).

Multi-display/mixed — GPU acceleration (Ускорение нескольких дисплеев/смешанных ГП)- значение Single display performance mode (Режим однодисплейной производительности)

Проще говоря, если выставлен режим Multi display performance mode (Режим многодисплейной производительности), то графический процессор (ГП) вашей видеокарты отрисовывает изображение для обоих портов видеокарты. А если выставлен режим Single display performance mode (Режим однодисплейной производительности), то сигнал будет идти только на один из портов.
Так что, если у вас одна видеокарта и один монитор, то ставьте в обязательном порядке Single display performance mode (Режим однодисплейной производительности).
Заметьте, что когда вы установили новые драйвера на видеокарту, по умолчанию стоит режим Multi display performance mode (Режим многодисплейной производительности) это означает, что, будь у вас два монитора, то, подключив его к второму видеовыходу, на него тоже бы шел рендеринг изображения. Теряется производительность где то на 5-15%. В общем режим Single display performance mode (Режим однодисплейной производительности) повышает производительность за счет рендеринга на один видеовыход). Увеличивает производительности в 3д приложениях.

Texture filtering — Anisotropic sample optimization (Фильтрация Текстур — анизотропная оптимизация по выборке ) — значение Off (Выкл)

Фильтрация текстур — Анизотропная оптимизация, данный параметр выставляется значением Off, так как данный параметр увеличивает производительность в 3D приложениях за счет ухудшения конечной картинки при рендеринге видеокартой. Но так как мы стремимся к скорости без потери качества, то нам этот параметр не нужен. (Если в параметре Texture filtering (Фильтрация текстур — качество) выставлено — Hight quality (Высокое качество), то данный параметр будет неактивен, выключен.)

Texture filtering — Negative LOD bias (Фильтрация текстур — отрицательное отклонение УД) — значение Clamp (Привязка)

Фильтрация текстур с использованием негатива с масштабируемым уровнем детализации, выставляем значение Clamp (Привязка), что позволит оптимизировать текстурные процедуры путем привязки. Это позволит получить дополнительные 2-3 ФПС в производительности рендеринга, без потери качества. Увеличивает производительности в 3д приложениях.

Texture filtering (Фильтрация текстур — качество) — значение Quality (Качество) или Hight quality (Высокое качество). (Выбирайте в зависимости от мощности вашей видеокарты)

Фильтрация текстур, позволяет улучшить качество картинки, четкость изображения без понижения производительности в рендеринге, соответственно ставим значение Hight quality (Высокое качество). На производительность практически не влияет.

Texture filtering — Trilinear optimization (Фильтрация текстур — трилинейная оптимизация) — значение Off (Выкл)

Фильтрация текстур — трилинейная оптимизация, данный параметр выставляется значением Off, если параметр Texture filtering — Quality (Фильтрация текстур — качество) стоит на значении High quality (Высокое качество), то данный параметр будет неактивен.
О параметре Texture filtering — Trilinear optimization (Фильтрация текстур — трилинейная оптимизация) хочу отметить, что он увеличивает производительность в 3д приложениях за счет ухудшения конечной картинки при рендеринге видеокартой. Но так как мы стремимся к скорости без потери качества, то нам этот параметр не нужен, к тому же Trilinear filtering (Трилинейная фильтрация) намного старше и у неё есть свои минусы, так же как и у двулинейной (билинейной) фильтрации. Тем более Anisotropic filtering (Анизотропная фильтрация) «практически» включает в себя оба этих метода фильтрации текстур с некоторой доработкой.

Threaded optimization (Потоковая оптимизация) — значение On (Вкл). (Включайте только если у вас многоядерный процессор, если нет, поставьте «Авто»)

Оптимизация драйвера видеокарты под многоядерные процессоры, лакомый кусочек для обладателей 2х — 4х ядерных процессоров. По умолчанию значение стоит Auto (Авто), но судя по проведенным тестам, в приложениях автоматически выставлялось Off (Выкл), но так как мы стремимся увеличить производительность, то выставляем значение On (Вкл). Увеличивает производительности в 3д приложениях.

Triple buffering (Тройная буферизация) — значение Off (Выкл)

Тройная буферизация экрана, буферизирует несколько кадров при вертикальной синхронизации, что позволяет более плавно сгладить переход кадров, тем самым снижает производительность в 3д приложениях. Ставим значение Off (Выкл), тем самым отключая ненужную буферизацию. На производительность влияет негативно.

Vertical sync (Вертикальный синхроимпульс — значение Force off (Отключить)

Вертикальная синхронизация кадров, через вертикальный синхроимпульс синхронизируется количество кадров в секунду с частотой обновления вашего монитора, тем самым убирая некий эффект «разрыва картинки» (на экране это будет выглядеть, например, при резком повороте камеры, будто верхняя часть экрана чуть уехала в сторону, по отношению к нижней), при быстрой смене кадров. При этом, зачастую сильно падает FPS (кол-во кадров в секунду), оно не столь значительно падает, только если у вас монитор обновляется с частотой выше 100-120 Гц в секунду, но даже при такой частоте все равно FPS снижается на 10-15%. Ставим значение Off (Выкл), тем самым отключая ненужную вертикальную синхронизацию. На производительность влияет негативно.

Ambient occlusion — Значение «Выкл»

Ambient occlusion — модель затенения, используемая в трёхмерной графике и позволяющая добавить реалистичности изображению за счёт вычисления интенсивности света, доходящего до точки поверхности.
Ambient occlusion чаще всего вычисляется путём построения лучей, исходящих из точки поверхности во всех направлениях, с последующей их проверкой на пересечение с другими объектами.
Этот процесс очень прилично нагружает видеокарту, так что смотрите сами, если видеокарта мощная, можете включить. А если нет, то лучше выключить.
В целом же, на мой взгляд, не стоит этот эффект того, что поедает =) Особой разницы вы все равно не увидите, она есть, но минимальна и заметна, только если внимательно присматриваться и знать, что искать =)


Билинейная фильтрация текстур

Самая актуальная документация по Visual Studio 2020: Документация по Visual Studio 2020.

Переопределяет режим фильтрации для соответствующих дискретизаторов текстур.

Различные способы дискретизации текстур по-разному сказываются на производительности и качестве изображения. Ниже перечислены режимы фильтрации в порядке возрастания влияния на производительность и качества изображения:

точечная фильтрация (наименьшие затраты и качество изображения);

анизотропная фильтрация (наибольшие затраты и наивысшее качество изображения).

Если потери производительности для каждого варианта значительны или растут при использовании более ресурсозатратных режимов фильтрации, можно сравнить эти потери со степенью повышения качества изображения. В соответствии с результатами оценки можно признать потери производительности, за счет которых повышается качество изображения, допустимыми либо снизить качество изображения, чтобы увеличить частоту кадров или повысить производительность для решения других задач.

Если потери производительности оказываются пренебрежимо малы или стабильны вне зависимости от режима фильтрации, например, если GPU имеет очень высокую пропускную способность шейдеров и широкую полосу пропускания памяти, рекомендуем использовать анизотропную фильтрацию, чтобы обеспечить максимальное качество изображения.

Эти варианты переопределяют состояния дискретизатора при вызове ID3D11DeviceContext::PSSetSamplers , при котором режим фильтрации предоставленного приложением дискретизатора имеет одно из следующих значений:

Для варианта Точечная фильтрация текстур определенный приложением режим фильтрации заменяется на D3D11_FILTER_MIN_MAG_MIP_POINT , для варианта Билинейная фильтрация текстур он заменяется на D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT , а для варианта Трилинейная фильтрация текстур он заменяется на D3D11_FILTER_MIN_MAG_MIP_LINEAR .

Для варианта Анизотропная фильтрация текстур определенный приложением режим фильтрации заменяется на D3D11_FILTER_ANISOTROPIC , а свойству «Максимальная анизотропия» присваивается значение 16.

В Direct3D на функциональном уровне 9.1 максимальная анизотропия равна 2x. Так как вариант Анизотропная фильтрация текстур пытается использовать исключительно 16-кратную анизотропию, воспроизведение завершается сбоем при запуске анализа кадров на устройстве с функциональным уровнем 9.1. К современным устройствам, на которые распространяется это ограничение, относятся планшеты Surface RT и Surface 2 с ОС Windows на основе архитектуры ARM. Ограничение также может распространяться на более старые GPU, которые, однако, выходят из употребления и встречаются все реже.

Вариант Точечная фильтрация текстур можно воспроизвести с помощью следующего кода:

Вариант Билинейная фильтрация текстур можно воспроизвести с помощью следующего кода:

Вариант Трилинейная фильтрация текстур можно воспроизвести с помощью следующего кода:

Вариант Анизотропная фильтрация текстур можно воспроизвести с помощью следующего кода:

Bilinear Filtering (Билинейная фильтрация)

Билинейная фильтрация — это процесс выборки нескольких пикселей из исходной текстуры в процессе отображения с последующим усреднением для получения окончательного значения пикселя.

Описание

При обычном текстурировании мы получаем координаты в текстуре, округляем их до ближайшего целого числа и выбираем нужный цвет из текстуры. Псевдокод такой:

Ниже в примере color означает RGB вектор. Поэтому данный псевдокод выполняется для трех каналов RGB одноверменно.

То есть мы как бы берем значение цвета в самой близкой к рисуемой точке, и из-за этого цвет резко меняется и возникает эффект блочности. Кроме того, при анимации округление будет делаться то в одну, то в другую сторону, из-за чего текстурированный объект будет сильно мерцать.

В случае билинейной фильтрации, мы, наоборот, получаем дробные части координат текстуры u и v и с помощью их определяем, какие тексели будут интерполироваться. Тем самым будут учитываться цвета четырёх ближайших текселей, и цвет будет плавно изменяться между ними, что придаст плавность анимации:

Заметим, что понятие «билинейная фильтрация», точно так же, как и сопутствующее ему понятие «трилинейная фильтрация», относится к фильтрации двумерных текстур. К трехмерным текстурам, например, понятие билинейной фильтрации неприменимо, а понятие трилинейной фильтрации означает совсем другое.

Ссылки

Что такое Bilinear Filtering (Билинейная фильтрация)?

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL