на школьную страницу...

Визуализация трехмерных фракталов средствами GPU

Бакалаврская работа А.В.Жаренова, 2013 г.

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

А одна из наиболее вычислительно сложных на сегодня задач - посторение различных фракталов и на плоскости и, тем более, в трехмерном пространстве.

    Оглавление
    Введение.                                   4
    Фракталы. Определения и примеры.            5
    Ковер Серпинского.                          5
    Множество Мандельброта.                     6
    3D фракталы и особенности их визуализации.  7
    Губка Менгера.                              7
    Мандельбокс.                                8
    Оболочка Мандельброта.                      9
    Трассировка лучей в 3D графики.            11
    Метод Орен-Найера:                         16
    Метод Ламберта:                            16
    Метод Фонга:                               17
    Тени.                                      18
    Применение трассировки лучей для 
    визуализации 3-х мерных фракталов.         20
    Методы оптимизации трассировки лучей.      23
    Выводы:                                    25
    Список литературы.                         26

Визуализация будет использовать средства видео ускорителей, потому что требуется выполнять огромное количество операций для каждого из пикселей выводимого изображения. Также за счет ускорения вычисления точек принадлежащих данным фрактальным множествам, возможно не просто вывести точки входящие в данное множество, но и посчитать освещения, чтобы лучше передать объем таких интересных и сложных структур.

Все представленные далее фракталы реализованы на языке программирования GLSL, он используется для программирования шейдеров, программ с которыми работает GPU.





Теперь сравним производительность.

Без использования данной оптимизации, один кадр выводится 130 миллисекунд, на видеокарте NVidia Geforce 8800 GTS 512, с использованием данной оптимизации мы получаем на вычисление 1 кадра с минимальным разрешением уходит 20 миллисекунд, на вычисления второго кадра уходит 40 миллисекунд, и на вычисления 3-его кадра уходит 50 миллисекунд, да в итоге получается 120 миллисекунд. Не слишком большой прирост, а именно 10 миллисекунд.

Зато в результате данной оптимизации мы получаем первый кадр, и можем наблюдать, хотя и в плохом качестве, наш фрактал, уже после 20 миллисекунд, что эквивалента 50 кадрам в секунду и вполне достаточно что бы наблюдать нашу картинку в реальном времени.


Научный руководитель - А.В.Гурьянов.

Flag Counter