Dof в играх что
Dof в играх что
Это вторая часть нашего гайда. Первая, где собраны основные настройки вроде разрешения, качества текстур и теней, вы можете прочитать по ссылке.
Качество освещения (Lightning Quality)
То, насколько правдоподобно симулируется освещение в игре. Если это единственный подобный параметр в игре, то именно в эту настройку заложили уйму других, будь-то и объемный свет, и рассеивание лучей, и отражения, а иногда даже глобальное затенение. Освещение — это, пожалуй, вообще едва ли не самое основное из всего, что влияет на красоту картинки: оно делает ее объемной, натуралистичной, правдоподобной. Но и ресурсов все это дело «кушает» тоже немало. Именно поэтому, например, Nvidia так расхваливает свои новые RTX-видеокарты — они изначально разработаны под Ray Tracing — метод рендеринга, предполагающий правдоподобную симуляцию каждого луча.
Влияние на производительность
Зависит от движка, но почти во всех современных играх — очень сильное. Симулировать свет — это очень непросто, так что врубайте «ультра» только если у вас действительно мощная видеокарта.
Качество эффектов (Effects Quality)
Влияние на производительность
Тоже зависит от игры, чаще всего не особенно высокое. Но чем выше этот параметр, тем сильнее будет нагружаться ваша видеокарта в загруженных сценах, например, при масштабных перестрелках. Так что если игра начинает «подлагивать» в особо динамичные моменты, можно попробовать поиграться с этим ползунком, прежде чем снижать, например.
…Качество шейдеров (Shader Quality)
Шейдеры — это специальные программы для вашей видеокарты, исполняемые ее процессором. Грубо говоря, это такие «инструкции» от игры вашей GPU, по которым та понимает, как именно нужно отрисовывать тот или иной эффект. Чаще всего шейдеры используются для улучшения освещения, затенения, создания эффектов преломления лучей в воде (помните, как взрывала мозг та самая «шейдерная водичка из Half-Life 2: Lost Coast?), отражений, рассеиваний и так далее. Так что да, эта опция работает в тандеме с другими параметрами: качеством освещения и качеством теней. Существует три вида шейдеров: вершинные, геометрические и пиксельные, но игры, где можно отрегулировать качество каждого из них отдельно, встречаются невероятно редко.
Соответственно, чем выше качество шейдеров, тем лучше описанные выше эффекты, красивее тени и свет, реалистичнее геометрия — и тем сильнее нагрузка на видеокарту. Именно на видеокарту — потому что шейдеры считаются только GPU.
Влияние на производительность
Чаще всего — высокое. Например, в GTA V это один из самых «тяжелых» параметров в игре — снизив качество шейдеров с «Ультра» на средниее значение, вы получите прирост больше, чем в 15 FPS. Но бывает и так, что снижение этого параметра почти ничего не дает, как, например, в Mass Effect Anromeda.
Какие настройки графики всегда лучше отключать
Эти настройки производительности имеют совсем небольшое визуальное воздействие.
Все мы любим выставлять настройки графики на максимум. Но не все они имеют положительный эффект. Даже с элитным аппаратным обеспечением, есть некоторые графические параметры, которые дают небольшое визуальное различие, но имеют значительное влияние на частоту кадров. А если вы ещё и играете на старом ПК, то это именно те настройки, которые вам нужно отключать, чтобы повысить частоту кадров и в тоже время не сделать графику ужасной.
Графические опции и их соответствующее воздействие также могут значительно варьироваться от игры к игре, поэтому для наилучшей производительности нужно пересмотреть специфические руководства по оптимизации. Другими словами, эти параметры «выжимают максимум» в соотношении «железо – производительность».
На удивление эффект тени усиливает производительность графики, однако немножко затемнённые края не достаточно сильно влияют на ваше общее качество изображения. Не выключайте их, но если вы боретесь за частоту кадров – их определенно лучше поставить на низкий или средний уровень.
Размытие в движении
Размытие в движении иногда используется для хорошего эффекта, например, в гоночных играх, но по большей части этот параметр отбирает вашу производительность в обмен на то, что большинство геймеров обычно не любят. Размытость в движении особенно нужно избегать в играх с быстром темпом, например, в шутерах от первого лица.
Глубина резкости
Глубина резкости в играх, как правило, относится к эффекту размытия вещей на заднем плане. Точно так же как и размытие в движении, этот параметр отвлекает наши глаза и создает качество, как у фильмах – это не всегда отлично смотрится. К тому же эта настройка может повлиять на производительность, особенно, если она неправильно использована. Её нужно настраивать, отталкиваясь от личных предпочтений и от того, в какую игру вы играете.
Динамическое отражение
Эта настройка во многом зависит от игры, в которую вы играете, а также от того, что для вас важно с точки зрения качества изображения. Динамические отражения являются параметрами, влияющими на отображения игроков и других движущихся объектов в лужах и на блестящих поверхностях. Это чрезвычайно усиливает производительность графики. Тем не менее, динамические отражения не всегда замечаются, а отключив их, вы увеличите ваши кадры в секунду от 30 до 50%.
Избыточная выборка сглаживания (суперсемплинг, SSAA)
С включённым суперсемплингом, игра делает кадры с более высоким разрешением, нежели разрешение самого экрана, а затем сжимает их обратно до размера дисплея. Это может улучшить вид игр, но если ваш ПК не является особым монстром (как наш любимый Large Pixel Collider), SSAA разрушит вашу производительность. В большинстве случаев, она не стоит того, чтобы её применяли, особенно, когда существует столько альтернатив суперсемплингу
Пользователи обсудили эффекты, которые они отключают в играх чаще всего
Пользователи Реддита подняли интересную для многих ПК-игроков тему эффектов, которые приходится отключать по тем или иным причинам в современных играх. И правда: разработчики настолько увлеклись воспроизведением некоторых особенностей человеческого зрения, что выдержать эту атаку на глаза способен не каждый игрок.
Пример использования эффекта кинопленки
Автор треда под ником Kazurda, например, всегда отключает глубину резкости (depth of field) и размытие изображение в движении (motion blur). Многие делают так же, аргументируя это тем, что человеческое зрение «снабжено» этими эффектами по умолчанию. В комментариях эти эффекты встречаются очень часто.
Среди других популярных эффектов, отключаемых многими сразу же после запуска: хроматическая аберрация (chromatic aberration), свечение (bloom), виньетирование (vignette), блики (lens flare) и эффект кинопленки (film grain). Также нашлись пользователи, которым не нравится эффект качающейся головы (view bobbing, яркий пример — серия Black Ops) и которые любят играть с большим углом обзора (FOV).
Пример использования хроматической аберрации
Мы же отметим некоторые технологии сглаживания, которые заметно «мылят картинку». Это и классическое FXAA, и более новое TAA, и даже разрекламированное компанией NVIDIA «умное» сглаживание DLSS.
203848-320760_ZGK7ndsdaF_metro.jpg
А вы отключаете какие-нибудь эффекты в играх?
Размытие и эффект зернистости.
Всегда отключаю размытие в движении. При управлении на геймпаде может быть и не так ужасно ощущается и, наверное, даже может скрыть низкую частоту кадров, но на клавомыши это капец. Глубину резкости иногда оставляю, если прикольно сделано и эффект этот не показывает себя за два метра от персонажа. С эффектом кинопленки тоже не все однозначно. Иногда нормально, иногда нет. Также всегда стараюсь отключать тряску камеры при движении, если есть возможность. У меня от нее после пятого MGS рвотные позывы всегда и голова аж трещит, а она там жесткой была, фу.
размытие изображение в движении и всю фигню что мылит игру
А вы отключаете какие-нибудь эффекты в играх?
Post Processing, Blur, Bloom. Так как меня бесит замыливание.
Dof в играх что
In optics, particularly as it relates to film and photography, depth of field (DOF) is the distance between the nearest and farthest objects in a scene that appear acceptably sharp in an image. Although a lens can precisely focus at only one distance at a time, the decrease in sharpness is gradual on each side of the focused distance, so that within the DOF, the unsharpness is imperceptible under normal viewing conditions. Source: Wikipedia [en.wikipedia.org]
In English, Depth of Field is the focus of an object, that will blur out objects behind and/or in front of it, making the subject more sharp. It can be used to get the viewer to focus on a certain part of your scene.
A diagram of how Depth of Field works. Source; Wikipedia [en.wikipedia.org]
Adding DoF (Depth of Field) to Source FilmMaker is a relatively easy and painless task to accomplish. First of all, we will need our camera to be in the animation set. Make sure you have a scene camera, then click on the button, and chose the «Create Animation Set(s) for Existing Element(s)». There should be a camera named «Camera1». Add it to the animation set list.
Next, we will need to change the «focalDistance» of the camera. This is located underneath the sliders that have «Zero, Smooth, Jitter» etc. by default:
Go onto the Motion Editor (TAB by default) and drag the focalDistance slider either way. You should notice a purple sheet take up some of the screen. It will probably look something like this:
So let’s explain what it is. In short; whatever is inside the purple bit (the bit that clips through stuff) is what will be in focus. Anything behind, or in front, will become out of focus. We will also need to turn the slider «aperture» up. Nono, not the company. That went out of business years ago. The aperture is what applies the blur to the camera. Once you have turned it up to an amount you like (I personally like 0.5) and hit TAB. Now you should see some blur!
Here is what you should get:
Before:
After:
The difference of the shed in the background is the most obvious. Play around with different setting until you get one you like.
Congratulations! You have just learned how to add Depth of Field to the Source FilmMaker! You can use this to add some atmosphere to your scenes! I swear I’ve worded something wrong somewhere. Paranoia’s time to kick in!
Thanks for reading! Feedback is greatly appreciated.
Credit given where credit is due;
SSLR: Screen Space Local Reflections в AAA-играх
Привет, друг! В этот раз я опять подниму вопрос о графике в ААА-играх. Я уже разобрал методику HDRR (не путать с HDRI) тут и чуть-чуть поговорил о коррекции цвета. Сегодня я расскажу, что такое SSLR (так же известная как SSPR, SSR): Screen Space Local Reflections. Кому интересно — под кат.
Введение в Deferred Rendering
Для начала введу такое понятие как Deferred Rendering (не путать с Deferred Shading, т.к. последнее относится к освещению). В чем суть Deferred Rendering? Дело в том, что все эффекты (такие как освещение, глобальное затенение, отражения, DOF) можно отделить от геометрии и реализовать эти эффекты как особый вид постпроцессинга. К примеру, что нужно, чтобы применить DOF (Depth Of Field, размытие на дальних расстояниях) к нашей сцене? Иметь саму сцену (Color Map) и иметь информацию о позиции текселя (другими словами на сколько пиксель далеко от камеры). Далее — все просто. Применяем Blur к Color Map, где радиус размытия будет зависеть от глубины пикселя (из Depth Map). И если взглянуть на результат — чем дальше объект, тем сильнее он будет размыт. Так что же делает методика Deferred Rendering? Она строит так называемый GBuffer, который, обычно, в себя включает три текстуры (RenderTarget):
В случае с Color map, Normal map вроде все понятно, это обычные Surface.Color текстуры: пожалуй, за исключением того, что вектор нормали может лежать в пределах [-1, 1] (используется простая упаковка вектора в формат [0, 1]).
А вот ситуация с Depth map становится непонятной. Как же Depth map хранит в себе информацию о позиции пикселя, да еще и одним числом? Если говорить сильно упрощенно, трансформация примитива:
Дает нам экранные координаты:
И некоторую информацию о том, насколько “далеко” от камеры пиксель:
Исходя из этого UV нам не нужен, т.к. при рисовании обычного квада на весь экран он и так известен. Поэтому стоит хранить в карте глубины не позицию пикселя, а только глубину.
В дальнейшем мы сможем реконструировать позицию пикселя очень простым способом:
Напомню, что для построения GBuffer необходима такая методика как MRT (Multiple Render Targets), которая рисует модель сразу в несколько Render Target (причем в каждом RT содержится разная информация). Одно из правил MRT — размерность всех Render Target должна быть одинаковой. В случае Color Map, Normal Map — Surface.Color: 32-ух битная RT, где на каждый канал ARGB приходится по 8 бит, т.е. 256 градаций от 0 до 1.
Благодаря такому подходу мы можем применять сложные эффекты к любой геометрии, например самый популярный Screen Space эффект: SSAO (Screen Space Ambient Occlusion). Этот алгоритм анализирует буферы глубины и нормали, считая уровень затенения. Весь алгоритм я описывать не буду, он уже описывался на хабре, скажу лишь то, что задача алгоритма сводится к трассировки карты глубины: у нас есть набор случайных векторов, направленных из считаемого “пикселя” и нам нужно найти кол-во пересечений с геометрией.
Пример эффекта (слева без SSAO, справа с SSAO):
Так же Deferred Shading является Screen Space эффектом. Т.е. для каждого источника света на экране (без всяких оптимизаций) мы рисуем квад в режиме Additive в так называемый RenderTarget: Light Map. И зная мировую позицию “пикселя”, его нормаль, позицию источника света — мы можем посчитать освещенность этого пикселя.
Пример Deferred Shading (освещение выполнено отложено, после отрисовки геометрии):
Достоинства и проблемы Screen Space эффектов
Самый главный плюс Screen Space эффектов — независимость сложности эффекта от геометрии.
Самый главный минус — локальность всех эффектов. Дело в том, что мы постоянно будем сталкиваться с Information Lost, во многих случаях это сильно зависит обзора, поскольку SSE зависит от смежных глубин текселей, которые могут быть сгенерированы любой геометрией.
Ну и стоит отменить, что Screen Space эффекты выполняются полностью на GPU и являются пост-процессингом.
Наконец SSLR
После всей теории мы подошли к такому эффекту, как Screen Space Local Reflections: локальные отражения в экранном пространстве.
Для начала разберемся с перспективной проекцией:
Горизонтальный и вертикальный угол зрения задается FOV (обычно 45 градусов, я предпочитаю 60 градусов), в виртуальной камере они разные т.к. учитывается еще и Aspect Ratio (соотношение сторон).
Окно проекции (там, где мы оперируем UV-space данными) — это, что мы видим, на то мы проецируем нашу сцену.
Передняя и задняя плоскости отсечения это соответственно Near Plane, Far Plane, задаются так же в проекцию как параметры. Делать в случае Deferred Rendering слишком большим значением Far Plane стоит, т.к. точность Depth Buffer сильно упадет: все зависит от сцены.
Теперь, зная матрицу проекции и позицию на окне проекции (а так же глубину) для каждого пикселя мы вычисляем его позицию следующим образом:
После нам нужно найти вектор взгляда на этот пиксель:
В качестве CameraPosition выступает позиция камеры.
И найти отражение этого вектора от нормали в текущем пикселе:
Далее задача сводится к трассировке карты глубины. Т.е. нам нужно найти пересечение отраженного вектора с какой-либо геометрией. Понятное дело, что любая трассировка производится через итерации. И мы в них сильно ограниченны. Т.к. каждая выборка из Depth Map стоит времени. В моем варианте мы берем некоторое начальное приближение L и динамически меняем его исходя из расстояния между нашим текселем и позицией, которую мы “восстановили”:
Вспомогательные функции, перевод мировой точки на экранное пространство:
После завершения итераций мы имеет позицию “пересечения с отраженной геометрией”. А наше значение nuv будет проекцией этого пересечения на экран, т.е. nuv.xy – это UV координаты в экранном нашем пространстве, а nuv.z это восстановленная глубина (т.е. abs(GetDepth(nuv.xy)-nuv.z) должен быть очень маленьким).
В конце итераций L будет показывать расстояние отраженного пикселя. Последний этап — собственно добавление отражения к Color Map:
Разбавим теорию иллюстрациями, исходное изображение (содержание Color Map из GBuffer):
После компиляции шейдера (отражения) мы получим следующую картину (Color Map из GBuffer + результат шейдера SSLR):
Не густо. И тут стоит еще раз напомнить, что Space-Screen эффекты это сплошной Information Lost (примеры выделены в красные рамки).
Дело в том, что если вектор отражения выходит за пределы Space-Screen – информация о Color-карте становится недоступной и мы видим Clamping нашего UV.
Чтобы частично исправить эту проблему, можно ввести дополнительный коэффициент, который будет отражать “дальность” отражения. И далее по этому коэффициенту мы будем затенять отражение, проблема частично решается:
Результат, отражение умноженное на error (попытка убрать артефакт SSLR — information lost):
Уже лучше, но мы замечаем еще одну проблему, что будет, если вектор отразится в направлении камеры? Clamping’а UV происходить не будет, однако, несмотря на актуальность UV (x > 0, y > 0, x