OpenGL API Алексей Игнатенко (MSU Graphics & Media Lab) Алексей Игнатенко (MSU Graphics & Media Lab)

Презентация:



Advertisements
Похожие презентации
OpenGL Лекция 2.. Преобразование координат Преобразования координат.
Advertisements

Освещение и текстурирование в OpenGL Астана 2004 Лекция 10.
{ OpenGL Лекция 3 ( ). float ambient[4] = {0.0, 0.0, 0.0, 1.0}; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient); // RGBA интенсивность всей сцены.
Фильтрация текстур. Пиксельные операции. Астана 2004 Лекция 11.
Растеризация Текстуры Композиты. На лекции 4-е задание Задача растеризации Текстурирование Определение Текстурные отображения для сферы, тора, цилиндра.
GPU vs. CPU 681 млн. транзисторов Тактовая частота 575Mhz * 768MB 1.8 Ghz памяти DDR4 ~650 млн. транзисторов Тактовая частота ~700Mhz 1GB 1.1 Ghz памяти.
Текстуры. Композиты Лекция 11 Алексей Игнатенко. На прошлой лекции Удаление невидимых поверхностей Удаление нелицевых граней Алгоритм художника Двоичное.
Астана ( )Компьютерная графика (лекция 6) ВВЕДЕНИЕ В OPENGL Лекция 6.
OpenGL Лекция 3. Построение тени Проективные тени Объемные тени Карты теней Мягкие тени.
GPU vs. CPU 302 млн. транзисторов Тактовая частота 550Mhz 1GB 850x2 MHz памяти 380 млн. транзисторов Тактовая частота 650Mhz 1GB 775x2 MHz памяти Тактовая.
Прямые. Кривые. Поверхности Лекция 12. Алексей Игнатенко.
Компьютерная графика. Лекция 5 Моделирование трехмерных поверхностей. Закрашивание.
Графический конвейер Преобразования геометрии Александр Шубин.
Современные графические технологии ИЛИ OpenGL и графические процессоры 2010.
Лекция 13 Метод трассировки лучей Астана Трассировка лучей через сферическую каплю воды Луч 7 -- луч Декарта [1637]
Графический 3D-конвейер Определение состояния объектов (Situation modeling) Определение соответствующих текущему состоянию геометрических моделей (Geometry.
Компьютерная графика. Лекция 6 М ЕТОДЫ ТЕКСТУРИРОВАНИЯ И АНТИАЛИАСИНГ.
Аффинные преобразования Графический конвейер Астана. Лекция 7.
Лекция 8 25февраля 2003 г. (Астана) Видовые преобразования Закраска Гуро и Фонга Удаление невидимых линий и поверхностей.
Юрий Крячко, 1C. * Наложение теней от эффекта на объекты (очень сложная задача при попадании объекта внутрь) * Самозатенение эффекта.
Транксрипт:

OpenGL API Алексей Игнатенко (MSU Graphics & Media Lab) Алексей Игнатенко (MSU Graphics & Media Lab)

Сегодня на лекции Обзор архитектуры OpenGLОбзор архитектуры OpenGL МатериалыМатериалы ОсвещениеОсвещение Работа с текстурамиРабота с текстурами Пиксельные операцииПиксельные операции –смешивание –альфа-тест Обзор архитектуры OpenGLОбзор архитектуры OpenGL МатериалыМатериалы ОсвещениеОсвещение Работа с текстурамиРабота с текстурами Пиксельные операцииПиксельные операции –смешивание –альфа-тест

Архитектура OpenGL

Архитектура OpenGL (2) Два конвейера: Обработка вершин (геометрических примитивов)Обработка вершин (геометрических примитивов) –Точки, линии, многоугольники Обработка пикселей и изображенийОбработка пикселей и изображений Текстурирование объединяет два типа примитивов Два конвейера: Обработка вершин (геометрических примитивов)Обработка вершин (геометрических примитивов) –Точки, линии, многоугольники Обработка пикселей и изображенийОбработка пикселей и изображений Текстурирование объединяет два типа примитивов

Операции OpenGL Типичные операции Нарисовать что-либоНарисовать что-либо Изменить способ рисованияИзменить способ рисования Типичные операции Нарисовать что-либоНарисовать что-либо Изменить способ рисованияИзменить способ рисования

Материалы Свойства материала glMaterialfv(face, property, value)glMaterialfv(face, property, value) Свойства материала glMaterialfv(face, property, value)glMaterialfv(face, property, value) GL_DIFFUSE Базовый цвет объекта GL_SPECULAR Цвет блика GL_AMBIENT Цвет без освещения GL_EMISSIONСвечение GL_SHININESS Гладкость поверхности

Освещение Определение источников света: glLightfv( light, property, value ); Light – номер источника света начиная с GL_LIGHT0Light – номер источника света начиная с GL_LIGHT0 Property – параметрыProperty – параметры –Цвета –Положение и тип –Затухание Определение источников света: glLightfv( light, property, value ); Light – номер источника света начиная с GL_LIGHT0Light – номер источника света начиная с GL_LIGHT0 Property – параметрыProperty – параметры –Цвета –Положение и тип –Затухание

Цвета источника света Цвет источника GL_AMBIENTGL_AMBIENT GL_DIFFUSEGL_DIFFUSE GL_SPECULARGL_SPECULAR Цвет источника GL_AMBIENTGL_AMBIENT GL_DIFFUSEGL_DIFFUSE GL_SPECULARGL_SPECULAR

Типы источников света OpenGL поддерживает два типа источников: Точечные (локальные) источникиТочечные (локальные) источники Направленные (бесконечно удаленные)Направленные (бесконечно удаленные) Тип источника света контролируется значением координаты w (x, y, z, w): w = 0 направленный источникw = 0 направленный источник w = 1 точечный источникw = 1 точечный источник OpenGL поддерживает два типа источников: Точечные (локальные) источникиТочечные (локальные) источники Направленные (бесконечно удаленные)Направленные (бесконечно удаленные) Тип источника света контролируется значением координаты w (x, y, z, w): w = 0 направленный источникw = 0 направленный источник w = 1 точечный источникw = 1 точечный источник Пример

Определение положения источника света Модельно-видовая матрица влияет на положение источника света Разные эффекты в зависимости от того, когда определяется источник светаРазные эффекты в зависимости от того, когда определяется источник света –Видовые координаты (перед LookAt) –Мировые координаты (после LookAt) –Модельные координаты Модельно-видовая матрица влияет на положение источника света Разные эффекты в зависимости от того, когда определяется источник светаРазные эффекты в зависимости от того, когда определяется источник света –Видовые координаты (перед LookAt) –Мировые координаты (после LookAt) –Модельные координаты Пример

Локализация эффекта освещения OpenGL поддерживает сфокусированные источники света GL_SPOT_DIRECTIONGL_SPOT_DIRECTION GL_SPOT_EXPONENTGL_SPOT_EXPONENT GL_SPOT_CUTOFFGL_SPOT_CUTOFF OpenGL поддерживает сфокусированные источники света GL_SPOT_DIRECTIONGL_SPOT_DIRECTION GL_SPOT_EXPONENTGL_SPOT_EXPONENT GL_SPOT_CUTOFFGL_SPOT_CUTOFF Пример

Внимание: разбиение OpenGL интерполирует цвет между вершинами. => разбиение плоскостей очень сильно влияет на качество освещения.OpenGL интерполирует цвет между вершинами. => разбиение плоскостей очень сильно влияет на качество освещения. Пример

Затухание источника света Уменьшение интенсивности света с увеличением расстояния GL_CONSTANT_ATTENUATIONGL_CONSTANT_ATTENUATION GL_LINEAR_ATTENUATIONGL_LINEAR_ATTENUATION GL_QUADRATIC_ATTENUATIONGL_QUADRATIC_ATTENUATION Уменьшение интенсивности света с увеличением расстояния GL_CONSTANT_ATTENUATIONGL_CONSTANT_ATTENUATION GL_LINEAR_ATTENUATIONGL_LINEAR_ATTENUATION GL_QUADRATIC_ATTENUATIONGL_QUADRATIC_ATTENUATION

Текстурирование Наложение изображения на геометрический примитив Текстуры используются для: Имитации материаловИмитации материалов Уменьшения геометрической сложностиУменьшения геометрической сложности Создания отраженийСоздания отражений Наложение изображения на геометрический примитив Текстуры используются для: Имитации материаловИмитации материалов Уменьшения геометрической сложностиУменьшения геометрической сложности Создания отраженийСоздания отражений

Наложение текстуры Три шага Определение изображенияОпределение изображения –Загрузить или создать изображение –Передать в OpenGL Назначить текстурные координаты вершинамНазначить текстурные координаты вершинам Определить параметры текстурыОпределить параметры текстуры Три шага Определение изображенияОпределение изображения –Загрузить или создать изображение –Передать в OpenGL Назначить текстурные координаты вершинамНазначить текстурные координаты вершинам Определить параметры текстурыОпределить параметры текстуры

Наложение текстуры (2) Более детальный процесс определения текстуры: Определить текстурный объект Определить способ фильтрации текстуры Задать текстурную функцию Задать способ размножения текстуры Привязать текстурный объект Включить текстурирование Определить текстурные координаты Координаты также могут генерироваться автоматически) Более детальный процесс определения текстуры: Определить текстурный объект Определить способ фильтрации текстуры Задать текстурную функцию Задать способ размножения текстуры Привязать текстурный объект Включить текстурирование Определить текстурные координаты Координаты также могут генерироваться автоматически)

Режимы наложения текстуры Режим фильтрацииРежим фильтрации –При увеличении (minification), при уменьшении (magnification) Способ размноженияСпособ размножения –Ограничение (clamp) или повторение (repeat) Текстурная функцияТекстурная функция –Способ смешения цвета текстуры с цветом примитива (замещение, перемножение) Режим фильтрацииРежим фильтрации –При увеличении (minification), при уменьшении (magnification) Способ размноженияСпособ размножения –Ограничение (clamp) или повторение (repeat) Текстурная функцияТекстурная функция –Способ смешения цвета текстуры с цветом примитива (замещение, перемножение)

Фильтрация текстур MagnificationMinification glTexParameteri(target, type, mode) type = GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER

Текстурные функции Контролируют способ наложения текстуры glTexEnv{fi}(GL_TEXTURE_ENV, prop, param)glTexEnv{fi}(GL_TEXTURE_ENV, prop, param) Режимы:Режимы: –GL_MODULATE –GL_BLEND (GL_TEXTURE_ENV_COLOR задает цвет) –GL_REPLACE Контролируют способ наложения текстуры glTexEnv{fi}(GL_TEXTURE_ENV, prop, param)glTexEnv{fi}(GL_TEXTURE_ENV, prop, param) Режимы:Режимы: –GL_MODULATE –GL_BLEND (GL_TEXTURE_ENV_COLOR задает цвет) –GL_REPLACE

Способы размножения текстуры

Пример

Генерация текстурных координат Автоматическая генерация текстурных координат glTexGen{ifd}[v]() Режимы генерации координат: GL_OBJECT_LINEARGL_EYE_LINEARGL_SPHERE_MAP Координаты считаются как расстояние от заданной плоскости Ax+By+Cz+D=0 Автоматическая генерация текстурных координат glTexGen{ifd}[v]() Режимы генерации координат: GL_OBJECT_LINEARGL_EYE_LINEARGL_SPHERE_MAP Координаты считаются как расстояние от заданной плоскости Ax+By+Cz+D=0 Пример

Работа с буфером кадра

Alpha test Отбрасывание пикселей в зависимости от значения альфа-компоненты цвета glAlphaFunc( func, value);glAlphaFunc( func, value); glEnable(GL_ALPHA_TEST);glEnable(GL_ALPHA_TEST); Удобно использовать для маскирования текстур Отбрасывание пикселей в зависимости от значения альфа-компоненты цвета glAlphaFunc( func, value);glAlphaFunc( func, value); glEnable(GL_ALPHA_TEST);glEnable(GL_ALPHA_TEST); Удобно использовать для маскирования текстур

Blending Режим смешения комбинирует цвет пикселей с ранее выведенными в буфер кадра glBlendFunc( src, dst )glBlendFunc( src, dst ) Режим смешения комбинирует цвет пикселей с ранее выведенными в буфер кадра glBlendFunc( src, dst )glBlendFunc( src, dst )

Вопросы?