Статьи » Железо

Графические секреты ...


Графические секреты ...

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

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

Существует несколько «видов» фильтрации:

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

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

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

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

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

Шейдеры

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

Vertex Shader - вершинные шейдеры, они оперируют координатами.

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

Pixel Shader — пиксельные шейдеры, работают, как понятно из названия, только с пикселями, и их параметрами.

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

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

Parallax mapping

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

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

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

Anti-Aliasing

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

На сегодняшний день производительность графических адаптеров возросла в несколько раз, в связи с этим гиганты индустрии AMD и NVIDIA вновь встроили в свои ускорители поддержку технологии SSAA, но, использование в современных играх нежелательна, так как показатель количества кадров в секунду будет очень низким. SSAA может быть эффективной лишь в старых проектах, и со скромными настройками отображения. Если в картах AMD реализована поддержка SSAA только для игр поддерживающих DirectX 9, то в NVIDIA алгоритм SSAA функционирует также в режимах DirectX 10 и DirectX 11.

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

Тесселяция

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

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

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

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

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

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

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

Post-processing

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

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

Bloom

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

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

Motion Blur

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

Film Grain

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

High dynamic range (HDR)

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

SSAO

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 геймер обычно сильнее ощущает эффект присутствия. Например, заглядывая куда-то через траву или кусты, он видит в фокусе лишь небольшие фрагменты сцены, что создает иллюзию присутствия.

Рейтинг

В этом разделе

Добавить комментарий

Сколько будет 2+2*2 ? (прописью)