cypok / d3d

Tasks from my computer graphics lessons

Home Page:http://sites.google.com/site/nsucgcoursematerials/tasks

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Computer Graphics course

sites.google.com/site/nsucgcoursematerials/

Задача №1 Вводная задача.

Ветка cube

Написать приложение, рисующее в окне кубик. Реализовать вращение камеры вокруг центра сцены (точка 0, 0, 0) и кубика (мышкой или нажатием клавиш).

Ограничения

  • Запрещается использовать библиотеку D3DX для генерации матриц.

  • Рисовать только Indexed Geometry.

Замечания

  • Для преобразования вершин использовать Vertex Shader Assembly 1.1.

  • Можно использовать функции D3DX для векторных и матричных операций.

Задача №2 Реализация morphing-анимации.

Ветка morphing

Написать приложение, генерирующее полигональную модель сферы путём тесселяции “сдвоеной” пирамиды. Реализовать морфинг сфера <-> сдвоенная пирамида.

Ограничения

  • Запрещается использовать библиотеку D3DX для генерации матриц.

  • Рисовать только Indexed Geometry.

  • Для преобразования вершин использовать Vertex Shader Assembly 1.1.

Замечания

  • Разбиение на треугольники - однородное.

  • Степень тесселяции должна легко регулироваться.

  • Цвет вершин произвольный.

Задача №3 Реализация простой скелетной анимации.

Ветка skinning

Написать приложение, генерирующее полигональную модель цилиндра. Реализовать скелетную анимацию цилиндра.

Ограничения

  • Запрещается использовать библиотеку D3DX для генерации матриц.

  • Рисовать только Indexed Geometry.

  • Тип примитива - Triangle Strip.

  • Для преобразования вершин использовать Vertex Shader Assembly 1.1.

Замечания

  • “Кость” задаётся матрицей вращения.

  • Угол поворота должен зависеть от времени.

  • Веса вершин - вещественные числа, равномерно увеличивающиеся от 0 (для вершин на дне цилинда) до 1 (для вершин на верху цилиндра).

Задача №4 Реализация локальной модели освещения.

Ветка lighting

Написать приложение, реализующее освещение вершин трёхмерной сцены тремя источниками освещения.

Ограничения

  • Должно быть три источника света: точечный, беск. удаленный, конусный.

  • Для точечного и конусного должен быть учет ослабления интенсивности от расстояния.

  • Вращение как вокруг сцены, так и вращение самих объектов.

  • Запрещается использовать библиотеку D3DX для генерации матриц.

  • Рисовать только Indexed Geometry.

  • Для преобразования вершин использовать Vertex Shader Assembly 1.1.

Замечания

  • Использовать модель Фонга (ambient + specular + diffuse).

  • Для освещения использовать пирамидосферу и болтающийся цилиндр.

  • Блик (specular) расчитывать для всех источников освещения.

  • Цвет вершин лучше выбрать одинаковым для всей фигуры.

Задача №5 Реализация алгоритма “tangent-space bump mapping”.

Ветка bumpmapping

Написать приложение, реализующее алгоритм “tangent-space parallax bump mapping”.

Ограничения

  • Версия вершинных шейдеров - 1.1.

  • Версия пиксельных шейдеров - 1.4.

  • Запрещается использовать HLSL.

  • Запрещается использовать библиотеку D3DX для генерации матриц.

  • Рисовать только Indexed Geometry.

  • Расчёт tangint-space basis векторов должен производиться “вручную”, без использовывания сторонних библиотек.

  • Текстуры и карты нормалей добыть самостоятельно.

Замечания

  • В качестве полигональной модели использовать сферу.

  • Сфера должна освещаться одним точечным источником (ambient + diffuse + specular)

  • Нормализация векторов в пиксельном шейдере: normalization cube-map или первые члены ряда тейлора для функции length(v).

  • Приветствуется написание приложения, генерирующего по карте высот карту нормалей.

Задача №7 Реализация примитивных теней методом проекции.

Ветка shadow

Написать приложение, реализовав в нём тени методом проекции.

Ограничения

  • Проектирование геометрии на плоскость и вычисление цвета тени должно происходить в вершинном шейдере.

  • Тень должна быть полупрозрачной с аттенюацией.

  • Запрещается использовать библиотеку D3DX для генерации матриц.

  • Рисовать только Indexed Geometry.

  • Все шейдеры на vertex shader assembly 1.1.

Замечания

  • Тип источника освещения - точечный.

  • Для отенения использовать пирамидосферу и болтающийся цилиндр.

  • Отеняемой должна быть плоскость, генерируемая автоматически.

  • Тень, выходящая за плоскость должна отсекаться, используя stencil buffer.

About

Tasks from my computer graphics lessons

http://sites.google.com/site/nsucgcoursematerials/tasks


Languages

Language:C++ 100.0%