Билинейная и трилинейная в чем разница
Билинейная или трилинейная фильтрация текстур лучше?
Всем привет! Сегодня разберем, какая фильтрация лучше — билинейная или трилинейная, в чем отличия между ними, какие преимущества и недостатки у каждой, насколько сильно проявляется их влияние в играх и почему.
Алгоритмы отображения 3D объектов
Все объекты трехмерной графики, в том числе в видеоиграх, состоят из каркаса, то есть трехмерной объемной модели, на который натянута текстура, двухмерная картинка с нарисованными характерными деталями.
Например, у дома это будет рисунок кирпичной кладки с несколькими окнами, а у танка ֫ — рисунок брони с заклепками, побитой ржавчиной.
Элементарная минимальная частица текстуры называется текселем. Его размер зависит от разрешения и качества прорисовки. Из таких разноцветных текселей составлены все предметы в виртуальных мирах.
Однако трехмерная картинка отображается на плоском двухмерном мониторе, где базовой единицей разрешения является пиксель. Их количество ограничено разрешением матрицы. При этом текселей, которые должны отобразить доступные пиксели, может быть намного больше.
Фильтрация — механизм преобразования текселей в пиксели в удобном для пользователя виде. Влияние этой технологии огромно: при отключенной технологии адекватного изображения на экране вы не увидите и такое качество вам вряд ли понравится. Далее рассмотрим, в чем разница между билинейной и трилинейной фильтрацией.
Билинейная фильтрация
Из исходной текстуры извлекается несколько пикселей, их значения усредняются и результат выводится на пиксель монитора. Технология применима только к двухмерным текстурам.
Обычно берется 4 текселя, которые не дают необходимой гибкости настроек, а переходы на следующий уровень масштабирования не маскируются. На значительном удалении или под большим углом обзора изображение получается сильно размытым, а на текстурах со сложным рисунком отчетливо проявляются линии стыков.
Трилинейная фильтрация
Более продвинутый вариант. Цвет пикселя высчитывается как среднее арифметическое 8 текселей, попадающих в зону обзора, а точнее по 4 на 2 соседних текстуры. Для предотвращения малой резкости изображения используют своеобразный «костыль» — берут картинки с более детальным разрешением, чем они нужны без этой технологии.
Требования к объему оперативной памяти возрастают, а качество отображения удаленных объектов не превосходит возможностей билинейной фильтрации. На ближнем же расстоянии границы объектов не столь явно различимы, а текстуры имеют более плавные переходы.
Также для вас может быть полезно почитать «Что такое анизотропная фильтрация». Буду признателен всем, кто расшарит этот пост в социальных сетях. До завтра!
Билинейная и трилинейная в чем разница
Думаю, с понятием разрешения знакомы уже более-менее все игроки, но на всякий случай вспомним основы. Все же, пожалуй, главный параметр графики в играх.
Изображение, которое вы видите на экране, состоит из пикселей. Разрешение — это количество пикселей в строке, где первое число — их количество по горизонтали, второе — по вертикали. В Full HD эти числа — 1920 и 1080 соответственно. Чем выше разрешение, тем из большего количества пикселей состоит изображение, а значит, тем оно четче и детализированнее.
Влияние на производительность
Очень большое.Увеличение разрешения существенно снижает производительность. Именно поэтому, например, даже топовая RTX 2080 TI неспособна выдать 60 кадров в 4K в некоторых играх, хотя в том же Full HD счетчик с запасом переваливает за 100. Снижение разрешения — один из главных способов поднять FPS. Правда, и картинка станет ощутимо хуже.
В некоторых играх (например, в Titanfall) есть параметр так называемого динамического разрешения. Если включить его, то игра будет в реальном времени автоматически менять разрешение, чтобы добиться заданной вами частоты кадров.
Вертикальная синхронизация
Если частота кадров в игре существенно превосходит частоту развертки монитора, на экране могут появляться так называемые разрывы изображения. Возникают они потому, что видеокарта отправляет на монитор больше кадров, чем тот может показать за единицу времени, а потому картинка рендерится словно «кусками».
Вертикальная синхронизация исправляет эту проблему. Это синхронизация частоты кадров игры с частотой развертки монитора. То если максимум вашего монитора — 60 герц, игра не будет работать с частотой выше 60 кадров в секунду и так далее.
Есть и еще одно полезное свойство этой опции — она помогает снизить нагрузку на «железо» — вместо 200 потенциальных кадров ваша видеокарта будет отрисовывать всего 60, а значит, загружаться не на полную и греться гораздо меньше.
Впрочем, есть у Vsync и недостатки. Главная — очень заметный «инпут-лаг», задержка между вашими командами (например, движениями мыши) и их отображением в игре.
Поэтому играть со включенной вертикальной синхронизацией в мультипеере противопоказано. Кроме того, если ваш компьютер «тянет» игру при частоте ниже, чем заветные 60 FPS, Vsync может автоматически «лочиться» уже на 30 FPS, что приведет к неслабым таким лагам.
Лучший способ бороться с разрывами изображения на сегодняшний день — купить монитор с поддержкой G-Sync или FreeSync и соответствующую видеокарту Nvidia или AMD. Ни разрывов, ни инпут-лага.
Влияние на производительность
В общем и целом — никакого.
Сглаживание(Anti-aliasing)
Если нарисовать из квадратных по своей природе пикселей ровную линию, она получится не гладкой, а с так называемыми «лесенками». Особенно эти лесенки заметны при низких разрешениях. Чтобы устранить этот неприятный дефект и сделать изображения более четким и гладким, и нужно сглаживание.
Здесь и далее — слева изображение с отключенной графической опцией (или установленной на низком значении), справа — с включенной (или установленной на максимальном значении).
Технологий сглаживания несколько, вот основные:
Влияние на производительность
От ничтожного (FXAA) до колоссального (SSAA). В среднем — умеренное.
Качество текстур
Один из самых важных параметров в настройках игры. Поверхности всех предметов во всех современных трехмерных играх покрыты текстурами, а потому чем выше их качество и разрешение — тем четче, реалистичнее картинка. Даже самая красивая игра с ультра-низкими текстурами превратится в фестиваль мыловарения.
Влияние на производительность
Если в видеокарте достаточно видеопамяти, то практически никакого. Если же ее не хватает, вы получите ощутимые фризы и тормоза. 4 гигабайт VRAM хватает для подавляющего числа современных игр, но лучше бы в вашей следующей видеокарте памяти было 8 или хотя бы 6 гигабайт.
Анизотропная фильтрация
Анизотропная фильтрация, или фильтрация текстур, добавляет поверхностям, на которые вы смотрите под углом, четкости. Особенно ее эффективность заметна на удаленных от игрока текстурах земли или стен.
Чем выше степень фильтрации, чем четче будут поверхности в отдалении.
Этот параметр влияет на общее качество картинки довольно сильно, но систему при этом практически не нагружает, так что в графе «фильтрация текстур» советуем всегда выставлять 8x или 16x. Билинейная и трилинейная фильтрации уступают анизотропной, а потому особенного смысла в них уже нет.
Влияние на производительность
Тесселяция
Технология, буквально преображающая поверхности в игре, делающая их выпуклыми, рельефными, натуралистичными. В общем, тесселяция позволяет отрисовывать гораздо более геометрически сложные объекты. Просто посмотрите на скриншоты.
Влияние на производительность
Зависит от игры, от того, как именно движок применяет ее к объектам. Чаще всего — среднее.
Качество теней
Все просто: чем выше этот параметр, тем четче и подробнее тени, отбрасываемые объектами. Добавить тут нечего. Иногда в играх также встречается параметр «Дальность прорисовки теней» (а иногда он «вшит» в общие настройки). Тут все тоже понятно: выше дальность — больше теней вдалеке.
Влияние на производительность
Зависит от игры. Чаще всего разница между низкими и средними настройками не столь велика, а вот ультра-тени способны по полной загрузить ваш ПК, поскольку в этом случае количество объектов, отбрасывающих реалистичные тени, серьезно вырастает.
Глобальное затенение (Ambient Occlusion)
Один из самых важных параметров, влияющий на картинку разительным образом. Если вкратце, то AO помогает имитировать поведения света в трехмерном мире — а именно, затенять места, куда не должны попадать лучи: углы комнат, щели между предметами и стенами, корни деревьев и так далее.
Существует два основных вида глобального затенения:
SSAO (Screen space ambient occlusion). Впервые появилось в Crysis — потому тот и выглядел для своего времени совершенно фантастически. Затеняются пиксели, заблокированные от источников света.
HBAO (Horizon ambient occlusion). Работает по тому же принципу, просто количество затененных объектов и зон гораздо больше, чем при SSAO.
Влияние на производительность
Глубина резкости (Depth of Field)
То самое «боке», которое пытаются симулировать камеры большинства современных объектов. В каком-то смысле это имитация особенностей человеческого зрения: объект, на который мы смотрим, находится в идеальном фокусе, а объекты на фоне — размыты. Чаще всего глубину резкости сейчас используют в шутерах: обратите внимание, что когда вы целитесь через мушку, руки персонажа и часть ствола чаще всего размыты.
Впрочем, иногда DoF только мешает — складывается впечатление, что у героя близорукость.
Влияние на производительность
Целиком и полностью зависит от игры. От ничтожного до довольно сильного (как, например, в Destiny 2).
Bloom (Свечение)
Этот параметр отвечает за интенсивность источников света в игре. Например, с включенным Bloom, свет, пробивающийся из окна в помещение, будет выглядеть куда ярче. А солнце создавать натуральные «засветы». Правда, некоторые игры выглядят куда реалистичнее без свечения — тут нужно проверять самому.
Влияние на производительность
Чаще всего — низкое.
Motion Blur (Размытие в движении)
Motion Blur помогает передать динамику при перемещениях объекта. Работает он просто: когда вы быстро двигаете камерой, изображение начинает «плыть». При этом главный объект (например, руки персонажа с оружием) остается четким.
Анизотропная, билинейная и трилинейная фильтрация
Анизотро́пная фильтра́ция (англ. Anisotropic Filtering, AF) — в трёхмерной графике метод улучшения качества изображения текстур на поверхностях, сильно наклонённых относительно камеры. Как билинейная и трилинейная фильтрация, анизотропная фильтрация позволяет устранять алиасинг на различных поверхностях, но при этом вносит меньше размытия и поэтому позволяет сохранить бо́льшую детальность изображения. Анизотропная фильтрация требует относительно сложного вычисления, и поэтому только около 2004 года она стала «бесплатной» (не снижающей общей кадровой частоты, либо снижающей её незначительно) в графических платах потребительского уровня.
Выбирается MIP-текстура, соответствующая разрешению поперёк направления обзора. Берут несколько текселей вдоль направления обзора (в фильтрации 2x — до двух, в 4x — до четырёх, и т. д.) и усредняют их цвета.
Так как пикселей на экране может быть 1 миллион и даже больше, а каждый тексель — это не менее 32 бит, анизотропная фильтрация требует огромной пропускной способности видеопамяти (десятки гигабайт в секунду). Столь большие требования к памяти уменьшают за счёт сжатия текстур и кэширования.
Билинейная фильтрация — процесс извлечения нескольких пикселей исходной текстуры с последующим усреднением их значений для получения окончательного значения пикселя. Понятие «билинейная фильтрация», точно так же, как и сходное понятие «трилинейная фильтрация», применимо только к двумерным текстурам. Для трехмерных, например, данное понятие неприменимо, а понятие трилинейной фильтрации имеет совершенно другое значение.
Трилинейная фильтрация — усовершенствованный вариант билинейной фильтрации.
MIP-текстурирование, повышая чёткость изображения и процент попаданий в кэш на дальних расстояниях, имеет серьёзный недостаток: ясно видны границы раздела между MIP-уровнями. Трилинейная фильтрация позволяет исправить этот недостаток ценой некоторого снижения резкости текстур.
Для этого цвет пикселя высчитывается как средневзвешенное восьми текселей: по четыре на двух соседних MIP-текстурах. В случае, если формулы MIP-текстурирования дают самую крупную или самую маленькую из MIP-текстур, трилинейная фильтрация вырождается в билинейную.
С недостаточной резкостью борются, устанавливая отрицательный mip bias — то есть, текстуры берутся более детальные, чем нужно было бы без трилинейной фильтрации.
60. UV-преобразования, сферическое и кубическое текстурирование
UV-преобразование или развёртка в трёхмерной графике (англ. UV map) — соответствие между координатами на поверхности трёхмерного объекта (X, Y, Z) и координатами на текстуре (U, V). Значения U и V обычно изменяются от 0 до 1. Развёртка может строиться как вручную, так и автоматически.
Современное трёхмерное аппаратное обеспечение считает, что UV-преобразование в пределах одного треугольника является аффинным — поэтому достаточно задать U и V для каждой вершины каждого из треугольников. Впрочем, как именно стыковать треугольники друг с другом, выбирает 3D-моделер, и умение строить удачную развёртку — один из показателей его класса. Существует несколько противоречащих друг другу показателей качества развёртки:
Максимально полное использование площади текстуры. Впрочем, в зависимости от разрыва между «минимальными» и «максимальными» системными требованиями, по краям развёртки текстуре нужен определённый «припуск» на генерацию текстур меньшего размера.
Отсутствие областей с недостаточной или избыточной детализацией текстуры.
Отсутствие областей с излишними геометрическими искажениями.
Сходство со стандартными ракурсами, с которых обычно рисуется или фотографируется объект — упрощает работухудожника по текстурам.
Удачно расположенные «швы» — линии, соответствующие одному ребру, но расположенные в разных местах текстуры. Швы желательны, если есть естественный «разрыв» поверхности (швы одежды, кромки, сочленения и т. д.), и нежелательны, если таковых нет. В моделировании персонажей Dota 2 участвовали любители со всего мира, и руководство по моделированиютребовало, чтобы глаза были отдельным «островком» развёртки.
Для частично симметричных объектов: удачное сочетание симметричных и асимметричных участков развёртки. Симметрия повышает детализацию текстуры и упрощает работу художника по текстурам; асимметричные детали «оживляют» объект.
Кубическое текстурирование, кубическая карта (англ. Cube mapping, CubeMap) — методика в трёхмерной компьютерной графике, предназначеная преимущественно для моделирования отражений на поверхности объекта. Суть методики в использвании кубической карты для отображения трёхмерной координаты текстурыв тексель при построении изображений отраженния окружения в поверхности объекта. Кубическая карта представляет собой развёртку шести граней куба, каждая грань которого содержит текстуру. Каждая текстура отображает вид окружения, которое видно из одной точки зрения в шести направлениях. Текстурная координата является вектором, который определяет, как смотреть из центра куба, чтобы получить желаемый тексель.
Cube mapping, как правило, более предпочтительный устаревшей методике Sphere mapping (англ.), так как является более простым для динамической генерации в симуляциях реального времени и имеет меньшее искажение.
ВНИМАНИЕ!
ПЕРЕВОД ГУГЛА!
В компьютерной графике отображения сферы (или отображения сферической окружающей среды) является одним из видов отображения отражения, что приближает отражающие поверхности, рассматривая среду для бесконечно далекой сферической стены. Эта среда хранится в виде текстуры, изображающие то, что зеркальный шар будет выглядеть, если бы он был помещен в окружающую среду, используя ортогональной проекции (в отличие от одного с точки зрения). Эта текстура содержит отражающие данные для всей среды, к тому месту, непосредственно позади сфере исключением. (Для одного примера такого объекта, см. Эшера рисования Рука с Отражая Sphere.)
Чтобы использовать эти данные, нормаль к поверхности объекта, просмотреть направление от объекта к камере, и / или отражается направление от объекта к окружающей среде, используется для расчета координат текстуры для поиска в вышеупомянутом текстурной карты. Результат выглядит как окружающая среда отражается в поверхности объекта, подлежащего визуализации.
1. Определение и основные виды компьютерной графики. 1
2. Основные области применения компьютерной графики. 1
3. Фрактальная графика. 1
4. Двухмерная и трёхмерная компьютерная графика. 1
5. Дополнительные виды компьютерной графики (пиксельная, ASCII, псевдографика) 1
6. Определение и основные понятия растровой графики. 2
7. Разрешение растрового изображения. 2
8. Разрешение цифрового видео, развёртка и соотношение сторон кадра. 2
9. Глубина цвета в растровой графике. 2
10. Представление цветов в компьютерной графике, цветовая модель. 3
32. Преобразования кривых Бернштейна-Безье. 12
33. Аффинное преобразование и его матричное представление. 13
34. Виды аффинных преобразований. 13
36. Способы описания векторного изображения, редактор векторной графики. 13
37. Технологии описания статичной векторной графики (PostScript, VML, PGML) 14
38. Технологии описания динамической векторной графики (SVG, Flash и др.) 14
39. Определение и основные понятия трехмерной векторной графики. 15
11. 40. Параметрическое задание поверхности. 15
41. Кривые поверхности. 15
42. Основные методы 3D моделирования. 16
43. Полигональная сетка, их виды.. 16
44. Файловые форматы полигональных сеток. 16
45. Основные методы и ПО рендеринга. 16
46. Уравнение рендеринга. 17
47. Растеризация, построение проекций. 18
48. Матрица преобразований камеры 3D сцены.. 18
49. Модель и методы освещения в 3D графике. 18
50. Рейкастинг и трассировка лучей. 18
51. Рендеринг в реальном времени. 19
52. Объёмный рендеринг, вокселы. 20
53. Процессы и стадии графического конвейера. 22
54. Низкоуровневые графические API. 25
55. Шейдеры, шейдерные языки. 25
Шейдерные языки. 26
Профессиональный рендеринг. 26
Рендеринг в реальном времени. 27
56. Типы шейдеров. 28
57. Определение, основные понятия и методы текстурирования. 29
58. Рельефное текстурирование. 32
59. Анизотропная, билинейная и трилинейная фильтрация. 34
60. UV-преобразования, сферическое и кубическое текстурирование. 35
Настройки графики (характеристики параметров)
При первом запуске клиента игры, графические настройки выставляются примерно-оптимальные для Вашей видеокарты. В любой момент Вы можете изменить эти настройки, как понизить качество, так и повысить. Эти настройки очень тесно связаны с FPS(Frames Per Second — количество кадров в секунду).
Расшифровка некоторых понятий:
Вертикальная синхронизация — синхронизация кадровой частоты в компьютерной игре с частотой вертикальной развёртки монитора. В некоторых случаях убирает артефакты, также убирает подергивания изображения. При этом может снижаться производительность, иногда довольно значительно. Максимальный FPS с вертикальной синхронизанией приравнивается к частоте обновления монитора. Если FPS ниже частоты обновления монитора, то во избежание ещё большей потери производительности следует включить тройную буферизацию.
Фильтрация текстур(билинейная, трилинейная, Анизотропная)
Билинейная фильтрация — процесс извлечения нескольких пикселей исходной текстуры с последующим усреднением их значений для получения окончательного значения пикселя.
Трилинейная фильтрация — усовершенствованный вариант билинейной фильтрации.
Анизотропная фильтрация — метод улучшения качества изображения текстур на поверхностях, сильно наклонённых относительно камеры. Как билинейная и трилинейная фильтрация, анизотропная фильтрация позволяет устранять эффект ступенчатости на различных поверхностях, но при этом вносит меньше размытия и поэтому позволяет сохранить бо́льшую детальность изображения. Так как пикселей на экране может быть 1 миллион и даже больше, а каждый тексел — это не менее 32 бит, анизотропная фильтрация требует огромной пропускной способности видеопамяти (десятки гигабайт в секунду). Столь большие требования к памяти уменьшают за счёт компрессии текстур.
Если Вас не устраивает количество FPS попробуйте понизить графические настройки и найти баланс для себя между FPS и качеством отображения игры.
Варианты точечной, билинейной, трилинейной и анизотропной фильтрации текстур
Переопределяет режим фильтрации для соответствующих дискретизаторов текстур.
Интерпретация
Различные способы дискретизации текстур по-разному сказываются на производительности и качестве изображения. Ниже перечислены режимы фильтрации в порядке возрастания влияния на производительность и качества изображения:
точечная фильтрация (наименьшие затраты и качество изображения);
анизотропная фильтрация (наибольшие затраты и наивысшее качество изображения).
Если потери производительности для каждого варианта значительны или растут при использовании более ресурсозатратных режимов фильтрации, можно сравнить эти потери со степенью повышения качества изображения. В соответствии с результатами оценки можно признать допустимыми потери производительности, за счет которых повышается качество изображения, либо снизить качество изображения, чтобы увеличить частоту кадров или повысить производительность для решения других задач.
Если потери производительности оказываются пренебрежимо малы или стабильны вне зависимости от режима фильтрации, например, если GPU имеет очень высокую пропускную способность шейдеров и широкую полосу пропускания памяти, рекомендуем использовать анизотропную фильтрацию, чтобы обеспечить максимальное качество изображения.
Примечания
Ограничения
В Direct3D на функциональном уровне 9.1 максимальная анизотропия равна 2x. Так как вариант Анизотропная фильтрация текстур пытается использовать исключительно 16-кратную анизотропию, воспроизведение завершается сбоем при запуске анализа кадров на устройстве с функциональным уровнем 9.1. К современным устройствам, на которые распространяется это ограничение, относятся планшеты Surface RT и Surface 2 с ОС Windows на основе архитектуры ARM. Ограничение также может распространяться на более старые GPU, которые, однако, выходят из употребления и встречаются все реже.
Пример 1
Вариант Точечная фильтрация текстур можно воспроизвести с помощью следующего кода:
Пример 2
Вариант Билинейная фильтрация текстур можно воспроизвести с помощью следующего кода:
Пример 3
Вариант Трилинейная фильтрация текстур можно воспроизвести с помощью следующего кода:
Пример 4
Вариант Анизотропная фильтрация текстур можно воспроизвести с помощью следующего кода: