Компьютерная графика. Lab7. Реализация простых спецэффектов с помощью Direct3D

Задание:
Задание на работу. Используя материалы из папки materials реализовать с помощью Direct3D следующие спецэффекты: зеркальное отражение, тени, туман. Результат работы должен быть подобен результату лабораторной работы № 4.

Выполнение:

Вершины и нормали для рисования усечённой четырёхугольной пирамиды были взяты из предыдущей лабораторной работы.

Тень рисуется с помощью матрицы тени, полученной из функции D3DXMatrixShadow. Для достижения наиболее реалистичной тени используется смешивание цветов. При этом возникает такой недостаток: при наложении двух теней происходит ещё большее затенение, чего не должно быть. Эта проблема решается с помощью буфера трафарета. Буфер трафарета настраивается таким образом, что рисуются только те пиксели, которые прорисовываются впервые.

Отражение рисуется с помощью функции D3DXMatrixReflect.. При этом изображение должно прорисовываться только в зеркале. чтобы устранить прорисовку на других поверхностях используется буфер трафарета.

Сначала на буфере трафарета рисуется зеркало. Для этого буфер трафарета настраивается так:

То есть в точки, входящие в прорисованное изображение заменяются в буфере трафарета на 0x1.

После этого отключается прорисовка в ZBUFFER.

Затем буфер трафарета настраивается таким образом, что прорисовка происходит только в той области, где расположено зеркало:

Потом очищается ZBUFFER. Меняется обход вершин на противоположный и происхзодит прорисовка отражения.

После этого включается режим смешивание цветов и прорисовывается прозрачное зеркало.

Вывод:

Использование буфера трафарета даёт возможность получать достаточно реалистичные эффекты.

Скачать ZIP-архив с исходными кодами

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *