Главная страница
Навигация по странице:

  • Задание 1. Анализ поставленной задачи.

  • Задание 2. Сбор и анализ информации

  • Задание 3. Разработка решения поставленных задач.

  • Задание 4.

  • Исследовательская работа на тему - Методы затенения в видеоиграх. Методы затенения в видеоиграх. Отчет по учебной практике по получению навыков исследовательской работы


    Скачать 1.54 Mb.
    НазваниеОтчет по учебной практике по получению навыков исследовательской работы
    АнкорИсследовательская работа на тему - Методы затенения в видеоиграх
    Дата16.09.2021
    Размер1.54 Mb.
    Формат файлаpdf
    Имя файлаМетоды затенения в видеоиграх.pdf
    ТипОтчет
    #232971

    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


    написать администратору сайта