за что отвечает постобработка
За что отвечает постобработка
Это вторая часть нашего гайда. Первая, где собраны основные настройки вроде разрешения, качества текстур и теней, вы можете прочитать по ссылке.
Качество освещения (Lightning Quality)
То, насколько правдоподобно симулируется освещение в игре. Если это единственный подобный параметр в игре, то именно в эту настройку заложили уйму других, будь-то и объемный свет, и рассеивание лучей, и отражения, а иногда даже глобальное затенение. Освещение — это, пожалуй, вообще едва ли не самое основное из всего, что влияет на красоту картинки: оно делает ее объемной, натуралистичной, правдоподобной. Но и ресурсов все это дело «кушает» тоже немало. Именно поэтому, например, Nvidia так расхваливает свои новые RTX-видеокарты — они изначально разработаны под Ray Tracing — метод рендеринга, предполагающий правдоподобную симуляцию каждого луча.
Влияние на производительность
Зависит от движка, но почти во всех современных играх — очень сильное. Симулировать свет — это очень непросто, так что врубайте «ультра» только если у вас действительно мощная видеокарта.
Качество эффектов (Effects Quality)
Влияние на производительность
Тоже зависит от игры, чаще всего не особенно высокое. Но чем выше этот параметр, тем сильнее будет нагружаться ваша видеокарта в загруженных сценах, например, при масштабных перестрелках. Так что если игра начинает «подлагивать» в особо динамичные моменты, можно попробовать поиграться с этим ползунком, прежде чем снижать, например.
…Качество шейдеров (Shader Quality)
Шейдеры — это специальные программы для вашей видеокарты, исполняемые ее процессором. Грубо говоря, это такие «инструкции» от игры вашей GPU, по которым та понимает, как именно нужно отрисовывать тот или иной эффект. Чаще всего шейдеры используются для улучшения освещения, затенения, создания эффектов преломления лучей в воде (помните, как взрывала мозг та самая «шейдерная водичка из Half-Life 2: Lost Coast?), отражений, рассеиваний и так далее. Так что да, эта опция работает в тандеме с другими параметрами: качеством освещения и качеством теней. Существует три вида шейдеров: вершинные, геометрические и пиксельные, но игры, где можно отрегулировать качество каждого из них отдельно, встречаются невероятно редко.
Соответственно, чем выше качество шейдеров, тем лучше описанные выше эффекты, красивее тени и свет, реалистичнее геометрия — и тем сильнее нагрузка на видеокарту. Именно на видеокарту — потому что шейдеры считаются только GPU.
Влияние на производительность
Чаще всего — высокое. Например, в GTA V это один из самых «тяжелых» параметров в игре — снизив качество шейдеров с «Ультра» на средниее значение, вы получите прирост больше, чем в 15 FPS. Но бывает и так, что снижение этого параметра почти ничего не дает, как, например, в Mass Effect Anromeda.
Пост-эффекты в мобильных играх
Большинство публикаций по графике для консолей и десктопов рассказывают о чем-то новом, а для мобильных платформ во главе угла всегда стоит оптимизация уже существующего.
Что касается пост-обработки — её волшебное действие на фотографии было открыто задолго до появления первых компьютеров, а её математический и алгоритмический базис, созданный для цифровой обработки изображений, удачно вписался в программируемый конвейер GPU.
Помимо того, что пост-эффекты (точнее — их не очень грамотное использование) являются предметом ненависти среди игроков, они также едва ли не единственный способ быстро и дешево «оживить» и «освежить» картинку. Насколько качественным получится это «оживление» и не обернется ли оно в результате «свежеванием», зависит по большей части от художников.
Слегка «освежеванный» скриншот War Robots.
Как уже было сказано выше, эта статья будет посвящена в основном оптимизации. Для тех кто не в теме — отличным вводным курсом будут книги из серии GPU Gems, первые три из которых доступны на сайте NVidia [1].
Рассматриваемые примеры реализованы на Unity, тем не менее методы оптимизации, описанные здесь, применимы к любой среде разработки.
Оптимальная архитектура пост-обработки
Существует два способа рендеринга пост-эффектов:
В то же время пакетный рендеринг заметно эффективнее, поскольку он экономит общее число обращений к памяти. Последнее наиболее актуально для мобильных платформ, на которых повышенная вычислительная нагрузка сопровождается повышенной же теплоотдачей (кто бы мог подумать). И даже если устройство сумеет выдать требуемую частоту кадров, вряд ли игроку будет комфортно играть, держа в руках горячий «кирпич».
Для наглядности приведу последовательную и пакетную схемы рендеринга пост-эффектов, используемых в War Robots.
Последовательный рендеринг: 8 чтений, 6 записей.
Пакетный рендеринг: 7 чтений, 5 записей.
Пакетный рендеринг для Unity реализован в модуле Post Processing Stack [2].
Последовательность применения пост-эффектов без изменения кода изменить невозможно (но и не нужно), а вот отдельные пост-эффекты отключить можно. Кроме того, в модуле интенсивно используется встроенный в Unity кэш ресурсов RenderTexture [3], так что в коде конкретного пост-эффекта, как правило, содержатся только инструкции по рендерингу.
Ресурсы же пост-эффект запрашивает непосредственно во время рендеринга, и освобождает их по его завершению. Это позволяет организовать повторное использование ресурсов в последующих пост-эффектах, поскольку кэш удаляет только те ресурсы, которые не были востребованы в течении последних нескольких кадров.
Финальный этап в пакетном рендеринге — композиционный эффект, который комбинирует результаты всех предшествующих шагов и рендерит их при помощи мультивариантного «убер-шейдера». В Unity3D такой шейдер можно сделать при помощи директив препроцессора #pragma multi_compile или #pragma shader_feature.
В целом, Post Processing Stack нам понравился, но все же без доработки напильником дело не обошлось. Нам требовался масштабируемый модуль с возможностью добавлять или заменять пост-эффекты (включая препассы), а также модифицировать захардкоженный пайплайн, задающий последовательность рендеринга, и композиционный «убер-шейдер». Плюс ко всему в эффектах были разнесены настройки качества эффекта и его параметры на конкретной сцене.
Оптимизация fillrate
Основной метод рендеринга в пост-процессинге — это блиттинг: заданный шейдер применяется ко всем фрагментам текстуры, используемой в качестве render target. Таким образом, производительность рендеринга зависит от размера текстуры и вычислительной сложности шейдера. Простейший способ повысить производительность (а именно — уменьшение размера текстуры) сказывается на качестве пост-процессинга.
Но если заранее известно, что рендеринг необходим только в определенной области текстуры, можно оптимизировать процесс, к примеру, заменив блиттинг на рендеринг 3D-модели. Разумеется, никто не запрещает вместо этого использовать настройки viewport’а, но 3D-модель отличается от блиттинга увеличенным объемом per-vertex данных, которые в свою очередь позволяют задействовать более «продвинутые» вертексные шейдеры.
Именно так мы поступили с пост-эффектом рассеивания света от солнца [4]. Мы упростили оригинальный препасс, заменив его на рендеринг биллбоарда с текстурой «солнца». Фрагменты биллбоарда, скрытые за объектами сцены, выделялись с использованием полноэкранной маски, которая по совместительству служит нам буфером теней (подробнее о рендеринге теней я расскажу чуть позже).
Справа: буфер теней и маска, которая получается, если применить к нему степ-функцию. Все тексели, альфа которых меньше 1, перекрывают собой “солнце”.
Сглаживание текстуры препасса также выполняется при помощи рендеринга 3D-модели.
Разумеется, мы пошли до конца: финальный проход тоже сделан с помощью рендеринга 3D-модели. И в отличие от предыдущих случаев, которые при желании можно заменить блиттингом во вьюпорт, здесь 3D-модель содержит дополнительные данные (цвет вертекса), которые используются в шейдере эффекта.
Оптимизация динамических теней
Не смотря на вычислительную сложность пост-эффектов, динамические тени зачастую ещё более ресурсозависимы. Связано это не только с вычислительной сложностью соответствующих шейдеров, но и с тем, что для получения сглаженных теней требуется дополнительный полноэкранный проход рендеринга.
Обычно, для расчета затенения для фрагмента изображения с использованием техники Shadow Mapping’а используется фильтр PCF [5]. Однако результат без дополнительного сглаживания дает только PCF с очень большим размером ядра, что неприемлемо для мобильных платформ. Более продвинутый метод Variance Shadow Mapping требует поддержки инструкций аппроксимации частных производных и билинейной фильтрации для floating-point текстур [6].
Для получения мягких теней рендер всей видимой сцены выполняется дважды — в первый раз в offscreen-буфер рендерятся только тени, затем к offscreen-буферу применяется фильтр сглаживания, и после этого на экран рендерится цвет объектов, с учетом влияния тени из offscreen-буфера. Что приводит к двойной загрузке как CPU (отсечение, сортировка, обращение к драйверу) так и GPU.
Как один из вариантов решения проблемы — мы решили избавиться от двойного рендера сцены, не переходя на технику отложенного освещения.
Для начала рендерим изображение в промежуточный буфер в формате RGBA (1). Значение альфы — отношение яркости цвета фрагмента если бы он был в тени, к яркости без тени (2). Затем, используя command buffer, перехватываем управление в момент завершения рендера непрозрачной геометрии, чтобы забрать альфу из буфера. Далее сглаживаем (3), и модулируем сглаженные тени с цветовыми каналами промежуточного буфера (4). После этого возобновляется работа пайплайна Unity: рендерятся прозрачные объекты и скайбокс (5).
Данный трюк ведёт к небольшой деградации цветопередачи в затенённых местах, но хитрости вычислений того, что пишется в альфу позволили снизить это влияние до минимума.
В результате мы получили заметный прирост производительности (10-15%) на устройствах средней производительности (в основном на андроидах), и на ряде устройств уменьшилась теплоотдача. Данная техника — это промежуточное решение, до перехода на отложенное освещение.
Для съемки промо, мы по прежнему используем более качественный вариант, т.к. деградация цветопередачи там нежелательна, а ресурсов PС хватает. Для улучшения мягкости тени в этом случае мы применили следующее: при наложении тени используется формула, учитывающая LDotN, что позволяет добиться более плавного перехода в освещенных местах.
Плата за неё — небольшое выгорание тени в местах, где она при блюре становится не абсолютно черной, но зато в результате получается более плавный переход полутени.
Что такое постпродакшн или постобработка в фотографии и видео?
от sasza
Вы, наверное, слышали о фильмах термины «постпродакшн», «постобработка» или просто «публикация», но они также применимы — и не менее важны — к фотографии. Давайте разберемся, что они означают.
За исключением голливудских фильмов, эти три термина — постпродакшн, постобработка и постобработка — в основном взаимозаменяемы. «Производство» — это то, что происходит на съемочной площадке или в локации; это то, что вы делаете, когда бродите с камерой в руке, снимая фото или видео. Таким образом, «пост-продакшн» — это все, что происходит после того, как вы закончили съемку, «пост-обработка» — это вся обработка, которая выполняется после того, как вы закончили съемку, а «пост» — это аббревиатура для двух.
Что такое почта?
Итак, мы установили выше, что пост — это все, что происходит после съемки, но что это влечет за собой? В большинстве случаев это включает некоторые (или все) из следующего:
Импорт всего отснятого вами материала и его резервное копирование.
Просматривать весь отснятый материал и отбирать хорошие.
Для видео — объединение всех клипов в один фильм.
Для видео добавление музыки и устранение любых проблем со звуком.
Корректировка цвета, яркости, контрастности и других основных настроек экспозиции.
Устранение любых проблем, таких как кривые горизонты, искажения, пыльные пятна или дефекты.
Применяя любое цветовое тонирование или подобные стилистические корректировки.
Подготовка фотографий или видео к экспорту и печати, публикации или публикации в Интернете.
Сколько потребуется постобработки и сколько времени это займет, полностью зависит от проекта. Профессионально снятый короткометражный фильм потратит месяцы на пост-продакшн, каждый этап которого будет выполняться несколько раз, с другой стороны, я могу обработать несколько десятков фотографий за час — если я не занимаюсь серьезной ретушью.
Вот пример изображения, которое я сделал примерно за 20 минут, выполнив описанные выше действия. Вот как это выглядело прямо с камеры (у меня было еще несколько похожих фотографий, которые я отклонил в публикации).
А вот как это выглядит после.
Обратите внимание, что приведенный выше список далеко не полный список шагов для пост-обработки. По сути, есть бесконечное множество вещей, которые вы можете сделать с фотографией или фильмом в публикации — это просто зависит от того, чего вы пытаетесь достичь.
Почему важна постобработка
Постпродакшн не менее важен, чем собственно производство. Это большая часть хорошей работы по нескольким причинам.
Публикация — это возможность исправить небольшие проблемы, которые вы упустили из виду, исправить цвет и экспозицию и, как правило, просто убедиться, что ваша работа выглядит хорошо и профессионально. Цифровые камеры не идеальны, и они делают много предположений об окружающем мире, так что это ваша возможность подстроиться под них.
В почте вы можете поставить свой отпечаток на свою работу. Это ваш шанс сделать фото одного и того же туристического места, которое посещают все, немного другим. Вы можете разработать единый вид как для этой части работы, так и для всей вашей работы. Например, вот два моих лыжных фото. Снятые с разницей более года, они отредактированы так, чтобы выглядеть частью одной коллекции.
Постпродакшн также позволяет подготовить вашу работу для различных носителей. Facebook убирает любые загружаемые вами изображения, но есть шаги, которые вы можете предпринять, чтобы минимизировать потерю качества. С другой стороны, если вы планируете распечатать свою работу, вам нужно делать совершенно другие вещи.
Хотя постобработке сейчас, безусловно, уделяется гораздо больше внимания, чем раньше, стоит отметить, что она не нова. Все великие фотографы — и все кинорежиссеры — потратили на пост-продакшн не меньше времени, чем на съемки.
Вы не можете «исправить это в публикации»
С учетом всего сказанного, пост-продакшн — не волшебная палочка. Вы никогда не сможете исправить серьезные недостатки с помощью таких вещей, как композиция в посте. Вам по-прежнему нужно много работать на натуре, чтобы делать снимки, которые вам нужны.
Постобработка изображения
Наконец-то меня уговорили и я решился написать небольшой тутор по обработке изображений. Предупреждаю сразу, методы обработки применимы лишь к данному изображению. Туториал писал с целью показать различные приемы и то как они меняют внешний облик изображения. Делал туториал быстро, постараюсь в комментариях под картинками объяснить все основные моменты.
Ну вот что у нас было, и что стало после обработки
Это наше исходное изображение. Оно было создано мной довольно быстро, поэтому я в нем даже не особо напрягался с настройками матов и света.
И так. Дублируем первый слой. Переводим его в режим смешивания Screen, прозрачность на 49%
Дублируем еще раз, но теперь в режим Soft Light. Я делаю это так как этот прием может убирать серость с картинки, к тому же им удобно редактировать насыщенность цветов и общую освещенность картинки.
Создаем заполняющий слой. Силу света оставляю дефолтную
Теперь создаем градиент. Выбираю одну из стандартных градиентов. Мне он нравится так как добавляют легкую глубину цветам. В дневных интерьерах иногда использую желто-голубой цвет.
Теперь в слое с градиентом делаем тип смешивания Soft Light и убавляем прозрачность
Создаем заполняющий слой с балансом цветов. Все настройки которые я использовал я выложил в скринах
Убираем чуть сочность с картинки, а то слишком уж яркая она у нас выходит
Кривыми чуть освещаю картинку
Выделаю слой с основным изображением, тот который со смешиванием в режиме Screen и для него применяю Diffuse Glow. (Filters-Distort)
Ставим такие параметры, эммитируем зассвет из двери
По необходимости редактируем прозрачность полученного слоя
В каналах выбираем канал Lightness
Теперь сделаем глубину резкости, заранее я отрендерил в максе карту с глубиной резкости. Как ее делать почитайте в других уроках, эта тема разжёвана миллион раз, не стану повторяться. Я использовал вот такие настройки для своего изображения. Использую плагин Dof Pro
Берем в интернете картинку пламени свечи, обрезаем ее средствами фотошопа и вставляем в нашу работу. Создаем поверх пусть слой и туда тыкаем кисточкой желтоватого цвета, как показано на скрине.
Меняем режим смешивания нашего слоя с кисточкой, этим создаем легкую ауру свечения.
Рисуем средствами фотошопа такой блик.
Делаем ему расторизацию и слегка разблюриваем
Меняем прозрачность и режим смешивания
Создадим дубликат основного слоя, это для того, чтоб нарисовать на нем блики
На дублированом слое dodge tool (O) мазюкаем, чтоб получить блик, якобы отсвечивается дверь. Дальше я делал не супер аккуратно, хотел лишь показать способ. Звиняйте.
Теперь берем историческую кисточку и в истории возвращаем ее этап до нанесения засвета.
Аккуратно зарисовываем ей не нужные части бликов. Блюрим, дорисовываем и все прочее на свой вкус и цвет, тут ен может быть общих рекомендаций
Дублируем пламя и воссоздадим его отражение на столе
Играем с типом смешивания и прозрачностью и получаем нужный вариант прозрачности у пламени, теперь это смахивает на блик на столе
Сшиваем все слои в одно. Понимаем, что все это достало и оставляем все как есть 🙂
На самом деле можно еще мучать картинку, но нужно ли? Это способ ручного редактирования, я бы так сказал быстрого спасения картинок. Он не сгодится для полиграфии и для серьезной работы. Но тем не менее для демонстрации клиентам, картинку можно вытянуть на хоть какой-то уровень
Несколько советов по оптимизации производительности + Детальное описание настроек
Решил перенести тему в отдельный блог, так как предыдущий получился через-чур большим и неудобным для просмотра и редактирования. Тему дополнил скриншотами и забытыми в предыдущий раз пунктами 🙂
Несколько советов для повышения ФПС в игре, а так-же расшифровка настроек изображения:
ПОСТОБРАБОТКА:
— «Хроматическая аберрация» или что-то там. ФПС не меняет, эффект от нее странный. Призвана сделать изображение фотореалистичным или просто хромым. Пример:
— «Четкость изображения«, оно же шарп, искусственно делает изображение более четким. На фпс не влияет. Ставим по вкусу.
— «Световые шахты«(о, эта прекрасная русская локализация, в народе обзываются «лучами бога»), слабое влияние на фпс, не рекомендую отключать:
Основные настройки:
— Отключите вертикальную синхронизацию в игре, на мощных системах на производительность она не влияет, однако на видеокартах уровня 650TI/660/760/750ti и т.д, она отнимет 1-5 кадров, в зависимости от сцены. Вертикальная синхронизация убирает разрывы изображения в динамичных сценах. В Ведьмаке, я их редко замечаю, так что настройкой можно смело жертвовать, если вы не потомственный эстет.
— Включите НИЗКОЕ качество теней, поверьте, разницы вы не заметете, но освободите немного видеопамяти и получите приличный буст ФПС, особенно в городах и экшн сценах. Доказательство — сравнение низкого и ултра качества теней.
— Совет относительно травы от Mr.Nobody. , из комментариев ниже: «Вместо этого советую удалить файл Grass_ps,результат будет одинаковый НО при удаления файла Grass почему фризы исчезают напрочь,а при удаления травы через «GrassDensity» блокнотом фризы в некоторых местах все ровно остаются. Вот такая у поляков интересная оптимизация)))»
ОБЩИЕ СОВЕТЫ:
— Если совсем все плохо, то в настройках интерфейса можете отключить отображение миникарты, в ранних версиях игры (не знаю как сейчас, может так же) на некоторых конфигурациях отключение миникарты добовляло 4-5фпс. Но с тем же успехом можно отключить Геральта, уверен, что это тоже повысит ФПС 🙂
Видео-доказательство: