230 likes | 510 Views
OpenGL. Графические библиотеки. 2D GAPI GDI XWindow GTK QT 3D DirectX OpenGL. OpenGL. Идеология Редкие версии Расширения Коллективное создание Кроссплатформенность Чисто программная реализация Mesa. OpenGL. Дополнительные библиотеки GLUT GLEW. Устройство OpenGL. Буфера
E N D
Графические библиотеки • 2D • GAPI • GDI • XWindow • GTK • QT • 3D • DirectX • OpenGL
OpenGL • Идеология • Редкие версии • Расширения • Коллективное создание • Кроссплатформенность • Чисто программная реализация Mesa
OpenGL • Дополнительные библиотеки • GLUT • GLEW
Устройство OpenGL • Буфера • Кадра • Трафарета • Глубины • Матрицы и стеки матриц • Матрица модели • Матрица проектирования • Примитивы
OpenGL • Примитивы • GL_POINTS • GL_LINES • GL_LINE_STRIP • GL_LINE_LOOP • GL_TRIANGLES • GL_TRIANGLE_STRIP • GL_TRIANGLE_FAN • GL_QUADS • GL_QUAD_STRIP • GL_POLYGON • Дисплейные списки • Дистанцибельность клиент-сервер )
Дисплейные списки • Дистанцибельность • клиент-сервер • излишняя информация – массивы вершин
Пример • Ну тут пример…
Идеология сборки сцены • Примитивы лопатятся и и в случае прохождения выбранных тестов (stensil, deapth) направляются в какие-то из буферов (color, death, stensil) там с ними происходит какое-нибудь действие. • А если мы попали в буфер цвета то происходит оцветнение
Оцветнение • Раскраска с использованием цветовой модели • Освещение • Смешивание • Текстурирование • mid-mapping • Точное • Линейное
Как сделать быстро • LOD – Level of details • Стандартные оптимизации - не выводить то что точно не видно • Не выводить то что за спиной • Использовать портальные техники • Stencil buffer • PVS – что такое? Кто помнит?
Как сделать красиво • Фокусировка • Отражение • 2 вывода на каждый кадр • сферическое наложение • Тени • Fake • Shadow Mapping • Shadow Volume
Fake • Ну… добавить в сцену еще черных треугольников
Shadow Volumes (Stensil shadows) • Общая идея алгоритма • Строим shadow volume – трехмерную границу света и тени • Рисуем сцену в Z-Buffer • Выводим в трафарет передние грани shadow volume и инкрементируем его если Z-тест прошел • Выводим в трафарет задние грани shadow volume и декрементируем его если Z-тест прошел • Там где в трафарете значение > начального – тень есть
Pros and cons • + • Попиксельная точность • - • Слабая расширяемость (высокий fillrate) • LOD • Volume сильно негладкий • Очень сложно делать мягкие тени
Shadow Mapping • Общая идея алгоритма • Выводим картинку один раз смотря из источника света • Строим карту глубин в специальной текстуре А. • Выводим сцену от камеры и если пиксель дальше от источника, чем то что в текстуре А, то он затенен
Что нужно от OpenGL • OpenGL 1.4 • ARB_depth_texture • ARB_shadow
Проблемы • Алиасинг глубины • Лечится аппаратно • Проективный алиасинг • Перспективный алиасинг • на близкие к камере точки может приходится очень мало текселей
как забороть? • теневые карты плоскостей • Храним не глубину, а уравнение всей плоскости в shadow map • Вывернуть сцену обратным преобразованием
ШЕЙДЕРЫ!!! • Ура товарищи! Будут шейдеры.
Ссылки • http://www.osp.ru/text/302/179130/ • http://ac.cs.nstu.ru/docs/OpenGL/OpenGL_RedBook_rus.pdf • http://www.tml.tkk.fi/Opinnot/Tik-111.500/2002/paperit/timo_ahokas.pdf • http://opengl.gamedev.ru/faqlinks/ • http://www.dtf.ru/articles/read.php?id=37761 • http://pmg.org.ru/nehe/index.html • http://www.opengl.org.ru/books/open_gl/