коэффициент шейдинга в играх что это
Коэффициент шейдинга в Metro Exodus
Metro Exodus – компьютерная игра, шутер от первого лица, события которого разворачиваются в постапокалиптической Российской Федерации и Республике Казахстан. Разработчиком проекта является украинская компания 4A Games, в России игра вышла в феврале 2019 года под названием “Метро: Исход”. Как и другие современные медиапродукты имеет немало графических параметров. Пользователь может управлять ими для оптимизации игрового процесса в соответствии с возможностями своего компьютера. Одной из таких настроек является коэффициент шейдинга. В статье расскажем на что он влияет и как его увеличить.
Что такое коэффициент шейдинга в играх
Шейдер – программа для обработки изображений в продуктах с трехмерной графикой, в т.ч. в играх. Запускается непосредственно процессором видеокарты. Позволяет накладывать текстуры на геометрические объекты, создавать эффект затемнения, сдвига, отражения и т.д.
Коэффициент шейдинга – это величина, показывающая сколько шейдеров обрабатывают один пиксель картинки на мониторе. Если параметр равен 1.0, значит на 1 пиксель приходится 1 шейдер, 2.0 – для 1 пикселя задействовано 2 шейдера и т.д. Показатель так же может выражаться в дробных числах, например, 1, 5.
Почему не меняется
Часть пользователей Metro Exodus столкнулись с проблемой – коэффициент шейдинга не меняется в игре. Настройки, отвечающие за этот параметр не активны, управлять графикой в полной мере не получается. Среди игроков, обсуждающих в сети это затруднение, немало владельцев видеокарты NVIDIA GeForce RTX 2060.
Официальные системные требования Metro Exodus гласят, что рекомендуемый объем памяти видеокарты должен быть не менее 8 ГБ. Минимальный размер для пользования игрой начинается от 2 ГБ. Но изображение и остальные характеристики будут соответствующими.
Как увеличить коэффициент шейдинга в Metro Exodus
В Интернете есть советы как сделать настройку активной. Но не стоит забывать, что высокие параметры графики “съедают” производительность. Увеличение коэффициента шейдинга на единицу снижает FPS примерно на 25%. Это порождает неудобства для владельцев видеокарт с размером памяти меньше рекомендуемого – комфортно играть на максимальной величине 4,0 не получится.
Попробовать можно следующее:
Выключить DLSS
В некоторых случаях помогает и опция становится доступной для управления.
Выставить пресет “Extreme”
Это режим с высоким качеством графики, рассчитанный на выставление увеличенных параметров. Некоторые игроки сообщают, что таким образом им удалось поднять коэффициент шейдинга до 2.0.
Вручную прописать значение в файле конфигурации
Описанные способы срабатывают не у всех. Если Ваша видеокарта недостаточно мощная, значительное увеличение обсуждаемой опции снизит производительность и играть станет невозможно. Поэтому приходится находить компромисс между FPS и детализацией картинки.
Оптимальное соотношение настроек FPS и качества изображения
Для получения FPS 60 при разрешении экрана 1920×1080, 2560×1440 или 4K, в зависимости от производительности компьютера рекомендуются следующие настройки
Коэффициент шейдинга в Metro Exodus — что это такое
Коэффициент шейдинга — одна из настроек графики в шутере Metro Exodus, которая озадачила многих игроков. Дефицит информации усугубляется тем, что данная опция у значительного числа геймеров “не работает” и стандартное значение 1.0 в настройках попросту не активно.
Однако в интернете существует несколько рецептов, позволяющих активировать эту опцию и улучшить графику Metro Exodus. В статье мы расскажем, что такое «коэффициент шейдинга» и почему он может не работать.
Коэффициент шейдинга в Metro Exodus
Что это за настройка в Metro Exodus — на что влияет
Согласно трактовке: коэффициент шейдинга определяет количество шейдеров, применяемых к одному пикселю выводимого на монитор изображения. То есть, при стандартной настройке 1.0 каждый пиксель будет обрабатываться одним шейдером, при 2.0 — на один пиксель их придётся два и т. д.
Тем, кто плохо знаком с основами 3D-моделирования, шейдер проще всего будет воспринимать как небольшую программу или скрипт, которая индивидуально просчитывают множество однотипных элементов, используемых для создания реалистичного изображения. Например, шейдеры ответственны за создание динамичного освещения, эффекта отражения в воде и т. д.
Увеличение шейдинга ведет к понижению производительности
Отсюда можно сделать вывод, что увеличение коэффициент шейдинга в Metro Exodous является одной из ключевых настроек для улучшения графики. При грубом приближении можно провести такую аналогию: при использовании монитора с разрешением 1920х1080 и коэффициентом шейдинга 2.0 будет получено качество картинки эквивалентное разрешению 2560×1440 (больше исходного на 200%).
Но за хорошую графику придётся платить снижением производительности. При повышении коэффициента шейдинга на один пункт, FPS просядет на 20-30%. В результате большинство геймеров сходятся во мнении, что при максимальном значении этой настройки (4.0) играть в Metro Exodous станет попросту невозможно.
Как включить коэффициент шейдинга в Metro Exodus
Многие игроки сталкиваются с тем, что настройка коэффициента шейдинга по-умолчанию остаётся неактивной и повлиять на это никак нельзя (например, с этой проблемой практически наверняка столкнутся владельцы карт GeForce RTX 2060). Официального комментария разработчиков на этот счёт пока нет, но опытным путём геймеры обнаружили несколько способов, как с этим бороться.
Первым делом пробуйте отключить настройку DLSS
Изменение файла конфигурации Metro Exodus
На данный момент это является самым действенным способом “активировать” эту опцию — является ручная правка конфига. Сделать это можно так:
Перед проведением данной манипуляции рекомендуется сохранить оригинальный файл конфигурации.
Заключение
Надеюсь вы разобрались для себя — что означает «коэффициент шейдинга» в Метро Исход Конечно, при повышении данной настройки — текстуры становятся четче. Но повышение этого коэффициента будет актуально тогда, когда у вашей видеокарты есть запас мощности. В таком случае вы сохраните баланс — четкая картинка + приемлемые FPS. От себя замечу, что даже на UltraHD мониторе, разницу между 2.5 и 4.0 вы практически не почувствуете.
Шейдеры в Unity — это не сложно. Часть 2 — диффузный шейдинг
Будем разбираться в шейдерах
Всем привет! Благодарен всем за замечания и комментарии к предыдущей статье. Благодаря всем нам мы наполняем интернет доступными знаниями и это действительно круто.
Сегодня продолжаем разбираться с шейдерами, а именно с работой с освещением. Рассмотрим тип освещения Ламберта, познакомимся с диффузным шейдингом, и, как обычно, напишем и разберём AD шейдер (Ambient Diffuse).
Теория
Итак, начнём наше знакомство с типом освещения Ламберта (Lambertian reflectance).
Поглощение и отражение света
Перенося это всё на Unity, данный физический процесс можно разбить на следующие составляющие:
Источник света излучает свет
Свет падает на объект, отражаясь и рассеиваясь.
Отражённый свет попадает в камеру и мы получаем картинку.
В Unity источник света описывается точкой в пространстве, а мощность (или количественная величина света) описывается параметром освещённости (Intensity). Поскольку в модели освещения Ламберта угол обзора не имеет значения, мы будем видеть один и тот же цвет со всех сторон.
Возвращяясь к реальности, рассмотрим пример освещения участка с криволинейной поверхностью. Когда луч света падает на поверхность гладкого объекта, свет отражается. Так как лучи света парралельны, то в случае с гладким объектом отражённые лучи будут также параллельны. Это регулярное отражение называется однонаправленным отражением или зеркальным отражением света. Но гладкость объектов относительна, и, как правило, представляет собой шероховатую и неровную поверхность. В таком случае падающие лучи являются параллельными, а отраженные лучи будут рассеиваться во всех направлениях. Это явление является диффузным отражением света.
Отражение света на криволинейной поверхности
Как можно заметить, в участках с солнечными лучами, падающими под прямым углом, интенсивность света будет выше, в то время как на участках, где свет падает не прямолинейно, освещённость будет ниже. Тот же сценарий должен повториться и для диффузного шейдера.
Характеристики диффузного освещения:
Интенсивность освещённости пикселя не зависит от угла обзора.
Интенсивность освещённости зависит от угла падения света на поверхность.
Итак, нам нужно понять, что нужно для вычисления цвета каждого пикселя в каждой точке. В модели Ламберта поверхность объекта описывается как поверхность с идеальным отражением( возникает только диффузное отражение). Рассмотрим формулу для расчёта окружающего освещения:
Формула для расчёта направленного света:
Формула вычисления направленного света несколько отличается от вычисления окружающего света. При вычислении отражения окружающего света не имеет значение его направление, так как окружающий свет не имеет направления (точнее направлен на все стороны). Поэтому окружающий свет одинаков для каждой вершины. В случае вычисления направленного света его направление имеет значение. Рассеивание направленого света зависит от расстояния до нормали. Чем ближе к нормали, тем сильнее рассеивание. Интенсивность диффузного отражения направленного света соответствует закону косинуса Ламберта. Таким образом имеем формулу:
У меня нет цели нагружать статью огромным количеством теории. На мой взгляд, все базовые моменты были рассмотрены, поэтому предлагаю закончить с теорией и перейти к практике.
Практика
Итак, немного разобравшись в том, как работает свет в Unity, и в том, как нам его применять в шейдере, перейдём к написанию шейдера. Напомню, мы будем писать шейдер AD (Ambient diffuse)
Полный код шейдера
Далее при помощи ключевого слова CGPROGRAM мы объявляем раздел шейдера на языке GLSL. Мы будем использовать такие же наименования, как и в предыдущей главе, а это значит, что #pragma vertex vert объявляет в качестве вершинного шейдера функцию с именем vert, а #pragma fragment frag в качестве фрагментного шейдера функцию с именем frag. Строчкой #include «UnityCG.cginc» мы подключаем библиотеку со вспомогательными и наиболее полезными функциями. Кто хочут узнать больше про эту библиотеку, можно прочесть про неё вот тут.
Движемся по коду дальше и определяем скруктуру данных для фрагментного шейдера:
Более подробно расписано в документации. Далее следует объявить блок переменных, которые будут использоваться в шейдере. В нашем случае это:
Для вычисления нам необходимо будет вычислить следующие данные:
единичный вектор направление освещения;
нормаль в мировых координатах;
позицию в мировых координатах;
Получаем соответствующие вычисления:
Итак, все необходимые для вычисления данные получены, приступаем к рассчёту освещения. В первую очередь рассчитаем окружающее освещение:
Здесь для рассчёта окружающего света мы перемножаем интенсивность освещения и цвет. Далее рассчитываем диффузное освещение:
Здесь мы рассчитываем диффузное освещение по формулам которые были описаны выше в теории. Далее нам осталось сложить окрущающий и диффузный цвет:
Есть. Рассчёт освещения окончен. Для окончательного формирования выходной структуры данных нам осталось лишь передать uv координаты.
Есть. Шейдер написан. Осталось проверить его в Unity.
Походу что-то сломалось, не могу вставить гиф, посмотреть можно тут
Как можно видеть, шейдер отрабатывает корректно, интенсивность и цвет можно менять через переменные шейдера.
Также проверим работу шейдера с освещением:
Походу что-то сломалось, не могу вставить гиф, посмотреть можно тут
Как можно видеть, всё работает корректно, освещённость объекта меняется в зависимости от изменения параметров источника освещения.
На этом пока что всё. Спасибо за внимание. Знаю, статьи выходят не часто, но постараюсь исправиться и писать больше. Читаю все ваши комментарии, рад объективной критике и замечаниям.
Коэффициент шейдинга в Metro Exodus: что это такое?
19.12.2019 4,314 Просмотры
Мир развлечений не перестает удивлять своими предложениями. Каждый разработчик игр пытается создать продукт, который сумеет стать революционным в части реалистичности, поразить задумкой или набором возможностей и функций. Некоторые компании пошли по пути переноса событий, отраженных в полюбившихся кинотрилогиях и романах. Так появилась мультиплатформенная игра по мотивам трилогии «Метро 2033», жанр которой определен как «шутер от первого лица» с элементами сурвайвал-хоррора и стелс-экшена – «Metro Exodus» (рус. «Метро Исход»).
Одной из ее особенностей является настройка графики посредством коэффициент шейдинга с его нестандартным подходом к регулировке картинки.
Что это
«Metro Exodus» является сиквелом давно полюбившейся «Metro Last Light». Основа сюжета – события, происходящие в постапокалиптическом мире.
Согласно задумке, коэффициент шейдинга – инструмент настройки, определяющий количество шейдеров, воздействующих на один пиксель изображения выводимого на монитор. В стандартном варианте заложено значение 1.0, что определяет отношение: 1 пиксель обрабатывается 1 шейдером. Соответственно, если установлен коэффициент 2.0, то на 1 пиксель будет воздействовать 2 шейдера.
История игры невозможна без насыщенных и реалистичных событий.
Нюансы
Чтобы не углубляться в основы 3D-моделирования, шейдер можно представить как небольшой скрипт или программу, которая способна разрабатывать индивидуальный сценарий одномоментно просчитывая множество однотипных элементов задействованных в создании реалистичных панорам. В число задач входят эффект отражения в воде, освещение в зависимости от предлагаемых условий и времени суток.
Особенности настройки
Ряд игроков в ходе игры обнаруживают, что настройка коэффициента шейдинга в стандартном варианте (по-умолчанию) по каким-то причинам остается неактивной. В большинстве случаев это затрагивает владельцев карт GeForce RTX 2060 и повлиять на это практически невозможно.
Опытные геймеры самостоятельно нашли несколько вариантов, как можно справиться с проблемой. В числе решений:
Каждый параметр игры имеет свое значение в создании образа и реализации идеи продукта. Настройка коэффициента шейдинга позволяет сделать текстуру четче и интереснее для восприятия.
Полезные советы по оптимизации игровой модели. Часть 1
Shading
Шейдинг — это подложка под запекание нормалки. Чем лучше он выглядит, тем красивее будет финальная модель и normal map. Слева на скриншоте пример хорошего шейдинга, справа — плохого.
То есть слева low poly модель, максимально похожая на high poly: выглядит красиво, нет никаких артефактов и искажений. Справа видны ошибки в шейдинге, искажения.
Основные инструменты воздействия на шейдинг — это добавление большего количества геометрии. Если этот вариант не подходит, — проставление хардов. Изначально шейдинг модели на гифке ниже недостаточно корректно отображает ее форму. С добавлением edge loops модель шейдится лучше. Ее форма становится понятней.
Это самый лучший, но и самый затратный способ, потому что используется большое количество полигонов. Если у вас ограничения по полигонам, можно использовать харды. Однако в этом случае придется делать разрез на UV.
Поэтому хороший шейдинг — это баланс между софтами и хардами.
Совет всем начинающим: настраивайте шейдинг во время low poly стадии. Таким образом вы прямо по ходу ретопологии сможете понять, где добавить дополнительную геометрию, а где поставить hard edge.
Многие сначала делают ретопологию, разворачивают, запаковывают и только потом настраивают шейдинг по хардам. Это не самый корректный способ. Результат будет более оптимальным, если изначально опираться на шейдинг.
Texel Density
Это нужно для того, чтобы абсолютно все объекты на уровне имели одинаковое разрешение текстур. Предположим, на уровне есть две бочки — одна маленькая, другая большая. Если мы применим к ним одинаковую текстуру в 2К, плотность их текстур будет отличаться. Маленькая бочка будет крайне плотная и детализированная, большая будет замыленная. Чтобы избежать этих проблем появился термин Texel Density.
Очень часто бывает, что клиент задает необходимое значение Texel Density, но не задает разрешение текстур. Раньше это создавало трудности. Приходилось колхозить. Сейчас в UV Editor Maya 2018 есть специальный инструмент. Выбираете необходимый UV Shell, нажимаете Get и вам выдает числовое значение, в зависимости от разрешения текстур. Точно так же можно выбрать любой Shell, задать цифру, нажать Set и Texel Density будет такой, как вы задали.
Распределение Texel Density.
Предположим, что желтый цвет — это Texel Density, которого мы должны придерживаться. Чем краснее цвет, тем его значение больше, текстура плотнее, детализация выше. И наоборот, — чем синее, тем значение меньше.
Прием с увеличением значения используется, в основном, в оружии от первого лица. Потому что, заднюю часть пистолета мы видим больше всего, и было бы неплохо сделать ее более детализировано.
С другой стороны, уменьшить детализацию там, куда никто не смотрит — это прием из разряда «must have». Абсолютно независимо от того, какой объект вы делаете.
Для одного из тестовых я делала квадратный генератор. Его днище, которое в принципе никогда никто не увидит, я разювишил точно так же, как и все остальное. То есть оно занимало ¼ моего UV пространства. Это было абсолютно не оптимальное использование текстуры. Для экономии пространства, в невидимых местах, заполненных геометрией, необходимо использовать крайне маленькие шеллы текстур.
Reuse
Повторное использование текстур — еще один не менее важный инструмент. Я использую его даже в работах для портфолио, потому что он тоже экономит много пространства.
Данный прием экономит не только пространство на UV, но и время на текстуринге, потому что текстурить вам нужно только одну сторону. Но есть и небольшой минус. Надписи, логотипы, цифры, текст, будут отображены зеркально. В таких случаях тоже есть уловка: можно использовать символы, которые читаются с двух сторон. Это жертвы, на которые стоит идти, чтобы, убрав лишнюю работу, повысить качество модели.
Ровные UV Shells
Для примера, я запек два кубика с одинаковым Texel Density и текстурой. Но в кубе слева все UV Shells выровнены по горизонтали и вертикали, а справа повернуты под углом.
Ровные шеллы создают хорошую, красивую фаску. Если же шеллы повернуты, мы видим эффект лесенки. Это крайне некрасиво. Особенно на игровых разрешениях текстур. Потому что в играх используется маленькое разрешение, на котором это очень заметно. Поэтому любой прямоугольный шелл нужно выравнивать. Даже если это не идеальная прямоугольная форма на самом объекте, я его специально выравниваю, чтобы на UV он был ровный.
Mip Mapping и Padding
Если игрок отдаляется от какого-то игрового объекта, то модель этого объекта меняется на менее полигональную. Точно так же с текстурами — чем дальше мы отходим, тем меньшая текстура к нему применяется. 4К подменяется на 2К, когда мы отходим еще дальше — на 1К. Этот прием экономит ресурсы вашего компьютера.
Padding — это расстояние между UV Shells. Чем меньше это расстояние, тем сложнее отображать текстуры при Mip Mapping. Потому что при уменьшении текстур, уменьшается и расстояние между шеллами. Padding нужно всегда делать побольше, или хотя бы следить за тем, чтобы он везде был равномерным. Для персональных работ, в принципе, все равно, но если вы делаете проекты для клиентов, на это следует обращать внимание.
Триангуляция
Это очень важный момент. Изначально полигоны прямоугольные — квады. Соединив два вертекса, получается два треугольника.
Любой движок, работающий с геометрией, триангулирует модель, чтобы корректно ее отобразить.
Если оставить квады на ровной поверхности, никаких проблем не будет. Но бывают не идеально ровные полигоны. И вот тут уже, в зависимости от того, как мы соединяем вертексы, меняется форма. В одном случае он вогнутый, в другом выпуклый.
Если запекать в квадах, то бейкер триангулирует модель каким-то своим образом, и на базе этой триангуляции выдает нормалку. Если затем эту модель закинуть в движок, то не факт, что он триангулирует ее также. Из-за несоответствия нормалки с триангуляцией, появятся ошибки и артефакты.
Чтобы быть уверенным, что ваша нормалка будет везде красиво смотреться, триангулируйте меш до запекания.
Градиенты на нормалях
Если вы все правильно сделали, нормалка будет выглядеть как на картинке слева. Она стремиться к однородному цвету, а градиентная информация находится по фаскам. Справа пример плохой нормалки с большим количеством градиентов.
Почему градиенты — это плохо? Текстуры — самая затратная часть любой игры. Когда вы качаете игру на 150 гигов, 100 из них — текстуры. Но все они компрессируются, что ухудшает их качество. Лучше всего компрессия видна в тех местах, где есть градиенты. Поэтому при максимально ровной нормалке ошибок быть не должно. Они, конечно, будут, но значительно меньше, чем с градиентом.
Следуя этим правилам, вы легко повысите качество своих работ, сократив усилия, необходимые для их создания.
Во второй части статьи рассмотрим основные правила хорошего текстурирования, которые помогут оживить вашу модель и сделать ее более интересной.