Исследовательская работа на тему - Методы затенения в видеоиграх. Методы затенения в видеоиграх. Отчет по учебной практике по получению навыков исследовательской работы
Скачать 1.54 Mb.
|
0 МИНОБРНАУКИ РОССИИ ВЛАДИВОСТОКСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЭКОНОМИКИ И СЕРВИСА ИНСТИТУТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И СИСТЕМ ОТЧЕТ ПО УЧЕБНОЙ ПРАКТИКЕ ПО ПОЛУЧЕНИЮ НАВЫКОВ ИССЛЕДОВАТЕЛЬСКОЙ РАБОТЫ Студент гр. БИН-20-01 ________________________________ А.А. Рындин Руководитель канд. экон. наук, доцент, заведующий кафедрой _________________________________ Е.В. Кийкова канд. физ.-мат. наук, доцент, _________________________________ С.В. Сёмкин Владивосток 2021 1 Задание Тема исследовательской работы – Методы затенения в видеоиграх. Задание 1. Анализ поставленной задачи. Виды работ, исследуемые вопросы, которые должен решить студент: - развернутое описание поставленной задачи с точки зрения ее актуальности, истоков возникновения проблемы, возможных форм проявлений и последствий; - анализ содержания проблемы с точки зрения сфер, которые она затрагивает (социальная, экономическая, политическая и т.п.); - разбивка поставленной цели исследования на задачи, разработка плана исследования, выбор методов исследования. Задание 2. Сбор и анализ информации - определение перечня информации/данных, необходимых для анализа и поиска решения поставленной задачи; - определение источников необходимой информации/данных; - сбор и систематизация информации/данных. Задание 3. Разработка решения поставленных задач. - формулировка выводов и заключений по результатам проведенного анализа информации; - разработки и обоснования решений поставленных задач на основе полученных результатов исследования; - определение возможных направлений дальнейших исследований анализируемой проблемы. Задание 4. Оформить отчет и документы практики в печатном и электронном виде и представить на защиту в соответствии с требованиями организации и в установленные графиком практики сроки. 2 Содержание Введение ................................................................................................................................. 3 1 Плоская модель затенения .............................................................................................. 4 2 Затенение по методу Гуро .............................................................................................. 5 3 Затенение методом Фонга .............................................................................................. 6 4 Создание затенений через Vertex Color ........................................................................ 7 5 Lightmapping .................................................................................................................... 8 6 Ambient occlusion............................................................................................................. 9 7 Ray Tracing ..................................................................................................................... 12 Заключение ........................................................................................................................... 13 Список используемых источников .................................................................................... 14 3 Введение Создание реалистичного освещения в видеоиграх – непростая задача. С каждым новым проектом технологии освещения улучшаются, используются различные, сложные алгоритмы. Но достаточно весомый вклад в натуральность картинки вносят именно затенения между разными объектами. Методы затенения, применяемые в индустрии, могут быть совершенно разными. Какие наиболее эффективные, оптимизированные, а какие наиболее эффектные, именно данные вопросы стоят во главе исследовательской работы. Цель практики: научиться основам проведения аналитических обзоров и оформлению технической документации согласно действующим стандартам. Основная задача практики: проанализировать разные методы создания затенения в видеоиграх. 4 1 Плоская модель затенения Плоская модель затенения или flat shading – одна из самых простых в реализации. Цвет вычисляется в каждой вершине треугольника, после – для плоскости вычисляется усреднённое значение, в которое оно и окрашивается. Данный способ создания освещения является достаточно быстрым по скорости работы, но на визуализированной модели отчетливо видны переходы между гранями. Рисунок 1 – Сфера и куб с моделью плоского затенения При использовании flat shading невозможно добиться плавного перехода света от одного полигона к другому, потому что переходы никак не сглаживаются. Сколько не увиличивай колличество граней, ребра будут отчетливо видны. [1] Рисунок 2 – Сфера с моделью плоского затенения (около 32000 треугольников) Данный метод отлично подходит для игр в стилитсике low-poly. Из-за своей простоты и уникального вида – нашёл своё место среди независимых разработчиков. 5 2 Затенение по методу Гуро Затемнение по методу Гуро или Gouraud shading – способ создания модели освещения, при котором грани закрашиваются не полностью цветом, а плавно изменяющимся оттенком. Такой эффект достигается при помощи интерполяции. Свет линейно сглаживаются между вершинами. [2] Рисунок 3 – Сфера с моделью затенения по методу Гуро яПомимо неплохого результата в визуализации, к сожалению у данного метода есть и минусы, при низком уровне детализации переходы освещённости будут смазанны или “потеряются”, из-за недостаточного колличества точек, нужных для более плавного перехода.[1] Рисунок 4 – Смазанный блик при низкой детализации, в модели затенения Гуро Данный метод использовался в ранних 3d проектах, или в играх, где не использовали текстуры. Например, заметить такой эффект можно в Super Mario 64, Final Fantasy VII, Little Big Adventure.[4] 6 3 Затенение методом Фонга Затенение методом Фонга или Phong shading – затемнение данного метода базируется на сглаживании света по грани, то есть цвет рассчитывается отдельно для каждого пикселя объекта. [2] Рисунок 5 – Сфера с затемнением по методу Фонга Данная техника является более требовательная к вычислетельным ресурсам, но на самом деле сейчас даже крайне бюджетные видеокарты способны справится с данным методом, за счёт огромного параллелизма в обработке данных. Во всех современных видеоиграх используется именно просчет попиксельного освещения, он даёт наиболее лучшие результаты. [1] Рисунок 6 – Сферы с использованием плоского затенения, модели Гуро и модели Фонга. На рисунке выше можно увидеть разницу в освещении тремя разными методами. 7 4 Создание затенений через Vertex Color Vertex Color – параметр внутри модели, который задаёт цвет вершины. Казалось бы, в чем тогда отличие от затенения Гуро? А вот отличие в том, что затенения либо строятся автоматически в 3d пакете, либо “рисуются” человеком вручную, а после “вшиваются” в модель. [5] Данный метод подходит к статичным объектам, для которых было бы лишним высчитывать освещение постоянно. При помощи цветов вершин можно создать иллюзию того, что рядом есть источник света, причем неважно каким цветом он будет светить. [7] Но из-за того что цвет задаётся вершинам, у данного метода есть такая же проблема, как у модели по Гуро: качество зависит от детализации. [6] Рисунок 7 – Отображение модели с запеченным Vertex Color Основные вычисления делаются ещё на этапе моделирования, поэтому данный метод не будет нагружать систему, видеокарте нужно просто отобразить модель, с атрибутом. Рисунок 8 – Сцена с включенным и выключенным Vertex Color Такой способ затенений можно заметить в играх, начала 2000х, в частности использующих движок RenderWare, в нём метод повершинного освещения является одним из основных, хотя может комбинироваться с динамическими тенями. [8] 8 5 Lightmapping Текстура тени или Lightmapping – используется для имитации освещения и создания теней, подходит для статических объектов. Данный метод хорош тем, что он не нагружает систему, ведь освещение не высчитывается вообще, похоже на Vertex Color, но главное отличие в том, что цвета не определяются в вершинах, а записываются в отдельную карту, которую применяют к материалу, соответственно качество запеченного освещения напрямую зависит от разрешения текстуры, в которую будут помещены тени. [9] Запеченное освещение можно увидеть во всех современных крупных проектах, ведь данный метод выдаёт достаточно реалистичный результат. [10] Рисунок 9 – Сцена с использованием технологии lightmapping Принцип работы не особо замысловатый. Во время создания карты, она заполняется черным цветом, а дальше идет просчет всех источников света. Если источник света влияет на участок карты, то она изменяет свой цвет. Зачастую, дальше на тень применяют фильтрацию или размытие, для более приятного вида. [10] 9 6 Ambient occlusion Ambient occlusion – модель затенения, которая вычисляет интенсивность света, доходящего до точки поверхности. В отличие от других затенений, AO является глобальным методом, что означает, что значение каждой точки объекта высчитывается с условием рядом стоящих объектов. Также данную модель можно запечь в текстуру, но делается это не часто, ведь в отличие от lightmap, её можно использовать для динамических объектов. [11] Затенение фонового освещения – это общее название технологии, но в видеоиграх используются разные его вариации, самые распространенные: SSAO, HBAO+, HDAO и VXAO. [12] SSAO или Screen Space Ambient Occlusion – Модель создания затенения в экранном пространстве. Алгоритм реализован при помощи шейдера, который анализирует глубину сцены. Для каждого пикселя шейдер вычисляет глубину, а затем на основе полученного результата, получает затенение в точке. Данная процедура может быть достаточно трудоёмка для просчетов, и чтоб упростить её, обработка идет с «случайно вращающимся ядром», ориентация которого повторяется каждые N пикселей экрана. В финальном изображении высокочастотные искажения удаляются, при помощи размытия. [13] SSAO хорош тем, что работает одинаково и равномерно с каждым пикселем на экране, задействует только GPU компьютера, легко интегрируется в любой современный игровой движок. Из недостатков: зависит от угла обзора камеры, что означает, что затенения будут генерироваться для любой видимой поверхности, это может привести к некоторым искажениям. SSAO тяжело корректно сгладить на границах объектов. [13] Рисунок 10 – Использование SSAO в игровой сцене HBAO + или Horizon Based Ambient Occlusion+ – модель ambient occlusion от компании NVidia. Суть метода заключается в том, что он использует максимальный угол, который можно построить из точки, без пересечения с объектами. Чем больше угол, тем светлее точка. [14] 10 При использовании данного метода, освещение получается более качественным, чем при SSAO, но требуется больше вычислительных ресурсов, поэтому при HBAO затенения рендерятся в более низком разрешении, что приводит к мерцаниям текстур. Проблема мерцания текстур была исправлена в HBAO+, где для расчета используется шахматный метод, тоесть используется часть предыдущего кадра, и часть нового. Это повысило производительность и исправило ошибки. [15] Рисунок 11 – Сравнение картинки без AO, с использование SSAO и HBAO+ HDAO или High Definition Ambient Occlusion – алгоритм от компании AMD, принципом работы компания не делится, но алгоритм явно отличающийся от HBAO и SSAO. Отчетливо различия заметны на рядом стоящих объектах, у них не образуется “общего” ореола. [15] Рисунок 12 – Сравнение разных методов Ambient occlusion в игре Far Cry 3 VXAO или Voxel Accelerated Ambient Occlusion – технология от NVidia которая позволяет высчитывать рассеянное и зеркальное освещение с несколькими отражениями, также учитывать и материалы объекта, например технология корректно работает с предметами, которые должны преломлять свет. Данный метод будет в 3-4 раза медленнее чем HBAO+, но получаемый кадр намного лучше, ведь в нем отсутствуют проблемы с ореолами и некорректные вычисления вблизи границ экрана, потому что при VXAO используется совершенно другой принцип. Вместо 11 вычисления данных в экранном пространстве, информация собирается из воксельного представления сцены, которое охватывает большую сцену вокруг камеры. А использованием воксельных конусов позволяет влиять на окружающее пространство даже тем объектам, которые не видны в пределах камеры. Рисунок 13 – Сравнение SSAO и VXAO VXAO отлично справляется с динамическими сценами, если какие-то данные не сохранились между кадрами, то их повторный просчет не будет слишком затратны. Расчеты высокодетализированной игровой сцены с несколькими миллионами треугольников, выполняется примерно за 3-5 миллисекунд на GPU GeForce GTX 980. [16] Несмотря на количество реализации ambient occlusion и различиях в методах, современные проекты спокойно могут содержать в себе различные технологии, переключить которые можно будет выбрав нужный вам параметр в настройках. В зависимости от ресурсов пользователя можно использовать разные способы создания фонового освещения. Если вычислительных мощностей не много, следует использовать SSAO, при больших мощностях –HDAO и HBAO+, если GPU позволяет без огромной потери производительности вычислить предыдущие методы, то следует попробовать VXAO. 12 7 Ray Tracing Трассировка лучей – технология освещения, базирующаяся на физически-корректном поведении лучей, исходящих от источников освещения. Метод достаточно сложный и для представления в реальном времени – относительно молодой. Для таких вычислений в современных GPU идут отдельные ядра (RTX ядра у NVidia) или встроенные в ядра блоки (Ray Accelerator у AMD). Понятно, что затенения, получаемые данным способом, являются самыми затратными по ресурсам, но и самыми реалистичными. Рисунок 14 – Сравнение отражений с выключенным и включённым Ray Tracing в игре Battlefield V Принцип работы заключается в том, что исходящие лучи из камеры добираются до объекта и изменяются по параметрам, заданным в его материале. Затенения рассчитываются с учетом наложения нескольких текстур на один пиксель, что определяет конечный её цвет. Конечно используется Ray Tracing не в “чистом” виде, а проходя через разные фишки, оптимизирующие процесс. Рисунок 15 – Принцип работы Ray Tracing Например, большинство игр используют растеризацию, процесс, который для отрисовки каждого объекта, находит проекцию полигонов объекта на экран, с использованием буфера глубины, содержащего расстояние до плоскости экрана, чтоб ближние треугольники перекрывали дальние при рендеринге. [17] 13 Заключение Проведя исследования разных способов затенения в видеоиграх, я обрел знания о принципах их работы и об особенностях методов. Затенения являются одной их основных составляющих приятной картинки, и получить их не всегда просто. Самым революционным и качественным методом на данный момент является трассировка лучей, но не каждый способен приобрести GPU, способный использовать данную технологию. Я считаю, что пока видеокарты с поддержкой ray tracing’a не станут более доступны, мы будем использовать методы Ambient Occlusion, они дают неплохие результаты, при этом вычислительных мощностей требуют меньше. Но если у проекта в особенностях указано что он должен запускаться на максимально слабом устройстве (по современным меркам), то его спасут Vertex Color, запеченные тени и не требующие больших вычислений затенения (по Гуро, методом Фонга или плоские затенения). 14 Список используемых источников 1) Статья «Модели затенения. Плоская модель. Затенение по Гуро и Фонгу»[Электронный ресурс] – https://compgraphics.info/3D/lighting/shading_model.php 2) Лекция Ивановой Ю.А. ТПУ – «Методы закраски» [Электронный ресурс] – https://portal.tpu.ru/SHARED/j/JBOLOTOVA/academic/ComputerGraphics/8.%20Методы%20зак раски_2019.pdf 3) Презентация «Shading in OpenGL» [Электронный ресурс] – http://graphics.cs.cmu.edu/nsp/course/15-462/Spring04/slides/08-shading.pdf 4) Список видеоигр с использованием Gouraud shading [Электронный ресурс] – https://www.uvlist.net/groups/info/gouraudshading 5) Статья «Карта типа Vertex Color» [Электронный ресурс] – http://www.3dsmax5.ru/k22/index-karta_tipa_vertex_color.htm 6) Статья «Radiocity lighting and vertex color» [Электронный ресурс] – http://gtamodding.ru/wiki/Radiocity_lighting_and_vertex_color 7) Статья «Цвета вершин и интерактивная раскраска» [Электронный ресурс] – https://studfile.net/preview/3379347/page:21/ 8) Статья RenderWare [Электронный ресурс] - https://ru.wikipedia.org/wiki/RenderWare 9) Руководство «Lightmapping в деталях» [Электронный ресурс] – https://sites.google.com/site/rusewyl/grafika/osvesenie/lightmapping-v-detalah 10) Статья «Lightmap» [Электронный ресурс] – https://en.wikipedia.org/wiki/Lightmap 11) Статья «Ambient Occlusion» [Электронный ресурс] – https://ru.wikipedia.org/wiki/Ambient_occlusion 12) Статья «Доступно, об AMBIENT OCCLUSION» [Электронный ресурс] – https://cgmichael.files.wordpress.com/2014/10/ambient_occlusion_article.pdf 13) Статья «Screen Space Ambient Occlusion» [Электронный ресурс] – https://en.wikipedia.org/wiki/Screen_space_ambient_occlusion 14) Статья «Horizon Based Ambient Occlusion» [Электронный ресурс] – https://karonator.ru/page/11 15) Статья «Как работает затенение в компьютерных играх» [Электронный ресурс] – https://www.iguides.ru/main/other/kak_rabotaet_zatenenie_v_kompyuternykh_igrakh/ 16) Статья «VXAO: Voxel Ambient Occlusion» [Электронный ресурс] – https://developer.nvidia.com/vxao-voxel-ambient-occlusion 17) Статья «DirectX Raytracing: трассировка лучей в реальном времени» [Электронный ресурс] – http://www.adsl.kirov.ru/projects/articles/2018/07/16/directx-raytracing/#n1 |