OpenVDB - Sparse volume data structure and tools

Overview

OpenVDB

License CII Best Practices Slack

OpenVDB AX Nano Houdini
core ax nano hou

Website | Discussion Forum | Documentation

OpenVDB is an open source C++ library comprising a novel hierarchical data structure and a large suite of tools for the efficient storage and manipulation of sparse volumetric data discretized on three-dimensional grids. It was developed by DreamWorks Animation for use in volumetric applications typically encountered in feature film production.

Development Repository

This GitHub repository hosts the trunk of the OpenVDB development. This implies that it is the newest public version with the latest features and bug fixes. However, it also means that it has not undergone a lot of testing and is generally less stable than the production releases.

License

OpenVDB is released under the Mozilla Public License Version 2.0, which is a free, open source software license developed and maintained by the Mozilla Foundation.

The trademarks of any contributor to this project may not be used in association with the project without the contributor's express permission.

Contributing

OpenVDB welcomes contributions to the OpenVDB project. Please refer to the contribution guidelines for details on how to make a contribution.

Developer Quick Start

The following provides basic installation examples for the core OpenVDB library. Other components, such as the python module, OpenVDB AX, NanoVDB and various executables, may require additional dependencies. See the build documentation for help with installations.

Linux

Installing Dependencies (Boost, TBB, Blosc)
apt-get install -y libboost-iostreams-dev
apt-get install -y libboost-system-dev
apt-get install -y libtbb-dev
apt-get install -y libblosc-dev
Building OpenVDB
git clone [email protected]:AcademySoftwareFoundation/openvdb.git
cd openvdb
mkdir build
cd build
cmake ..
make -j4 && make install

macOS

Installing Dependencies (Boost, TBB, Blosc)
brew install boost
brew install tbb
brew install c-blosc
Building OpenVDB
git clone [email protected]:AcademySoftwareFoundation/openvdb.git
cd openvdb
mkdir build
cd build
cmake ..
make -j4 && make install

Windows

Installing Dependencies (Boost, TBB, Blosc)

Note that the following commands have only been tested for 64bit systems/libraries. It is recommended to set the VCPKG_DEFAULT_TRIPLET environment variable to x64-windows to use 64-bit libraries by default. You will also require Git, vcpkg and CMake to be installed.

vcpkg install zlib:x64-windows
vcpkg install blosc:x64-windows
vcpkg install tbb:x64-windows
vcpkg install boost-iostreams:x64-windows
vcpkg install boost-system:x64-windows
vcpkg install boost-any:x64-windows
vcpkg install boost-algorithm:x64-windows
vcpkg install boost-uuid:x64-windows
vcpkg install boost-interprocess:x64-windows
Building OpenVDB
git clone [email protected]:AcademySoftwareFoundation/openvdb.git
cd openvdb
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=<PATH_TO_VCPKG>\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -A x64 ..
cmake --build . --parallel 4 --config Release --target install

Building OpenVDB AX

OpenVDB AX depends on the core OpenVDB library. See the build documentation for all available AX component options:

git clone [email protected]:AcademySoftwareFoundation/openvdb.git
cd openvdb
mkdir build
cd build
cmake -DOPENVDB_BUILD_AX=ON ..
make -j4 && make install

Building NanoVDB

NanoVDB can be built with and without OpenVDB support. To see full build instructions see the NanoVDB build documentation

Building Without OpenVDB Support

git clone [email protected]:AcademySoftwareFoundation/openvdb.git
cd openvdb/nanovdb/nanovdb  # Build from the subdirectory
mkdir build
cd build
cmake ..
make -j4 && make install

Building With OpenVDB Support

git clone [email protected]:AcademySoftwareFoundation/openvdb.git
cd openvdb
mkdir build
cd build
cmake -DOPENVDB_BUILD_NANOVDB=ON ..
make -j4 && make install
Comments
  • CMake Refactor

    CMake Refactor

    Aims of this PR:

    • Validate CMake build system for Linux/MacOs
    • Homogenize FindXxx.cmake modules and all CMakeLists
    • Improve and document dependency requirements for all OpenVDB components
    • Add missing build options for the core, python, binaries and houdini components
    • Doxygen documentation for dependencies and cmake installation.

    Incorporates the following PRs:

    • https://github.com/AcademySoftwareFoundation/openvdb/pull/150 - OpenEXR fixes
    • https://github.com/AcademySoftwareFoundation/openvdb/pull/268 - ILMBase fixes

    Does not address:

    • https://github.com/AcademySoftwareFoundation/openvdb/pull/160 - I've added NumPy support, but it requires CMake 3.14. This PR adds NumPy support for any version using another custom Find module. We should discuss minimum CMake version.
    • https://github.com/AcademySoftwareFoundation/openvdb/pull/171 - GNU vars. Not incorporated, but should be done
    • https://github.com/AcademySoftwareFoundation/openvdb/pull/240 - Some additional Windows and Maya updates which need investigating

    Some important things that have not been done in this PR:

    • glfw, blosc, log4cplus. numpy auto options (use if available)

    Known issues:

    • I am getting cmake warnings on some paltforms when building against houdini and providing my own boost version or my own ilmbase/openexr version (for Houdini 17.5). To be honest I think these warnings are valid as libHalf, for example, is called the same thing in dsolib/ as it is in any old install of ilmbase. But I'd like to try and resolve these as loads are output.
    • NumPy support does not work with Boost 1.65 as it needs Boost::numpy. Better NumPy support will be added in a separate PR.

    I realise there are a lot of changes here. I can refactor the branch history if it's desired.


    Test environments include CentOS, travis and MacOS. Note this PR does not include the travis update. This can be found here:

    https://github.com/Idclip/openvdb/tree/cmake_travis

    • CentOS 7 - g++, runtime tested with and without a Houdini 17 installation. In both cases, uses the same library versions as Houdini.
    • MacOS 10.14.3 - clang++, runtime tested with and without a Houdini 17 installation. Of note, tested with Blosc 1.16 where there are issues, Boost 1.68, TBB 2019, ZLIB 1.2.11.
    • Travis - Latest build - https://travis-ci.com/Idclip/openvdb/builds/104392461

    General Changes

    • Copyright dates
    • Consistent formatting and white space changes
    • Fixed a number of CMake warnings with newer versions
    • Bumped the minimum CMake requirement to 3.3 to be able to use IN_LIST functionality for CMake LISTs
    • Explicitly set CMake policy CMP0048 everywhere which represents to monitoring of _ROOT variables (which our FindXx.cmake modules use)
    • Added support for Log4cplus
    • Remove GLFW <= 2 support
    • Set minimum versions for GLFW, Blosc and Boost
    • Fixed all incorrect dependencies and compile flags for each target
    • Full rpath updates for houdini, bianries, core and python installations

    FindXxx/OpenVDBXxxSetup.cmake Modules

    • Fully updated to be consistent in terms of variable names, controls, functionality and results
    • Fixed a number of bugs and improved library searches
    • Find modules now attempt to use pkg-config as part of the search, setting dependent cflags where possible
    • Added component support to ILMBase OpenEXR, TBB, OpenVDB
    • Added imported target support for all dependencies (and updated all vdb cmakes to use this)
    • Converted FindGLFW, FindMaya and FindHDK to setup scripts, some of which wrap FIND_PACKAGE calls (as these packages use the dependent packages cmake). For Maya and Houdini, these ensure the correct include and lib paths are set for dependencies.

    OpenVDBXxxSetup.cmake

    • I've added these to wrap FindPackage calls to packages which are installed with their own CMake scripts. These wrappers allow for additional handling of _ROOT and pkg-config calls to try as many things as possible to attempt to locate the installation, reporting the locations consisently using PackageHandleStandardArgs.

    OpenVDBHoudiniSetup/OpenVDBMayaSetup

    • Find Houdini/Maya installations. For Houdini, uses the Houdini cmake to setup libs
    • For Houdini, adds missing libHoudiniRAY target for VRAY procedural
    • Explicitly sets dependency variables to point to the Houdini/Maya installation, ensuring all configured packages use the correct libraries and removing the need for the user to provide these
    • Sets OPENVDB_HOUDINI_ABI, read by the root CMake to configure the OpenVDB ABI

    Root CMake

    • Full documentation of dependencies for core library components
    • Specifically disable in source builds
    • Revamped options to ensure advanced/deprecated options are hidden
    • Added specific handling for CMAKE_BUILD_TYPE
    • Migrated the Houdini detection stage to the root CMake to enabled subsequent dependency configuration for all packages (see OpenVDBHoudiniSetup.cmake)
    • Removed the limitation of building the python plugin with Houdini if >= H16.5
    • More controls for default behaviour for OPENVDB_ABI_VERSION_NUMBER, including automatic detection from Houdini installations
    • Consolidated OpenVDB Version detection into FindOpenVDB.cmake
    • Moved doxygen generation to root as it doesn't rely on anything else

    Core CMake

    • Now only represents the core library
    • Added OPENVDB_TOOLS_RAYTRACER_USE_EXR option
    • Added a Blosc version warning
    • Removed directory install command in favour of specific header file installations (resolving recursive directory issues)
    • Added an option to specify the target library name

    Binaries/Unit Tests CMake

    • New CMake to represent binaries
    • Added granular binary controls
    • Fixed RPathing issues
    • New CMake to represent unit tests

    Python CMake

    • Fixed a compile issue on MacOS
    • Added OPENVDB_PYTHON_WRAP_ALL_GRID_TYPES option
    • Improved python component requirement handling with FindPython
    • Added BOOST_PYTHON_NAMESPACE_VERSIONING
    • Added a PYTHON_VERSION cached variable
    • Added missing pyPointGrid.cc
    • Fixed header installation
    • Added NumPy support (but requires CMake 3.14)

    Houdini CMake

    • Updated to use Houdini CMake for library handling
    • Added optional and cache variables to control SESI dso tagging
    • Added variables to explicitly control install locations
    • Improve blosc defines applied to SOPs
    • Added missing houdini/GEO_VDBTranslator.cc to openvdb_houdini lib
    • Improved SOP list formatting
    • Added a dummy target representing all DSOs (not the shared library)
    • Added VRAY_OpenVDB_Points target
    • Added install rules for icons
    • Changed the behaviour of OPENVDB_HOUDINI_INSTALL_LIBRARY to install to CMAKE_INSTALL_PREFIX

    Maya CMake

    • Deprecated OPENVDB_MAYA_SUBDIR
    • Added OPENVDB_MAYA_INSTALL_PREFIX for custom install path configuration
    • Added OpenGL as a required dependency
    • Fixed issues on MacOS/Clang with TBB due to link order of .cc files


    To Test:

    Note that you can provide the ROOT variables as CMake defines instead of exporting the environment. These minimal option sets may not work first time, but will provide a good starting point.

    If building standalone:

    #!/bin/bash
    
    rm -rf .build
    mkdir .build
    cd .build
    
    # No pkg-config for tbb
    export TBB_ROOT=
    
    cmake \
     -D CMAKE_INSTALL_PREFIX=<install location> \
     ../
    

    If building against Houdini:

    #!/bin/bash
    
    rm -rf .build
    mkdir .build
    cd .build
    
    export HOUDINI_ROOT= # Or source houdini env
    
    cmake \
     -D CMAKE_INSTALL_PREFIX=<install location> \
     -D OPENVDB_BUILD_HOUDINI_SOPS=ON \
     ../
    

    opened by Idclip 56
  • Inline Half

    Inline Half

    Copy the half implementation from openexr2.4.

    Inline the lookup tables rather than using separate files. Converts OpenVDB-style export tags. Namespace into math library.

    opened by jmlait 31
  • blosc error with points vdb

    blosc error with points vdb

    Getting error about buffer exceeds BLOSC_MAX_BUFFERSIZE see:

    https://github.com/dreamworksanimation/openvdb/blob/a7a1abde7c955d5a83acac2c82341497d73576c2/openvdb/points/StreamCompression.cc#L69

    I am behind a firewall or I would upload the vdb in question.

    It is a points vdb, which we are rendering with our own neat little Arnold Points VDB Procedural in HtoA in Arnold.

    Houdini gives the same error:

    Blosc decompress failed due to exceeding maximum buffer size.

    Is this a known issue, what is the work around?

    Renders are failing, people are wailing.

    opened by samhodge 29
  • OpenVDB 6.2 crashes on startup on Focal

    OpenVDB 6.2 crashes on startup on Focal

    Hi,

    Per https://github.com/SteveMacenski/spatio_temporal_voxel_layer/issues/167 and https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=951704, there's an issue with loading OpenVDB 6.2 in Ubuntu Focal due to the dependency on jemalloc. It has been reproduced by multiple users and traced back to OpenVDB.

    There's a note that it needs to be compiled with --disable-initial-exec-tls to make things work properly

    opened by SteveMacenski 21
  • cannot get libboost_python37.so.1.68.0 to make pyopenvb work (Python 3.8.3, Ubuntu 20.04 LTS)

    cannot get libboost_python37.so.1.68.0 to make pyopenvb work (Python 3.8.3, Ubuntu 20.04 LTS)

    After installing all dependencies and building OpenVDB from https://github.com/AcademySoftwareFoundation/openvdb, I ran TestOpenVDB.py and got the following message:

    libboost_python37.so.1.68.0: cannot open shared object file: No such file or directory

    I ran "apt-file search libboost_python" in the Terminal to make sure the package was nowhere in my computer and it was not. I then ran an extensive "aptitude search boost 1.68" search in the Terminal and the closest named file to the requirement was lib64boost-python37-1.68.0. I installed it and then ran the TestOpenVDB.py file again but it still gave me the same message, seeing as it is not the same file. I did extensive searches of lib64 and libboost with the 1.68 1.67 and 1.71 extension and I could not find the elusive libboost_python37.so.1.68.0 which python is asking for.

    I am running Ubuntu 20.04 and Python 3.8.3, which are currently the most updated versions. Please help with this difficult issue, I would sincerely appreciate it. It is likely that I am not the only person with this problem right now.

    Sincerely, Andrew

    opened by andrewrgarcia 20
  • Using x86 instructions instead of software emulation

    Using x86 instructions instead of software emulation

    I’ve noticed you use lookup tables and bit tricks in performance-critical parts of the code, for functionality that’s implemented in hardware.

    Intel introduces BSR and BSF instructions in 80386, i.e. they support them since 1985.

    POPCNT is slightly newer, but it’s reasonable to assume it’s present, introduced in SSE4a by AMD in 2007, supported by Intel since 2008. Most people don't use 12 years old computers.

    This pull request implements them for vc++, gcc and clang compilers. For unknown ones it falls back to your original software implementation.

    Please let me know if you’re willing to accept the PR, is yes I should probably implement a couple of tests, so far I've only built with vc++ but haven't tested yet. Also you wrote you want me to sigh something.

    If you’re not interested, I’ll just keep these changes in my private branch.

    opened by Const-me 20
  • Introduce OpenVDB AX core library

    Introduce OpenVDB AX core library

    This PR introduces the core OpenVDB AX Library, binaries, documentation and required CMake changes. The Houdini AX SOP can come after this has been reviewed. A few "high level" thoughts:

    • Language docs. Still need work, but the core specification w.r.t types and operators is available https://idclip.github.io/openvdbax-doxygen/ax.html I think this may require its own meeting to fully review.
    • vdb_ax thoughts on the command line binaries interface and commands would be good.
    • Directory structure. With the new nested infrastructure, it's entirely possible to instead of openvdb_ax have openvdb/ax as an include path.
    • Boost::random. As far as the dependency goes, I'm planning to remove it and switch to std::mt19937/mt19937_64. I can update this PR once this is available - however I'd like to find some time in a TSC meeting to discuss the actual implementation of methods such as rand().
    • AX CI - Currently AX is tested for vfx platforms 19 and 20, and llvm versions 6.0 through to 10.0. It builds AX separately and depends on an existing installation of VDB. I like this as it splits out the CI somewhat, but means that building VDB and AX together isn't tested.
    • Lib version. It currently has it's own version.h and .so version. Does anyone feel strongly on this being kept separate?

    There is one final change that I'm hopeful will make it in to AX before 7.2 is released in regards to how exceptions are handled throughout the lib - however this doesn't stall reviewing/merging this work and actually may function as a good first test PR once this is all in!

    opened by Idclip 18
  • Compiling fails with boost >= 1.65

    Compiling fails with boost >= 1.65

    /var/tmp/portage/media-gfx/openvdb-4.0.2/work/openvdb-4.0.2/openvdb/python/pyFloatGrid.cc: In function ‘void exportFloatGrid()’: /var/tmp/portage/media-gfx/openvdb-4.0.2/work/openvdb-4.0.2/openvdb/python/pyFloatGrid.cc:50:9: error: ‘py::numeric’ has not been declared py::numeric::array::set_module_and_type("numpy", "ndarray"); ^~~~~~~

    python/numeric.hpp removed from boost https://github.com/boostorg/python/commit/2d1f66fd1948fa28fde05f4c533b13fb3c96d782

    opened by thankjura 18
  • CMake/Windows improvements to the Python module

    CMake/Windows improvements to the Python module

    • Added options to enable/disable the python test and excluded the interpreter requirement if disabled
    • Improved the report/error logic if python/numpy is not found
    • Fixed Windows C4146/C4996 warnings
    opened by Idclip 17
  • CMake NumPy/Python3 Improvements

    CMake NumPy/Python3 Improvements

    Main changes in this PR fix issues using python3, different versions of boost python (which can end up being called boost_python, boost_pythonX or boost_pythonXx) and adds support for boost numpy post boost 1.65.

    opened by Idclip 17
  • [BUILD] OpenVDB in Python on Win10

    [BUILD] OpenVDB in Python on Win10

    Operating System: (e.g. Windows 2019, macOS-10.15, Linux CentOS 7.4) Version / Commit SHA: (e.g VDB 7.2, SHA: 1a2b3c4d5e...) CMake Version: (e.g. 3.18) Compiler: (e.g. gcc 10, msvc 2019)

    Hi, is there possibility to use OpenVDB in Python on Win10? Because when I install openvdb package and import library

    >>> import pyopenvdb or >>> import openvdb

    I obtain following error: ImportError: LD_LIBRARY_PATH environment variable not set. The pyopenvdb package currently only work on Linux x86_64 systems.

    Is there a way how can I use openvdb library on Win 10 (exclude c++) or how can I create openvdb volume model in Python by using your library?

    Thank you very much for your advice. Have a nice day.

    opened by petulka8s 15
  • Fix Segfault in Projection Mode of VDB Advect Points SOP

    Fix Segfault in Projection Mode of VDB Advect Points SOP

    When I made the changes to switch from GEOvdbProcessTypedGrid to GEOvdbApply, I accidentally introduced this bug in the projection mode of the VDB Advect Points SOP:

    https://github.com/AcademySoftwareFoundation/openvdb/pull/591/files#diff-3da92c28c566b6736ba31e46a2c8a84a00c8beada13f7c3cda90de1782014874R1022

    This change fixes the bug so that this mode no longer crashes.

    @jmlait

    opened by danrbailey 0
  • [BUG] unresolved external symbol imath_half_to_float_table error.

    [BUG] unresolved external symbol imath_half_to_float_table error.

    Environment

    Windows 10 10.0.0 through vcpkg Visual Studio 2020

    Describe the bug

    Any function working on a grid will result in an unresolved external symbol imath_half_to_float_table error.

    • Creating a grid will work
    • getting the library version works.

    good -> openvdb::FloatGrid::Ptr grid; error -> openvdb::FloatGrid::Ptr grid = openvdb::FloatGrid::create();

    To Reproduce

    Steps to reproduce the behavior:

    1. Build with vcpkg
    2. IN Visual Studio try to build the 'hello world' example from the cookbook
    3. See error
    4. Try using the various 'use imath half' or 'internal half' settings to either have nothing change or complain that openexr doesn't have a half.h file.

    Expected behavior

    I expected it to work like before upgrading to v10.

    Additional context

    It seems like any time that the 'half' code is touched it breaks something with the windows build. Searching for "unresolved external symbol imath_half_to_float_table" actually showed up on the openexr repository issues so it seems like it could be more than a bad openvdb build.

    bug 
    opened by cgolchert 5
  • [BUILD] OpenVDB passes gcc style flags to MSVC

    [BUILD] OpenVDB passes gcc style flags to MSVC

    Environment

    Operating System: Win10 Version / Commit SHA: VDB 10.0 CMake Version: 3.24.2 Compiler: msvc 2019

    Describe the problem

    When setting -DOPENVDB_SIMD=SSE42 OpenVDB's cmake passes the GCC style flags directly to MSVC over in CMakeLists.txt@386

    To Reproduce

    Steps to reproduce the behavior:

    1. Build with -DOPENVDB_SIMD=SSE42 or -DOPENVDB_SIMD=AVX with MSVC
    2. cl : Command line warning D9002: ignoring unknown option '-msse4.2' [c:\db\build\S\VS1564D\openvdb.vcxproj]

    Additional context

    MSVC doesn't have a flag for SSE42, but if you call the sse42 intrinsics like openvdb does the right opcodes will still be generated, AVX can be enabled with /arch:AVX source

    opened by LazyDodo 0
  • [BUILD] cmake fails to configure vdb_tool when -DOPENVDB_TOOL_USE_EXR=ON

    [BUILD] cmake fails to configure vdb_tool when -DOPENVDB_TOOL_USE_EXR=ON

    Environment

    Operating System: Gentoo 2.9 Version / Commit SHA: VDB 10.0.1 CMake Version: 3.25.1 Compiler: gcc 11

    Describe the problem

    Trying to build the vdb_tool binary fails in cmake configuration, because it uses OpenEXR-2 library OpenEXR:IlmImf. Replacing the link line and using OpenEXR:OpenEXR as the link library for OpenEXR-3 let the tool be built. The error is:

    -- Configuring done
    CMake Error at openvdb_cmd/vdb_tool/CMakeLists.txt:96 (target_link_libraries):
      The link interface of target "vdb_tool_common" contains:
    
        OpenEXR::IlmImf
    
      but the target was not found.  Possible reasons include:
    
        * There is a typo in the target name.
        * A find_package call is missing for an IMPORTED target.
        * An ALIAS target is missing.
    
    
    
    -- Generating done
    

    To Reproduce

    Steps to reproduce the behavior:

    1. Download the 10.0.1 release tarball from GitHub
    2. Run CMake
    cmake -G Ninja -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_DOCDIR=share/doc/openvdb-10.0.1/ -DOPENVDB_ABI_VERSION_NUMBER=10 -DOPENVDB_BUILD_DOCS=no -DOPENVDB_BUILD_UNITTESTS=yes -DOPENVDB_BUILD_VDB_LOD=yes -DOPENVDB_BUILD_VDB_RENDER=yes -DOPENVDB_BUILD_VDB_TOOL=yes -DOPENVDB_BUILD_VDB_VIEW=yes -DOPENVDB_CORE_SHARED=ON -DOPENVDB_CORE_STATIC=no -DOPENVDB_ENABLE_RPATH=OFF -DUSE_AX=no -DUSE_BLOSC=no -DUSE_CCACHE=OFF -DUSE_COLORED_OUTPUT=ON -DUSE_EXR=yes -DUSE_IMATH_HALF=ON -DUSE_LOG4CPLUS=ON -DUSE_NANOVDB=no -DUSE_PKGCONFIG=ON -DUSE_PNG=yes -DUSE_STATIC_DEPENDENCIES=no -DUSE_TBB=ON -DUSE_ZLIB=no -DBUILD_TEST=yes -DOPENVDB_BUILD_VDB_AX=no -DOPENVDB_TOOL_NANO_USE_BLOSC=OFF -DOPENVDB_TOOL_USE_ABC=OFF -DOPENVDB_TOOL_USE_EXR=ON -DOPENVDB_TOOL_USE_JPG=ON -DOPENVDB_TOOL_USE_NANO=no -DOPENVDB_TOOL_USE_PNG=ON -DOPENVDB_SIMD=AVX -DCMAKE_BUILD_TYPE=RelWithDebInfo
    
    1. See error above

    Additional context

    I removed the command line options for our toolchain file and initial cache from the above command for better readability. They don't have an influence on the outcome.

    opened by waebbl 0
  • Add missing separate_arguments cmake call

    Add missing separate_arguments cmake call

    This is documented at:

    include_directories(${LLVM_INCLUDE_DIRS})
    separate_arguments(LLVM_DEFINITIONS_LIST NATIVE_COMMAND ${LLVM_DEFINITIONS})
    add_definitions(${LLVM_DEFINITIONS_LIST})
    
    • https://github.com/llvm/llvm-project/blob/main/llvm/docs/CMake.rst#embedding-llvm-in-your-project

    See also discussion at:

    • https://discourse.cmake.org/t/how-to-use-target-compile-definitions/6982
    opened by malaterre 2
Releases(v10.0.1)
Owner
Academy Software Foundation
Academy Software Foundation
Treexy is a library that implements a compact hierarchical data structure that can store and manipulate volumetric data, discretized on a three-dimensional grid

Treexy is a library that implements a compact hierarchical data structure that can store and manipulate volumetric data, discretized on a three-dimens

Davide Faconti 324 Jan 4, 2023
Super Volume Render of Monte Carlo Path tracing for Linux

exposure-render-for-Linux Super Volume Render of Monte Carlo Path tracing for Linux Introduction The code is a Linux distribution of exposure render.

engineer 4 Dec 11, 2022
PlenOctree Volume Rendering (supports CUDA & fragment shader backends)

PlenOctree Volume Rendering This is a real-time PlenOctree volume renderer written in C++ using OpenGL, constituting part of the code release for: Ple

Alex Yu 530 Jan 4, 2023
(R) Efficient methods and operators for the sparse matrix classes in 'Matrix' (esp. CSR format or "RsparseMatrix")

MatrixExtra MatrixExtra is an R package which extends the sparse matrix and sparse vector types in the Matrix package, particularly the CSR or Rsparse

null 15 Aug 29, 2022
Just getting started with Data Structure and Algorithms? Make your first contribution here and start the journey of learning DSA.

Getting Started ! ✨ If you are just beginning with open source then let's make your first contribution in this repository ! Contributing Tutorial ?? P

amega 3 Apr 18, 2022
Suckless-tools - My fork of suckless tools.

suckless-tools Here is my fork of suckless tools. I didn't include tabbed, i was using but not actively. I am using xfce4-terminal instead of st. Beca

null 2 Jan 7, 2022
The Vulkan Profiles Tools are a collection of tools delivered with the Vulkan SDK for Vulkan application developers to leverage Vulkan Profiles while developing a Vulkan application

Copyright © 2021-2022 LunarG, Inc. Vulkan Profiles Tools (BETA) The Vulkan Profiles Tools are a collection of tools delivered with the Vulkan SDK for

The Khronos Group 73 Dec 25, 2022
The QPEP-Enhanced Direct Sparse Odometry (DSO) with Loop Closure

QPEP-DSO: Quadratic Pose Estimation Problems (QPEP) Enhanced Direct Sparse Odometry with Loop Closure Code Arch The codes are motivated by DSO (https:

Jin Wu 8 Jun 23, 2022
Fast, hierarchical, sparse Voxel Grid

Treexy is a library that implements a compact hierarchical data structure that can store and manipulate volumetric data, discretized on a three-dimens

Davide Faconti 323 Dec 21, 2022
Implementation of Monocular Direct Sparse Localization in a Prior 3D Surfel Map (DSL)

Implementation of Monocular Direct Sparse Localization in a Prior 3D Surfel Map (DSL)

Haoyang Ye 93 Nov 30, 2022
Fast, hierarchical, sparse Voxel Grid

Treexy is a library that implements a compact hierarchical data structure that can store and manipulate volumetric data, discretized on a three-dimens

Davide Faconti 323 Dec 21, 2022
An FPGA accelerator for general-purpose Sparse-Matrix Dense-Matrix Multiplication (SpMM).

Sextans Sextans is an accelerator for general-purpose Sparse-Matrix Dense-Matrix Multiplication (SpMM). One exciting feature is that we only need to p

linghao.song 30 Dec 29, 2022
The official SuiteSparse library: a suite of sparse matrix algorithms authored or co-authored by Tim Davis, Texas A&M University

SuiteSparse: A Suite of Sparse matrix packages at http://suitesparse.com May 17, 2021. SuiteSparse VERSION 5.10.1 Now includes GraphBLAS, SLIP_LU, and

Tim Davis 720 Dec 31, 2022
CPU Sparse Voxel Octree Implementation

Sparse Voxel Octrees This project provides a multithreaded, CPU Sparse Voxel Octree implementation in C++, capable of raytracing large datasets in rea

Benedikt Bitterli 628 Dec 19, 2022
Add anything about data structure and algorithm in any language.

Hacktoberfest 2021 Follow the README below to get started! Note : This repo is excluded from the Hacktoberfest but you can still contribute and the re

null 33 Dec 6, 2022
Implementation and tutorial for a dynamic vector data-structure in C.

Vec: A Dynamic Vector in C The subject.md file contains exercises for this implementation if you want to do it yourself. In that case, don't peek at t

Julius Koskela 29 Dec 13, 2022
Grand Programs for every Data Structure including all their operations

Grand-Programs-UE20CS203 Grand Programs for every Data Structure including all their operations Some idioms that I use, so you won't get confused I pr

Aditya Rao 0 Jul 28, 2022
CSE2122: Data Structure Lab

CSE2122: Data Structure Lab Array Traversing Inserting (int) Inserting (string) Deleting Sorting (Bubble sort: int type data) Sorting (Bubble sort: st

Fahim Ahammed Firoz 12 Feb 28, 2022
Contribute a Data Structure you coded or solve the problems given in the Description.md file in any language! Happy coding!

Pro Lang Contribute a Data Structure you coded or solve the problems given in the Description.md file (can be found in the both the folders) in any la

IEEE-IAS VIT 1 Jan 16, 2022