GLM 0.9.8 – nowa wersja z dużą ilością funkcji, poprawek i łatek

GLM 0.9.8 – nowa wersja z dużą ilością funkcji, poprawek i łatek

    przez -
    0 460
    GLM, OpenGL Mathematics
    GLM (openGL Mathematics) jest biblioteką matematyczną przeznaczoną do współpracy z OpenGL wykorzystywaną przez praktycznie każdy projekt oparty na tej drugiej. Ułatwia operacje na macierzach, wektorach, wykonywanie dowolnych transformacji i bardziej zaawansowane operacje na zwykłych liczbach, których na darmo szukać w bibliotece standardowej C++. Od poprzedniej wersji dodano do projektu kolejne 398 commitów.

    Nowe funkcje:
    • Więcej prawo- i lewo-ręcznych rzutów (aka projekcji) i kontrola klipów,
    • Dodanie funkcji compNormalize i compScale do GTX_component_wise,
    • Dodanie packF3x9_E1x5unpackF3x9_E1x5 do GTC_packing dla RGB9E5,
    • Dodanie un/packHalf do GTC_packing,
    • Dodanie un/packUnorm i un/packSnorm do GTC_packing,
    • Dodanie 16 bitowego pakowania i rozpakowania do GTC_packing,
    • Dodanie 8 bitowego pakowania i rozpakowania do GTC_packing,
    • Dodanie brakujących operatorów bvec*: && i ||,
    • Dodanie iround i uround do GTC_integer, szybkie zaokrąglanie na dodatnich wartościach,
    • Dodanie surowego SIMD* API,
    • Dodanie ‘wyrównanych’** kwalifikatorów,
    • Dodanie GTC_type_aligned z wyrównanymi typami vec,
    • Dodanie rozszerzeń funkcji GTC_functions,
    • Dodanie Kwaternion-owych wersji isnan i isinf,
    • Dodanie lowestBitValue do GTX_bit,
    • Dodanie GLM_FORCE_UNRESTRICTED_GENTYPE pozwalającego na nie-podstawowy genType.
    Poprawki:
    • Poprawienie SIMD oraz działania na kompilatorach GCC i Clang,
    • Poprawienie dokumentacji GTC_random linearRand,
    • Poprawienie dokumentacji GTC_reciprocal,
    • Poprawienie pokrycia GLM_FORCE_EXPLICIT_CTOR,
    • Poprawienie wsparcia wykrywania OpenMP dla Clang, GCC, ICC i VC,
    • Poprawienie GTX_wrap dla lepszej współpracy z SIMD,
    • Dodanie constexpr dla typów vec, mat, quat i dual_quat,
    • Dodanie wykrywania zbioru instrukcji NEON,
    • Dodanie wykrywania CPU Mips,
    • Dodanie wykrywania CPU PowerPC,
    • Wykorzystanie wbudowanej w CUDA funkcji jako implementację abs z kompilatorem CUDA.
    • Zastąpienie GLM_COMPILER_LLVMGLM_COMPILER_APPLE_CLANG uniwersalnym GLM_COMPILER_CLANG.
    • Brak ostrzeżeń kompilatora przy użyciu long long,
    • Dodanie większej ilości informacji podczas budowania programu.
    Łatki błędów:
    • Naprawienie literówki w GTX_extended_min_max,
    • Naprawienie intersectRayTriangle by uniknąć nieplanowanego, tylnego cullingu,
    • Naprawienie ostrzeżeń przy long long w C++98 na GCC i Clang,
    • Naprawienie ścisłych ostrzeżeń aliasingu,
    • Naprawienie brakującego przeciążenia vec1 dla funkcji length2 i distance2,
    • Naprawienie testu GLM, parametry kompilatora /fp:fast i /Za są niekompatybilne,
    • Naprawienie funkcji rzutowania kwaternionu na mat3mat3_castGTC_quaternion,
    • Naprawienie GLM_GTX_io dla CUDA.
    Przestarzałe funkcje:
    • Usunięcie definicji GLM_FORCE_SIZE_FUNC,
    • Oznaczenie jako przestarzałych:
      • GLM_GTX_simd_vec4,
      • GLM_GTX_simd_mat4,
      • GLM_GTX_simd_quat,
      • GLM_SWIZZLE (zastąpione przez GLM_FORCE_SWIZZLE),
      • GLM_MESSAGES (zastąpione przez GLM_FORCE_MESSAGES).

    Przykładowy kod wykorzystujący GLM możecie zobaczyć tutaj.

    *SIMD – Single Instruction Multiple Data, instrukcje (m.in. procesora) pozwalające na szybkie przeprowadzenie analogicznych operacji na dużych zbiorach danych. Procesory x86 udostępniają zwykle AVX, AVX2, SSE, SSE2, SSE3 itd., architektura ARM obsługuje zestaw instrukcji o bardzo wymownej nazwie – SIMD.
    **Wyrównanie – ułożenie danych w pamięci tak, by procesor mógł szybciej uzyskać do nich dostęp lub zaoszczędzić kilka bajtów kiedy jest to potrzebne. Przykładowo na części architektur adresacja stronami jest szybsza niż w wypadku bajtów.