Цель курса - изучение основ визуализации и
результатов моделирования полей, сред и 3D-сцен методами компьютерной графики,
приобретение навыков шейдерного программирования и высокопроизводительных
вычислений на графических процессорах.
Рассмотрены: основы визуализации результатов
инженерно-научного моделирования и 3D-сцен (роль графики в научной визуализации.
Представление о графическом конвейере, обеспечивающем визуализацию 3D-сцен.
Место преобразований координат в графическом конвейере. Понятие локального
освещения. Различие между понятиями Lighting и Shading. Понятие о графических
API (DirectX, OpenGL). Визуализация полей и сред средствами OpenGL. Основы
аппаратной реализации графического конвейера: геометрический и пиксельный
шейдеры. Программируемость графического конвейера) и графические процессоры как
вычислительные устройства (переход к шейдерному программированию. Понятие о
шейдерных языках (GLSL, MS HLSL). Графические процессоры с шейдерами 4 версии.
Выполнение вычислений общего назначения на графическом процессоре (GPGPU).
Различие подходов NVIDIA и AMD. Средства от производителей (NVIDIA CUDA, AMD
Stream Computing), их достоинства и недостатки. Спецвычислители Tesla и Fermi от
NVIDIA. Понятие о межплатформенном языке гетерогенных вычислений OpenCL.
Ограничения шейдерного программирования. Основы метода трассировки лучей).
Курс предусматривает выполнение двух
практических работ (работа 1: общие принципы вычислений общего назначения на
графическом процессоре; освоение базовых техник GPGPU на примере задачи сложения
двух матриц (GLSL в контексте OpenGL): доступные форматы текстур и работа с
ними; технология использования шейдеров в основной программе (загрузка,
компиляция, передача параметров); вывод результата в текстуру с помощью буфера
кадров; работы 2: моделирование гравитационного взаимодействия N тел; пример
использования шейдеров для вычислений: задействует практически все важные
техники. Показаны подходы к совместному анализу теоретической и практической
производительности приложения, определению узких мест, простейшие подходы к
оптимизации производительности).
Для изучения курса необходимо знание основ
программирования на языке С/С++, С#. Желательно знание основ компьютерной
графики.