sites.google.com/site/nsucgcoursematerials/
Ветка cube
Написать приложение, рисующее в окне кубик. Реализовать вращение камеры вокруг центра сцены (точка 0, 0, 0) и кубика (мышкой или нажатием клавиш).
-
Запрещается использовать библиотеку D3DX для генерации матриц.
-
Рисовать только Indexed Geometry.
-
Для преобразования вершин использовать Vertex Shader Assembly 1.1.
-
Можно использовать функции D3DX для векторных и матричных операций.
Ветка morphing
Написать приложение, генерирующее полигональную модель сферы путём тесселяции “сдвоеной” пирамиды. Реализовать морфинг сфера <-> сдвоенная пирамида.
-
Запрещается использовать библиотеку D3DX для генерации матриц.
-
Рисовать только Indexed Geometry.
-
Для преобразования вершин использовать Vertex Shader Assembly 1.1.
-
Разбиение на треугольники - однородное.
-
Степень тесселяции должна легко регулироваться.
-
Цвет вершин произвольный.
Ветка skinning
Написать приложение, генерирующее полигональную модель цилиндра. Реализовать скелетную анимацию цилиндра.
-
Запрещается использовать библиотеку D3DX для генерации матриц.
-
Рисовать только Indexed Geometry.
-
Тип примитива - Triangle Strip.
-
Для преобразования вершин использовать Vertex Shader Assembly 1.1.
-
“Кость” задаётся матрицей вращения.
-
Угол поворота должен зависеть от времени.
-
Веса вершин - вещественные числа, равномерно увеличивающиеся от 0 (для вершин на дне цилинда) до 1 (для вершин на верху цилиндра).
Ветка lighting
Написать приложение, реализующее освещение вершин трёхмерной сцены тремя источниками освещения.
-
Должно быть три источника света: точечный, беск. удаленный, конусный.
-
Для точечного и конусного должен быть учет ослабления интенсивности от расстояния.
-
Вращение как вокруг сцены, так и вращение самих объектов.
-
Запрещается использовать библиотеку D3DX для генерации матриц.
-
Рисовать только Indexed Geometry.
-
Для преобразования вершин использовать Vertex Shader Assembly 1.1.
-
Использовать модель Фонга (ambient + specular + diffuse).
-
Для освещения использовать пирамидосферу и болтающийся цилиндр.
-
Блик (specular) расчитывать для всех источников освещения.
-
Цвет вершин лучше выбрать одинаковым для всей фигуры.
Ветка 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).
-
Приветствуется написание приложения, генерирующего по карте высот карту нормалей.
Ветка shadow
Написать приложение, реализовав в нём тени методом проекции.
-
Проектирование геометрии на плоскость и вычисление цвета тени должно происходить в вершинном шейдере.
-
Тень должна быть полупрозрачной с аттенюацией.
-
Запрещается использовать библиотеку D3DX для генерации матриц.
-
Рисовать только Indexed Geometry.
-
Все шейдеры на vertex shader assembly 1.1.
-
Тип источника освещения - точечный.
-
Для отенения использовать пирамидосферу и болтающийся цилиндр.
-
Отеняемой должна быть плоскость, генерируемая автоматически.
-
Тень, выходящая за плоскость должна отсекаться, используя stencil buffer.