|
Библиотека предназначена для решения в основном пространственных задач. Для таких областей, как графика, физическое моделирование библиотека подходит оптимально.
MGML это шаблонная библиотека на С++, уникальность которой заключена в сочетании удобства, скорости работы и общности кода. Такое сочетание достигается при помощи специального метода метапрограммирования на основе шаблонов С++.
MGML обладает следующими преимуществами:
-
Автоматическая поддерка SSE операций для 4D векторов и матриц. Может быть отключена коментарием всего одной директивы #include.
-
Скорость. Библиотека разработана для трассировки лучей, поэтому оптимизирована в критичных для этой задачи местах.
-
Возможность использования с CUDA.
-
Параметризованные типы. Возможность работать с векторами и матрицами произвольной размерности.
Библиотека имеет один настраиваемый параметр. Макрос DISCARD_FOURTH_DIMENTION == 1 позволяет работать с 4D векторами как с 3D, избегая лишних операций при отключенной SSE оптимизации(важно для приложений с CUDA где SSE недопустимо).
Следует отметить, что этот макрос проверяется всего-лишь в одной строчке кода. Директива #if не используется для переключения реализаций, как можно было бы подумать при тривиальной реализации.
enum { k = (DISCARD_FOURTH_DIMENTION && n==4) ? 3:n};
скачать
MGML 3.0
http://ray-tracing.ru/upload/free/MGML_MATH/MGML_EXAMPLE_19_June_2009.zip
В версии 3.0 возвращены члены данных .x .y и .z заместо функций .x() .y() и .z(). Версия 3.0 более не компилируется под CUDA. Это сделано намеренно т.к. для CUDA нужен как можно более простой код. Компилятор nvcc глючный. Писать переносимый код нужно на ином уровне. Можно использовать typedef VECTOR<3, float> float3; для компиляции кода как на GPU так и на CPU. Версия 3.0 рассчитана именно на это.
MGML 2.1 (работает с CUDA 2.1)
http://ray-tracing.ru/upload/free/MGML_MATH/MGML_MATH_feb2008.zip
MGML 2.0
http://ray-tracing.ru/upload/free/MGML_MATH/MGML_MATH_EXAMPLE_17_nov_2008.zip
http://ray-tracing.ru/upload/free/MGML_MATH/MGML_MATH_17_February_2008.zip
MGML 1.0
последнее обновление:
http://ray-tracing.ru/upload/free/MGML_MATH/MGML_MATH_06_February_2008.zip
старые версии:
http://ray-tracing.ru/upload/free/MGML_MATH/MGML_MATH_feb2008.zip
http://ray-tracing.ru/upload/free/MGML_MATH/MGML_MATH_30Jan2008.zip
|