Реализовать фрагментный и вершинный шейдеры на языке GLSL для вывода сцены на экран.
В шейдерах следует использовать следующие данные: набор координат вершин, образующий грани, набор нормалей и текстурные координаты в каждой вершине. Также необходимы следующие параметры источников света: положение, фоновый цвет, диффузный цвет, спектральный цвет. Значения цветов материала сцены задаются непосредственно в шейдерах и не передаются из основной программы (как правило, все составляющие определены белыми). Также в шейдер передаётся номер текстуры, как uniform переменная типа sampler2D. Все параметры, кроме номера текстуры могут быть переданы в шейдер через стандартные механизмы opengl: Координаты вершин, нормали и текстурные координаты – в блоке glBegin(GL_TRIANGLES)...glEnd(), параметры источников цвета с помощью функции задания параметров освещения. Для передачи вершинных данных (пространственные координаты, текстурные координаты, нормали) можно использовать любой стандартный механизм: блок glBegin(GL_TRIANGLES)...glEnd(), дисплейные списки, вершинные массивы или вершинные буферы VBO. Также основная программа должна предоставлять возможность навигации по сцене с помощью мыши, чтобы было возможно рассмотреть различные стороны сцены.
Модели:
• Сцена должна представлять некоторое помещение или территорию, по которой в дальнейшем сможет перемещаться некоторый объект
• Сцена должна содержать некоторые шероховатые поверхности, такие как кора дерева, поверхности плетеной мебели, дощатый, кирпичный или мозаичный пол, дорогу с небольшими ямами или трещинами, другие поверхности, обладающие рельефом, слишком мелким для отображения с помощью геометрии сцены
• Сцена должна содержать прозрачный или отражающий объект: зеркала, поверхности воды, хрустальные шары, лакированные поверхности и т.д.
• Для демонстрации работы рекомендуется задать по меньшей мере два точечных источника света, расположенных произвольно.
Читать дальше