Skip to content

bfierz/vcl

Repository files navigation

VCL

Build Status Build status Build Status codecov

Open in Gitpod

The Visual Computing Library (VCL) started as a repository for algorithms and data structures developed during my PhD student time. As the name says it was used to visual computing techniques, which in this case were visual simulations.

Requirements

Assumes C++14 capable compiler with some compatibility for older MSVC versions.

C++ feature matrices: A good overview on the feature support for different compiler versions can be found here: https://en.cppreference.com/w/cpp/compiler_support

Detailed reports at the vendor's pages:

Supported compilers:

  • MSVC >= 2017
  • Clang >= 3.9
  • GCC >= 5.1
  • Intel ICC >= 17

Compatibility

VCL generally supports the CPU architectures x86, x86-64, and ARM. Test coverage for ARM is still in development. As host platforms, VCL supports Windows, Linux and MacOS.

Packed External Libraries

VCL depends on a number of external libraries. Some are placed directly into the source tree. Most, however, are managed as linked submodule.

Library License Version Source Notes
Abseil Common Libraries (C++) Apache-2.0 20211102 https://abseil.io Release 20211102
C++ commandline parsing MIT 3.0.0 https://github.com/jarro2783/cxxopts In source tree
Eigen 3 MPL2 3.4.0 https://eigen.tuxfamily.org
Expected lite BSL-1.0 0.6.2 https://github.com/martinmoene/expected-lite In source tree
Google Test BSD-3 1.11.0 https://github.com/google/googletest
Google Benchmark Apache-2.0 1.5.5 https://github.com/google/benchmark
JSON for Modern C++ MIT 3.6.1 https://github.com/nlohmann/json
Tet-tet intersection Custom https://github.com/erich666/jgt-code/blob/master/Volume_07/Number_2/Ganovelli2002/tet_a_tet.h Refactored implementation. The license is included here

The SIMD module uses support library to provide trigonometry, logarithm and power functions. The SSE and NEON implementations are taken directly from Julien Pommier's homepage. The AVX version is thanks to Giovanni Garberoglio and the AVX512 to JishinMaster.