Современные технологии улучшения качества 3D-изображений. Суперсэмплинг это
supersampling — с английского на русский
Supersampling — is an antialiasing technique, the process of eliminating jagged and pixelated edges (aliasing). It is a method of smoothing images rendered in computer games or other programs that generate imagery.Overview. Since pixels are uniformly colored and … Wikipedia
Supersampling — bezeichnet: Einen Begriff aus der Druckersprache Eine Technik in der Computergrafik, siehe Antialiasing (Computergrafik) Diese Seite ist eine Begriffsklärung zur Unterscheidung mehrerer mit demselben Wort bezeichneter B … Deutsch Wikipedia
Supersampling — Le supersampling est un terme anglais définissant une action de suréchantillonnage. Dans le domaine de l infographie, ou du rendu en temps réel, le supersampling est un procédé utilisé pour tenter d anticréneler une image. En image, l… … Wikipédia en Français
Jittering — Supersampling bezeichnet: Einen Begriff aus der Druckersprache Eine Technik in der Computergrafik, siehe Antialiasing (Computergrafik) … Deutsch Wikipedia
FSAA — Eine Computergrafik, die oben ohne und unten mit Antialiasing berechnet wurde. Durch Antialiasing wird das harte Erscheinungsbild der Objektkanten geglättet und dünne Objekte fehlerfrei dargestellt. Antialiasing, auch Anti Aliasing, bezeichnet in … Deutsch Wikipedia
Kantenglättung — Eine Computergrafik, die oben ohne und unten mit Antialiasing berechnet wurde. Durch Antialiasing wird das harte Erscheinungsbild der Objektkanten geglättet und dünne Objekte fehlerfrei dargestellt. Antialiasing, auch Anti Aliasing, bezeichnet in … Deutsch Wikipedia
Schriftglättung — Eine Computergrafik, die oben ohne und unten mit Antialiasing berechnet wurde. Durch Antialiasing wird das harte Erscheinungsbild der Objektkanten geglättet und dünne Objekte fehlerfrei dargestellt. Antialiasing, auch Anti Aliasing, bezeichnet in … Deutsch Wikipedia
Treppeneffektglättung — Eine Computergrafik, die oben ohne und unten mit Antialiasing berechnet wurde. Durch Antialiasing wird das harte Erscheinungsbild der Objektkanten geglättet und dünne Objekte fehlerfrei dargestellt. Antialiasing, auch Anti Aliasing, bezeichnet in … Deutsch Wikipedia
Treppenglättung — Eine Computergrafik, die oben ohne und unten mit Antialiasing berechnet wurde. Durch Antialiasing wird das harte Erscheinungsbild der Objektkanten geglättet und dünne Objekte fehlerfrei dargestellt. Antialiasing, auch Anti Aliasing, bezeichnet in … Deutsch Wikipedia
Antialiasing (Computergrafik) — Eine Computergrafik, die oben ohne und unten mit Antialiasing berechnet wurde. Durch Antialiasing wird das harte Erscheinungsbild der Objektkanten geglättet und die dünnen Streifen werden realistischer dargestellt. Antialiasing, auch Anti… … Deutsch Wikipedia
Multisample anti-aliasing — (MSAA) is a type of anti aliasing, a technique used in computer graphics to improve image quality. Contents 1 Definition 2 Description 3 Advantages 4 Disadvantages … Wikipedia
translate.academic.ru
5. Суперсэмплинг. Анти-алиасинг изображения - курсовая работа
Анти-алиасинг изображения
курсовая работаВот как это выглядит на практике, когда виртуальное разрешение в два раза выше итогового (видимого на экране монитора) по горизонтали и вертикали:
Один результирующий пиксель состоит из четырех субпикселей. Его цвет определяется усреднением значений этих четырех виртуальных субпикселей.
Несмотря на то, что метод давно реализован, по причине огромного падения скорости (в рассмотренном нами случае - примерно в четыре раза!), практически никакого распространения он не получал, до сравнительно недавнего времени - начала 2000 года. Именно тогда появились достаточно мощные ускорители, такие как NVIDIA GeForce2 GTS и ATI Radeon256.
В новых драйверах Detonator, серии 5. хх, NVIDIA раньше конкурентов реализовала возможность принудительного включения анти-алиасинга, в любых трехмерных играх, на всех видеокартах семейства GeForce. Это значит, что теперь от игры больше не требовалось, чтобы она сама включала анти-алиасинг: теперь это, при желании пользователя, делал драйвер.
Вскоре, после выхода GeForce2 GTS, ATI выпустила достойный ответ. Это был ускоритель Radeon256, составивший серьезную конкуренцию GeForce2. Естественно, не была обойдена вниманием ставшая тогда очень модной функция анти-алиасинга. ATI никак не усовершенствовала стандартную реализацию и, точно так же, ввела принудительное включение полноэкранного сглаживания в любых играх, поэтому нет смысла рассматривать ее отдельно (все, выше сказанное о суперсэмплинге, верно и для Radeon256).
radio.bobrodobro.ru
Современные технологии сглаживания изображений / Видеокарты
Автор: Евгений ПугачВычислительные устройства, разработку которых инженеры и ученые начали еще в позапрошлом столетии, были призваны облегчить работу. Они должны были ускорить расчеты, автоматизировать производство, упростить разработку. С появлением персонального компьютера они стали обеспечивать еще одну функцию, которая сейчас и является одной из основных. Функция эта - развлекательная. Мало кто может сегодня представить домашний компьютер без установленной на него хотя бы одной игры.
В наше время подавляющее большинство игр - трехмерные приложения. Это значит, что на плоском экране разработчики создают изображение, которое благодаря свойствам восприятия человеческого мозга кажется расположенным по трем осям координат - высоте, ширине и глубине. При этом они сталкиваются с несколькими сложностями, которые можно свести в две группы: влияющие на качество изображения или на производительность компьютера. Сегодня мы поговорим о явлении, относящемся к первой группе.
Любой человек, хоть раз запускавший 3D-приложение, знаком с таким явлением, как "лестничный эффект" - ступенчатость наклонных линий. В английском компьютерном жаргоне это явление называют "jaggies", а сухим языком науки - aliasing. Для того, чтобы устранить этот эффект и улучшить качество картинки, используется методика, получившая незамысловатое общее название antialiasing. На литературный русский язык это слово переводится как "сглаживание". Итак, прежде чем перейти к самому рассмотрению проблемы и методов ее решения, введем несколько понятий.
- Aliasing=jaggies="лестничный эффект" - эффект ступенчатости изображения на границе двух трехмерных объектов. В дальнейшем будем использовать "родной" термин aliasing.
- Antialiasing - совокупное название методов сглаживания изображения, устраняющих "лестничный эффект".
- Пиксель - точка изображения на экране.
- Тексель - точка трехмерного объекта с наложенной на нее текстурой.
- Текстура - изображение фиксированного формата, используемое для придания пикселю цвета и рисунка. Накладывается ядром видеокарты на "голый" трехмерный объект перед выводом на экран.
- Сэмпл - конкретно выбранный участок картинки, содержащий 1, 4, 16 и т.д. пикселей, используемый для обработки объекта и сглаживания.
Любое псевдотрехмерное изображение проще всего изобразить с помощью треугольников (полигонов). Это простая геометрическая фигура, что делает ее идеалом для экономии ресурсов графического процессора. Совместив большое количество полигонов, мы получаем трехмерный объект. Чем больше полигонов, тем меньше отрезки границ между ними, соответственно, меньше неровностей. Казалось бы, как можно сделать округлый предмет из треугольников? Представьте себе куб. Конечно, если его с большой силой не толкать, катиться он не будет. Теперь увеличьте количество углов вдвое. Теперь у нас нечто наподобие угловатого шара. Тоже вряд ли сам куда-то укатится, но и три дюжих мужика для того, чтоб откатить его куда-то, не понадобятся. Увеличив количество углов еще в пару раз, мы получим хоть и не шарообразный объект, но что-то очень близкое к нему.
Обладая достаточным терпением, даже непрофессионал может сделать из огромного числа полигонов изображение, которое будет выглядеть почти реальным. Однако обработка такой сцены станет непомерной задачей практически для любого видеоадаптера. Не случайно анимационные видео наших дней так красивы и реалистичны. Картинка, созданная из огромного числа полигонов, при финальном сведении ленты рендерится (просчитывается) на специальных графических фермах - компьютерных кластерах с очень большим количеством мощных видеоадаптеров.
Для наших же нужд такие методы не годятся. Поэтому разработчики трехмерных приложений (движков игр, тестовых приложений и т.п.) стремятся к тому, чтобы при наименьшем количестве полигонов и текстур получить наилучшее изображение. Явление aliasing объясняется довольно просто. Видеоядро может без искажений вывести на экран горизонтальные и вертикальные линии. А вот с наклонными дело обстоит намного хуже. Фактически, видеоадаптер создает лестницу, которая внешне напоминает наклонную прямую, но таковой не является. Чем выше разрешение, в котором просчитывается и выводится картинка, тем больше точек-пикселей приходится на один и тот же отрезок прямой, и в какой-то момент человеческий глаз перестает замечать "ступеньки". Однако для этого разрешение должно быть действительно большим, что не так уж удобно для повседневной работы, да и не каждая видеокарта сможет его обеспечить. Вот для борьбы с этим явлением и создан antialiasing.
Два основных способа, которыми сглаживается картинка, называются суперсэмплинг и мультисэмплинг.
Суперсэмплинг - это способ "грубой силы". Чтобы продемонстрировать, как он работает, возьмем какой-нибудь растровый графический редактор, например, Adobe Photoshop. Создадим в нем картинку в разрешении 800х600, состоящую из одной-единственной наклонной линии, расположенной под углом 45°. Зальем одну половину синим цветом. Сохраним и посмотрим результат. Как видим, ступеньки налицо. Теперь ту же линию создадим при разрешении 1024х768. Результат - ступенек больше, но они меньше, субъективно эта линия "более прямая", чем предыдущая. Повторяя этот эксперимент с все более высоким разрешением, мы В итоге, получим картинку, на которой невооруженным глазом (читай, без приближения) невозможно заметить неровности.
Вот так работает суперсэмплинг. Видеоадаптер просчитывает картинку в разрешении, кратном реальному, а затем сжимает ее, чтобы вместить в экран. Как результат, мы получаем сглаженную в любой точке экрана сцену.
Копнем чуть глубже. Если в разрешении 640х480 на экране находятся 307200 пикселей, то в 1280х960 - уже 1228800. Т.е. вместо одного пикселя адаптер каждый раз просчитывает 4, а значение цвета усредняет. При этом сглаживаются не только "ступеньки", улучшается и цвет всех текстур, переходы становятся более плавными.
Впрочем, идеалов в мире не бывает. За суперсэмплинг мы платим чудовищным падением производительности: минимум в 4 раза. Значит, нужно использовать более интеллектуальную методику, а не поигрывать "мышцами" видеопроцессора, которых не так уж и много. Этой методикой стал мультисэмплинг. Впервые эту технологию предложила небезызвестная компания 3DFx в 2000 году. Смысл мультисэмплинга состоит в том, что не нужно обрабатывать все до единого пиксели на экране, ведь подавляющее большинство из них находится внутри полигона, а не на границе между двумя. Конечно, отказ от сглаживания всей картинки ухудшает качество вывода текстур, но с этой проблемой призвана бороться билинейная, трилинейная и анизотропная фильтрация. Как говорится, каждый должен заниматься своей работой.
- во-первых, процессор сэмплирует только те участки картинки, где есть грани между полигонами;
- во-вторых, он использует не новую текстуру для каждого субпикселя, а одну и ту же.
Особенность реализации мультисэмплинга у каждого из производителей видеокарт состоит в том, как именно процессор разбивает пиксели на субпиксели. Пойдем по порядку.
Поскольку основными игроками на рынке видеоадаптеров являются NVidia и ATi, их методики мы и опишем.
Начнем с NVidia. Компания использует прямую решетку для выбора субпикселей. Это значит, что пиксель делится на субпиксели по линиям, расположенным вертикально и горизонтально.
Пиксели на картинке, расположенные рядами и столбцами в сетке
Один пиксель
Четыре пикселя, между которыми под углом 45 градусов проходит граница полигонов. Как видим, получаются ступеньки
Мультисэмлинг 2х
При мультисэмплинге 2х каждый пиксель делится на 2, при этом центром субпикселя становится вертикальный центр поделенной на 2 области (см. иллюстрацию)
Два субпикселя, образованные из одного пикселя при мультисэмплинге 2x
Красная линия - граница между двумя полигонами. Как видим, в данном случае без сглаживания получится ярко выраженная ступенька: верхний левый и нижний правый пиксели будут белыми, а два других - ярко-красными. При сглаживании оценивается цвет каждого субпикселя и усредняется для общего пикселя, В результате, мы получим более плавный переход между цветами. Левый нижний и верхний правый остаются красными, а вот два других становятся красноватыми, насыщенными вдвое меньше, чем первые.
Мультисэмплинг 4х
При мультисэмплинге 4х пиксель делится на 4 равные части.
Четыре субпикселя, образованных из одного пикселя при мультисэмплинге 4х
При уровне мультисэмплинга 8х мы получаем уже 4 образца для сравнения на каждый пиксель, и 16 субпикселей на массив из 4 пикселей. Просчет цвета идет с меньшим шагом, и мы получаем еще более сглаженную линию.
Недостатком подобной методики является то, что она хорошо работает только до тех пор, пока границы идут на примерно одинаковых расстояниях от центров соседних пикселей. А вот с почти горизонтальными или почти вертикальными линиями мультисэмплинг с прямой решеткой справляется просто ужасно, скажем прямо, не справляется. Проиллюстрируем:
Между четырьмя пикселями идет граница под углом, близким к вертикальному.
В режиме мультисэмплинга 2х мы получим почти не сглаженную линию, поскольку на каждый окрашенный субпиксель приходится один неокрашенный. Слабо окрашенные в данном случае станут почти белыми, т.е. фактически сглаживание не подействует. У нас будет лестница с длинными тонкими ступеньками.
Особых преимуществ при переходе на режим 4х мы тоже не получаем, только размер перехода между ступеньками становится чуть меньше.
Режим сглаживания 8х аналогичен режиму 4х, мы просто получаем на порядок больше субпикселей. Это немного улучшает картину, но приводит к значительному снижению производительности.
С появлением на рынке видеоадаптеров GeForce 3, а следом и GeForce 4, компания NVidia представила специфическую методику сглаживания. Она вошла в состав комплекса улучшения качества изображения Accuview. В этот комплекс входит и методика фильтрации текстур, но нас сейчас интересуют режимы сглаживания 4xs и Quincunx. Для GeForce 4 она доступна из настроек драйверов, а в GeForce 3 скрыта, но ее можно активировать, например, с помощью RivaTuner. Также подчеркнем, что под GeForce 4 тут понимаются модели GF Ti 4200/4400/4600, а не MX440, поскольку последняя - это доработанный GeForce 2 MX, а не принципиально новое ядро.
Смысл технологии Quincunx состоит в том, что при сглаживании учитываются не только собственные субпиксели конкретного сэмпла, но и "одолженные" у соседнего сэмпла. Они меньше влияют на конечный цвет пикселя, но все же позволяют еще немного сгладить переходы.
Один пиксель, мультисэмплинг 2х и режим Quincunx
Технология Accuview предусматривает смещение субпикселов на равное расстояние.
В итоге, это позволяет вместо двух точек, цвет одной из которых безошибочен (1), а второй содержит высокую погрешность (2), получить две точки с низкой погрешностью. В случае с углами около 45° такая методика никак не влияет на результат, а вот в случае более близких к линиям решетки углов немного улучшает результат. В итоге,, при просчете цвета точки 1 мы получаем результат, сформированный из двух "родных" субпикселей, "подправленный" тремя соседними.
Режим 4XS отличается еще большей изощренностью при просчете картинки. Для этого пиксель делится сначала на 2 части по средней горизонтальной оси , и вычисляется цвет этих половин. Параллельно по вертикали он делится еще на 2 части, которые также сравниваются. В результате, мы получаем все тот же мультисэмплинг по 4 точкам, но один и тот же сэмпл используется не 4 раза, а 2. В итоге, мы получаем более качественное сглаживание и, что приятно - никакого падения производительности. Для простоты можно считать, что 4XS - это "2x, а потом еще раз 2x". Сегодня также доступен режим 8XS, фактически - двойной 4x. Вот какую иллюстрацию дает NVidia для демонстрации 4XS:
Компания ATi пошла другим путем. Вместо того, чтобы бороться с некачественным сглаживанием путем наращивания количества сэмплов, она решила исказить решетку, по которой размещаются субпиксели. Исходно это решение использовала как раз 3dfx, назвав его Rotated Grid Super Sampling (RGSA).
Усиленно описывать его не станем. Достаточно сказать, что принципы, по которым проводится сравнение цветов сэмплов, одинаковы. Однако сэмплы берутся из других мест, благодаря повернутой решетке:
Выбор сэмплов при режиме 2х и 4х
Выбор повернутой решетки более предпочтителен, чем прямой, т.к. у нас на насыщенной картинке намного больше линий приближены к горизонтальным и вертикальным, а диагоналей меньше. Соответственно, мы получаем лучшее сглаживание линий, особенно при движении камеры.
Компания ATi применяет сглаживание в режиме 2х таким же способом, как и предложила 3dfx. А вот в режимах 4х и выше, канадцы пошли намного дальше, предложив псевдослучайный отбор местоположения сэмпла. Технология получила название SmoothVision.
Ядро для каждого пикселя может выбрать любую комбинацию из заложенных 8 положений субпикселей:
В результате, в режиме 4х мы можем получить такие комбинации:
Такой случайный отбор местоположения сэмпла позволяет намного лучше сгладить картинку, при этом сохраняя вполне приемлемый уровень производительности. Именно благодаря этому качество изображения чипов ATi в режимах с включенным сглаживанием стала притчей во языцех. Недостатком же является то, что при встрече с линией, расположенной под "неудобным" углом технология все так же пасует, являя нам на экране замечательную лесенку вместо, скажем, натянутого провода.
Режим 6х, доступный видеокартам ATi, аналогичен режиму 4х, однако оцениваются 6 сэмплов, расположенных, как и раньше, псевдослучайно, например:
На сегодняшний день видеокарты, представленные на рынке, имеют режимы:
- NVidia: 2x, 4x, 4XS, 6x, 8x, 8XS
- ATi: 2x, 4x, 6x
С представлением технологий параллельной обработки видеоданных NVidia SLI и ATi Crossfire мы увидели новые режимы сглаживания. Впрочем, при более пристальном рассмотрении оказывается, что ничего нового в них нет. В режимах, предусматривающих разделение экрана пополам и обработку каждой половины отдельной видеокартой, ядро все так же традиционным образом применяет сглаживание для своей половины картинки. При этом ядра используют разные расположения субпикселей. А вот потом, при выводе на экран, у нас получается, что у нас есть две половины картинки, пиксели на каждой из которых сглажены по n сэмплов (2, 4, 6, 8XS). Маркетологи компаний, недолго думая, взяли, да и назвали эти режимы по принципу 2n Antialiasing. Например, в Crossfire мы можем понаблюдать 4x, 8x и 12x AA.
Но с пришествием в мир технологий SLI и Crossfire к нам вернулся и старый знакомый - суперсэмплинг. Теперь у обоих производителей доступны режимы, в которых традиционный сегодня мультисэмплинг комбинирован с простым суперсэмплингом 2х, который позволяет улучшить качество текстур и сгладить изображения не только на гранях полигонов, но и внутри них (например, текстуру с надписью наподобие тех же вывесок в любых играх). Эти режимы объединены в понятие SLI AA и Crossfire Super AA.
Для простоты понимания приведем сводную таблицу режимов сглаживания в картах ATi с поддержкой Crossfire:
Вывод. Перспективы развития
Итак, мы рассмотрели две ипостаси сглаживания изображения в современных видеоадаптерах - суперсэмплинг и мультисэмплинг. На данный момент стандартом является использование мультисэмплинга, поскольку он позволяет сохранить достаточную производительность и занимается сугубо своим делом - сглаживает границы полигонов. Задача улучшения качества отображения текстур передано полностью в распоряжение фильтрации - билинейной, трилинейной и анизотропной. О ней пойдет речь в следующий раз.
На данный момент никаких радикальных изменений в технологиях сглаживания не происходит, и вряд ли произойдет. Поскольку главное улучшение - переход к искаженной решетке - уже сделано, производителям остается лишь увеличивать количество сэмплов. Именно поэтому уже сейчас у нас есть режимы 6x и 8x.
Новинкой стало возвращение к использованию простого суперсэмплинга в видеомассивах, впрочем, мы склонны думать, что это прежде всего связано с тем, что их использование высвобождает достаточно свободного машинного времени для видеопроцессоров, которое можно загрузить обработкой виртуальной картинки в удвоенном разрешении. Это, бесспорно, улучшит качество изображения на экране благодаря сглаживанию пикселей внутри полигонов, уберет шумы и такие явления, как "песок".
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
3dnews.ru
методы ресайза изображений / Хабр
Почему изображение, масштабированное с бикубической интерполяцией, выглядит не как в Фотошопе. Почему одна программа ресайзит быстро, а другая — нет, хотя результат одинаковый. Какой метод ресайза лучше для увеличения, а какой для уменьшения. Что делают фильтры и чем они отличаются.Вообще, это было вступлением к другой статье, но оно затянулось и вылилось в отдельный материал.
Этот человек сидит среди ромашек, чтобы привлечь ваше внимание к статье.
Для наглядного сравнения я буду использовать изображения одинакового разрешения 1920×1280 (одно, второе), которые буду приводить к размерам 330×220, 1067×667 и 4800×3200. Под иллюстрациями будет написано, сколько миллисекунд занял ресайз в то или иное разрешение. Цифры приведены лишь для понимания сложности алгоритма, поэтому конкретное железо или ПО, на котором они получены, не так важно.
Ближайший сосед (Nearest neighbor)
Это самый примитивный и быстрый метод. Для каждого пикселя конечного изображения выбирается один пиксель исходного, наиболее близкий к его положению с учетом масштабирования. Такой метод дает пикселизированное изображение при увеличении и сильно зернистое изображение при уменьшении.Вообще, качество и производительность любого метода уменьшения можно оценить по отношению количества пикселей, участвовавших в формировании конечного изображения, к числу пикселей в исходном изображении. Чем больше это отношение, тем скорее всего алгоритм качественнее и медленнее. Отношение, равное одному, означает что как минимум каждый пиксель исходного изображения сделал свой вклад в конечное. Но для продвинутых методов оно может быть и больше одного. Дак вот, если например мы уменьшаем изображение методом ближайшего соседа в 3 раза по каждой стороне, то это соотношение равно 1/9. Т.е. большая часть исходных пикселей никак не учитывается.
1920×1280 → 330×220 = 0,12 ms1920×1280 → 1067×667 = 1,86 ms1920×1280 → 4800×3200 = 22,5 ms
Теоретическая скорость работы зависит только от размеров конечного изображения. На практике при уменьшении свой вклад вносят промахи кеша процессора: чем меньше масштаб, тем меньше данных используется из каждой загруженной в кеш линейки.
Метод осознанно применяется для уменьшения крайне редко, т.к. дает очень плохое качество, хотя и может быть полезен при увеличении. Из-за скорости и простоты реализации он есть во всех библиотеках и приложениях, работающих с графикой.
Аффинные преобразования (Affine transformations)
Аффинные преобразования — общий метод для искажения изображений. Они позволяют за одну операцию повернуть, растянуть и отразить изображение. Поэтому во многих приложениях и библиотеках, реализующих метод аффинных преобразований, функция изменения изображений является просто оберткой, рассчитывающей коэффициенты для преобразования.Принцип действия заключается в том, что для каждой точки конечного изображения берется фиксированный набор точек исходного и интерполируется в соответствии с их взаимным положением и выбранным фильтром. Количество точек тоже зависит от фильтра. Для билинейной интерполяции берется 2x2 исходных пикселя, для бикубической 4x4. Такой метод дает гладкое изображение при увеличении, но при уменьшении результат очень похож на ближайшего соседа. Смотрите сами: теоретически, при бикубическом фильтре и уменьшении в 3 раза отношение обработанных пикселей к исходным равно 4² / 3² = 1,78. На практике результат значительно хуже т.к. в существующих реализациях окно фильтра и функция интерполяции не масштабируются в соответствии с масштабом изображения, и пиксели ближе к краю окна берутся с отрицательными коэффициентами (в соответствии с функцией), т.е. не вносят полезный вклад в конечное изображение. В результате изображение, уменьшенное с бикубическим фильтром, отличается от изображения, уменьшенного с билинейным, только тем, что оно еще более четкое. Ну а для билинейного фильтра и уменьшения в три раза отношение обработанных пикселей к исходным равно 2² / 3² = 0.44, что принципиально не отличается от ближайшего соседа. Фактически, аффинные преобразования нельзя использовать для уменьшения более чем в 2 раза. И даже при уменьшении до двух раз они дают заметные эффекты лесенки для линий.
Теоретически, должны быть реализации именно аффинных преобразований, масштабирующие окно фильтра и сам фильтр в соответствии с заданными искажениями, но в популярных библиотеках с открытым исходным кодом я таких не встречал.
1920×1280 → 330×220 = 6.13 ms1920×1280 → 1067×667 = 17.7 ms1920×1280 → 4800×3200 = 869 ms
Время работы заметно больше, чем у ближайшего соседа, и зависит от размера конечного изображения и размера окна выбранного фильтра. От промахов кеша уже практически не зависит, т.к. исходные пиксели используются как минимум по двое.
Мое скромное мнение, что использование этого способа для произвольного уменьшения изображений попросту является багом, потому что результат получается очень плохой и похож на ближайшего соседа, а ресурсов на этот метод нужно значительно больше. Тем не менее, этот метод нашел широкое применение в программах и библиотеках. Самое удивительное, что этот способ используется во всех браузерах для метода канвы drawImage() (наглядный пример), хотя для простого отображения картинок в элементе используются более аккуратные методы (кроме IE, в нем для обоих случаев используются аффинные преобразования). Помимо этого, такой метод используется в OpenCV, текущей версии питоновской библиотеки Pillow (об этом я надеюсь написать отдельно), в Paint.NET.
Кроме того, именно этот метод используется видеокартами для отрисовки трехмерных сцен. Но разница в том, что видеокарты для каждой текстуры заранее подготавливают набор уменьшенных версий (mip-уровней), и для окончательной отрисовки выбирается уровень с таким разрешением, чтобы уменьшение текстуры было не более двух раз. Кроме этого, для устранения резкого скачка при смене mip-уровня (когда текстурированный объект приближается или отдаляется), используется линейная интерполяция между соседними mip-уровнями (это уже трилинейная фильтрация). Таким образом для отрисовки каждого пикселя трехмерного объекта нужно интерполировать между 2³ пикселями. Это дает приемлемый для быстро движущейся картинки результат за время, линейное относительно конечного разрешения.
Суперсемплинг (Supersampling)
С помощью этого метода создаются те самые mip-уровни, с помощью него (если сильно упростить) работает полноэкранное сглаживание в играх. Его суть в разбиении исходного изображения по сетке пикселей конечного и складывании всех исходных пикселей, приходящихся на каждый пиксель конечного в соответствии с площадью, попавшей под конечный пиксель. При использовании этого метода для увеличения, на каждый пиксель конечного изображения приходится ровно один пиксель исходного. Поэтому результат для увеличения равен ближайшему соседу.Можно выделить два подвида этого метода: с округлением границ пикселей до ближайшего целого числа пикселей и без. В первом случае алгоритм становится малопригодным для масштабирования меньше чем в 3 раза, потому что на какой-нибудь один конечный пиксель может приходиться один исходный, а на соседний — четыре (2x2), что приводит к диспропорции на локальном уровне. В то же время алгоритм с округлением очевидно можно использовать в случаях, когда размер исходного изображения кратен размеру конечного, или масштаб уменьшения достаточно мал (версии разрешением 330×220 почти не отличаются). Отношение обработанных пикселей к исходным при округлении границ всегда равно единице.
1920×1280 → 330×220 = 7 ms1920×1280 → 1067×667 = 15 ms1920×1280 → 4800×3200 = 22,5 ms
Подвид без округления дает отличное качество при уменьшении на любом масштабе, а при увеличении дает странный эффект, когда большая часть исходного пикселя на конечном изображении выглядит однородной, но на краях видно переход. Отношение обработанных пикселей к исходным без округления границ может быть от единицы до четырех, потому что каждый исходный пиксель вносит вклад либо в один конечный, либо в два соседних, либо в четыре соседних пикселя.
1920×1280 → 330×220 = 19 ms1920×1280 → 1067×667 = 45 ms1920×1280 → 4800×3200 = 112 ms
Производительность этого метода для уменьшения ниже, чем у аффинных преобразований, потому что в расчете конечного изображения участвуют все пиксели исходного. Версия с округлением до ближайших границ обычно быстрее в несколько раз. Также возможно создать отдельные версии для масштабирования в фиксированное количество раз (например, уменьшение в 2 раза), которые будут еще быстрее.
Данный метод используется в функции gdImageCopyResampled() библиотеки GD, входящей в состав PHP, есть в OpenCV (флаг INTER_AREA), Intel IPP, AMD Framewave. Примерно по такому же принципу работает libjpeg, когда открывает изображения в уменьшенном в несколько раз виде. Последнее позволяет многим приложениям открывать изображения JPEG заранее уменьшенными в несколько раз без особых накладных расходов (на практике libjpeg открывает уменьшенные изображения даже немного быстрее полноразмерных), а затем применять другие методы для ресайза до точных размеров. Например, если нужно отресайзить JPEG разрешением 1920×1280 в разрешение 330×220, можно открыть оригинальное изображение в разрешении 480×320, а затем уменьшить его до нужных 330×220.
Свертки (Convolution)
Этот метод похож на аффинные преобразования тем, что используются фильтры, но имеет не фиксированное окно, а окно, пропорциональное масштабу. Например, если размер окна фильтра равен 6, а размер изображения уменьшается в 2,5 раза, то в формировании каждого пикселя конечного изображения принимает участие (2,5 * 6)² = 225 пикселей, что гораздо больше, чем в случае суперсемплинга (от 9 до 16). К счастью, свертки можно считать в 2 прохода, сначала в одну сторону, потом в другую, поэтому алгоритмическая сложность расчета каждого пикселя равна не 225, а всего (2,5 * 6) * 2 = 30. Вклад каждого исходного пикселя в конечный как раз определяется фильтром. Отношение обработанных пикселей к исходным целиком определяется размером окна фильтра и равно его квадрату. Т.е. для билинейного фильтра это отношение будет 4, для бикубического 16, для Ланцоша 36. Алгоритм прекрасно работает как для уменьшения, так и для увеличения.1920×1280 → 330×220 = 76 ms1920×1280 → 1067×667 = 160 ms1920×1280 → 4800×3200 = 1540 ms
Скорость работы этого метода зависит от всех параметров: размеров исходного изображения, размера конечного изображения, размера окна фильтра.
Именно этот метод реализован в ImageMagick, GIMP, в текущей версии Pillow с флагом ANTIALIAS.
Одно из преимуществ этого метода в том, что фильтры могут задаваться отдельной функцией, никак не привязанной к реализации метода. При этом функция самого фильтра может быть достаточно сложной без особой потери производительности, потому что коэффициенты для всех пикселей в одном столбце и для всех пикселей в одной строке считаются только один раз. Т.е. сама функция фильтра вызывается только (m + n) * w раз, где m и n — размеры конечного изображения, а w — размер окна фильтра. И наклепать этих функций можно множество, было бы математическое обоснование. В ImageMagick, например, их 15. Вот как выглядят самые популярные:
Билинейный фильтр (bilinear или triangle в ImageMagick) Бикубический фильтр (bicubic, catrom в ImageMagick) Фильтр Ланцоша (Lanczos)
Примечательно, что некоторые фильтры имеют зоны отрицательных коэффициентов (как например бикубический фильтр или фильтр Ланцоша). Это нужно для придания переходам на конечном изображении резкости, которая была на исходном.
habr.com
Современные технологии улучшения качества 3D-изображений
Статья посвящена техникам улучшения визуального восприятия трехмерных изображений, таким как суперсэмплинг, мультисэмплинг, разнообразным фильтрациям, а также описывает популярную технологию бамп-мэппинг.
В последнее время 3D игры стали выглядеть значительно лучше - более качественные изображения, более гладкие объекты, более красивые текстуры. И достигается это не в последнюю очередь за счет улучшения качества изображений, генерируемых играми, а не только за счет увеличения числа треугольников или повышения детализации текстур. Данная статья посвящена наиболее популярным алгоритмам из этой области.
Устранение ступенчатости (Antialiasing)
Одна из наиболее впечатляющих аппаратных технологий, все чаще находящая применение в игровых приложениях, - это устранение ступенчатости, или антиалиасинг (antialiasing).
Эта технология предназначена для устранения одной из ключевых проблем качества синтезированных изображений - лестничного эффекта (также часто называют алиасингом, aliasing). Часто этот эффект можно заметить на границах объектов или на линиях, близких к вертикальным или горизонтальным, но не строго вертикальных или, соответственно, горизонтальных. Несомненно, читатель много раз встречался с подобными эффектами, например, в трехмерных играх.
Рисунок 1. Левое изображение получено в стандартном режиме, правое - со включенным устранением ступенчатости. Обратите внимание на передачу мелких деталей и границы объектов (перила на мосту, фонари и т.д.) |
Что является причиной лестничного эффекта? Опуская подробности, можно сказать, что главная причина - "сетка" пикселей на компьютерном мониторе. Эта сетка имеет конечное и весьма небольшое разрешение, а пиксели располагаются в строго фиксированных местах.
Ступенчатость возникает, когда точки на линиях пересекают строки или столбцы пикселей под небольшим углом. Часть линии шириной в один пиксель может попасть на один пиксель экрана, а часть - на другой. Таким образом, получается неопределенность: можно рисовать эту часть как один пиксель на одном ряду, один пиксель на другом ряду или закрашивать оба пикселя. К сожалению, все три способа вносят хорошо заметные дефекты в изображение. Если закрашивать только один пиксель, линия может получиться тоньше чем нужно, и будет хорошо заметен разрыв в том месте, где линия переходит с одного ряда пикселей на другой. Если закрашивать оба - ширина линии в этом месте будет два пикселя. Аналогичные артефакты возникают не только при рисовании линий, а практически на всех границах, встречающихся в изображении.
Рисунок 2. |
Как же бороться с этим неприятным эффектом? Можно заметить, что размер одной "ступеньки" никогда не бывает больше, чем один пиксель. Поэтому наиболее естественный и простой путь - это увеличение экранного разрешения. То есть, увеличение разрешения уменьшает размер пикселя и, следовательно, заметность артефактов. Однако увеличить разрешение можно не всегда. Например, оно может быть ограничено максимальным разрешением монитора или его может ограничивать приложение.
Другой путь - увеличение так называемого эффективного разрешения, т.е. использование специального алгоритма для получения цвета пикселя таким образом, чтобы эмулировать несколько пикселей. Такие методы и называются методами устранения ступенчатости.
Эти методы вычисляют значение цвета как бы внутри экранного пикселя в нескольких точках. Эти точки называются сэмплами (sample). Сэмплы представляют собой те самые дополнительные пиксели изображения, которые увеличивают эффективное разрешение. Значение сэмплов используются для вычисления конечного цвета пикселя.
Суперсэмплинг
Суперсэмплинг - это технология устранения ступенчатости, которая используется практически во всех современных аппаратных ускорителях. Графический процессор, который использует суперсэмплинг, визуализирует экранное изображение с разрешением, значительно большим чем текущее разрешение дисплея. Существует достаточно много методов выполнения этой операции, при этом их всех можно охарактеризуются числом используемых дополнительных пикселей. После рисования изображения с высоким разрешением, процессор уменьшает размер картинки до разрешения дисплея, причем эта операция производится с соответствующей фильтрацией.
Степень изменения размера изображения определяется отношением числа пикселей в исходном изображении (высокого разрешения) к числу пикселей в выходном изображении. Например, 2x суперсэмплинг пишет в буфер кадра в два раза больше пикселей, 4x - в четыре и т.д. Чем больше это число, тем более качественное устранение ступенчатости можно получить.
Как нетрудно догадаться, использование суперсэмплинга вызывает значительное ухудшение скорости визуализации. Если графический процессор рисует в четыре раза больше пикселей, скорость будет в четыре раза меньше по сравнение со стандартным режимом. И даже хуже, потому что необходимо дополнительно фильтровать изображение высокого разрешения. Вот почему после включения устранения ступенчатости в драйверах видеокарт уровня Nvidia GeForce 2, скорость рисования сильно падает.
Мультисэмплинг
Современные графические процессоры используют более сложную схему для устранения эффекта ступенчатости, так называемый мультисэмплинг. Хотя схема и более сложная, работает она значительно быстрее.
Суперсэмплинг работает таким образом, что на этапе создания изображения графический процессор не делает различий между стандартным режимом и режим устранения ступенчатости. Как говорилось выше, это работает медленно.
Основная идея мультисэмплинга - сделать генерацию и обработку дополнительных сэмплов интеллектуальной, и встроить ее в основной графический конвейер. Это, конечно, усложняет сам графический процессор, но в то же время позволяет значительно ускорить процесс устранения ступенчатости. Например, значение текстуры ищется только один раз для "главного" пикселя, делается ряд других оптимизаций.
Другими словами, вместо генерации изображения высокого разрешения, графический процессор для каждого пикселя создает несколько сэмплов, лежащих внутри него. Конечный цвет этого пикселя определяется из цветов сэмплов, обычно некоторым вариантом усреднения.
Алгоритмы мультисэмплинга различаются количеством сэмплов и их расположением (или, как говорят, шаблоном сэмплирования, sampling pattern), а также некоторыми приемами оптимизации.
Различные производители в своих аппаратных реализациях используют различные шаблоны сэмплирования. Примеры даны на рисунке:
NVidia 2x | NVidia Quincunx TM |
NVidia 4x | ATI SmoothvisionTM |
Рисунок 3. |
NVidia 2x
В этом режиме изображение последовательно рисуется сразу в два буфера. Между двумя проходами происходит сдвиг изображения на половину пикселя. Затем два изображения усредняются. Таким образом, это чистая 2x схема мультисэмплинга, которая работает быстро, но качество получается не очень хорошее.
NVidia 4x
Этот режим работает аналогично 2x, за исключением того, что используются соответственно 4 буфера.
NVidia QuincunxTM
В режиме QuincunxT (читается - "квинканкс") каждый сэмпл из каждого прохода дополнительно фильтруется с четырьмя соседними из второго изображения. NVidia заявляет, что такая схема дает качество, практически равное 4x. Однако отметим, что улучшение происходит не столько за счет увеличения количества сэмплов (используется два сэмпла, аналогично 2x-шаблону), а размывания изображения за счет смешивания с соседними пикселями. Тем не менее, на практике это дает хороший результат. Существует также NVidia AccuviewT - модифицированная технология, в которой положения сэмплов слегка сдвигаются внутрь основного пикселя для улучшения качества.
ATI SmoothVisionTM
Эта технология реализована в графических процессорах ATI. В ней используются группы из 16 сэмплов, которые распределяются между различным количеством точек, в зависимости от желаемого качества устранения ступенчатости. В 2x-режиме сэмплы покрывают 8 точек, в 4x режиме - 4 точки и так далее. Каждый пиксель имеет 8 фиксированных псевдослучайных положений, в которые могут попасть сэмплы. Известно, что человеческий глаз хорошо замечает регулярные структуры, что в данном случае является нежелательным. Использование нерегулярного шаблона позволяет создавать более приятные глазу картинки.
a) без мультисэмплинга | b) мультисэмплинг 2x |
c) мультисэмплинг 4x | d) мультисэмплинг 6x |
Рисунок 4. Результат применения мультисэмплинга для устранения ступенчатости. |
Вместо итога заметим, что использование режимов устранения ступенчатости возможно даже без ведома приложения, обычно его можно включить через драйвера видеокарты.
Эффект размывания при движении (Blur)
Размывание при движении (motion blur) - еще одна из множества технологий, которые используются для того, чтобы сделать картинки в 3D играх более реалистичными. Если камерой снимается реальный мир, можно заметить, что быстро движущиеся объекты как бы расплываются, размазываются на изображении. Этот эффект и называется размыванием при движении (иногда мы будем называть его размыванием движения). Его использование может заставить любую игру выглядеть "как в реальном мире".
На самом деле, размывание при движении пришло к нам не из реального мира (у людей объекты в принципе не должны размываться перед глазами), а из кинематографа. Этот эффект есть практически в любом фильме, но вы скорее всего его не замечаете. Как и многие другие артефакты фотографии, он воспринимается как дополнительный эффект, придающий ощущения реализма. В то время как фотографы стараюсь избавиться от артефактов, программисты игр старательно воссоздают их в своих играх. Мы все так привыкли видеть размывание при движении в телевизионных программах и фильмах, что анимация без него выглядит нереалистично.
Во время работы камеры затвор открывает чувствительная пленку на короткое время, в течение которого на нее падает свет. Это вызывает химические реакции, пленка темнеет и в конце концов на ней образуется изображение сцены. Этот процесс известен как экспозиция. Если во время экспозиции сцена меняется, на пленке образуется размытое изображение.
Рисунок 5. Чем дольше длится экспозиция, тем темнее объект. |
Природа компьютерной анимации такова, что объекты не движутся плавно, глаз может замечать скачки при движении объекта. Предположим, что игра работает со скорость 60 FPS, т.е. каждый новый кадр рисуется через 1/60 секунды. Однако время непрерывно и не обновляется только 60 раз в секунду. Также и монитор, и человеческий глаз не могут "обрабатывать" изображения непрерывно, им нужен некоторый интервал времени для обновления изображения. Эффект анимации "скачками", который неизбежен даже при самой быстрой аппаратуре, называется временной ступенчатостью (по аналогии с эффектом ступенчатости изображения, который мы уже рассматривали).
Основная идея технология устранения этого эффекта подобна той, которая использовалась для устранения ступенчатости изображения - суперсэмплинг. Только в данном случае это так называемый временной суперсэмплинг. Для того, чтобы представить непрерывное время в одном кадре, необходимо дополнительно нарисовать несколько кадров-сэмплов, затем усреднить их и таким образом получить нужный эффект. Это усреднение, кстати, и вызовет эффект размывания, причем чем быстрее движется объект, тем сильнее он сдвинется на кадрах-сэмплах и поэтому его размывание будет сильнее.
Например, для размывания движения с использованием 4-х сэмплов необходимо рисовать со скоростью 240 FPS, чтобы получить вывод со скоростью 60 FPS. Чем больше сэмплов используется, тем более качественное изображение получится.
Однако такой метод работает медленно. Для современной игры даже на самой лучшей аппаратуре 60 FPS - предел мечтаний, а про 240 можно и не говорить. Таким образом необходимы быть может менее качественные, но более быстрые решения.
В некоторых компьютерных играх для эмуляции размывания при движении используются "следы" от объектов. Изображение текущего кадра смешивается с изображением предыдущего, т.е. получается что несколько последних кадров все время видны на экране. Это вызывает эффект "расплывания" объектов по экрану. Это, конечно, не настоящие устранение временной ступенчатости, но все же оно дает некоторый эффект.
Появление пиксельных шейдеров в современной аппаратуре позволило разработать новые алгоритмы для размывания движущихся объектов. Эти алгоритмы основываются на вычислении "скорости" движения каждого пикселя из кадра анимации и пост-обработки кадра таким образом, чтобы эмулировать эффект усреднения промежуточных кадров. На первом этапе сцена просто рисуется в буфер кадра и сохраняется в текстуре. Затем для каждой вершины находится разница между ее текущим положением и положением на предыдущем кадре - это и будет вектор скорости движения данной точки. Чем он длиннее, тем быстрее движется точка. Далее для каждого пикселя сцены выбираются несколько соседних точек текстуры (в которой, напомним, хранится изображение текущего кадра) и их значения усредняются и записываются как цвет текущей точки. Соседние точки выбираются по информации о скорости основного пикселя.
Такие технологии работают достаточно быстро и качественно, хотя и требуют самую современную аппаратуру.
www.uraldev.ru
Render. Свойства Визуализатора. Вкладка Global Illumination
При визуализации проекта, множество вопросов вызывает освещение. Закладка Global illumination позволяет пользователям корректировать настройки общего освещения. Ни один качественный рендер невозможно сделать без учета этих настроек.
Вкладка Global Illumination.
Ambient Light
Ambient Intensity: Ambient Intensity контролирует всю освещенность, которая добавляется к проекту. Все поверхности находящиеся в пределах проекта будут получать заданное количество Ambient light (рассеянного света). Это наиболее приемлемое решение при изображении дополнительного источника света. Многие профессиональные 3D художники рекомендуют выставлять значение в данной настройке как можно меньше или полностью отключить. Взамен этого, для обеспечения приемлемого освещения всей картины, добавить больше комплексного освещения или использовать действительные источники света Global Illumination. В любом случае, при малых значениях Ambient light оптимизация любой картины может быть довольно эффективна, и при соответствующей установке будет довольно естественной, при этом сокращается время самой визуализации. Особенно это полезно при совместном использовании дополнительного освещения (additional lights) и/или диффузном перепаде освещения (radiosity bounces).Ambient intensity является величиной яркости освещения и выполняет функцию множителя внешней окраски. Вы можете изменить данное значение для наглядного отображения в Preferences единиц яркости (кандела на квадратный метр). Начните работу со значения стоящего по умолчанию в.05 W/srm. Затем увеличивайте или уменьшайте данное значение для достижения желаемого уровня освещенности.
Ambient Color: Функция 'Ambient Color' позволяет установить цветовое значение для общего освещения, которое задается настройкой 'Ambient Intensity'. При использовании 'Ambient Intensity' крайне необходимо выбрать хорошее значение для Ambient Color и Intensity. Если представить, что данная настройка имитирует эффект накопления всех лучей рассеянного света в проекте, то это значительно облегчает выбор значения для цвета и интенсивности. При визуализации изображения для облегчения выбора цвета можно уменьшить значение Ambient Intensity до нуля. Присмотритесь к каждой части изображения и представьте, каким должно быть среднее значение тона или цвета. Это же значение должно быть выбрано и в Ambient Color.
Indirect Illumination
При визуализации любой картины modo позволяет вам использовать как прямые, так и косвенные источники света. При прямом освещении моделей используется 3D освещение для непосредственного освещения поверхностей. В то время как косвенное освещение обеспечивает общее освещение или мягкое полутоновое освещение визуализируемой модели, которая для получения тени использует окружающую среду и существующую геометрию. Не смотря на то, что эти два способа освещения рассчитываются по отдельности, в итоге, по умолчанию, для получения окончательного эффекта тени их результаты складываются вместе. У каждой модели есть свои преимущества. При совместном использовании было бы не плохо, оптимизировать скорость и качество обработки визуализированных изображений.
Прямое освещение (Direct Light) имеет определенные преимущества при определении точного расположения источника света. Поэтому при обработке пикселя, движок может просто моделировать изображение под прямыми лучами света и добавлять необходимые эффекты для создания тени. Такое непосредственное освещение очень быстро дает результаты по моделированию освещенности. Недостатком такого освещения является то, что данная модель не учитывает вторичное освещение, например прерывистый свет или свет от других светящихся поверхностей. Если планируется создать некоторое количество теней с плавными границами, то необходимо чтобы количество образцов, приходящееся на один источник света, было больше одного. Чем округлее требуется сделать грань, тем больше должно быть количество образцов.Чтобы полностью понять принцип настроек косвенного освещения, необходимо сначала разобраться с техническим процессом косвенного освещения. Так как представления об источнике света исходящего от 3D источника или светящейся поверхности, а затем блуждающего в пространстве, находятся на подсознательном уровне, стоит прояснить, что в действительности процесс является не таким уж и простым. В процессе обработки поверхности, лучи испускаются с поверхности в произвольном направлении и обрабатываются только тогда, когда они достигают других поверхностей в сцене. Сумма данных вычислений и является тем фактором, который влияет на цвет и яркость исходной поверхности.
Для более точного понимания того, как косвенное освещение обрабатывается у точки на поверхности, представьте себе верхнюю половину прозрачной части Земли находящейся над поверхностью, таким образом, что нормаль поверхности точки проходит через Северный полюс. Лучи испускаются с поверхности заданной точки (объекта) и проходят через произвольные точки каждой ячейки, сформированные линиями широты и долготы, с условием того, что через одну ячейку проходит один луч. Эти лучи испускаются и взаимодействуют с другими поверхностями или окружающей средой, и поэтому тон, который они создают, и будет называться расчетной величиной косвенной освещенности («освещенность» является техническим определением поступающего света).
Теперь представьте, что нам необходимо затенить плоскую поверхность, с полностью темным окружающим фоном, за исключением одного светлого участка. Каждая затеняющая точка на поверхности будет испускать лучи, так как описано выше. При удачном стечении обстоятельств, в светлую область, в лучшем случае, попадет два луча, а остальные испускаемые лучи рассеются в темной области. С некоторыми точками, которые получают двойное освещение, в отличие от других, возможно, предсказать характер поверхности, будет ли он пятнист, при условии активации функции Irradiance Caching (или будет ли он шероховат, при выключении данной функции). В любом случае, при удачном разделении прозрачных полусфер (т. е. использовать как можно больше лучей), мы получим более менее однородное соотношение попаданий и промахов между соседними точками поверхности, сглаживающих затенение.
Не смотря на то, что в modo команда Indirect Illumination основывается на этом примере с полусферами, существует два различных подхода в использовании данных примеров. Метод, по умолчанию, использует методику Irradiance Caching. Концепция данной методики заключается в использовании меньшего количества более аккуратных и точных образцов, а так же их смешивания, при котором возможно достичь приемлемого качества изображения за меньшее время, чем при использовании пикселей худшего качества, которые часто являются причиной возникновения шероховатостей и искажений на изображении. При отключенном режиме Irradiance Caching, modo приступит к генерированию полусферических затемняющих образцов для каждого пикселя изображения. И как результат данной операции вам необходимо будет очень точно подобрать количество испускаемых лучей, так как указанное вами количество будет умножено на миллионы пикселей, из которых состоит ваше изображение. И это действительно очень большое число. При включенном режиме Irradiance Caching, modo разумно снимет образцы с данной картины в стратегически важных местах, а затем для более гладкой окончательной картины интерполирует их.
Для более простого понимания отличий функций Monte Carlo и Irradiance Caching (IC) стоит отметить, что в методе Monte Carlo для каждого отдельного расположения пикселя, используются образцы более низшего качества, в то время как IC использует меньше образцов, но гораздо высшего качества (больше лучей) и смешивает их вместе. И как результат метода Monte Carlo, когда образцы не достаточно аккуратны, то между соседними пикселями возникнут существенные разногласия, что приведет к образованию зернистости изображения. При использовании IC, конфликтные участки распределяются по всем образцам, что в конечном итоге приводит к эффекту их смазывания. Единственным способом исправить данный дефект метода Monte Carlo является просто увеличить количество лучей приходящих на один пиксель. Это в свою очередь может значительно увеличить время визуализации. IC предоставляет несколько эффективных решений для уменьшения искажений изображения. К этим решениям относятся: увеличение числа испускаемых лучей, активация опции Supersampling и увеличение числа образцов для проведения процесса смешивания (Interpolation Values).
Теперь, когда вы понимаете общую концепцию данных команд и они для вас стали более понятными, можно более эффективно корректировать свою работу пользуясь настройкой Indirect Illumination, по таким параметрам как производительность/качество.
Indirect Illumination Enable Toggle: Активируя данную настройку, вы активируете способность modo работать с Global Illumination.
Indirect Rays: Данное значение отображает количество образцов взятых для каждого пикселя, при использовании метода Monte Carlo в Indirect Illumination, Irradience Caching отключено. Увеличение данного значения приведет к улучшению качества, но в то же время увеличит время визуализации.
Indirect Bounces: Установленное значение по умолчанию в 1 единицу, означает то, что применяется эффект одного отскока, для расчета влияния окружающей среды поверхности. Это, конечно, менее точный способ, чем эффект multi-bounce, так как в реальности, фотон отскакивает отовсюду при освещении окружающего пространства. В любом случае, за счет снижения количества Indirect Bounces, снижается качество, но мы добиваемся значительного увеличения производительности. При увеличении числа Indirect Bounces, с первоначальной поверхности испускается косвенный луч, который отскакивает от первой поверхности, с которой он сталкивается, а затем продолжат свое движение в пространстве до столкновения с другой поверхностью. Так продолжается до тех пор, пока количество отскоков не будет равно количеству, указанному в настройке Indirect Bounces. Не стоит забывать о том, что при увеличении количества отскоков, увеличивается количество расчетов, так же как и время визуализации. Рекомендуется подогнать ваше изображение при помощи одного отскока, а затем, по желанию, увеличивать число отскоков, и посмотреть, на сколько сильным окажется влияние на качество окончательного изображения. Если сцена освещается одним небольшим источником света, то увеличение количества отскоков сильно скажется на общей яркости и виде изображения.
Для уменьшения количества необходимых отскоков, можно увеличить параметр Ambient Intensity во вкладке Global Illumination. Количество отскоков приводит к простому увеличению общей освещенности сцены, следовательно, увеличивается продолжительность визуализации. Что бы сократить время и не потерять качество изображения, необходимо установить Ambient Intensity равное количеству конечных отскоков, а число отскоков сократить.
Indirect Range: Данное значение определяет то, насколько далеко может пройти луч, при отражении от поверхности до полного его исчезновения. Данное значение можно эффективно применять при оптимизации процесса визуализации. Понижая значение Indirect Range, мы улучшаем скорость визуализации. Но стоит помнить, что слишком малое значение в данной настройке, может привести к неестественному эффекту освещения. Так как многие лучи, которые, в конечном счете, пересекутся с геометрической поверхностью для образования тени, могут оборваться и не осветить поверхность фоновым цветом геометрии, от которой они отскочили. Установив нулевое значение, вы отключаете Indirect Range.
Subsurface Scattering: когда в геометрии используется эффект Subsurface Scattering (SSS), данная опция позволяет выбрать варианты воздействия света на поверхность геометрии.Существуют следующие варианты:
Direct Only: при выборе режима Direct Only, modo не будет использовать никакого косвенного (отраженного) света, а будет рассчитывать только SSS основанное на прямом освещении, то есть Directional Lights, Spotlights, Point Lights и другие. Данный режим очень полезен во многих случаях, так как воздействие Global Illumination на SSS является довольно не значительным.
Indirect Affects SSS: при выборе Indirect Affects SSS, modo будет использовать Global Illumination, а так же Direct Light (прямое освещение), для расчета эффекта SSS на поверхности геометрии.
SSS Affects Indirect: При выборе SSS Affects Indirect, modo будет рассчитывать отраженное косвенное освещение, учитывая настройки эффекта SSS.
Both: Настройка Both позволит функции Global Illumination влиять на расчеты SSS. Данная настройка является наиболее продуктивной в процессе визуализации.
Volumetrics Affect Indirect: При активации данной функции, modo будет учитывать эффект объемного свечения при выполнении расчетов Global Illumination.
Irradiance Caching
Enable: Включить Irradiance Caching. При визуализации косвенного освещения в modo, функция Irradiance Caching является методом применяющимся по умолчанию. Отключив данную функцию, modo начнет использовать более интенсивный метод Monte Carlo для расчета Global Illumination.
Irradiance Rays: Технически, Irradiance Rays очень схожи с Indirect Rays, в том, что это лучи испускаемые с поверхности для обеспечения косвенного освещения. Для большей удобности, modo имеет настройки как для Irradiance, так и для Indirect Rays, так как для этих двух форм Indirect Illumination требуется различное количество образцов. Irradiance Caching работает с образцами высшего качества, которые расположены в малом количестве по всему изображению, в то время как Indirect Illumination без Irradiance Caching для каждого пикселя использует образцы низшего качества. Наличие двух значений позволяет вам легко переключаться между Irradiance Caching и традиционным Indirect Illumination, без необходимости постоянно регулировать количество лучей для каждого образца.
Supersampling: После того, как все лучи были запущены для индивидуальной оценки освещенности, данная функция контролирует окончательный цвет луча в каждой ячейке полусферы, а затем инициирует прохождение дополнительных лучей сквозь те ячейки, которые сильно отличаются от соседних, получая тем самым более подробное изображение высококонтрастных зон окружающего фона и более точные расчеты. В среднем, дополнительно инициируется до 25% лучей, так например, если в настройке стоит число 100, то в действительности вы получаете 125 лучей. Для более качественной визуализации, рекомендуется изначально выставить в настройках число 125 и не включать опцию supersampling. Хотя для скорости визуализации, руководитель исследовательских работ Алан Хастингс/Allen Hastings, все же рекомендует держать эту опцию всегда включенной.
Irradiance Rate: Irradiance Caching плавно сопрягает соседние значения IC, но для того чтобы происходил данный процесс необходимо создать некоторое пространство между образцами. Irradiance Rate предполагает, что пространство, устанавливающее минимальное расстояние между образцами IC, рассчитывается в пикселях. Поэтому установленное значение 2.5, означает, что минимальное расстояние между двумя образцами будет в 2.5 пикселя. Увеличивая данное значение, вы увеличиваете IC расстояние для функции сопряжения. Это приведет к более гладкому результату. В любом случае, сильное увеличение данного значения приведет к потере четкости, на участках где требуется изобразить детали.
Irradiance Ratio: Если Irradiance Rate задает минимальное расстояние между IC значениями, то Irradiance Ratio задает максимальное расстояние. Данное отношение является множителем, так например, число в установке 6 умножается на 2.5, в итоге получаем значение 15, означающее, что IC значения будут находится на расстоянии не менее 2.5 пикселей и не дальше чем 15 пикселей. В конечном итоге, данное отношение уменьшает количество необходимых образцов находящихся вокруг сглаживаемых поверхностей, где изменения в эффекте затенения минимальны.
Interpolation Values: Настройка 'Interpolation Values' задает минимальное количество близлежащих значений для интерполяции. К примеру, установим значение 3. Если мы затеняем точку, и в состоянии найти только два близлежащих рассчитанных значения, то будет инициирован расчет нового значения в данной точке и окончательное освещение точки будет комбинацией всех трех значений. Таким образом, данная функция как бы сглаживает тень. Увеличение данного значения приведет к улучшению качества и соответственно увеличению времени визуализации.
Irradiance Gradients: Рассчитываемые для каждого IC значения, 'Irradiance Gradients' оценивают то, насколько сильно изменилась освещенность при изменении нормали поверхности (the rotational gradient) или положения поверхности (the translational gradient). Irradiance Gradients используются для улучшения интерполяции косвенного освещения среди Irradiance Values. В общем, пользователям можно оставить 'Both' в данной настройке. Тем не менее, существуют такие ситуации, в которых Translational Gradient может быть причиной искажений, например, когда диффузно отражающая поверхность находится в непосредственной близости с прозрачной поверхностью (крышка стола и лежащий на ней лист стекла). В таких случаях может появится эффект пятен, это легко исправить если в выпадающем окне установить функцию Rotation Only.
В modo601 функция Irradiance Gradients отсутствует.
Walkthrough Mode: Активируя 'Walkthrough', modo выполнит расчеты по Global Illumination только для первого визуализируемого кадра и в дальнейшем, будет использовать результаты данного расчета для последующих кадров. Не смотря на то, что это сильно экономит время, это так же делает невозможным какое-либо передвижение объекта в пределах картины, единственное возможное движение — движение камеры. Данная опция чрезвычайно полезна при архитектурной визуализации, когда зрителю представляется экскурсия по смоделированному месту, отсюда и название данной функции — Walkthrough. Помимо большой экономии времени, эта функция устраняет мерцание, часто присущее при анимации.
Load Irradiance Before Render: Использование 'Load Irradiance' дает возможность загрузить ранее рассчитанные результаты по освещенности из кэш памяти, куда они были сохранены при помощи функции 'Save Irradiance After Render'. Для использования, активируйте 'Load Irradiance' и при помощи кнопки browse укажите местоположение заранее созданного файла решения в.lxi формате. При включении опции, следующим действием будет загрузка указанного файла решений, это избавит от расчета освещенности каждый раз как создается картина. Очень полезно при создании серии снимков, где меняется только положение камеры.
Save Irradiance After Render: Использование функции 'Save Irradiance' позволяет сохранять результаты расчетов освещенности определенной картины и загружать эти расчеты в дальнейшем, для повторного использования. Для начала использования, активируйте 'Save Irradiance' и при помощи кнопки browse выберите имя файла и его месторасположение. Нажмите 'Save' для продолжения. Теперь при следующей визуализации вашей картины, данные по освещению будут сохранены на диск. Заметьте, что создаст IC файл непосредственно именно данная визуализация. Последующие визуализации не перезапишут результатов исходного варианта, если вы не отключите, а затем опять запустите данную функцию.
Caustics
Когда из-за свойств поверхности свет преломляется или отражается, то все эти искривленные лучи фокусируются вместе, создавая яркий рисунок, именуемый каустик (caustic). Для более точного представления о данном явлении, представьте себе игру света на дне плавательного бассейна или яркий солнечный зайчик от ветрового стекла проезжающего автомобиля в солнечный день. Моделирование данного эффекта в modo при помощи Global Illumination, весьма легкая процедура, так как каустик — естественный, побочный продукт при визуализации световых эффектов. Каустик, возникающий вследствие прямого света от световой области, удаленного света, точечного света и таких источников, которые требуют использование карт движения фотонов для расчета данного эффекта, активируются данной настройкой.
Direct Caustics: Данная опция дает команду modo рассчитывать каустики для всех преломляющих и отражающих поверхностей.
Total Photons: Установка общего числа фотонов задает предельное количество фотонов инициируемых для данной картины. Число фотонов делится между всеми активными 3D источниками света присутствующих в картине с уклоном на мощность света, тем самым сохраняя энергию.
Local Photons: Local Photons отображает количество фотонов необходимое для каждого отобранного пикселя. При визуализации пикселя, поиск вдоль поверхности определяет положение ближайшего фотона к числу Local Photon. Значение по умолчанию — 32, это указывает на то, что для визуализации каждого пикселя будет использовано 32 фотона. Увеличение данного значения приведет к более гладкому эффекту каустиков, но это будет в ущерб деталям. В это же время, уменьшение данного значения приведет к более резкому эффекту каустиков и увеличит зернистость изображения.
Indirect Caustics: Indirect Caustic (косвенный каустик) является естественным побочным продуктом при создании изображения под основным освещением, но если вы хотите контролировать создание данного каустика, у вас есть следующие возможности в настройках:
None: Никаких ограничений, все косвенные каустики будут присутствовать в картине.
Reflection Only: Рассчитываются каустики получившиеся только от отражающих поверхностей.
Refraction only: Рассчитываются каустики только получившиеся от преломляющих поверхностей.
Both: Рассчитываются каустики получившиеся в обоих случаях (от отражающих и преломляющих поверхностей)
При моделировании каустиков прозрачных поверхностей, например стаканов или бутылок содержащих жидкости рекомендуется, чтобы «жидкий» слой немного перекрывал «стеклянный». Между поверхностями ни в коем случае не должно быть промежутка.
Другие темы по настройке визуализации в modo:
Render. Команды Визуализации. Параметры.
Render. Свойства Визуализатора. Вкладка Frame.
Render. Свойства Визуализатора. Вкладка Settings.
mymodo.ru
Прошивка PS4 Pro 5.50's Supersampling Mode - это, в основном, отличная новость для владельцев телевизоров 1080p, но вы не всегда должны иметь ее - отчет
Режим Supersampling, добавленный в прошивку PS4 5.50, приносит много необходимых стимулов для владельцев PS4 Pro с телевизорами 1080p.
Режим суперсэмплинга является частью расширенной версии прошивки 5.50, которая также включает в себя обновления пользовательского интерфейса, возможность установки пользовательских фонов и многое другое.
Короче говоря, какой режим Supersampling работает, так это то, что он позволяет Pro-расширенные игры, которые по умолчанию не предлагают каких-либо обновлений владельцам 1080p, чтобы уменьшить их изображение с более высокого разрешения — для дисплеев 4k — на монитор 1080p, тем самым делая изображение гораздо острее. Это системный уровень, который делает использование полноэкранного дисплея с PS4 Pro намного менее раздражающим.
На практике это означает, что текстуры с более высоким разрешением и менее зубчатые края будут показаны. Хотя это большая новость для владельцев телевизоров 1080p, Digital Foundry обнаружила, что настройка не всегда должна быть включена.
В некоторых играх производительность падает, когда включена суперсэмплинга. Последний Guardian, который страдал от частых снижений частоты кадров на экранах 4k, работает с ошибкой на экране 1080p при использовании суперсэмплинга. Когда он выключен, игра предлагает встроенный 1080p вариант с более стабильной частотой кадров, что обеспечивает лучшую производительность, но снижает рейтинги.
Call of Duty: Black Ops 3 — это еще одна игра, которая страдает от одной и той же проблемы. Принуждение суперсэмплинга активирует режим игры 4k, что приводит к гораздо худшей производительности в пользу улучшенных визуальных эффектов.
Отчет заканчивается тем, что игрокам следует просто отключить суперсэмплинг, когда стоимость производительности становится слишком большой, но важно то, что она добавляет опцию, ранее недоступную в некоторых играх.
Прошивка 5.50 в настоящее время находится в состоянии бета-версии, без прогнозируемой даты выпуска.
Поделиться ссылкой:
Понравилось это:
Нравится Загрузка...
Источник → https://www.vg247.com/2018/02/13/ps4-pro-firmware-5-50-supersampling-mode-offers-options-for-1080p-tvs-but-causes-problems/news-game.ru