Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 634699)
Контекстум
.

Программирование компьютерной графики. Современный OpenGL (4000,00 руб.)

0   0
Первый авторБоресков
ИздательствоМ.: ДМК Пресс
Страниц373
ID795210
АннотацияДанная книга посвящена основам современной компьютерной графики. Подробно рассматривается ряд чисто математических понятий, таких как матрицы и кватернионы, алгоритмы и API, а также физика освещения. Отдельные главы посвящены методу трассировки лучей и современному OpenGL. Рассматривается реализация ряда специальных эффектов при помощи шейдеров в OpenGL. Весь исходный код доступен в репозитории на github. Издание будет полезно всем, кто планирует работать с компьютерной графикой.
ISBN978-5-97060-779-4
УДК4.92
ББК32.973
Боресков, А.В. Программирование компьютерной графики. Современный OpenGL / А.В. Боресков .— Москва : ДМК Пресс, 2019 .— 373 с. — ISBN 978-5-97060-779-4 .— URL: https://rucont.ru/efd/795210 (дата обращения: 24.04.2024)

Предпросмотр (выдержки из произведения)

Программирование_компьютерной_графики._Современный_OpenGL.pdf
УДК 004.92 ББК 32.973 Б82 Б82 Программирование компьютерной графики. Современный OpenGL. – М.: ДМК Пресс, 2019. – 372 с.: ил. Боресков А. В. ISBN 978-5-97060-779-4 Данная книга посвящена основам современной компьютерной графики. Подробно рассматривается ряд чисто математических понятий, таких как матрицы и кватернионы, алгоритмы и API, а также физика освещения. Отдельные главы посвящены методу трассировки лучей и современному OpenGL. Рассматривается реализация ряда специальных эффектов при помощи шейдеров в OpenGL. Весь исходный код доступен в репозитории на github. Издание будет полезно всем, кто планирует работать с компьютерной графикой. УДК 004.92 ББК 32.973 Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-5-97060-779-4 © Боресков А. В., 2019 © Оформление, издание, ДМК Пресс, 2019
Стр.3
Содержание Посвящение ...............................................................................................................8 Благодарности ..........................................................................................................9 Введение ..................................................................................................................10 Предисловие от издательства ............................................................................13 Глава 1. Координаты и преобразования на плоскости ................................14 Преобразования на плоскости ......................................................................................... 20 Масштабирование ........................................................................................................ 21 Отражение .................................................................................................................... 22 Поворот ......................................................................................................................... 23 Сдвиг ............................................................................................................................. 24 Составные преобразования ......................................................................................... 25 Использование библиотеки GLM для работы с двухмерными векторами и матрицами ................................................................................................................. 26 Комплексные числа как координаты на плоскости ....................................................... 28 Глава 2. Основные геометрические алгоритмы на плоскости ...................30 Прямая и ее уравнение .................................................................................................... 31 Построение прямой, луча и отрезка по двум точкам ..................................................... 33 Определение положения точки относительно прямой или отрезка ............................ 33 Определение положения круга по отношению к прямой ............................................. 35 Прямоугольники со сторонами, параллельными осям координат , и их классификация по отношению к прямой ............................................................... 36 Нахождение расстояния от точки до ААВВ ..................................................................... 38 Определение угла между двумя прямыми ..................................................................... 38 Вычисление площади треугольника и многоугольника ................................................ 38 Определение направления обхода многоугольника ...................................................... 40 Проверка многоугольника на выпуклость ...................................................................... 40 Нахождение пересечения двух прямых .......................................................................... 42 Нахождение пересечения двух отрезков ........................................................................ 43 Нахождение расстояния и ближайшей точки от заданной точки к прямой, лучу и отрезку ................................................................................................................... 44 Проверка на попадание точки внутрь многоугольника ................................................ 45 Отсечение отрезка по выпуклому многоугольнику. Алгоритм Цируса–Бека .............. 47 Алгоритм отсечения Лянга–Барского ............................................................................. 50 Отсечение многоугольника. Алгоритм Сазерленда–Ходжмана .................................... 52 Отсечение многоугольника по выпуклому многоугольнику ........................................ 54
Стр.4
4  Содержание Барицентрические координаты ...................................................................................... 54 Построение выпуклой оболочки, алгоритм Грэхема ..................................................... 56 Триангуляция Делоне. Диаграмма Вороного ................................................................. 59 Реализация булевых операций над многоугольниками . Метод построчного сканирования. Разложение на трапеции ........................................................................ 65 Глава 3. Координаты и преобразования в пространстве. Кватернионы ...........................................................................................................69 Векторы и матрицы в пространстве ................................................................................ 69 Преобразования в пространстве. Базовые преобразования ......................................... 72 Пример: отражение относительно плоскости ................................................................ 75 Однородные координаты ................................................................................................. 76 Жесткие преобразования ................................................................................................. 78 Преобразования нормали ................................................................................................ 79 Проектирование. Параллельное проектирование ......................................................... 79 Перспективное проектирование ..................................................................................... 81 Углы Эйлера. Задание ориентации в пространстве ....................................................... 83 Понятие линейного пространства и его размерности . Многомерные векторы и преобразования ............................................................................................................. 85 Системы координат в пространстве. Переходы между различными системами координат .......................................................................................................................... 87 Ортогонализация Грамма–Шмидта ................................................................................ 88 Кватернионы. Задание поворотов и ориентации в пространстве при помощи кватернионов .................................................................................................................... 89 Использование библиотеки GLM для работы с 3- и 4-мерными векторами и матрицами, а также кватернионами ............................................................................ 92 Преобразование между кватернионом и базисом касательного пространства .......... 93 Собственные векторы и собственные числа матрицы................................................... 94 Глава 4. Основные геометрические алгоритмы в пространстве ...............96 Задание прямых и плоскостей в пространстве .............................................................. 96 Проекция точки на прямую ............................................................................................. 97 Проекция точки на плоскость .......................................................................................... 97 Задание прямой двумя точками. Задание плоскости тремя точками .......................... 97 Проведение плоскости через прямую и точку ............................................................... 98 Проверка прямых и отрезков на параллельность и перпендикулярность. Нахождение углов между прямыми и отрезками .......................................................... 98 Проверка, лежит ли отрезок или прямая на заданной плоскости ................................ 98 Проверка, пересекает ли отрезок/луч/прямая заданную плоскость ............................. 99 Проверка, пересекает ли луч заданный треугольник ................................................... 100 Нахождение пересечения луча и ОBB ........................................................................... 101 Нахождение пересечения луча и сферы ........................................................................ 103 Проверка, пересекает ли плоскость заданную сферу ................................................... 105 Проверка, пересекает ли плоскость заданный ААВВ ................................................... 105 Телесный угол. Проверка на попадание в него ............................................................ 106 Определение, лежат ли две заданные прямые в одной плоскости ............................. 106
Стр.5
Содержание  5 Классификация двух прямых в пространстве .............................................................. 107 Нахождение расстояния между двумя прямыми в пространстве ............................... 107 Проверка на пересечение двух треугольников в пространстве .................................. 108 Глава 5. Структуры для работы с большими наборами геометрических данных .....................................................................................110 Ограничивающие тела ................................................................................................... 110 Прямоугольный параллелепипед (ААВВ) ................................................................. 111 Сфера ........................................................................................................................... 115 k-DOP ........................................................................................................................... 116 Ориентированные ограничивающие прямоугольные параллелепипеды (ОВВ) ... 120 Иерархические структуры .............................................................................................. 124 Иерархия ограничивающих тел ................................................................................ 124 Тетрарные и восьмеричные деревья ........................................................................ 125 kD-деревья .................................................................................................................. 126 BSP-деревья ................................................................................................................ 131 R-деревья .................................................................................................................... 133 Равномерное разбиение пространства ..................................................................... 136 Глава 6. Цвет и его представление. Работа с цветом .................................139 Цветовая модель CIE XYZ ............................................................................................... 142 Цветовая модель RGB ..................................................................................................... 144 Цветовые модели CMY CMYK ........................................................................................ 145 Цветовая модель HSV ..................................................................................................... 147 Цветовое пространство HSL ........................................................................................... 150 Гамма-коррекция ........................................................................................................... 153 Цветовые пространства Y¢uv и YCbCr............................................................................ 154 Цветовые пространства L*u*v* и L*a*b* ........................................................................ 155 Цветовое пространство sRGB ......................................................................................... 156 Соглашения по дальнейшему использованию цветов ................................................. 156 Глава 7. Растеризация и растровые алгоритмы ..........................................157 Класс TgaImage и его использование ............................................................................ 159 Понятие связности растровой сетки. 4- и 8-связность ................................................ 160 Построение растрового представления отрезка. Алгоритм Брезенхейма ................. 161 Алгоритм Брезенхейма для окружности....................................................................... 166 Заполнение треугольника .............................................................................................. 169 Заполнение области, заданной цветом границы ......................................................... 174 Глава 8. Удаление невидимых линий и поверхностей ...............................178 Лицевые и нелицевые грани .......................................................................................... 180 Сложность по глубине .................................................................................................... 182 Загораживание ................................................................................................................ 182 Когерентность ................................................................................................................. 183
Стр.6
6  Содержание Удаление невидимых линий. Алгоритм Робертса ........................................................ 185 Понятие количественной невидимости. Алгоритм Аппеля ........................................ 185 Удаление невидимых граней. Метод трассировки лучей ............................................ 188 Метод буфера глубины (z-буфера) ................................................................................. 189 Метод иерархического z-буфера ................................................................................... 191 Алгоритмы, основанные на упорядочивании. Алгоритм художника ......................... 194 Использование BSP-деревьев для определения видимости ....................................... 196 Метод порталов .............................................................................................................. 198 Множества потенциально видимых граней (PVS). Расчет PVS при помощи порталов .......................................................................................................................... 200 Глава 9. Отражение и преломление света. Модели освещения ..............203 Немного физики ............................................................................................................. 203 Модель Ламберта (идеальное диффузное освещение) ................................................ 206 Модель Фонга .................................................................................................................. 207 Модель Блинна–Фонга ................................................................................................... 208 Изотропная модель Уорда .............................................................................................. 209 Модель Миннаэрта ......................................................................................................... 209 Модель Ломмеля–Зилиджера ........................................................................................ 210 Модель Страусса ............................................................................................................. 210 Простейшая анизотропная модель ............................................................................... 211 Анизотропная модель Уорда .......................................................................................... 214 Двулучевая функция отражательной способности (BRDF) .......................................... 214 Физически корректные модели освещения ................................................................. 216 Модель Орена–Найара ................................................................................................... 218 Модель Кука–Торранса ................................................................................................... 221 Диффузная модель Диснея ............................................................................................ 223 Модель Ашихмина–Ширли ............................................................................................ 223 Image-based lighting ........................................................................................................ 224 Сферические гармоники и их использование .............................................................. 226 Precomputed Radiance Transfer ....................................................................................... 230 Использование PRT в играх Far Cry 3 и FarCry 4 ........................................................... 231 Глава 10. Трассировка лучей ............................................................................233 Constructive Solid Geometry ............................................................................................ 243 Распределенная трассировка лучей .............................................................................. 248 Реализация спецэффектов при помощи распределенной трассировки лучей .......... 250 Фотонные карты ............................................................................................................. 254 Monte-Carlo path tracing ................................................................................................. 257 Глава 11. Взаимодействие с оконной системой. Библиотеки freeglut и GLFW .....................................................................................................259 Основы работы оконной системы ................................................................................. 259 Работа с библиотекой freeglut ........................................................................................ 260 Инициализация .......................................................................................................... 260
Стр.7
Содержание  7 Создание окна............................................................................................................. 261 Обработка сообщений ................................................................................................ 262 Заворачиваем freeglut в класс С++ ............................................................................ 265 Работа с библиотекой GLFW .......................................................................................... 266 Инициализация и обработка ошибок ....................................................................... 266 Создание окна............................................................................................................. 267 Обработка сообщений ................................................................................................ 268 Пример работы с OpenGL при помощи библиотеки Qt 5 ............................................ 271 Глава 12. Основы современного OpenGL .......................................................273 Основные концепции OpenGL. Графический конвейер .............................................. 274 Расширения OpenGL ....................................................................................................... 277 Отсечение примитивов .................................................................................................. 280 Вершинный шейдер ....................................................................................................... 280 Растеризация и система координат экрана .................................................................. 281 Фрагментный шейдер .................................................................................................... 283 Операции с фрагментами .............................................................................................. 284 Работа с буферами .......................................................................................................... 284 Атрибуты вершин. Вершинные массивы, VBO, VAO .................................................... 285 Вершинные массивы, задание атрибутов при помощи вершинных массивов ......... 285 Вывод примитивов ......................................................................................................... 291 Провоцирующая вершина .............................................................................................. 293 Буфер трафарета и работа с ним ................................................................................... 294 Тест глубины ................................................................................................................... 295 Полупрозрачность. Смешивание цветов ...................................................................... 295 Текстуры и работа с ними .............................................................................................. 296 Работа с текстурами ....................................................................................................... 308 Работа с шейдерами ....................................................................................................... 308 Готовое приложение ....................................................................................................... 312 Вспомогательные классы и работа с ними ................................................................... 314 Глава 13. Простейшие эффекты ......................................................................318 Отражение относительно плоскости ............................................................................. 318 Имитация отражения окружающей среды и преломления ......................................... 320 Точечные спрайты. Системы частиц ............................................................................. 325 Проективное текстурирование ...................................................................................... 329 Реализация основных моделей освещения .................................................................. 332 Построение теней при помощи теневых карт .............................................................. 334 Освещение с учетом микрорельефа (bump mapping) .................................................. 339 Имитация отражения окружающей среды с учетом карт нормалей .......................... 344 Вывод текста при помощи поля расстояний ................................................................ 345 Рендеринг меха ............................................................................................................... 347 Physically Based Rendering (PBR) .................................................................................... 352 Приложение. Язык GLSL .....................................................................................355 Предметный указатель .......................................................................................370
Стр.8

Облако ключевых слов *


* - вычисляется автоматически
.