Глава. 1. Введение в GLSL 18
Использование загрузчика функций для доступа к новейшей функциональности OpenGL 21
Использование GLM для математических вычислений 25
Использование типов GLM для передачи данных в OpenGL 26
Определение версий GLSL и OpenGL 27
Компиляция шейдера 29
Компоновка шейдерной программы 33
Передача данных в шейдер с использованием вершинных атрибутов и вершинных буферных объектов 36
Получение списка активных атрибутов и их индексов 45
Передача данных в шейдер с использованием uniform-переменных 48
Получение списка активных uniform-переменных 51
Использование uniform-блоков и uniform-буферов 53
Получение отладочных сообщений 59
Создание класса C++, представляющего шейдерную программу 62
Рассеянное отражение с единственным точечным источником света 68
Глава. 2. Основы шейдеров GLSL 66
Фоновый, рассеянный и отраженный свет 73
Использование функций в шейдерах 80
Реализация двустороннего отображения 83
Реализация модели плоского затенения 87
Использование подпрограмм для выбора функциональности в шейдере 89
Отбрасывание фрагментов для получения эффекта решетчатой поверхности 94
Глава. 3. Освещение, затенение и оптимизация 98
Освещение несколькими точечными источниками света 98
Освещение источником направленного света 101
Пофрагментное вычисление освещенности для повышения реализма 104
Использование вектора полупути для повышения производительности 107
Имитация узконаправленных источников света 110
Придание изображению «мультяшного» вида 113
Имитация тумана 116
Настройка проверки глубины 119
Глава. 4. Текстуры 122
Наложение двухмерной текстуры 123
Наложение нескольких текстур 128
Использование карт прозрачности для удаления пикселей 131
Использование карт нормалей 134
Имитация отражения с помощью кубической текстуры 140
Имитация преломления с помощью кубической текстуры 147
Наложение проецируемой текстуры 152
Отображение в текстуру 157
Использование объектов-семплеров 162
Глава. 5. Обработка изображений и приемы работы с экранным пространством 165
Применение фильтра выделения границ 166
Применение фильтра размытия по Гауссу 172
Преобразование диапазона яркостей HDR с помощью тональной компрессии 179
Эффект размытости на границах ярких участков 184
Повышение качества изображения с помощью гамма-коррекции 189
Сглаживание множественной выборкой 192
Отложенное освещение и затенение 197
Реализация порядконезависимой прозрачности 203
Глава. 6. Использование геометрических шейдеров и шейдеров тесселяции 215
Отображение точечных спрайтов с помощью геометрического шейдера 220
Наложение каркаса на освещенную поверхность 225
Рисование линий силуэта с помощью геометрического шейдера 233
Тесселяция кривой 242
Тесселяция двухмерного прямоугольника 247
Тесселяция трехмерной поверхности 252
Тесселяция с учетом глубины 257
Глава. 7. Тени 261
Отображение теней с помощью карты теней 261
Сглаживание границ теней методом PCF 272
Смягчение границ теней методом случайной выборки 275
Создание теней с использованием приема теневых объемов и геометрического
шейдера 282
Глава. 8. Использование шума в шейдерах 291
Создание текстуры шума с использованием GLM 293
Создание бесшовной текстуры шума 296
Создание эффекта облаков 298
Создание эффекта текстуры древесины 300
Создание эффекта разрушения 303
Создание эффекта брызг краски 305
Создание эффекта изображения в приборе ночного видения 308
Глава. 9. Системы частиц и анимация 312
Анимация поверхности смещением вершин 313
Создание фонтана частиц 316
Создание системы частиц с использованием трансформации с обратной связью 322
Создание системы частиц клонированием 331
Имитация пламени с помощью частиц 334
Имитация дыма с помощью частиц 337
Глава. 10. Вычислительные шейдеры 340
Реализация системы частиц с помощью вычислительного шейдера 344
Имитация полотнища ткани с помощью вычислительного шейдера 348
Определение границ с помощью вычислительного шейдера 355
Создание фракталов с помощью вычислительного шейдера 360
Предметный указатель 364
link
Добавить комментарий