Язык шейдеров OpenGL (OpenGL Shading Language, GLSL) является фундаментальной основой программирования с использованием OpenGL. Его применение дает беспрецедентную гибкость и широту возможностей, позволяет использовать мощь графического процессора (GPU) для реализации улучшенных приемов отображения и даже для произвольных вычислений. Версия GLSL 4.x несет еще более широкие возможности, благодаря введению новых видов шейдеров: шейдеров тесселяции и вычислительных шейдеров.
В этой книге рассматривается весь спектр приемов программирования на GLSL, начиная с базовых видов шейдеров – вершинных и фрагментных, – и заканчивая геометрическими, вычислительными и шейдерами тесселяции. Здесь приводится множество практических примеров – от наложения текстур, воспроизведения теней и обработки изображений до применения искажений и манипуляций системами частиц. Прочтя ее, вы сможете задействовать GPU для решения самых разных задач, даже тех, что никак не связаны с формированием изображений.
Издание предназначено для программистов трехмерной графики, желающих задействовать в своих проектах всю мощь современных программных и аппаратных средств.
Предисловие
Глава 1 Введение в GLSL
Введение
Использование загрузчика функций для доступа к новейшей функциональности OpenGL
Использование GLM для математических вычислений
Использование типов GLM для передачи данных в OpenGL
Определение версий GLSL и OpenGL
Компиляция шейдера
Компоновка шейдерной программы
Передача данных в шейдер с использованием вершинных атрибутов и вершинных
буферных объектов
Получение списка активных атрибутов и их индексов
Передача данных в шейдер с использованием uniform-переменных
Получение списка активных uniform-переменных
Использование uniform-блоков и uniform-буферов
Получение отладочных сообщений
Создание класса C++, представляющего шейдерную программу
Рассеянное отражение с единственным точечным источником света
Глава 2 Основы шейдеров GLSL
Введение
Фоновый, рассеянный и отраженный свет
Использование функций в шейдерах
Реализация двустороннего отображения
Реализация модели плоского затенения
Использование подпрограмм для выбора функциональности в шейдере
Отбрасывание фрагментов для получения эффекта решетчатой поверхности
Глава 3 Освещение, затенение и оптимизация
Введение
Освещение несколькими точечными источниками света
Освещение источником направленного света
Пофрагментное вычисление освещенности для повышения реализма
Использование вектора полупути для повышения производительности
Имитация узконаправленных источников света
Придание изображению «мультяшного» вида
Имитация тумана
Настройка проверки глубины
Глава 4 Текстуры
Введение
Наложение двухмерной текстуры
Наложение нескольких текстур
6 Содержание
Использование карт прозрачности для удаления пикселей
Использование карт нормалей
Имитация отражения с помощью кубической текстуры
Имитация преломления с помощью кубической текстуры
Наложение проецируемой текстуры
Отображение в текстуру
Использование объектов-семплеров
Глава 5 Обработка изображений и приемы работы
с экранным пространством
Введение
Применение фильтра выделения границ
Применение фильтра размытия по Гауссу
Преобразование диапазона яркостей HDR с помощью тональной компрессии
Эффект размытости на границах ярких участков
Повышение качества изображения с помощью гамма-коррекции
Сглаживание множественной выборкой
Отложенное освещение и затенение
Реализация порядконезависимой прозрачности
Глава 6 Использование геометрических шейдеров
и шейдеров тесселяции
Введение
Отображение точечных спрайтов с помощью геометрического шейдера
Наложение каркаса на освещенную поверхность
Рисование линий силуэта с помощью геометрического шейдера
Тесселяция кривой
Тесселяция двухмерного прямоугольника
Тесселяция трехмерной поверхности
Тесселяция с учетом глубины
Глава 7 Тени
Введение
Отображение теней с помощью карты теней
Сглаживание границ теней методом PCF
Смягчение границ теней методом случайной выборки
Создание теней с использованием приема теневых объемов и геометрического
шейдера
Глава 8 Использование шума в шейдерах
Введение
Создание текстуры шума с использованием GLM
Создание бесшовной текстуры шума
Создание эффекта облаков
Создание эффекта текстуры древесины
Создание эффекта разрушения
Создание эффекта брызг краски
Содержание 7
Создание эффекта изображения в приборе ночного видения
Глава 9 Системы частиц и анимация
Введение
Анимация поверхности смещением вершин
Создание фонтана частиц
Создание системы частиц с использованием трансформации с обратной связью
Создание системы частиц клонированием
Имитация пламени с помощью частиц
Имитация дыма с помощью частиц
Глава 10 Вычислительные шейдеры
Введение
Реализация системы частиц с помощью вычислительного шейдера
Имитация полотнища ткани с помощью вычислительного шейдера
Определение границ с помощью вычислительного шейдера
Создание фракталов с помощью вычислительного шейдера
Предметный указатель
Название: OpenGL 4. Язык шейдеров. Книга рецептов
Автор: Дэвид Вольф
Год: 2013
Жанр: программирование, компьютерная
Издательство: ДМК Пресс
Язык: Русский
Формат: pdf
Качество: eBook
Страниц: 370
Размер: 6 MB
Скачать Дэвид Вольф - OpenGL 4. Язык шейдеров. Книга рецептов (2013)