Compare commits

...
Author SHA1 Message Date
Jonathan Swartz 2563cd3118 Attempting to fix secretes manager access error
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-25 10:35:02 +12:00
Jonathan Swartz 0510e49968 Improving buildspec logging
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-25 10:23:53 +12:00
Jonathan Swartz 1363171185 Build fixes and printing URLs for monitoring
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-25 10:18:03 +12:00
Jonathan Swartz 5cfdc69063 Trying to retrieve codebuild log info
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-25 09:52:32 +12:00
Jonathan Swartz 9e0d18504b Better testing
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-25 09:31:01 +12:00
Jonathan Swartz 3f1a6c851c Fix condition
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-25 09:28:46 +12:00
Jonathan Swartz 16ce308e76 Print if credentialas are configured
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-25 09:27:07 +12:00
Jonathan Swartz de4c6c89f7 Attempting to set permissions
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-25 09:23:33 +12:00
Jonathan Swartz 2ad5811297 Switch back to v4 because credentials action requires later version
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-19 10:34:47 +12:00
Jonathan Swartz 705e6d79c5 Merge remote-tracking branch 'origin/feature/fvdb' into fvdb_codebuild
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-19 10:32:56 +12:00
Jonathan Swartz af0fc1e7ec Merge remote-tracking branch 'origin/feature/fvdb' into fvdb_codebuild
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-19 10:30:08 +12:00
Jonathan Swartz 46d8f3c26c Change configure-aws-credentials action version to test
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-19 10:26:29 +12:00
Jonathan Swartz 3fad26296f Merge pull request #2052 from swahtz/feature/fvdb
Update feature/fvdb
2025-06-17 11:34:07 +12:00
Jonathan Swartz a41e9319aa Merge remote-tracking branch 'downstream/feature/fvdb' into feature/fvdb
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-17 11:32:37 +12:00
Jonathan SwartzandMark Harris 1563730c0a GaussianRasterizeForward shared memory calculation fix (#539)
* Fix for shared memory calculation to account for Gaussian2D alignment

---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Mark Harris <mharris@nvidia.com>
2025-06-17 11:27:07 +12:00
Andrew 6fd95083d4 Unify editor shaders. 2025-06-16 10:10:18 -05:00
Petra Hapalova 3cc26291ca NanoVDB editor - track shader includes changes (#540)
* track shader includes changes
* clear shader cache button
2025-06-16 14:13:24 +00:00
Petra HapalovaandAndrew Reidmeyer 9f08f33fe6 Merge NanoVDB editor into fVDB (#534)
* adding NanoVDB Editor
---------

Co-authored-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
2025-06-13 22:32:43 +02:00
Jonathan Swartz 0741614991 Merge pull request #2050 from swahtz/feature/fvdb
feature/fvdb update
2025-06-13 18:01:58 +12:00
Jonathan Swartz 0de6bf111a Merge remote-tracking branch 'downstream/feature/fvdb' into feature/fvdb
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-13 17:57:56 +12:00
Jonathan Swartz 216ef435fc Improve launch_bounds coverage (#530)
* Improve launch_bounds coverage everywhere there's an easily inferred number of threads
* Add a global DEFAULT_NUM_THREADS_PER_BLOCK and made sure all kernels use GET_BLOCKS

---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-13 17:54:36 +12:00
Jonathan Swartz 07a099136c Fix an issue where the PCA performed by the ColmapDataset in 3dgs was non-deterministic when using numpy built with OpenBLAS. Substitute for MKL blas. (#531)
Fix README error

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-12 16:55:30 +12:00
Jonathan Swartz 504fa0fcdf Added up_axis controls to 3dgs Viser viewer (#532)
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-12 16:55:21 +12:00
Matthew Cong 3a260e0374 Remove compile_commands.json symlink and add to .gitignore (#520)
* Remove compile_commands.json
* Add compile_commands.json symlink to .gitignore

Signed-off-by: Mark Harris mharris@nvidia.com
2025-06-11 10:40:59 +10:00
Mark Harris 4963380b23 Store image dims in input data sets, use in gtests (#518)
Adds image dims to the test data generation for forward gsplat rasterization. uses this in gtests. Adds a new script for inspecting generated datasets. Updates test data commit hash in cmake.

Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-06-11 10:36:33 +10:00
Jonathan Swartz 8ad3e9ba75 Add camera images to gsplat viser viewer (#514)
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-10 19:15:19 +12:00
Mark Harris 8ce1fca72e Add debug build option to build.sh (#515)
* build.sh: add debug build option

* Auto update compile_commands.json symlink
2025-06-10 19:03:59 +12:00
Mark Harris d871dc46d3 Move implementation of tensor loading utilities to .cpp file, inline other utilities in headers. (#516)
Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-06-10 19:01:08 +12:00
Mark Harris 9e3b691e2a Seaube clang-format extension requries env.VAR rather than env:VAR (#517)
Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-06-10 18:58:00 +12:00
Matthew Cong 74581cdc6b Use PIMPL idiom for GridBatch/GridBatchImpl (#513)
* WIP: Use PIMPL idiom for GridBatch/GridBatchImpl

* Expose remaining sparse conv functions

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Remove variants of GridBatch::to(...)

* Remove address()

* Refactor Python bindings

* Restore address

* Remove implementations from header files

* Clean up API more

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-06-09 16:09:19 -07:00
Matthew Cong 9c537c776e Remove unused RAIIDeviceBuffer includes (#511) 2025-06-05 08:45:28 -07:00
Matthew Cong 938e02b5d6 Remove RAIIDeviceGuard (#510) 2025-06-05 08:45:19 -07:00
Matthew Cong d51a25714f Remove NanoVDBFileGridIdentifier union type (#505)
* Remove NanoVDBFileGridIdentifier from Python API

* Format

* Remove NanoVDBFileGridIdentifier from C++ API

* Expose parseDeviceString

* Centralize device string overloads to Python bindings
2025-06-05 07:01:16 -04:00
Mark Harris 24aa6d706b Use unique_ptr in RAIIDeviceGuard (#509)
Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-06-05 06:55:17 -04:00
Jonathan Swartz 010cbd9b5c Merge pull request #2049 from swahtz/feature/fvdb
feature/fvdb update
2025-06-05 21:44:57 +12:00
Mark Harris d6b2f243d3 Use Seaube.clangFormat vscode extension for clang-format (#508)
We have been getting intermittent crashes of clangd, and since we have been using the clang-format that is built into the clangd server, when clangd crashes we lose the format-on-save capability of vscode for C++ and CUDA C++ files.

This PR adds settings and recommendation for the vscode extension Seaube.clangFormat which allows specifying a clang-format executable to be used for formatting C++ and CUDA C++ files. This is a fork of the more widely used xaver.clang-format vscode extension because the latter has not released an update in years, in spite of having merged NVIDIA pull requests to support the cuda-cpp language.

After merging, you will need to make sure to install the vscode extension Seaube.clangFormat. VSCode will prompt to install it.

---------

Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-06-05 18:13:48 +12:00
Matthew Cong 32aac9e6e4 Remove JaggedTensorIndex union type (#503)
* Remove JaggedTensorIndex union type

* Fix error type

* Fix error type again

* Restore accidentally commented import
2025-06-04 21:58:27 -07:00
Mark Harris 7e0e66645d Add verbose option to build.sh, use it in CI workflow, add build.sh help (#507)
Add `verbose` option to build.sh and use it in CI.  Add -h/--help
---------
Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-06-05 12:42:11 +10:00
Francis Williams 6221f03a83 Move voxel size and bounding box functions into GridBatchImpl (#500)
* more gridbatch slimming

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more slimming

Signed-off-by: Francis Williams <francis@fwilliams.info>

* even more slimming

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more cleanup

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more deviceguard cleanup

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more deviceguard

Signed-off-by: Francis Williams <francis@fwilliams.info>

* naming convention

Signed-off-by: Francis Williams <francis@fwilliams.info>

* address more comments

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more thinning

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more lean, and commetns

Signed-off-by: Francis Williams <francis@fwilliams.info>

---------

Signed-off-by: Francis Williams <francis@fwilliams.info>
2025-06-04 21:10:44 -04:00
Jonathan Swartz 64ceb23374 Merge remote-tracking branch 'downstream/feature/fvdb' into feature/fvdb
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-06-05 11:18:44 +12:00
Mark Harris ca9ff4a4ee Add CUDA attribute formatting and kernel launch bounds improvements (#498)
* Add AttributeMacros to .clang-format for CUDA attributes

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Reformat source for CUDA attributes, add launch bounds to some 3DGS kernels

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Update script for running clang-format

Signed-off-by: Mark Harris <mharris@nvidia.com>

---------

Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-06-04 13:06:48 -04:00
Matthew Cong 278a3ae8c9 Remove unused definitions which have moved into GridBatchImpl (#502) 2025-06-04 13:06:17 -04:00
Matthew Cong c95e422243 Remove Tensor -> JaggedTensor typecaster in favor of implicit conversion (#501) 2025-06-04 13:06:07 -04:00
Eftychios Sifakis 3d36ec7e99 Added grid merging functionality to fVDB (#494)
* Initial steps for grid merging routine

* cleanup and completion of root node merge

* completed enumeration of nodes on merge operation

* finished MergeGrids operation; cleanup

* Exposed MergeGrids in fVDB

* formatting fixes

* formatting fixes

* formatting fixes
2025-06-04 10:13:38 -04:00
Mark Harris 64c8d65333 Fix spherical harmonic tensor shapes in test data generation script (#497)
Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-06-04 15:08:00 +12:00
Mark Harris bb8dda8987 Update VSCode settings for CUDA support and clean up C++ file associations (#496)
Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-06-04 13:57:58 +12:00
Matthew Cong bdc38eb961 Cleanup unneeded includes (#495) 2025-06-03 11:06:45 -07:00
Christopher Horvath 6ab2ed501a fvdb source location restructure (#490)
Refactor: move of fvdb library sources to src/fvdb, update includes and .clang-format rules.

---------

Signed-off-by: Christopher Horvath <blackencino+git@gmail.com>
2025-06-03 15:11:51 +10:00
Francis Williams 624b227afa Move more grid building functions from GridBatch into detail (#477)
* build grid

Signed-off-by: Francis Williams <francis@fwilliams.info>

* unskip test

Signed-off-by: Francis Williams <francis@fwilliams.info>

* check device for optionals

Signed-off-by: Francis Williams <francis@fwilliams.info>

* pull out grid building code into seperate module

Signed-off-by: Francis Williams <francis@fwilliams.info>

* cleanup

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more migration

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more cleanup

Signed-off-by: Francis Williams <francis@fwilliams.info>

* another one

Signed-off-by: Francis Williams <francis@fwilliams.info>

* include guards

Signed-off-by: Francis Williams <francis@fwilliams.info>

* include guards

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more include guards

Signed-off-by: Francis Williams <francis@fwilliams.info>

* include guards

Signed-off-by: Francis Williams <francis@fwilliams.info>

* move to GridBatchImpl

Signed-off-by: Francis Williams <francis@fwilliams.info>

* clang fmt

Signed-off-by: Francis Williams <francis@fwilliams.info>

* rm write accessor

Signed-off-by: Francis Williams <francis@fwilliams.info>

* need writeaccessor

Signed-off-by: Francis Williams <francis@fwilliams.info>

* fix

Signed-off-by: Francis Williams <francis@fwilliams.info>

* update

Signed-off-by: Francis Williams <francis@fwilliams.info>

* cleanup

Signed-off-by: Francis Williams <francis@fwilliams.info>

* move to static

Signed-off-by: Francis Williams <francis@fwilliams.info>

* typo

Signed-off-by: Francis Williams <francis@fwilliams.info>

* typo 2

Signed-off-by: Francis Williams <francis@fwilliams.info>

* rename

Signed-off-by: Francis Williams <francis@fwilliams.info>

* rename

Signed-off-by: Francis Williams <francis@fwilliams.info>

* rename

Signed-off-by: Francis Williams <francis@fwilliams.info>

---------

Signed-off-by: Francis Williams <francis@fwilliams.info>
2025-06-02 19:18:06 +00:00
Matthew Cong 533cf4c20e Restore mGPU support for createGridFromPoints/IJK (#489) 2025-06-02 12:07:26 -07:00
Matthew Cong 22de0d9aca Fix build error (#488) 2025-05-30 21:06:34 -04:00
zlalena 384198f3ee Gaussian Splatting Camera Pose Optimization with multiGPU (#422) 2025-05-30 20:18:18 -04:00
Matthew Cong 4213aa354a Re-enable warning as errors (#484)
* Fix class-memaccess warning in CreateNanoGrid.h

* Revert "comment out Werr (#464)"

This reverts commit c760c1ccbe.
2025-05-30 17:57:58 -04:00
Francis Williams f4ef228672 re-enable test (#486)
Signed-off-by: Francis Williams <francis@fwilliams.info>
2025-05-30 21:19:16 +00:00
Francis Williams 5b011d23c4 Move grid building logic and error checking out of GridBatch into detail (#476)
* build grid

Signed-off-by: Francis Williams <francis@fwilliams.info>

* unskip test

Signed-off-by: Francis Williams <francis@fwilliams.info>

* check device for optionals

Signed-off-by: Francis Williams <francis@fwilliams.info>

* pull out grid building code into seperate module

Signed-off-by: Francis Williams <francis@fwilliams.info>

* cleanup

Signed-off-by: Francis Williams <francis@fwilliams.info>

* include guards

Signed-off-by: Francis Williams <francis@fwilliams.info>

* include guards

Signed-off-by: Francis Williams <francis@fwilliams.info>

* move to GridBatchImpl

Signed-off-by: Francis Williams <francis@fwilliams.info>

* clang fmt

Signed-off-by: Francis Williams <francis@fwilliams.info>

* rm write accessor

Signed-off-by: Francis Williams <francis@fwilliams.info>

* need writeaccessor

Signed-off-by: Francis Williams <francis@fwilliams.info>

* fix

Signed-off-by: Francis Williams <francis@fwilliams.info>

* skip test again

Signed-off-by: Francis Williams <francis@fwilliams.info>

---------

Signed-off-by: Francis Williams <francis@fwilliams.info>
2025-05-30 21:12:48 +00:00
Matthew Cong 05b2bf6f11 Fix one more warning (#481) 2025-05-29 21:51:40 -07:00
Matthew Cong cde4160d42 Fix newly introduced warnings in fVDB (#480) 2025-05-29 16:50:19 -07:00
Matthew Cong 1b29548661 Add initial support for Unified Memory backend (#460)
* Add initial support for Unified Memory

* Add MGPU support for transform points

* Cleanup

* Add guard for CUDA version

* Add cudamanaged support for JOffsetsFromJIdx and PointsInGrid

* Fixes for signed/unsigned warnings

* Rename for consistency

* Remove hardcoded launch bounds

* Internalize numThreads to forEach kernels

* Rename macro to explicitly call out backends

* Clean up signed/unsigned indexing and reduce default block size

* Clean up macro

* Format code

* Remove unnecessary includes

* Address some review comments

* Fix helper function and formatting

* Encapsulate allocation logic
2025-05-29 15:11:43 -07:00
Francis Williams a414cef4c5 Don't use verbosity 1 in dilation and restore dilation in ray marching tests (#475)
* small clangd fix

Signed-off-by: Francis Williams <francis@fwilliams.info>

* Don't use verbosity 1 in dilation and restore previously crashing dilation in test_ray_marching.py

Signed-off-by: Francis Williams <francis@fwilliams.info>

---------

Signed-off-by: Francis Williams <francis@fwilliams.info>
2025-05-29 14:17:52 +00:00
Francis Williams 55d80ce33d small clangd fix (#474)
Signed-off-by: Francis Williams <francis@fwilliams.info>
2025-05-29 14:11:17 +00:00
Eftychios Sifakis 87ce3b6c71 Adding support for dilation operations that generate new root nodes (#473)
* Bugfix: consistent passing of stream parameter & synchronization

* using cub::WarpReduce instead of sm80 intrinsic

* replacing sm80+ intrinsic with cub::WarpReduce

* Supporting dilation scenarios that create new root nodes
2025-05-29 09:32:33 -04:00
Francis WilliamsandMatthew Cong c875c46a20 Remove mutable grids from internal API (#462)
* grid dilation in fVDB

Signed-off-by: Francis Williams <francis@fwilliams.info>

* SPDX

Signed-off-by: Francis Williams <francis@fwilliams.info>

* start removing pad args

Signed-off-by: Francis Williams <francis@fwilliams.info>

* rm mutable grids from public API

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more nuking

Signed-off-by: Francis Williams <francis@fwilliams.info>

* fix comments

Signed-off-by: Francis Williams <francis@fwilliams.info>

* Fix CI failures due to dilation (#454)

* Remove unneeded atomic include (#451)

* Add minor cleanup (#452)

* move dilate to ops

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more mutable reference removal

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more cleanup

Signed-off-by: Francis Williams <francis@fwilliams.info>

* fine from coarse

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more cleanup

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more cleanup

Signed-off-by: Francis Williams <francis@fwilliams.info>

* mas cleanup

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more cleanup

Signed-off-by: Francis Williams <francis@fwilliams.info>

* rm all of build directory

Signed-off-by: Francis Williams <francis@fwilliams.info>

* clean up build kernels

Signed-off-by: Francis Williams <francis@fwilliams.info>

* include guards

* checkpoint

* rm prints

Signed-off-by: Francis Williams <francis@fwilliams.info>

* rm macros

Signed-off-by: Francis Williams <francis@fwilliams.info>

* rm custom accessors

Signed-off-by: Francis Williams <francis@fwilliams.info>

* comment out Werr

* clang format

Signed-off-by: Francis Williams <francis@fwilliams.info>

* clang format after downgrade to 18

Signed-off-by: Francis Williams <francis@fwilliams.info>

* small fix

Signed-off-by: Francis Williams <francis@fwilliams.info>

* use OnIndexGrid instead of NanoGrid<...>

Signed-off-by: Francis Williams <francis@fwilliams.info>

---------

Signed-off-by: Francis Williams <francis@fwilliams.info>
Co-authored-by: Matthew Cong <1372750+matthewdcong@users.noreply.github.com>
2025-05-29 09:29:45 -04:00
Francis Williams 88b69a968b Remove allocate/free functions from GridBatchImpl header (#471)
* clean up header

Signed-off-by: Francis Williams <francis@fwilliams.info>

* rm if

Signed-off-by: Francis Williams <francis@fwilliams.info>

* herp derp

Signed-off-by: Francis Williams <francis@fwilliams.info>

---------

Signed-off-by: Francis Williams <francis@fwilliams.info>
2025-05-28 20:15:56 -07:00
Matthew Cong 782c0c403e Merge pull request #470 from matthewdcong/develop_fvdb_merge
Merge latest develop into feature/fvdb
2025-05-28 09:52:06 -07:00
Francis WilliamsandMatthew Cong 8162fb42fe Remove mutable grids from public API (#461)
* grid dilation in fVDB

Signed-off-by: Francis Williams <francis@fwilliams.info>

* SPDX

Signed-off-by: Francis Williams <francis@fwilliams.info>

* start removing pad args

Signed-off-by: Francis Williams <francis@fwilliams.info>

* rm mutable grids from public API

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more nuking

Signed-off-by: Francis Williams <francis@fwilliams.info>

* fix comments

Signed-off-by: Francis Williams <francis@fwilliams.info>

* Fix CI failures due to dilation (#454)

* Remove unneeded atomic include (#451)

* Add minor cleanup (#452)

* move dilate to ops

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more mutable reference removal

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more cleanup

Signed-off-by: Francis Williams <francis@fwilliams.info>

* fine from coarse

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more cleanup

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more cleanup

Signed-off-by: Francis Williams <francis@fwilliams.info>

* mas cleanup

Signed-off-by: Francis Williams <francis@fwilliams.info>

* more cleanup

Signed-off-by: Francis Williams <francis@fwilliams.info>

* rm all of build directory

Signed-off-by: Francis Williams <francis@fwilliams.info>

* clean up build kernels

Signed-off-by: Francis Williams <francis@fwilliams.info>

* include guards

* comment out Werr

* fix clangd crash

Signed-off-by: Francis Williams <francis@fwilliams.info>

* fix tests for now

Signed-off-by: Francis Williams <francis@fwilliams.info>

* fix

Signed-off-by: Francis Williams <francis@fwilliams.info>

---------

Signed-off-by: Francis Williams <francis@fwilliams.info>
Co-authored-by: Matthew Cong <1372750+matthewdcong@users.noreply.github.com>
2025-05-28 12:40:05 -04:00
Matthew Cong d1b970b688 Merge branch 'develop' into develop_fvdb_merge 2025-05-28 08:18:17 -07:00
Francis Williams 38c078a773 Fix clangd crash in GridBatchImpl (#469)
* fix clangd crash

Signed-off-by: Francis Williams <francis@fwilliams.info>

* fix

Signed-off-by: Francis Williams <francis@fwilliams.info>

---------

Signed-off-by: Francis Williams <francis@fwilliams.info>
2025-05-28 14:44:28 +00:00
Matthew Cong d02dc930f0 Fixes for signed/unsigned warnings (#465) 2025-05-27 16:05:03 -07:00
Francis Williams c760c1ccbe comment out Werr (#464) 2025-05-27 12:40:04 -07:00
Mark Harris 07993354a7 Warnings are Errors (#437)
This PR fixes all current warnings in fVDB. The goal is that by default, the build should only print messages when there is something wrong. It is quiet by default and there are no warnings.

 -  Fixes existing warnings that occur without -Wall
 - Fixes additional (many more) warnings that occur with -Wall. Mostly signed/unsigned comparisons and unused variables.
 - Enables -Wall -Werror for CXX options
 - Enables -Werror=all-warnings -XCompiler=-Wall,-Werror for CUDA options.
 - Disables a bunch of #pragma message output by default
 - Makes the build quiet by default rather than verbose.

Once this is merged, compilation will fail if there are any warnings.

To do a verbose build now, add -v for verbose pip output, and -C build.verbose=true for verbose CMake output (print every compilation command line).

---------

Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-05-27 13:08:53 +10:00
Eftychios Sifakis f5b68239b1 Bug fixes in DilateGrid (#458)
* Bugfix: consistent passing of stream parameter & synchronization

* using cub::WarpReduce instead of sm80 intrinsic

* replacing sm80+ intrinsic with cub::WarpReduce
2025-05-23 17:18:44 -04:00
Matthew Cong 712839bed5 Move tensorBytePointer into GaussianSplatting TU (#459) 2025-05-23 11:05:41 -07:00
Matthew Cong 8fb305aa28 Add minor cleanup (#452) 2025-05-23 09:47:22 -04:00
Matthew Cong 49ca5c2a7a Remove unneeded atomic include (#451) 2025-05-23 09:46:55 -04:00
Matthew Cong 7b0f8bf685 Fix CI failures due to dilation (#454) 2025-05-22 22:47:52 -07:00
Francis Williams 2009f7da08 Integrate new dilation into fvdb GridBatch (#447)
* grid dilation in fVDB

Signed-off-by: Francis Williams <francis@fwilliams.info>

* SPDX

Signed-off-by: Francis Williams <francis@fwilliams.info>

---------

Signed-off-by: Francis Williams <francis@fwilliams.info>
2025-05-22 14:03:15 -04:00
Mark Harris d6a68d1ef3 Clang-format: disable bin packing and other improvements. (#434)
* Improve clang-format settings and .clang-format organization

Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-05-22 14:07:22 +10:00
Eftychios Sifakis 063b4b9bee Morphological dilation in NanoVDB (#420)
This new feature provides a device-accelerated process for computing a morphological dilation of a NanoVDB IndexGrid.
3 modes of dilation are supported (see NearestNeighbors in util/MorphologyHelpers.h):
NN_FACE (6-connected); NN_FACE_EDGE (18-connected); NN_FACE_EDGE_VERTEX (26-connected).

Known limitation: As of right now (easily fixable when we have a real-world test case), the operation will proceed correctly only if the dilation operation does not create any new ROOT (4096^3) node.

An example of use can be found in examples/ex_dilate_nanovdb_cuda, which dilates an OpenVDB .vdb file, and compares the result against the NanoVDB/CUDA new implementation.
2025-05-21 14:00:26 -05:00
Mark Harris 0987d220ba Rename AccessorHelpers.h to AccessorHelpers.cuh (#436)
The file AccessorHelpers.h added in #432 is only included from .cu source files, and clangd reports problems because some of the types it uses are only defined when compiling CUDA code. So it's better to make this a CUDA header (.cuh). This PR renames it and updates all includes.

Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-05-21 15:35:14 +10:00
Matthew Cong 005cd8fc48 Modularize functionality in Utils.cuh (#432)
* Separate countEnabledPerLeaf

* Separate forEachCUDA functions from Utils.cuh

* Separate out forEachCPU calls

* Separate out Accessor helper functions

* Remove PrivateUse1

* Rename
2025-05-20 08:41:26 -07:00
Matthew Cong ecbc9ff68f Replace Torch type <-> string functions with PyTorch built-ins (#429)
* Replace Torch type <-> string functions with PyTorch built-ins

* Revert "Replace Torch type <-> string functions with PyTorch built-ins"

This reverts commit 2e9e43515af924459cf48875ebd75698efecf0b9.

* Use PyTorch built-ins in later versions
2025-05-19 16:01:28 -04:00
Matthew Cong d79383c194 Separate RAII device buffer from forEach macros (#431)
* Separate RAII device buffer from forEach macros

* Fix header guard
2025-05-19 12:57:41 -07:00
Matthew Cong 66013466c3 Replace c10::optional with std::optional (#430) 2025-05-19 14:50:31 -04:00
Francis Williams c70b3dbac4 Jagged Tensor squeeze (#423) 2025-05-16 19:03:22 -04:00
Matthew Cong 6545a4b620 Cleanup accessor utility functions using std::conditional (#427) 2025-05-16 15:49:00 -07:00
Matthew Cong e8ea08db78 Fix test_gsplat formatting which is breaking CI (#428) 2025-05-16 14:47:15 -07:00
j-nordling 5a741ae46f bugfix: save nan splat (#426) 2025-05-16 17:25:01 -04:00
Francis Williams 8dba107547 Add optional stream and shared memory arguments to forEachVoxelCUDA/etc. (#416)
* streams and shared memory in forEachXXX

Signed-off-by: Francis Williams <francis@fwilliams.info>

* overload

Signed-off-by: Francis Williams <francis@fwilliams.info>

* option to call callback everytime

Signed-off-by: Francis Williams <francis@fwilliams.info>

---------

Signed-off-by: Francis Williams <francis@fwilliams.info>
2025-05-16 11:23:26 -04:00
Jonathan Swartz 9e531b0a16 Merge pull request #2045 from swahtz/fvdb_update 2025-05-15 16:28:37 +12:00
Matthew Cong c2eb7e6ce3 Switch to modern AT_DISPATCH_V2 macro (#402) 2025-05-14 15:24:53 -07:00
Matthew Cong cba1da5961 Merge pull request #406 from matthewdcong/develop_fvdb_merge
Redo develop to feature/fvdb merge to account for squashing changes
2025-05-14 10:22:05 -07:00
Matthew Cong b0b26884a1 Merge remote-tracking branch 'upstream/develop' into feature/fvdb 2025-05-14 10:19:00 -07:00
e5d9c13b5d Merge latest develop into feature/fvdb (#405)
* Merge latest master into develop (#394)

* Avoid unnecessary and expensive getLastWriteTime calls for memory mapped files on windows

Signed-off-by: jjtParadox <jturner@4nsi.com>

* Add [[nodiscard]] to confusing math functions.

Signed-off-by: Jeff Lait <jlait@andorra.sidefx.com>

* Fix missing OpenVDB dependency for NanoVDB-only build

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* improved change notes and updated version number

* improved change notes and updated version number

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* improved documentation

Signed-off-by: Ken Museth <ken.museth@gmail.com>

---------

Signed-off-by: Ken Museth <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Separate PointsToGrid kernel lambdas into functors

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add missing iomanip include for latest GTest

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* improved nanovdb_convert

* improved nanovdb_convert

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* fixed typo

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* added unit tests

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* review feedback

Signed-off-by: Ken Museth <ken.museth@gmail.com>

---------

Signed-off-by: Ken Museth <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix format strings and Windows conversion warning

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix ODR violation due to anonymous namespace in SignedFloodFill

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Minor fix to unit-test of NanoVDB

* Minor fix to unit-test of NanoVDB

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* minor change

Signed-off-by: Ken Museth <ken.museth@gmail.com>

---------

Signed-off-by: Ken Museth <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add DeviceMesh and (optional) NCCL CMake Support

* Add device mesh

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Restore current device in constructor and destructor

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Enable range-based for loops

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Use structured bindings inside for loop

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Remove uneeded accessors and modularize functions

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Statically initialize entry point

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Encapsulate

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Switch to lightweight wrapper class for DeviceNodes vector

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Cleanup

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Minor changes needed for DistributedPointsToGrid

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add RAII DeviceGuard

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* More cleanup

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Clean up NCCL dependency

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Remove parallel_for to modularize

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Implement and test move constructor/assignment

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add docs

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Expand test and documentation

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Move non-reinit comment to function description

Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>

* Switch to using aliases and modern type names

Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>

* Use size_type instead of int for return

Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>

* Separate out DeviceGuard and clean up API

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Switch to DeviceMesh for MGPU sparse convolution example

* Convert MGPU convolution example to use DeviceMesh

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix typos and clarify

Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>

* Check for errors and switch to for_each

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add missing const variant of deviceData(device)

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add missing inline for DeviceMesh functions

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add missing NCCL ifdef

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix invalid free in UnifiedBuffer move constructor

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Change UnifiedBuffer prefetch and advise to be const

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix missing relocatable device code flag

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix namespace for AbsDiff and RelDiff ostream overloads

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix out-of-bounds device id

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix TBB template deduction in C++20

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fixed issue in signedfloodfill

* Fixed issue in signedfloodfill

Signed-off-by: Ken <ken.museth@gmail.com>

* partially addressed review comments

Signed-off-by: Ken <ken.museth@gmail.com>

* added RootData::TileIterator

Signed-off-by: Ken <ken.museth@gmail.com>

* cleanup

Signed-off-by: Ken <ken.museth@gmail.com>

* fixed assert bug

Signed-off-by: Ken <ken.museth@gmail.com>

* snapshot

Signed-off-by: Ken <ken.museth@gmail.com>

* fixed bug and improved unit-test

Signed-off-by: Ken <ken.museth@gmail.com>

* improved unit test and documentation

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix DeviceMesh.h header to be self-contained

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add missing constructor for C++20 used in AddBlindData.cuh

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: Ken Museth <1495380+kmuseth@users.noreply.github.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* removed dead code and updated the minor version number

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix class-memaccess warning due to non-trivial copy-assignment in GridBlindMetaData

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: Ken Museth <1495380+kmuseth@users.noreply.github.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* major improvements to GridBlindMetaData

* major improvements to GridBlindMetaData

Signed-off-by: Ken <ken.museth@gmail.com>

* minor changes to fix clang issue

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* minor simplification in CreateNanoGrid

* minor simplification in CreateNanoGrid

Signed-off-by: Ken <ken.museth@gmail.com>

* fixed typo

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* introducing new magic numbers for grids and files

* introducing new magic numbers for grids and files

Signed-off-by: Ken <ken.museth@gmail.com>

* removed two redundant magic numbers

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* fixed typos and improved documentation in NanoVDB

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Consolidate DeviceGuard into DeviceMesh header

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add distributed implementation of PointsToGrid

* Add distributed implementation of PointsToGrid

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix race condition in merge and single GPU case

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix kernel/cudaFree race conditions

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add DistributedPointsToGrid unittest

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Clean up example

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Use range-based for loops

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Use structured bindings inside for loop

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix Windows build and some warnings

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Update for refactored DeviceMesh

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix copyright/include

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add parallelForEach helper

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Templatize kernels to align with CUB better

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Shorten TemporaryDevicePool to TempDevicePool

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Refactor to use TempDevicePool

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Switch to class

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Parallelize kernel dispatch in build

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix race condition wrt to root node processing

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Speed up synchronization

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add comments and fix deprecated TransformInputIterator

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Address review comments

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Address more review comments

* Add more cudaCheck calls and restrict EqualityIndicator type

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix license identifiers and remove unused code

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add missing include

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: = <=>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* revert deprecation warning

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* minor cleanup

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Silence CMake warning about FindBoost module deprecation

* Silence CMake warning about FindBoost module deprecation

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix typo

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: Ken Museth <1495380+kmuseth@users.noreply.github.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Adding /bigobj to TestNanoVDB.cu compilation options to fix Windows build failures

* Adding /bigobj to TestNanoVDB.cu compilation options to fix Windows build failure
---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Suppress stringop-overflow warning due to GCC 11 regression

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Generalize MGPU grid construction to any power-of-two number of GPUs

* Start support for more than two GPUs in key merge

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Flip flop storage

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Generalize concurrent leftIntervals/rightIntervals usage

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix median search

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix rebalancing

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix recursive MGPU merge

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Update TODO

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add guards for zero-tile GPUs

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix race condition across different merge levels (and memory leak in corresponding tests)

* Fix memory leaks in PointsToGrid tests

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix leapfrogging across recursion levels

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Parallelize kernel dispatch for different levels

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Feature/fix get set methods

* minor cleanup

Signed-off-by: Ken <ken.museth@gmail.com>

* fixed issue in get/set random access methods

Signed-off-by: Ken <ken.museth@gmail.com>

* cleanup

Signed-off-by: Ken <ken.museth@gmail.com>

* deleted white space

Signed-off-by: Ken <ken.museth@gmail.com>

* cleanup

Signed-off-by: Ken <ken.museth@gmail.com>

* added unit tests

Signed-off-by: Ken <ken.museth@gmail.com>

* improved unit tests

Signed-off-by: Ken <ken.museth@gmail.com>

* improved unit tests

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add optimizations to MGPU PointsToGrid

* Add timer for MGPU PointsToGrid

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Avoid blocking kernel launches due to cudaFree

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix overlapping of copies

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Pipeline pointsPerVoxelPrefix sum

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Cleanup and optimization

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Further improve pipelining

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Remove unnecessary sync point

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Revert "Remove unnecessary sync point"

This reverts commit f01b36ad852f32ec65517b3baa08ea267d5edc2d.

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Switch to GPU sync

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix event destruction race condition and reduce host thread latency

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Revert timer add

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* More fine-grained pipelining

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix event wait/destruction race condition

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Improve points to grid

* minor cleanup

Signed-off-by: Ken <ken.museth@gmail.com>

* minor improvements to nanovdb::tools::cuda::PointsToGrid

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix Windows warnings

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Force set _WIN32 flag

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Move away from deprecated 20.04 runners

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: jjtParadox <jturner@4nsi.com>
Signed-off-by: Jeff Lait <jlait@andorra.sidefx.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>
Signed-off-by: Ken Museth <ken.museth@gmail.com>
Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: jjtParadox <jturner@4nsi.com>
Co-authored-by: Jeff Lait <jlait@andorra.sidefx.com>
Co-authored-by: Ken Museth <1495380+kmuseth@users.noreply.github.com>
Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>
Co-authored-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Nick Avramoussis <4256455+Idclip@users.noreply.github.com>

* Templatize buffer type for distributed points to grid (#403)

* Templatize buffer type for distributed points to grid

* Add missing template parameter

* Add pool

---------

Signed-off-by: jjtParadox <jturner@4nsi.com>
Signed-off-by: Jeff Lait <jlait@andorra.sidefx.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>
Signed-off-by: Ken Museth <ken.museth@gmail.com>
Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: jjtParadox <jturner@4nsi.com>
Co-authored-by: Jeff Lait <jlait@andorra.sidefx.com>
Co-authored-by: Ken Museth <1495380+kmuseth@users.noreply.github.com>
Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>
Co-authored-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Nick Avramoussis <4256455+Idclip@users.noreply.github.com>
2025-05-14 13:03:06 -04:00
Matthew Cong 566f6c6d6c Templatize buffer type for distributed points to grid (#403)
* Templatize buffer type for distributed points to grid

* Add missing template parameter

* Add pool
2025-05-14 08:43:45 -07:00
Mark HarrisandJonathan Swartz ff9f4a5532 Fix get_torch.cmake for pytorch packages without libtorch_python.so symlink (#404)
* Make get_torch.cmake robust to missing conda symlink
* Fix setting `nvtx3_dir` to help torch find nvtx3 installed in fvdb build

Signed-off-by: Mark Harris <mharris@nvidia.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Jonathan Swartz <jonathan@jswartz.info>
2025-05-14 20:37:48 +10:00
Mark HarrisandJonathan Swartz a06dc77fc5 Add clangd configuration for vscode (#382)
Add clangd configuration, docs and vscode settings to use it.

Signed-off-by: Mark Harris <mharris@nvidia.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Jonathan Swartz <jonathan@jswartz.info>
2025-05-14 11:29:39 +10:00
Francis Williams d196ae04ea Permute dimensions of SH coefficients to have gaussians first (#317)
* split sh into two files

move spherical harmonics autograd into its own file

small refactor

factor out jagged spherical harmonics

split jagged spherical harmonics in autograd

cleanup

cleanup

even more cleanup

remove camera dim from sh coeffs

split out shN and sh0

* more cleanup

* no more separate jagged op

* rm old jagged kernel

* don't hardcode float32

* tests

* more tests

* typo fix

* whitespace

* permute SH axes in kernel

* n first

* fix naninfmask tests

* fix merge issues

Signed-off-by: Francis Williams <francis@fwilliams.info>

* clang format

Signed-off-by: Francis Williams <francis@fwilliams.info>

* fix gsplat tests

Signed-off-by: Francis Williams <francis@fwilliams.info>

* comments

Signed-off-by: Francis Williams <francis@fwilliams.info>

* fix PR comments

Signed-off-by: Francis Williams <francis@fwilliams.info>

---------

Signed-off-by: Francis Williams <francis@fwilliams.info>
2025-05-12 13:16:56 -04:00
bbartlett-nv cd29610ade Multi-GPU Splat Training (#380)
* wip split script

* working split, but grows beyond target region

* first working split training

* working multi-gpu script

* refactor into sandbox

* adding dockerfile for 3dgs

* adding script to downsize colmap images

* updates after multi-gpu testing

* updates after testing

* refactor back to project and remove sandbox

* merge with upstream feature branch

* added docs more testing cleanups

* formatting / license updates

* updates to ortho script to address comments
2025-05-09 12:36:05 -04:00
380a8d698c Merge latest master into develop (#394)
* Avoid unnecessary and expensive getLastWriteTime calls for memory mapped files on windows

Signed-off-by: jjtParadox <jturner@4nsi.com>

* Add [[nodiscard]] to confusing math functions.

Signed-off-by: Jeff Lait <jlait@andorra.sidefx.com>

* Fix missing OpenVDB dependency for NanoVDB-only build

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* improved change notes and updated version number

* improved change notes and updated version number

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* improved documentation

Signed-off-by: Ken Museth <ken.museth@gmail.com>

---------

Signed-off-by: Ken Museth <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Separate PointsToGrid kernel lambdas into functors

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add missing iomanip include for latest GTest

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* improved nanovdb_convert

* improved nanovdb_convert

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* fixed typo

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* added unit tests

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* review feedback

Signed-off-by: Ken Museth <ken.museth@gmail.com>

---------

Signed-off-by: Ken Museth <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix format strings and Windows conversion warning

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix ODR violation due to anonymous namespace in SignedFloodFill

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Minor fix to unit-test of NanoVDB

* Minor fix to unit-test of NanoVDB

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* minor change

Signed-off-by: Ken Museth <ken.museth@gmail.com>

---------

Signed-off-by: Ken Museth <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add DeviceMesh and (optional) NCCL CMake Support

* Add device mesh

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Restore current device in constructor and destructor

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Enable range-based for loops

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Use structured bindings inside for loop

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Remove uneeded accessors and modularize functions

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Statically initialize entry point

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Encapsulate

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Switch to lightweight wrapper class for DeviceNodes vector

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Cleanup

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Minor changes needed for DistributedPointsToGrid

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add RAII DeviceGuard

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* More cleanup

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Clean up NCCL dependency

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Remove parallel_for to modularize

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Implement and test move constructor/assignment

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add docs

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Expand test and documentation

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Move non-reinit comment to function description

Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>

* Switch to using aliases and modern type names

Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>

* Use size_type instead of int for return

Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>

* Separate out DeviceGuard and clean up API

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Switch to DeviceMesh for MGPU sparse convolution example

* Convert MGPU convolution example to use DeviceMesh

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix typos and clarify

Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>

* Check for errors and switch to for_each

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add missing const variant of deviceData(device)

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add missing inline for DeviceMesh functions

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add missing NCCL ifdef

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix invalid free in UnifiedBuffer move constructor

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Change UnifiedBuffer prefetch and advise to be const

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix missing relocatable device code flag

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix namespace for AbsDiff and RelDiff ostream overloads

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix out-of-bounds device id

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix TBB template deduction in C++20

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fixed issue in signedfloodfill

* Fixed issue in signedfloodfill

Signed-off-by: Ken <ken.museth@gmail.com>

* partially addressed review comments

Signed-off-by: Ken <ken.museth@gmail.com>

* added RootData::TileIterator

Signed-off-by: Ken <ken.museth@gmail.com>

* cleanup

Signed-off-by: Ken <ken.museth@gmail.com>

* fixed assert bug

Signed-off-by: Ken <ken.museth@gmail.com>

* snapshot

Signed-off-by: Ken <ken.museth@gmail.com>

* fixed bug and improved unit-test

Signed-off-by: Ken <ken.museth@gmail.com>

* improved unit test and documentation

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix DeviceMesh.h header to be self-contained

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add missing constructor for C++20 used in AddBlindData.cuh

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: Ken Museth <1495380+kmuseth@users.noreply.github.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* removed dead code and updated the minor version number

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix class-memaccess warning due to non-trivial copy-assignment in GridBlindMetaData

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: Ken Museth <1495380+kmuseth@users.noreply.github.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* major improvements to GridBlindMetaData

* major improvements to GridBlindMetaData

Signed-off-by: Ken <ken.museth@gmail.com>

* minor changes to fix clang issue

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* minor simplification in CreateNanoGrid

* minor simplification in CreateNanoGrid

Signed-off-by: Ken <ken.museth@gmail.com>

* fixed typo

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* introducing new magic numbers for grids and files

* introducing new magic numbers for grids and files

Signed-off-by: Ken <ken.museth@gmail.com>

* removed two redundant magic numbers

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* fixed typos and improved documentation in NanoVDB

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Consolidate DeviceGuard into DeviceMesh header

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add distributed implementation of PointsToGrid

* Add distributed implementation of PointsToGrid

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix race condition in merge and single GPU case

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix kernel/cudaFree race conditions

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add DistributedPointsToGrid unittest

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Clean up example

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Use range-based for loops

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Use structured bindings inside for loop

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix Windows build and some warnings

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Update for refactored DeviceMesh

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix copyright/include

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add parallelForEach helper

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Templatize kernels to align with CUB better

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Shorten TemporaryDevicePool to TempDevicePool

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Refactor to use TempDevicePool

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Switch to class

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Parallelize kernel dispatch in build

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix race condition wrt to root node processing

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Speed up synchronization

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add comments and fix deprecated TransformInputIterator

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Address review comments

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Address more review comments

* Add more cudaCheck calls and restrict EqualityIndicator type

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix license identifiers and remove unused code

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add missing include

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: = <=>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* revert deprecation warning

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* minor cleanup

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Silence CMake warning about FindBoost module deprecation

* Silence CMake warning about FindBoost module deprecation

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix typo

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: Ken Museth <1495380+kmuseth@users.noreply.github.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Adding /bigobj to TestNanoVDB.cu compilation options to fix Windows build failures

* Adding /bigobj to TestNanoVDB.cu compilation options to fix Windows build failure
---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Suppress stringop-overflow warning due to GCC 11 regression

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Generalize MGPU grid construction to any power-of-two number of GPUs

* Start support for more than two GPUs in key merge

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Flip flop storage

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Generalize concurrent leftIntervals/rightIntervals usage

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix median search

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix rebalancing

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix recursive MGPU merge

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Update TODO

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add guards for zero-tile GPUs

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix race condition across different merge levels (and memory leak in corresponding tests)

* Fix memory leaks in PointsToGrid tests

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix leapfrogging across recursion levels

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Parallelize kernel dispatch for different levels

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Feature/fix get set methods

* minor cleanup

Signed-off-by: Ken <ken.museth@gmail.com>

* fixed issue in get/set random access methods

Signed-off-by: Ken <ken.museth@gmail.com>

* cleanup

Signed-off-by: Ken <ken.museth@gmail.com>

* deleted white space

Signed-off-by: Ken <ken.museth@gmail.com>

* cleanup

Signed-off-by: Ken <ken.museth@gmail.com>

* added unit tests

Signed-off-by: Ken <ken.museth@gmail.com>

* improved unit tests

Signed-off-by: Ken <ken.museth@gmail.com>

* improved unit tests

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add optimizations to MGPU PointsToGrid

* Add timer for MGPU PointsToGrid

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Avoid blocking kernel launches due to cudaFree

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix overlapping of copies

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Pipeline pointsPerVoxelPrefix sum

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Cleanup and optimization

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Further improve pipelining

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Remove unnecessary sync point

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Revert "Remove unnecessary sync point"

This reverts commit f01b36ad852f32ec65517b3baa08ea267d5edc2d.

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Switch to GPU sync

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix event destruction race condition and reduce host thread latency

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Revert timer add

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* More fine-grained pipelining

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix event wait/destruction race condition

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Improve points to grid

* minor cleanup

Signed-off-by: Ken <ken.museth@gmail.com>

* minor improvements to nanovdb::tools::cuda::PointsToGrid

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix Windows warnings

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Force set _WIN32 flag

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Move away from deprecated 20.04 runners

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: jjtParadox <jturner@4nsi.com>
Signed-off-by: Jeff Lait <jlait@andorra.sidefx.com>
Signed-off-by: Matthew Cong <mcong@nvidia.com>
Signed-off-by: Ken Museth <ken.museth@gmail.com>
Signed-off-by: Ken <ken.museth@gmail.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: jjtParadox <jturner@4nsi.com>
Co-authored-by: Jeff Lait <jlait@andorra.sidefx.com>
Co-authored-by: Ken Museth <1495380+kmuseth@users.noreply.github.com>
Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>
Co-authored-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Nick Avramoussis <4256455+Idclip@users.noreply.github.com>
2025-05-07 16:36:22 -07:00
Matthew Cong 2ba8712023 Clean up API by switching to CoordBBox (#397) 2025-05-07 16:36:05 -07:00
Mark Harris 9cec4f1934 Update the test data commit hash to the latest (#396)
* Update test data commit hash
---------

Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-05-07 16:10:22 +12:00
Mark Harris 652b7bff97 Add multicamera rasterization test and writePNG utility (#393)
* Add new image saving test utility and create fvdb_test_utils static lib
* Add `gtests` and `benchmarks` args to build.sh
* Add multicamera rasterization test
---------

Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-05-07 01:15:41 +00:00
Matthew Cong 34996d0f0b Revert "Replace binary search for jidx computation with nested kernels (#375)" (#392)
This reverts commit 378b08b84d.
2025-05-06 15:50:37 -07:00
Jonathan Swartz 39d2c17c89 Merge pull request #2040 from swahtz/fvdb_update
fvdb update
2025-05-01 16:16:31 +12:00
Matthew Cong dd8862cca3 Add venv docs and update build requirements file (#373) 2025-05-01 14:57:28 +12:00
Francis Williams 0d79d8d35c Rewrite colmap dataset (#388)
* rewrite colmap dataset

Signed-off-by: Francis Williams <francis@fwilliams.info>

* named args

Signed-off-by: Francis Williams <francis@fwilliams.info>

---------

Signed-off-by: Francis Williams <francis@fwilliams.info>
2025-04-30 17:25:33 +00:00
Francis Williams e97d916284 remove stray cerr (#389) 2025-04-30 13:05:06 -04:00
Matthew Cong 378b08b84d Replace binary search for jidx computation with nested kernels (#375)
* Replace binary search for computing jidx with nested kernels

* Cleanup for CPU implementation
2025-04-30 09:21:35 -04:00
Jonathan Swartz c31b75ce69 Fix bug where the maximum radius was not being calculated across all cameras in computeGradientState (#385)
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-04-30 09:12:56 -04:00
Jonathan Swartz 76ad1c97d4 3dgs: Replace ProjectBackwards GLM math use with NanoVDB Math (#344)
This remove the last vestiges of glm usage from our code by refactoring any Gaussian Projection Backwards code to use nanovdb::math classes and to cleanup any style/naming conventions on code that is refactored. To that end, several themes of work in this PR include:

Removing GLM from our build infrastucture
Transitioning the code in GaussianProjectedBackward.cu & GaussianProjectedJaggedBackward.cu to using nanovdb::math in place of glm
Adding functionality to nanovdb::math to support a few needed missing operators
Removing GaussianTypes.cuh which was used to define glm types for Projection
Consolidated any remaining, needed warp-prefix functions from GaussianTypes.cuh and GaussianVectorTypes.cuh into GaussianWarpUtils.cuh
Refactored functions in GaussianUtils.cuh to return their calculated results instead of directly modifying output parameters where possible. The return values of these functions is then used by the calling code for modifying variables in the calling code. For instance, instead of add_blur_vjp adding blur to a parameter passed by reference, generateBlurVectorJacobianProduct now builds a nanovdb::Math::Mat2 which is used by the calling code.
Add docstrings to GaussianUtils.cuh
Moving snake_case variables/functions to camelCase and being more descriptive in their naming
Making variable types and names consistent between related functions (forward/backwards)
Fixing worldToCamMatrices being mistakenly called camToWorldMatrices

---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-04-30 00:17:00 +00:00
Jonathan Swartz 2878a819d8 3dgs Backward Projection Test Fix (#372)
* Debugging

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* Clarifying comments

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* Fix logic in computeGradientState
Fixed appropriate sizing of the tensors it writes to

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* Change the computeGradientState loops over C*N to save on some multiplications

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* backward test checkpoint

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* Revert BackwardTest rework

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* update test data tag

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* cleanup

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-04-29 20:41:09 +12:00
Christopher Horvath 27a59587a5 Added a fvdb devcontainer (#381)
* Added a fvdb devcontainer so that VSCode and Github Codespaces can run inside the docker environment automatically

Signed-off-by: Christopher Horvath <blackencino+git@gmail.com>

* Improved the language in the comments

Signed-off-by: Christopher Horvath <blackencino+git@gmail.com>

* Made suggested configuration changes from VSCode copilot

Signed-off-by: Christopher Horvath <blackencino+git@gmail.com>

---------

Signed-off-by: Christopher Horvath <blackencino+git@gmail.com>
2025-04-28 11:38:41 -04:00
Matthew Cong 5dc696e88c Use PyTorch's pybind11 instead of source checkout (if possible) (#359) 2025-04-23 19:27:18 -07:00
Jonathan Swartz 4665c441a3 Merge pull request #2033 from swahtz/fvdb_update 2025-04-24 12:27:12 +12:00
Jonathan Swartz 5592b5fca8 Merge branch 'feature/fvdb' into fvdb_update
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-04-24 12:22:48 +12:00
Jonathan Swartz e5c380d127 Merge pull request #371 from matthewdcong/develop_fvdb_merge
Merge latest develop into feature/fvdb
2025-04-24 12:00:36 +12:00
Matthew Cong 360513e139 Merge remote-tracking branch 'upstream/develop' into feature/fvdb 2025-04-23 14:51:58 -07:00
Mark Harris 923be735a0 Refactor GaussianRasterizeForward (#308)
Similar to #231 this PR refactors the forward pass of gaussian rasterization.

    Adds a new Gaussian structure for use in both passes
    Adds a DeviceArgs class that simplifies configuring and passing arguments for the kernel, and contains the method volumeRenderTileForward which operates on the class data directly.
    Updates code for our coding style standard (e.g. camel case names)
    Renames "colors" to "features" everywhere to better match high-dimensional rendering capabilities.
    Removes redundant "pixel" and "perPixel" prefix/suffixes from some variables.

Signed-off-by: Mark Harris mharris@nvidia.com

---------

Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-04-24 07:48:51 +10:00
Matthew Cong 68160beb58 Merge pull request #370 from matthewdcong/master_develop_merge_part2
Merge latest master into develop
2025-04-23 14:47:29 -07:00
Matthew Cong 3ff8a4bb17 Squashed commit of the following:
Merge latest master into develop (squashed to avoid duplicates)
2025-04-23 14:41:05 -07:00
Matthew Cong 050ac875b5 Merge pull request #369 from matthewdcong/master_develop_merge_part1
Merge upstream commits from ASWF master into develop
2025-04-23 14:36:41 -07:00
Matthew Cong 09b77cb8ba Merge branch 'master' into develop 2025-04-23 14:33:17 -07:00
Nick Avramoussis cbc4a347ee Merge pull request #2029 from Idclip/bump_version
Bump version to 12.0.2
2025-04-24 06:10:20 +12:00
Matthew Cong 01b986c77d Move away from deprecated 20.04 runners (#2032)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-04-24 06:09:45 +12:00
Mark Harris eadf8e38a1 Add a CMakeLists for standalone caching of fvdb_test_data (#362)
This adds a CMakeLists.txt that simply uses CPM to download / cache the FVDB test data if it is not already in the CPM_SOURCE_CACHE.

This is run by build.sh when running ctest (build.sh ctest).

Note that the CPM_SOURCE_CACHE needs to be set to the same value as set when building the gtests (or unset on both).


Signed-off-by: Mark Harris <mharris@nvidia.com>

* Add CPM_SOURCE_CACHE to env in fvdb-gtests GHA job

Signed-off-by: Mark Harris <mharris@nvidia.com>

---------

Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-04-23 15:49:49 +10:00
Francis Williams 356efd6d00 Refactor projection forward pass (#334)
Refactors forward pass of projection to use tensor accessors and wrap kernel call in a class.
Also load cameras into shared memory which should be more efficient than having each thread load the same camera.

Signed-off-by: Francis Williams <francis@fwilliams.info>
2025-04-23 15:28:11 +10:00
Jonathan Swartz c2d6ea99ed 3dgs projection tests (#356)
Adding gtests for the 3D Gaussian Splatting Projection code using the garden scene.

---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-04-22 22:34:11 +00:00
Christopher Horvath 91846684b4 Moved docker troubleshooting into a separate markdown file (#360)
* Moved docker troubleshooting into a separate markdown file

Signed-off-by: Christopher Horvath <blackencino+git@gmail.com>

* Contents of docker_readme updated.

Signed-off-by: Christopher Horvath <blackencino+git@gmail.com>

---------

Signed-off-by: Christopher Horvath <blackencino+git@gmail.com>
2025-04-22 13:05:23 -07:00
Matthew Cong bc07dba8c5 Merge pull request #354 from matthewdcong/develop_fvdb_merge
Merge latest develop into feature/fvdb
2025-04-21 22:18:21 -07:00
Mark Harris c678006f6e Use object libraries to reduce recompilation of bindings and tests. (#349)
Use intermediate object libraries to reduce recompilation of gtests when modifying libfvdb sources.

Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-04-22 14:40:49 +10:00
Christopher Horvath 4fba75b70d Added WSL2/Ubuntu docker troubleshooting to the README (#355)
Signed-off-by: Christopher Horvath <blackencino+git@gmail.com>
2025-04-21 20:39:45 -07:00
Matthew Cong 8607b78e4d Fix calling host function from hostdev function warning (#351) 2025-04-21 19:14:39 -07:00
Matthew Cong 9d3efb8a21 More updates 2025-04-18 11:51:37 -07:00
Matthew Cong 695729a0c0 Update FVDB accessors 2025-04-18 09:43:48 -07:00
Matthew Cong 79f732ad1a Merge branch 'develop' into feature/fvdb 2025-04-18 08:46:47 -07:00
Francis Williams 48d68e9f60 unfuck git (#312)
Signed-off-by: Francis Williams <francis@fwilliams.info>
2025-04-17 17:56:08 -04:00
Matthew Cong 97472f6ef1 Minor changes to GridBatchImpl in preparation for Unified Memory support (#341)
* Switch mHostMetadata to raw pointer in preparation for unified memory

* Set GPU metadata via kernels

* Add missing device guard

* Insert newline

* Use kernels for setFineTransform and setCoarseTransform

* Fix GridBatchImpl for empty grid

* More cleanup

* Move indexInternal to .cu file

* Add missed file
2025-04-17 11:24:09 -07:00
Mark Harris afd31e5509 Add fvdb-dev as CODEOWNERS for the fvdb directory (#346)
Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-04-17 14:35:14 +12:00
Matthew Cong e8a28fe1fb Merge pull request #343 from matthewdcong/upstream_aswf_merge
Merge latest master into develop
2025-04-16 16:34:45 -07:00
Matthew Cong 753d98fb7d Merge branch 'master' into upstream_aswf_merge 2025-04-16 14:06:19 -07:00
Jonathan SwartzandMark Harris 3b6880d96d CI: gtest build and run setup (#336)
This PR sets up running our gtest build targets as part of our automated fVDB CI actions.

First, all the gtests are built as part of the library & wheel building and the whole build directory is uploaded as an artifact separately of the wheel.
In a separate task on a CI machine with a GPU, the tar'd build directory is downloaded. The build directory is un-tar'd and the gtests are run normally with ./build.sh ctest
Fixes #172
Fixes #173

---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Mark Harris <mharris@nvidia.com>
2025-04-15 16:51:06 +10:00
Matthew Cong 535923f2be Re-enable NumPy 2 support (#338)
Previously we pinned NumPy to versions prior to v2.0.0 (i.e. v1.x.x) due to the lack of NumPy 2 ABI support in point-cloud-utills. The latest version of point-cloud-utils now supports the NumPy 2 ABI so we can relax this pinning.

PyTorch v2.6.0 requires NumPy v2.x.x and it's likely that slightly earlier versions also built with NumPy v2.x.x as well.
2025-04-15 15:51:40 +12:00
Matthew Cong 150c901bf8 Remove StringOrListOfStrings in favor of function overloads (#339)
* Remove StringOrListOfStrings in favor of function overloads

* Replace default constructor with nullopt

* Fix formatting

* Another formatting fix
2025-04-14 20:44:43 -07:00
Matthew Cong fbd61b1b4b Fix missing device ordinals in examples (#337) 2025-04-14 20:14:13 -07:00
Matthew CongandJonathan Swartz fa12f4e5ce Remove TorchDeviceOrString in favor of stricter function overloads (#330)
* Remove TorchDeviceOrString in favor of stricter function overloads

* Small fixes to device index

* Fix formatting

* Remove trailing whitespace

* Add missing binding

* Small fixes

* Switch from torch::optional to std::optional

* Fix missing device ordinal

* Update stub file

* Format

---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Jonathan Swartz <jonathan@jswartz.info>
2025-04-14 14:26:02 -07:00
Matthew Cong a5380f30c5 Add support for editable PyTorch installs (#333)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-04-14 13:23:43 -07:00
Sérgio AgostinhoandJonathan Swartz 1225b9c798 fVDB: Promote SyncBatchNorm to a first-class layer (#322)
Promotes the SyncBatchNorm layer to a first-class citizen.
Addresses the issue with the original implementation where checkpoints created with SyncBatchNorm were incompatible with vanilla BatchNorm, which is a behavior PyTorch natively supports.

---------

Signed-off-by: Sérgio Agostinho <sagostinho@nvidia.com>
Co-authored-by: Jonathan Swartz <jonathan@jswartz.info>
2025-04-14 05:33:21 +00:00
Jonathan Swartz f290b512ca CI Fix Benchmarks job (#332)
* Fix benchmark task branch checkout failure

---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-04-14 16:20:12 +12:00
Jonathan Swartz 9101f1dfdf Renamed gsplat headers that had prefix 'Gsplat' or had no mention of Gaussian to 'Gaussian*' prefix (#326)
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-04-11 10:55:02 -04:00
ghurstunither 9437cd7867 Tube and Dilated Mesh Level Set Constructors (#1935)
Adds Various level set constructors:
* tools::createLevelSetCapsule creates a grid containing a narrow-band level set representation of a capsule (tube with constant radius and sphere caps).
* tools::createLevelSetTaperedCapsule creates a grid containing a narrow-band level set representation of a tapered capsule (tube with sphere caps and different radii at both ends, or equivalently the convex hull of two spheres with possibly different centers and radii).
 * tools::createLevelSetTubeComplex creates a grid containing a narrow-band level set representation of a tube complex (a collection of capsules or tapered capsules defined by endpoint coordinates and segment indices).
* tools::createLevelSetDilatedMesh creates a grid containing a narrow-band level set representation of a dilated surface mesh (dilated by a radius in all directions).

Base class that can be used to create other level sets:
* tools::ConvexVoxelizer, which can be inherited to implement a convex level set constructor.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2025-04-11 09:03:36 -04:00
ghurstunither 76d8a5e3a5 Merge pull request #2015 from ghurstunither/TSC_Jan22_2025
TSC notes Jan 22, 2025
2025-04-11 08:56:47 -04:00
Matthew Cong aa3e269b6d More cleanup for TorchDeviceBuffer (#320)
* More cleanup for TorchDeviceBuffer

* Format

* More cleanup
2025-04-11 00:33:32 -07:00
Jonathan Swartz 9ab8037226 CI: Fix merging reference branch to PR branch before building (#329)
* Added fvdb CI build steps to merge feature/fvdb branch in PR to PR branch before testing


---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-04-11 18:27:36 +12:00
Jonathan Swartz 868ef3a1eb Add global cmake download timeout and CPM_SOURCE_CACHE to fvdb CI(#328)
---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-04-11 17:18:29 +12:00
Jonathan SwartzandMark Harris 24a942d5b6 Replaced use of glm with nanovdb math in projectForwardKernel (#238)
Implemented overloaded fucntions in GsplatUtils, Projection, etc. to not break other pieces of pipeline that still use glm
Implemented various Matrix classes in nanovdb::math that were required.

---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Signed-off-by: Mark Harris <mharris@nvidia.com>
Co-authored-by: Mark Harris <mharris@nvidia.com>
2025-04-11 02:55:15 +00:00
Mark HarrisandJonathan Swartz 40b1e6a8de Build fVDB module using scikit-build-core / CMake (#264)
Switched from using the PyTorch built-in setuptools-based cpp_extension module to a scikit-build-core + CMake build system. Additionally this includes the introduction of a new build script, updates to the Dockerfile, and updates to the documentation.

---------

Signed-off-by: Mark Harris <mharris@nvidia.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Jonathan Swartz <jonathan@jswartz.info>
2025-04-11 12:32:22 +12:00
Nick Avramoussis 71ac2add41 Bump version to 12.0.2
Signed-off-by: Nick Avramoussis <4256455+Idclip@users.noreply.github.com>
2025-04-10 22:14:28 +12:00
Ken Museth f18d30ca0d Improve points to grid (#318)
* minor cleanup

Signed-off-by: Ken <ken.museth@gmail.com>

* minor improvements to nanovdb::tools::cuda::PointsToGrid

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
2025-04-09 11:15:20 -07:00
Nick Avramoussis 6a0b12dadb Merge pull request #2023 from AcademySoftwareFoundation/v12.0.1_rc
V12.0.1
2025-04-09 17:50:19 +12:00
Matthew Cong 87d053396f Fix missing declaration in TorchDeviceBuffer (#319)
* Fix missing declaration in TorchDeviceBuffer
2025-04-09 00:33:25 +00:00
Francis Williams 8d876b90c8 fix grid stride loops (#316) 2025-04-08 15:51:57 -04:00
Matthew Cong e9277d5fe8 Refactor TorchDeviceBuffer to support an arbitrary single torch::Device (#302) 2025-04-04 13:47:54 -07:00
Nick Avramoussis c4ab206580 Merge branch 'master' into v12.0.1_rc 2025-04-03 18:45:16 +13:00
Nick Avramoussis f552aab859 Updated doc/changes.txt
Signed-off-by: Nick Avramoussis <4256455+Idclip@users.noreply.github.com>
2025-04-03 18:22:14 +13:00
e05dd592bb Use new Gaussian Splat C++ API from Python (#290)
Implements a new GaussianSplat3d class in C++ that also tracks appropriate gradient state for optimization.
Clean up the Gaussian splatting code in python. We now only depend on Pytorch!
Clean up the optimizer code a lot by moving gradient state tracking to C++ class.
Move refinement part of optimization code to training script since it's clearer. The whole algorithm can now be read in one file.
Add a bunch of new error checking.

Still outstanding:

    Implement pruning/splitting/duplication in CUDA (Going to be a seperate PR)

-----
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Signed-off-by: Mark Harris <mharris@nvidia.com>
Co-authored-by: Mark Harris <mharris@nvidia.com>
Co-authored-by: Jonathan Swartz <jonathan@jswartz.info>
2025-04-03 14:22:22 +11:00
Matthew Cong e217cbe6f2 Add patches to external dependencies required for CMake 4 (#305) 2025-04-02 13:12:26 -07:00
Matthew Cong 836d4a14d8 Merge pull request #306 from matthewdcong/upstream_aswf_merge
Merge in latest master into develop
2025-04-02 10:58:45 -07:00
Matthew Cong dcf8724324 Merge branch 'master' into develop 2025-04-02 09:43:35 -07:00
Ken Museth 28ccbc1d1f fixed offset bug in IndexToGrid - see PR2013 (#2021)
* fixed offset bug in IndexToGrid - see PR2013

Signed-off-by: Ken <ken.museth@gmail.com>

* added pendingchanges

Signed-off-by: Ken <ken.museth@gmail.com>

* improved documentation

Signed-off-by: Ken <ken.museth@gmail.com>

* minor update to documentation

Signed-off-by: Ken <ken.museth@gmail.com>

* addressed review comments

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
2025-04-02 09:28:36 -07:00
Nick Avramoussis 1e8591fdc4 Updated release date
Signed-off-by: Nick Avramoussis <4256455+Idclip@users.noreply.github.com>
2025-04-02 18:36:24 +13:00
Matthew Cong e281e93a97 Merge pull request #300 from matthewdcong/upstream_aswf_merge
Merge latest master into develop
2025-03-31 14:07:27 -07:00
Matthew Cong 987cf322d6 Merge branch 'master' into develop 2025-03-31 12:16:02 -07:00
Nick Avramoussis f87af0c0c4 Merge pull request #2020 from AcademySoftwareFoundation/master
master->v12.0.1
2025-03-28 20:27:10 +13:00
Nick Avramoussis 09f728eaca Merge pull request #2019 from Idclip/weekly_ci
Weekly CI fixes
2025-03-28 20:18:35 +13:00
Nick Avramoussis 113550d523 weekly CI fixes
Signed-off-by: Nick Avramoussis <4256455+Idclip@users.noreply.github.com>
2025-03-28 08:36:26 +13:00
Nick Avramoussis 304ddf8060 Merge pull request #2018 from Idclip/relnotes
Updated release notes for 12.0.1
2025-03-27 19:37:54 +13:00
Nick Avramoussis 9ecd3d408f Updated release notes for 12.0.1
Signed-off-by: Nick Avramoussis <4256455+Idclip@users.noreply.github.com>
2025-03-27 18:32:48 +13:00
jmlait c97acb439d Merge pull request #2016 from sideeffects/sendupstream_nanovdbtranspose
Transpose on NanoToOpenVDB allowing round tripping
2025-03-26 14:19:24 -04:00
Jeff Lait 75133a8da7 Add changes note.
Signed-off-by: Jeff Lait <jlait@andorra.sidefx.com>
2025-03-26 11:51:57 -04:00
Mark Harris f87be92caa Add Doxygen docs for Gaussian Splatting C++ functions (#278)
Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-03-26 14:01:01 +11:00
Jeff Lait 11334b5e44 The openvdb::Mat3::transpose() method returns a transpose of itself,
it doesn't do an in-place transpose.

Thus the line

    mat.transpose(); // the 3x3 in nanovdb is transposed relative to openvdb's 3x3

is a no-op, and not actually transposing the matrix.  Since we DO
transpose when we do an OpenToNano; it is important we transpose here
or we can't round-trip.

Unfortunately, it has been this way since the initial commit, so it is
quite likely tooling has already worked around this....

Signed-off-by: Jeff Lait <jlait@andorra.sidefx.com>
2025-03-24 10:58:35 -04:00
Jonathan Swartz d977b72a4a fVDB: Add transform metadata when saving non-index grids (#295)
* Add transform metadata to non-index grids we're saving
fixes #32
* Fix data grid saving to be able to save non-uniform voxel scales
Add tests
---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-03-24 11:06:45 +13:00
ghurstunither 50a980f845 TSC notes
TSC notes

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2025-03-19 14:06:56 -04:00
Mark Harris c877c9e7f0 Unit tests for GaussianForwardRasterization (#289)
New GaussianRasterizeForward unit tests.

---------

Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-03-18 05:46:59 +11:00
Jonathan Swartz d32be67783 Update credentials version
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-03-17 20:23:43 +13:00
Jonathan Swartz b94d3e1a96 added fvdb aws codebuild configurations
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-03-17 20:20:47 +13:00
Matthew Cong 74d46e5601 Add optimizations to MGPU PointsToGrid (#283)
* Add timer for MGPU PointsToGrid

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Avoid blocking kernel launches due to cudaFree

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix overlapping of copies

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Pipeline pointsPerVoxelPrefix sum

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Cleanup and optimization

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Further improve pipelining

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Remove unnecessary sync point

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Revert "Remove unnecessary sync point"

This reverts commit f01b36ad852f32ec65517b3baa08ea267d5edc2d.

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Switch to GPU sync

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix event destruction race condition and reduce host thread latency

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Revert timer add

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* More fine-grained pipelining

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix event wait/destruction race condition

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-03-13 15:49:17 -07:00
Nick Avramoussis 4b38fba44f Specifically include glu.h on windows (#2010)
Signed-off-by: Nick Avramoussis <4256455+Idclip@users.noreply.github.com>
2025-03-14 10:39:22 +13:00
Ken Museth 9f52c46ad0 Feature/fix get set methods (#288)
* minor cleanup

Signed-off-by: Ken <ken.museth@gmail.com>

* fixed issue in get/set random access methods

Signed-off-by: Ken <ken.museth@gmail.com>

* cleanup

Signed-off-by: Ken <ken.museth@gmail.com>

* deleted white space

Signed-off-by: Ken <ken.museth@gmail.com>

* cleanup

Signed-off-by: Ken <ken.museth@gmail.com>

* added unit tests

Signed-off-by: Ken <ken.museth@gmail.com>

* improved unit tests

Signed-off-by: Ken <ken.museth@gmail.com>

* improved unit tests

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
2025-03-13 13:21:24 -07:00
Francis WilliamsandFrancis Williams 4e376ff930 C++ Class for GaussianSplat3d (#280)
---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Francis Williams <francis@fwilliams.info>
2025-03-12 12:34:29 +13:00
Jonathan Swartz 8685b81ac2 Merge pull request #2012 from matthewdcong/bugfix/windows_nanovdb_ci
add CMAKE_CUDA_ARCHITECTURES to nanovdb weekly tests (#257)
2025-03-10 11:13:36 +13:00
Jonathan Swartz 79be73be68 add CMAKE_CUDA_ARCHITECTURES to nanovdb weekly tests (#257)
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-03-07 09:47:30 -08:00
Matthew Cong 8edb137baa Fix race condition across different merge levels (and memory leak in corresponding tests) (#274)
* Fix memory leaks in PointsToGrid tests

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix leapfrogging across recursion levels

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Parallelize kernel dispatch for different levels

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-03-05 12:52:38 -08:00
Francis Williams 82aab4082c Wide channel width in GaussianRasterizeBackwards (#262)
* move atomic adds to helper

* add fixture and basic cat test

* move gradient contribution to its own function

* renaming

* remove color struct to allow different shared memory channels

* channel ranges for atomic add and shared memory color dim arg

* channel range for color fetching into shared memory and split color and gaussian shared memory fetching into two functions

* size_t

* add template parameter for shared channels

* stub for chunked

* checkpoint

* checkpoint

* rm prints

* some constexpr

* more loop unrolling

* more unrolling

* fix

* more tests

* rm old codepath

* start renaming

* more renames

* rename

* rename all members to use m prefix

* rename template args

* more renames

* cpu throws test

* error checking and bring back all dimensions

* small cleanup
2025-03-05 00:34:15 +00:00
Matthew Cong 270d2238b8 Generalize MGPU grid construction to any power-of-two number of GPUs (#270)
* Start support for more than two GPUs in key merge

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Flip flop storage

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Generalize concurrent leftIntervals/rightIntervals usage

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix median search

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix rebalancing

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix recursive MGPU merge

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Update TODO

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add guards for zero-tile GPUs

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-03-04 12:42:17 -08:00
Matthew Cong 0e8e1966b7 Merge pull request #271 from matthewdcong/sync/master_to_develop
Merge latest ASWF master into develop
2025-03-04 12:13:18 -08:00
Matthew Cong 84c258562e Merge branch 'master' into develop 2025-03-04 11:10:29 -08:00
12276a7afc Unit tests for GaussianSplatBackward (#259)
* move gaussian accumulation into a function. Move delta and sigma into methods on Gaussians
* Added a simple test to compare GaussianRasterizeBackward against some saved data.
* Fixed a bug where packed was uninitialized.
* Fixed another latent bug where we were getting a pointer from a tensor accessor. This might fail if that accessor is strided in the last dimension.
* Populate compile time definition of path to test data in C++ unit tests.

Signed-off-by: Mark Harris <mharris@nvidia.com>
Co-authored-by: Mark Harris <harrism@users.noreply.github.com>
Co-authored-by: Jonathan Swartz <swahtz@users.noreply.github.com>
2025-02-26 16:33:33 +11:00
Mark Harris e2b295a197 CMake configuration for building libfvdb (#237)
* Add CMakeLists and dependency getters for libfvdb

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Add cudnn to dev conda environment

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Fix compilation errors uncovered when building with cmake

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Add build dir to gitignore

* cudnn_fe --> cudnn_frontend, fix cutlass

* Revert adding cudnn to conda dev_environment

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Build gtests and gbenchmarks from main cmakelists

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Fix tensor dimension corruption by scoping IntArrayRef's vector lifetime

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Add Cutlass patch

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Add cpm source cache.

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Fix CPM source cache and make it overrideable

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Add blosc and missing compilation settings.

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Since we require CUDA 12+, we can drop the cutlass patch.

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Fix blosc build options

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Fix up compiler options and properly scope cmake options, and generate compile_commands.json

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Remove commented out lines.

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Add install rules

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Whitespace

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Make get_torch.cmake a bit more robust (more informative error on import failure)

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Add missing typename keyword (pre-C++20)

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Update to C++20, which for some reason makes us need the cutlass patch again, so enable it.

---------

Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-02-26 07:51:31 +11:00
Jonathan Swartz bafe8fe86e add CMAKE_CUDA_ARCHITECTURES to nanovdb weekly tests (#257)
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-02-25 08:56:56 -08:00
bbartlett-nvandFrancis Williams e1cf99fbed adding in scripts for ortho, mesh, mask training etc (#247)
* adding in scripts for ortho, mesh, mask training etc

* rm dep on colmapparser in gaussiansplatting

* move colmap dataset out of core fvdb into project

* update imports in gaussian splatting project

* revert dev env

* autoformat and rename T1 -> normalizat_transform

* clean up normalization argument

* print to warning

* rm print

* bring back sorting

---------

Co-authored-by: Francis Williams <francis@fwilliams.info>
2025-02-25 11:36:52 -05:00
Francis Williams 794820311b Refactor Backward Gaussian Rasterization and remove glm (#231)
* remove glm dep and use struct

* rename macros

* small cleanup and const some things

* move volume render backward to helper function

* checkpoint

* rename S -> ScalarType

* pass in warp as variable

* camel case and type cleanup

* S -> ScalarType

* clean up full file

* address PR comments

* rename thread -> blockDim, blocks -> gridDim

* fixed and moved to class

* checkpoint

* checkpoint

* checkpoint

* rename

* cleanup

* checkpoint

* cleanup

* more cleanup

* Fix comment

* handle empty inputs

* fix

* fix error checking
2025-02-22 20:07:44 +00:00
Jonathan Swartz 350febee18 Merge pull request #248 from matthewdcong/fvdb_develop_integ
Merge develop into feature/fvdb
2025-02-21 12:37:39 +13:00
Matthew Cong ebca97a1a2 Merge develop into feature/fvdb
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-02-20 14:09:23 -08:00
Matthew Cong 4f60c64028 Suppress stringop-overflow warning due to GCC 11 regression (#246)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-02-20 13:08:44 -08:00
jmlait 5ff0edc2cc Merge pull request #2004 from sideeffects/sendupsream_tscnotes20250205
Meeting notes for Feburary 5th, 2025.
2025-02-19 13:17:27 -05:00
apradhana 3c8f8ce6f0 Merge pull request #1998 from apradhana/TSC_Jan8_2025
Add Meeting notes from 2025-01-09.
2025-02-19 10:17:19 -08:00
Mark Harris fb999c49e4 Fix strict aliasing violation in encode_depth, and document helper functions. (#236)
Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-02-19 08:46:26 +13:00
Jonathan Swartz 2a7498f7f7 Merging current develop into feature/fvdb (#234)
---------
Signed-off-by: Ken Museth <ken.museth@gmail.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-02-18 14:22:08 +13:00
Jonathan Swartz c9a06baf88 Adding /bigobj to TestNanoVDB.cu compilation options to fix Windows build failures (#235)
* Adding /bigobj to TestNanoVDB.cu compilation options to fix Windows build failure
---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-02-18 11:33:27 +13:00
Matthew Cong e170b879ae Use cuDNN 9 that's included in PyTorch 2.4 and above (#222)
Add cuDNN include directory and vendor in cuDNN frontend

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-02-18 09:04:43 +13:00
Jonathan SwartzandFrancis Williams 8c6c449898 Change status_checks to use self-hosted runner (#226)
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Francis Williams <fwilliams@users.noreply.github.com>
2025-02-15 00:07:35 +00:00
Matthew CongandKen Museth 1cc5aa13ee Silence CMake warning about FindBoost module deprecation (#230)
* Silence CMake warning about FindBoost module deprecation

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix typo

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: Ken Museth <1495380+kmuseth@users.noreply.github.com>
2025-02-14 14:44:54 -08:00
Ken Museth 692cdde46c minor cleanup (#229)
Signed-off-by: Ken <ken.museth@gmail.com>
2025-02-14 13:59:38 -08:00
Ken Museth 0d157c199f revert deprecation warning (#228)
Signed-off-by: Ken <ken.museth@gmail.com>
2025-02-14 12:02:33 -08:00
Mark HarrisandFrancis Williams 7b040d3c67 Gaussian Splatting sparse tile intersection (#213)
* Implementation and tests of dispatchGaussianTileIntersectionSparse (not yet passing)

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Some bug fixes, intermediate changes, still failing tests.

* fix

* Use custom kernel for sparse tile_offsets. Fixes current sparse test failures.

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Make non-sparse tile_offsets look like it used to.

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Refactor dispatchGaussianTileIntersection to reduce repetition between dense and sparse.

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Add a random sparsity test.

Signed-off-by: Mark Harris <mharris@nvidia.com>

* docs and move sparse intersection into a different header

* grid stride loops

---------

Signed-off-by: Mark Harris <mharris@nvidia.com>
Co-authored-by: Francis Williams <francis@fwilliams.info>
2025-02-14 14:18:10 -05:00
Matthew Congand= 0783b2a7e1 Add distributed implementation of PointsToGrid (#102)
* Add distributed implementation of PointsToGrid

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix race condition in merge and single GPU case

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix kernel/cudaFree race conditions

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add DistributedPointsToGrid unittest

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Clean up example

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Use range-based for loops

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Use structured bindings inside for loop

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix Windows build and some warnings

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Update for refactored DeviceMesh

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix copyright/include

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add parallelForEach helper

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Templatize kernels to align with CUB better

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Shorten TemporaryDevicePool to TempDevicePool

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Refactor to use TempDevicePool

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Switch to class

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Parallelize kernel dispatch in build

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix race condition wrt to root node processing

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Speed up synchronization

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add comments and fix deprecated TransformInputIterator

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Address review comments

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Address more review comments

* Add more cudaCheck calls and restrict EqualityIndicator type

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix license identifiers and remove unused code

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add missing include

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: = <=>
2025-02-14 08:51:18 -08:00
Matthew Cong 20c22d71e5 Add support for venv builds (#219)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-02-14 00:12:25 +00:00
Matthew Congand= 372e48a430 Defer psutil import which is not specified as a Python requirement (#217)
* Defer psutil import which is not specified as a Python requirement

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix formatting

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: = <=>
2025-02-14 00:02:08 +00:00
Matthew Cong ad63e07a03 Consolidate DeviceGuard into DeviceMesh header (#221)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-02-13 12:40:14 -08:00
Ken Museth 1bb3b12482 fixed typos and improved documentation in NanoVDB (#220)
Signed-off-by: Ken <ken.museth@gmail.com>
2025-02-13 11:46:16 -08:00
Matthew Cong 273d63e2ca Switch AX CI jobs to be weekly (#216)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-02-12 19:03:39 -08:00
Ken Museth 7cdf89202f introducing new magic numbers for grids and files (#210)
* introducing new magic numbers for grids and files

Signed-off-by: Ken <ken.museth@gmail.com>

* removed two redundant magic numbers

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
2025-02-12 13:45:38 -08:00
Matthew Cong 69a7808d4d Remove TBB dependency introduced by GCC (#215)
* Remove TBB dependency introduced by GCC

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix formatting

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-02-12 12:16:33 -08:00
Mark Harris 7f22194e09 Return activeTileMask from computeSparseInfo (#211)
Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-02-11 18:43:10 -05:00
7c04627c24 Add C++ unit tests for GaussianTileIntersection (#203)
* Rename computeSparseInfoTest and add new unit tests for GaussianTileIntersection.

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Fix handling of all-zero-radius splats. Fixes failing unit test.

Signed-off-by: Mark Harris <mharris@nvidia.com>

* spdx header

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Fix the failing BasicIntersectionTest

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Add an explanatory comment about packed mode.

Signed-off-by: Mark Harris <mharris@nvidia.com>

* refactoring

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Add failing test, commented out.

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Separate GaussianFullyFusedProjection*.cu into distinct files (#201)

* separate projection files

* rename some functions

* rename jagged

* fix empty gaussian test, add error checking, and add error checking test

* Rename NanInfMaskTest to match other test file naming

Signed-off-by: Mark Harris <mharris@nvidia.com>

---------

Signed-off-by: Mark Harris <mharris@nvidia.com>
Co-authored-by: Francis Williams <fwilliams@users.noreply.github.com>
Co-authored-by: Francis Williams <francis@fwilliams.info>
2025-02-11 18:00:24 -05:00
Matthew Cong a2cb6c08b1 Update NanoVDB with latest changes (#2001)
* Merge changes from latest NanoVDB

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix comments and trailing include

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-02-11 13:55:30 -08:00
Francis Williams 813ccdcf6b C++ PLY saving (#188)
* save ply for gaussian splats

* fixes

* filter operation in cuda

* checkpoint

* fixes and python bindings

* end to end test in python

* rm unused imports

* helper function for getting bytes from tensor

* rm thread divergent returns and inline on header only function

* use std generate

* use tensorOpts

* use config array

* const filename

* error message fix

* contiguous

* stylefix

* whitespace

* stylefix2

* grid stride loop and launch bounds

* use stream in sparse info computation (#190)

* Add a Vec2 type to nanovdb math (#166)

* orthographic projection in gaussian splatting

add orthographic flag to depth rendering function

derp

add ortho projection to jagged projection

* small refactor

* add vec2 class to nanovdb math

* fix

* Separate GaussianFullyFusedProjection*.cu into distinct files (#201)

* separate projection files

* rename some functions

* rename jagged
2025-02-11 16:12:45 -05:00
Matthew Cong bb0c4d141f Replace deprecated torch::linalg::inv with equivalent at::linalg_inv (#209)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-02-11 14:15:13 -05:00
Francis Williams 0f3578d60a Separate GaussianFullyFusedProjection*.cu into distinct files (#201)
* separate projection files

* rename some functions

* rename jagged
2025-02-11 10:36:48 -05:00
Ken Museth 35d6eea9d2 minor simplification in CreateNanoGrid (#202)
* minor simplification in CreateNanoGrid

Signed-off-by: Ken <ken.museth@gmail.com>

* fixed typo

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
2025-02-10 17:16:09 -08:00
Francis Williams 91d8bcf3c0 Add a Vec2 type to nanovdb math (#166)
* orthographic projection in gaussian splatting

add orthographic flag to depth rendering function

derp

add ortho projection to jagged projection

* small refactor

* add vec2 class to nanovdb math

* fix
2025-02-10 16:23:13 -05:00
Ken Museth 90ac7aa909 major improvements to GridBlindMetaData (#199)
* major improvements to GridBlindMetaData

Signed-off-by: Ken <ken.museth@gmail.com>

* minor changes to fix clang issue

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
2025-02-10 12:56:39 -08:00
Matthew CongandKen Museth a206519467 Fix class-memaccess warning due to non-trivial copy-assignment in GridBlindMetaData (#147)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: Ken Museth <1495380+kmuseth@users.noreply.github.com>
2025-02-07 22:12:29 -08:00
Ken Museth b4634c76b8 removed dead code and updated the minor version number (#198)
Signed-off-by: Ken <ken.museth@gmail.com>
2025-02-07 17:11:38 -08:00
Matthew CongandKen Museth 2144e0efd4 Add missing constructor for C++20 used in AddBlindData.cuh (#197)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: Ken Museth <1495380+kmuseth@users.noreply.github.com>
2025-02-07 16:26:05 -08:00
Matthew Cong fc2c4b44b6 Fix DeviceMesh.h header to be self-contained (#196)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-02-07 23:34:49 +00:00
Ken Museth 6d54f0e50c Fixed issue in signedfloodfill (#185)
* Fixed issue in signedfloodfill

Signed-off-by: Ken <ken.museth@gmail.com>

* partially addressed review comments

Signed-off-by: Ken <ken.museth@gmail.com>

* added RootData::TileIterator

Signed-off-by: Ken <ken.museth@gmail.com>

* cleanup

Signed-off-by: Ken <ken.museth@gmail.com>

* fixed assert bug

Signed-off-by: Ken <ken.museth@gmail.com>

* snapshot

Signed-off-by: Ken <ken.museth@gmail.com>

* fixed bug and improved unit-test

Signed-off-by: Ken <ken.museth@gmail.com>

* improved unit test and documentation

Signed-off-by: Ken <ken.museth@gmail.com>

---------

Signed-off-by: Ken <ken.museth@gmail.com>
2025-02-07 15:01:11 -08:00
Jeff Lait a4bb1bcaf3 Meeting notes for Feburary 5th, 2025.
Signed-off-by: Jeff Lait <jlait@andorra.sidefx.com>
2025-02-07 13:04:55 -05:00
Francis Williams 7f015429ca use stream in sparse info computation (#190) 2025-02-06 11:46:09 -05:00
Matthew Cong 72ffce9949 Fix TBB template deduction in C++20 (#189)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-02-05 16:33:41 -08:00
Matthew Cong 9733b0882e Fix out-of-bounds device id (#180)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-02-05 08:18:02 -08:00
Mark HarrisandFrancis Williams baab90646e Add support for multiple images in sparse gsplat config (#182)
Extends computeSparseInfo() (from #137) to work with a JaggedTensor of pixels to render with outer dimension > 1. In other words, pixels from more than one image.

Adds unit tests to exercise this functionality. Also parameterizes the strided-pixel unit tests to further DRY up the test code.

Collaboration with @swahtz and @fwilliams

---------

Signed-off-by: Mark Harris <mharris@nvidia.com>
Co-authored-by: Francis Williams <francis@fwilliams.info>
2025-02-05 19:21:37 +13:00
8c41e2b822 Sparse Gaussian Splatting Configuration (#137)
Closes #60

This pull request adds functionality to compute the configuration tensors for Sparse 3D Gaussian Splatting. These tensors will be used to mask the output of 3DGS when fed a list of sparse pixels to render, and to "regather" the sparse rendered pixels corresponding to the input pixel UV coordinates.

A fairly comprehensive C++ unit test suite is also added.

Build Configuration Updates:
fvdb/.vscode/c_cpp_properties.json: Updated include paths to reflect new dependencies and updated Python version from 3.10 to 3.11.
fvdb/setup.py: Added psutil import and set MAX_JOBS environment variable based on available RAM to control the number of parallel jobs for building. [1] [2]
fvdb/src/cmake/get_fvdb.cmake: Modified to dynamically find the Python version and update the FVDB_BUILD_DIR accordingly.
fvdb/src/tests/CMakeLists.txt: Added compile options for CUDA and C++ in debug mode and configured new unit tests for Gaussian splatting. [1] [2]
Functionality Enhancements:
fvdb/src/detail/ops/gsplat/GaussianSplatSparse.cu: Added new CUDA kernels and functions to implement sparse Gaussian splatting, including detailed comments explaining the algorithm and its components.
fvdb/src/detail/ops/gsplat/GaussianSplatSparse.h: Added header declarations for the new sparse Gaussian splatting functions.

---------

Signed-off-by: Ken Museth <ken.museth@gmail.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Signed-off-by: Matthew Cong <mcong@nvidia.com>
Signed-off-by: Mark Harris <mharris@nvidia.com>
Co-authored-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Francis Williams <francis@fwilliams.info>
2025-02-04 12:07:53 +13:00
Matthew Cong 964c4270d6 Fix namespace for AbsDiff and RelDiff ostream overloads (#177)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-01-30 16:35:17 -08:00
Francis Williams 03cd858bf0 Merge remote-tracking branch 'fwilliams/fw/orthographic_gaussian_splats' into feature/fvdb 2025-01-30 08:51:00 -08:00
Francis Williams ca8fbd1ab4 naming 2025-01-30 07:07:51 -08:00
Francis Williams 3f72e2444a return values out of projection vjp 2025-01-30 07:03:23 -08:00
Jonathan Swartz 1a376f21d0 Moving 3dgs example to projects directory (#175)
* Moved examples/3dgs->projects/3d_gaussian_splatting/training

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* Fix up READMEs

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-30 14:53:01 +13:00
Francis Williams 6485bca2db add documentation and move projections to their own header 2025-01-29 16:53:39 -08:00
Francis Williams b47913e604 fix some comments 2025-01-29 16:44:35 -08:00
Matthew Cong 16f190b574 Fix missing relocatable device code flag (#170)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-01-29 13:45:53 -08:00
Francis Williams 9d55e6397a return projection values rather than use output params.
template ortho in jagged projecction
2025-01-29 13:07:15 -08:00
Francis Williams 79a3b3a155 another typo 2025-01-29 08:24:22 -08:00
Francis Williams 1e7ecc2c2a typo fix 2025-01-29 08:20:19 -08:00
Francis Williams b74bad0a3f template ortho for backward 2025-01-29 07:50:55 -08:00
Francis Williams 3ca570de27 fix backward number of return values 2025-01-29 07:50:48 -08:00
Francis Williams 7c5ff85553 fix typo 2025-01-29 07:50:36 -08:00
Jonathan Swartz 470205d833 Removing pull_request trigger from 'Wait for Status Checks' (#163)
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-29 17:21:50 +13:00
Jonathan Swartz 7f0b162766 Removing pull_request trigger from 'Wait for Status Checks' (#165)
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-29 16:49:03 +13:00
ed220e48d8 Boolean template parameter for orthographic projection.
Co-authored-by: Mark Harris <harrism@users.noreply.github.com>
Co-authored-by: Jonathan Swartz <swahtz@users.noreply.github.com>
2025-01-28 19:17:22 -08:00
Matthew Cong 526a693b43 Change UnifiedBuffer prefetch and advise to be const (#160)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-01-27 23:52:29 +00:00
Matthew Cong 520085852c Fix invalid free in UnifiedBuffer move constructor (#156)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-01-27 22:34:16 +00:00
Francis Williams 500e158f97 small refactor 2025-01-27 14:13:02 -08:00
Jonathan Swartz 6ff3939a05 Fixing build_environment; should be 2.4.1 (#162)
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-28 07:54:21 +11:00
Matthew Cong c146d17513 Add missing NCCL ifdef (#164)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-01-28 09:30:39 +13:00
Francis Williams fef302f5ff Revert "orthographic projection in gaussian splatting"
This reverts commit bfe68a0d82.
2025-01-24 13:26:21 -08:00
Francis Williams f38a52d8e6 Revert "add orthographic flag to depth rendering function"
This reverts commit 7803589d9d.
2025-01-24 13:26:08 -08:00
Francis Williams 3673dabd9c Revert "derp"
This reverts commit af38b51cf9.
2025-01-24 13:25:57 -08:00
Francis Williams 00a035affb Revert "add ortho projection to jagged projection"
This reverts commit d800ecfa88.
2025-01-24 13:25:43 -08:00
Francis Williams 589b9c9d16 orthographic projection in gaussian splatting
add orthographic flag to depth rendering function

derp

add ortho projection to jagged projection
2025-01-24 13:24:51 -08:00
Francis Williams d800ecfa88 add ortho projection to jagged projection 2025-01-24 13:21:54 -08:00
Francis Williams af38b51cf9 derp 2025-01-24 12:57:20 -08:00
Francis Williams 7803589d9d add orthographic flag to depth rendering function 2025-01-24 10:19:16 -08:00
Francis Williams bfe68a0d82 orthographic projection in gaussian splatting 2025-01-24 09:42:28 -08:00
Mark Harris 86f2734cd2 Fix conda envs and cmake for unit tests (#153)
* Fix build- and dev- environments and cmake so unit tests will build with conda-forge packages

Signed-off-by: Mark Harris <mharris@nvidia.com>

* Remove no-longer-needed env

Signed-off-by: Mark Harris <mharris@nvidia.com>

---------

Signed-off-by: Mark Harris <mharris@nvidia.com>
2025-01-23 11:38:53 +13:00
Jonathan Swartz 06f003e85a Merge pull request #1997 from swahtz/omni_fvdb_update
fVDB 0.2.1 update
2025-01-23 10:38:01 +13:00
apradhana 2b14bdf795 Add Meeting notes from 2025-01-09.
Signed-off-by: apradhana <andre.pradhana@gmail.com>
2025-01-22 10:25:36 -08:00
Jonathan Swartz cd5fdeb92a fVDB version bumped to 0.2.1 (#151) (#152)
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-22 17:40:25 +13:00
Jonathan Swartz 8145597272 Adding back fix to NanoVDB CI for test failures
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-22 14:49:50 +13:00
Jonathan Swartz 04e3193377 Revert any changes to .github/ made to accomodate CI
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-22 13:21:19 +13:00
Jonathan Swartz 16bfecf4c6 fVDB version bumped to 0.2.1 (#151)
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-22 13:15:17 +13:00
Jonathan Swartz eb489a2bdc Remove test env accidentally merged in previous PR (#150)
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-22 12:51:20 +13:00
Francis Williams a8e52da53c Fix bug where image cropping wasn't working in Gaussian Splatting 2025-01-22 12:21:48 +13:00
Matthew Cong 7d13055ceb Add missing inline for DeviceMesh functions (#145)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-01-21 09:46:15 -08:00
Francis Williams 2db574080d fix itertools.cycle (#142) 2025-01-21 15:51:32 +13:00
Matthew Cong 2d7bc30af3 Add missing const variant of deviceData(device) (#146)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-01-21 15:48:25 +13:00
Jonathan SwartzandKen Museth a75a507ecb PyTorch, CUDA package sources moved to conda-forge channel (#131)
Moved the recommended build/test/dev environments to use the conda-forge channel as their package source. This has required moving to CUDA 12.0, PyTorch 2.4.1.  Also removed the NKFW tests because they were breaking in the new environment but these tests’ functionality were covered by other unit tests.

closes #121 closes #135
---------

Signed-off-by: Ken Museth <ken.museth@gmail.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Ken Museth <1495380+kmuseth@users.noreply.github.com>
2025-01-21 13:01:25 +11:00
Matthew CongandMark Harris f9a9876ee9 Switch to DeviceMesh for MGPU sparse convolution example (#106)
* Convert MGPU convolution example to use DeviceMesh

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Fix typos and clarify

Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>

* Check for errors and switch to for_each

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>
2025-01-16 10:57:19 -08:00
1b7f60fe53 remove tensor conversion on images from dataloader to save on ram useage for large datasets (#129)
Co-authored-by: Francis Williams <fwilliams@users.noreply.github.com>
Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>
2025-01-17 07:50:58 +13:00
Matthew CongandMark Harris 31b5fee9ab Add DeviceMesh and (optional) NCCL CMake Support (#99)
* Add device mesh

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Restore current device in constructor and destructor

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Enable range-based for loops

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Use structured bindings inside for loop

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Remove uneeded accessors and modularize functions

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Statically initialize entry point

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Encapsulate

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Switch to lightweight wrapper class for DeviceNodes vector

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Cleanup

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Minor changes needed for DistributedPointsToGrid

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add RAII DeviceGuard

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* More cleanup

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Clean up NCCL dependency

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Remove parallel_for to modularize

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Implement and test move constructor/assignment

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Add docs

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Expand test and documentation

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Move non-reinit comment to function description

Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>

* Switch to using aliases and modern type names

Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>

* Use size_type instead of int for return

Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>

* Separate out DeviceGuard and clean up API

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: Mark Harris <783069+harrism@users.noreply.github.com>
2025-01-15 13:41:11 -08:00
Mark HarrisandJonathan Swartz d9b35645a3 Add CMake support for unit tests (#133)
* Add basic cmake and an example gbenchmark

* Modify setup.py to exclude benchmarks directory

* gitignore benchmarks build dir

* Make CMake work with conda-forge Torch, and make simple benchmark use Torch.

* Add working C++11 ABI Torch conda environment

* Modularize the cmake.

* Whitespace cleanup

* empty

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* Add comment about excluding benchmarks directory

* Modularize python, torch and fvdb dependencies, and add better error checking

* Empty commit to test signing

* Empty commit to test signing

* Add cmake and example for gtest-based C++ unit tests

* remove whitespace change.

* set `files.insertFinalNewLine` to true in workspace settings, fix EOF newlines

* newline at EOF

* Rename ExampleTest

* Add CTest support.

* "benchmarks" --> "tests"

* Fix typo

* Ignore tests directory (oops)

---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-15 11:58:10 -05:00
Matthew CongandFrancis Williams da04f647be Create blank issue template (#136)
* Create issue.md

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Update and rename issue.md to task--or--work--item.md

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Update task--or--work--item.md

rm trailing whitespace

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Update and rename task--or--work--item.md to blank--issue

Signed-off-by: Matthew Cong <mcong@nvidia.com>

* Rename blank--issue to blank--issue.md

Signed-off-by: Matthew Cong <mcong@nvidia.com>

---------

Signed-off-by: Matthew Cong <mcong@nvidia.com>
Co-authored-by: Francis Williams <fwilliams@users.noreply.github.com>
2025-01-14 14:38:34 -08:00
64f47dec27 Add basic CMake infrastructure for benchmarks (#75)
* Add basic cmake and an example gbenchmark

* Modify setup.py to exclude benchmarks directory

* gitignore benchmarks build dir

* Make CMake work with conda-forge Torch, and make simple benchmark use Torch.

* Add working C++11 ABI Torch conda environment

* Modularize the cmake.

* Whitespace cleanup

* empty

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* Add comment about excluding benchmarks directory

* Modularize python, torch and fvdb dependencies, and add better error checking

* Empty commit to test signing

* Empty commit to test signing

* Use `find_library` to find libfvdb.so

---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Francis Williams <fwilliams@users.noreply.github.com>
2025-01-14 16:34:27 -05:00
Francis Williams 8f3eaa471a Fw/3dgs lifestyle (#127)
* fix spelling mistake and add log

* quality of life helper
2025-01-14 03:01:13 +00:00
Francis Williams dc887b6509 vscode path settings (#126) 2025-01-13 16:16:57 -05:00
Jonathan Swartz 95166cf5cc Fix docs copyright notice to be OpenVDB contributors (#124)
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-10 20:03:53 +00:00
Mark HarrisandJonathan Swartz 1acb6477ed Make setup.py handle case where cudnn directory is created but empty (#50)
Co-authored-by: Jonathan Swartz <2375296+swahtz@users.noreply.github.com>
2025-01-11 08:32:36 +13:00
Jonathan Swartz a4a92bc3fa Wait for status checks also triggered on pushes to pull-request branches (#123)
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-11 08:31:13 +13:00
Jonathan SwartzandKen Museth 36f3e0921b CI: Update feature/fvdb from develop (#118)
Updating feature/fvdb branch from current develop branch to pickup the 'enforce-all-checks' action as well as disabled Windows tests setup.

---------

Signed-off-by: Ken Museth <ken.museth@gmail.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Ken Museth <1495380+kmuseth@users.noreply.github.com>
2025-01-10 17:15:25 +13:00
Jonathan Swartz d2550dba8d Disabling Windows build & nanovdb tests; disabling all tests except for Windows tests in weekly (#120)
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-10 15:43:36 +13:00
Jonathan Swartz 7fdb6283ff black formatting fix for garfield download_example_data (#119)
* black formatting fix for garfield download_example_data
* Removing cv2 import that is only valid for pip opencv package
---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-10 15:09:48 +13:00
Jonathan Swartz d9e5b261e1 Fix status_check directory
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-09 10:49:39 +13:00
Jonathan Swartz e7d5b0c556 Add status check that checks for the pass/fail of only the triggered status checks
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-09 10:49:39 +13:00
Jonathan Swartz 527bf5eae8 Updated README
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-09 04:55:45 +13:00
Jonathan Swartz 7b542ae021 Garfield download_example_data now also downloads colmap data.
dozer_nerfgun_waldo changed to the default dataset

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-09 04:55:45 +13:00
Jonathan Swartz b4ba1cbeab Fix colmap dataset distortion parameters; wrong number of params for simple radial distortion
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-09 04:55:45 +13:00
Jonathan Swartz 99630eb403 Make 3dgs download_example_data executable
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-09 04:55:45 +13:00
Jonathan Swartz 6abaae22dd Add download_example_data script for downloading example colmap data from LERF project used by GARField paper.
Updated README

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-09 04:55:45 +13:00
Jonathan Swartz 8be8734a12 Fix trailing whitespace
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-09 04:55:45 +13:00
Jonathan Swartz d560caea5c Fixing garfield black formatting; adding garfield to SPDX ignore-paths
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-09 04:55:45 +13:00
Jonathan Swartz d2d4e13971 Add a garfield CUDA 12.1 environment
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-09 04:55:45 +13:00
Jonathan Swartz afbd5a9fcc Adding garfield source from research repo
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-09 04:55:45 +13:00
Ken Museth 89979f93f7 Minor fix to unit-test of NanoVDB (#111)
* Minor fix to unit-test of NanoVDB

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* minor change

Signed-off-by: Ken Museth <ken.museth@gmail.com>

---------

Signed-off-by: Ken Museth <ken.museth@gmail.com>
2025-01-07 13:24:51 -08:00
Jonathan Swartz 3f9b956418 Fix BuildDeviceGrid's calls to NanoVDB voxelsToGrid which removed an allocator type as an optional template argument.
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-08 10:04:28 +13:00
Jonathan Swartz 07b3ee731d Attemping to fix fvdb action memory issue
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-07 17:50:43 +13:00
Jonathan Swartz 615a0f1ab9 Fix carriage return typo
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-07 17:50:43 +13:00
Jonathan Swartz c84d4e2848 Uncomment paths-ignore in fvdb action
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-07 17:50:43 +13:00
Jonathan Swartz 182a9e584e Commenting out fvdb paths-ignore
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-07 17:50:43 +13:00
Jonathan Swartz 8d2894cd5d Updating fvdb and whitespace actions for PR bot workflow
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-07 17:50:43 +13:00
Jonathan Swartz f655251b2b Merge branch 'develop' into feature/fvdb
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2025-01-07 09:59:12 +13:00
Matthew Cong 59d2a5c7e3 Fix ODR violation due to anonymous namespace in SignedFloodFill (#97)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-01-06 12:09:18 -08:00
Matthew Cong 5ecb9c3ead Fix format strings and Windows conversion warning (#101)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-01-06 11:15:25 -08:00
Ken Museth 23ded25be2 improved nanovdb_convert (#98)
* improved nanovdb_convert

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* fixed typo

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* added unit tests

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* review feedback

Signed-off-by: Ken Museth <ken.museth@gmail.com>

---------

Signed-off-by: Ken Museth <ken.museth@gmail.com>
2025-01-06 11:09:50 -08:00
Matthew Cong fa1ac5feef Add missing iomanip include for latest GTest
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-01-03 16:59:30 +13:00
Matthew Cong a004afbb05 Separate PointsToGrid kernel lambdas into functors (#94)
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2025-01-02 11:57:39 -06:00
Ken Museth adfd4cd1ef improved change notes and updated version number (#95)
* improved change notes and updated version number

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* improved documentation

Signed-off-by: Ken Museth <ken.museth@gmail.com>

---------

Signed-off-by: Ken Museth <ken.museth@gmail.com>
2024-12-31 12:48:56 -08:00
Matthew Cong 1251b0e016 Fix missing OpenVDB dependency for NanoVDB-only build
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2024-12-31 12:03:58 +13:00
Jonathan Swartz 8c92ec47a6 Pull Request Testing Setup (#86)
* Added copy-pr-bot. Updated triggers to branch pushes per instructions:
https://docs.gha-runners.nvidia.com/apps/copy-pr-bot/

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* Add NV CPU runners to tasks requiring larger instances
Turning off USE_EXPLICIT_INSTANTIATION, now unblocked by larger runner

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

---------

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-30 15:04:03 +13:00
Jonathan Swartz 6f10bf3b15 Merge pull request #84 from swahtz/js/voxel-foundation-migration
Migrating last PR changes from private repo over to this repo
2024-12-23 12:02:12 +13:00
Jonathan Swartz 9d691a88d9 Removing GaussianRasterize.cu which was split into two source files
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-22 16:38:38 +13:00
Jonathan Swartz 06957104f9 Merge branch 'feature/fvdb' into js/voxel-foundation-migration 2024-12-22 16:33:38 +13:00
Jonathan Swartz 2d4f3e1bfe Migrating last PR changes from private repo over to this repo including:
Changes to .clang-format for better include sorting
Gsplat rasterization code cleanup and add unused arguments for pixel mask

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-22 16:30:45 +13:00
Jonathan Swartz 548b52e97e Merge pull request #46 from NVIDIA-Omniverse/js/fvdb_codestyle
Add fVDB code style check actions
2024-12-21 13:56:06 +13:00
Matthew Cong 47c5a29be4 Merge pull request #76 from NVIDIA-Omniverse/nanovdb_merge
Merge changes from latest NanoVDB
2024-12-20 15:59:12 -08:00
Matthew Cong faa644ab3d Merge changes from latest NanoVDB
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2024-12-20 15:58:30 -08:00
Jonathan Swartz ce544bd2ff fix clang-format issue with JCat0.cu
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-21 11:26:13 +13:00
Jonathan Swartz 1f4a9d5617 Merge branch 'feature/fvdb' into js/fvdb_codestyle
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-21 11:22:35 +13:00
Jonathan Swartz 263e0e069e Merge pull request #81 from NVIDIA-Omniverse/fw/fix_jcat0
Fix jagged concatenation when concatenating a JaggedTensor with only one element in it
2024-12-20 11:55:11 +13:00
Francis Williams 200cf246ee Enhance JCat0 kernel to handle empty JIdx tensor case and add unit test for concatenation of JaggedTensors 2024-12-19 16:40:46 -05:00
Jonathan Swartz 6ccc92f0c6 newline
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-19 09:41:24 +13:00
Jonathan Swartz 29606d6a74 Update SPDX identifier action with ignore-paths for source files/dirs that have different licenses
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-18 16:48:33 +13:00
Jonathan Swartz 18fc7dc65d Merge pull request #66 from swahtz/disable_docs_for_fvdb
Disable docs Workflow for fVDB changes
2024-12-18 16:43:42 +13:00
Jonathan Swartz 3b5458baad Merge pull request #62 from NVIDIA-Omniverse/master
Updating `feature/fvdb` from `master`
2024-12-18 16:39:25 +13:00
Jonathan Swartz 5ac52485b1 Disabling docs action for fvdb changes
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-18 14:09:10 +13:00
Jonathan Swartz 2148e41f6d Merge pull request #1990 from swahtz/apache2_typo
Fix typo in SPDX license identifier
2024-12-18 13:29:44 +13:00
Jonathan Swartz b78b48204e Fix typo in SPDX license identifier
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-18 13:08:04 +13:00
Jonathan Swartz 74c3e68907 Merge pull request #1986 from AcademySoftwareFoundation/fix_missing_spdx
Added SPDX license identifiers to files missing it
2024-12-18 08:57:43 +13:00
Jonathan Swartz ed6db4b3ab Merge pull request #1983 from swahtz/upload_v4
Changed GH action upload-artifact to v4; fixes #1982
2024-12-18 08:13:36 +13:00
Jonathan Swartz 16eb716fd5 Merge pull request #1980 from danrbailey/tsc_notes_031224
Meeting notes 3rd December
2024-12-18 08:02:25 +13:00
Jonathan Swartz 1d9c7345b6 Addressing review notes
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-17 17:56:40 +13:00
Jonathan Swartz caa3969681 Added spdx license identifiers to files missing them.
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-17 15:21:47 +13:00
Jonathan Swartz 7053bfd0d2 Fix codestyle source paths
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-17 14:31:07 +13:00
Jonathan Swartz a035c14b90 Add fVDB code style check actions
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-17 09:04:33 +13:00
Jonathan Swartz 70566d7fb2 Merge pull request #45 from NVIDIA-Omniverse/js/fvdb_actions
Add fVDB CI
2024-12-17 08:36:57 +13:00
Jonathan Swartz f70b1a570f Turn off explicit instantiation for debug linux build
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-16 21:56:45 +13:00
Jonathan Swartz 128be93972 fVDB continuous benchmaring results path fix
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-16 13:46:57 +13:00
Jonathan Swartz f088f173d1 Fixing fvdb wheel upload path
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-16 13:07:12 +13:00
Jonathan Swartz 43a5220700 Adding fvdb CI unit tests to github workflows
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-13 12:26:18 +13:00
Jonathan Swartz 38adbab1bc Updating the versions of checkout action; add .gitmodules to ignore list
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-13 11:40:50 +13:00
Jonathan Swartz ca4aec122b Changed GH action upload-artifact to v4; fixes #1982
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-11 18:21:55 +13:00
Jonathan Swartz 093a6382ae fVDB: Added 'projects' directory to include more fully-featured example 'batteries included' projects
Added panoptic segmentation project with MaskPLS implementation
Fixed install issue not including `fvdb.optim`
Re-introduced support for Volta&Turing but added errors for use of certain conv backends
Added interpolation functions to VDBTensor

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-11 15:47:23 +13:00
Dan Bailey 840df4dc46 Meeting notes
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-12-06 11:10:51 -08:00
Jonathan Swartz 11836adebd Merge branch 'master' into feature/fvdb
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-06 12:35:18 +13:00
Dhruv Govil 930c3acb8e Fix Clang Template errors (#1977)
Upcoming versions of Clang/LLVM change some behaviour around templating that causes OpenVDB to fail to compile.

This commit addresses two issues and allows VDB to compile again.

1. There were three instances of an unnecessary template keyword in NodeManager.h that were not followed by a template call, and therefore are illegal to the compiler.

2. GridBuilder.h had a template call to a non-existent method. This was not previously validated, but is now validated. Switching the symbol from `isActive` to `isOn` per Ken's review.

See the [changelog](https://releases.llvm.org/19.1.0/tools/clang/docs/ReleaseNotes.html#improvements-to-clang-s-diagnostics:~:text=Clang%20now%20looks%20up%20members%20of%20the%20current%20instantiation%20in%20the%20template%20definition%20context%20if%20the%20current%20instantiation%20has%20no%20dependent%20base%20classes.) for Clang and the associated [PR for the second point above](https://github.com/llvm/llvm-project/pull/84050)

Signed-off-by: Dhruv Govil <dgovil2@apple.com>
2024-12-04 19:46:48 -08:00
Jonathan Swartz f7b18d9d7b fVDB: Fix missing fvdb.utils.data modules
Expose various 'ELU non-linearities
Integer JaggedReduce
Updated build TORCH_CUDA_ARCH_LIST for supported CUDA compute architectures, fixed Docker dev and CI images
Updated REAME's env and build instructions

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-03 20:11:34 +13:00
Ken MusethandJonathan Swartz 7d44132801 added read/write support of OFF files to vdb_tool (#1971)
* added read/write support of OFF files to vdb_tool

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* added pendingchanges/vdb_tool.txt

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* added patch from Jonathan S

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* minor cleanup

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* addressed review comments

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* before major improvements to readPLY

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* cleanup

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* removed whitespace

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* added nanovdb::vdb_tool::swapBytes

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* added more documentation

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* patch by Jonathan S to fix CI

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* Fix gtest install for rpm. not deb

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* Building gtest from source; newer version required than available on distro

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* permissions fix

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* Attempting to fix doxygen node version issue
Missing iomanip include in TestNanoVDB

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* Bump container versions attempt to fix doxygen test

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* install_latex fix

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

* added ascii option to Geometry::writePLY

Signed-off-by: Ken Museth <ken.museth@gmail.com>

* fixing issue introduced in the previous commit

Signed-off-by: Ken Museth <ken.museth@gmail.com>

---------

Signed-off-by: Ken Museth <ken.museth@gmail.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Co-authored-by: Jonathan Swartz <jonathan@jswartz.info>
2024-12-02 11:24:18 -08:00
Jonathan Swartz f1d9e2bc08 Version 0.2.0 release:
• Significant refactor of gaussian splatting pipeline
• Refactor of examples/3dgs using the new 3dgs pipeline (see README for a starting point to the example)
• License identifiers changed to Apache 2.0 to be in line with OpenVDB
• A `dev_environment.yml` is now included to help construct a reccommended development environment
• A bug was fixed when using `GridBatch.ijk_to_inv_index(cumulative=False)` when the ijk argument has repeated elements
• GLM is being vendored in and is no longer a runtime dependency
• The utility functions needed in the examples and unit tests to download and read the relevant data files has been refactored into `fvdb.utils.tests` and `fvdb.utils.examples` respectively

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-11-12 17:44:24 +13:00
ghurstunither 58724e5111 Merge pull request #1962 from AcademySoftwareFoundation/meeting_notes/2024-11-05
2024-11-05 Meeting Notes
2024-11-06 21:22:49 -05:00
ghurstunither 74ae698030 Update 2024-11-05.md
Some corrections suggested by Andre.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-11-06 12:38:48 -05:00
ghurstunither a692c44df7 Create 2024-11-05.md
Meeting notes from 2024-11-05.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-11-06 11:42:36 -05:00
Dan Bailey 79d056ce42 Bump to v12.0.1 (#1960)
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-11-01 16:35:52 -07:00
Dan Bailey 78135f5f82 Merge pull request #1958 from AcademySoftwareFoundation/v12.0.0_rc
VDB 12.0.0 Release
2024-10-31 22:39:28 -07:00
Dan Bailey 269300808a Add LLVM 13 back into AX matrix
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 15:59:05 -07:00
Dan Bailey c0197d2e39 A few small docs updates
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 13:16:52 -07:00
Dan Bailey 700390df40 A few minor docs updates
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 13:16:01 -07:00
Dan Bailey c6161d7c67 Add a note to the change log about the re-licensing
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 13:07:38 -07:00
Dan Bailey 94fcd865c4 More docs formatting fixes
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 12:03:49 -07:00
Dan Bailey bd86b3781c Revert nanobind minimum version, more cleanup and refined future versions
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 12:01:51 -07:00
Dan Bailey 785bed5625 Fix some documentation formatting issues
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 11:41:42 -07:00
Dan Bailey 7afbe2a787 Fix ABI=13 error message
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 11:33:07 -07:00
Dan Bailey 47b2b52237 Add nanobind minimum version
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 11:32:02 -07:00
Dan Bailey 5768e86d61 Update change log
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 10:40:38 -07:00
Dan Bailey 667f4f477a Fix a memory leak in RootNode
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 10:40:38 -07:00
Dan Bailey b9f09a2580 Update docs GHA workflow
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 10:40:38 -07:00
Dan Bailey 880a3718ea Lots of CI updates
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 10:40:38 -07:00
Dan Bailey 6a8415f7d4 Bump version to 12.0.0
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 10:40:38 -07:00
Dan Bailey c884baa6c0 Remove some old GCC checks
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 10:40:38 -07:00
Dan Bailey 7d6410ba43 Bump CMake minimum 3.18 -> 3.20
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 10:40:38 -07:00
Dan Bailey d8c33bdf8c Update dependencies and enforce minimum versions
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-31 10:40:38 -07:00
Dan Bailey a4705352e0 Merge pull request #1957 from danrbailey/pdal
Fix Windows CI
2024-10-30 15:09:24 -07:00
Dan Bailey 3a023b4404 Remove pdal from vcpkg
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-30 13:58:36 -07:00
Dan Bailey c4849497e9 Merge pull request #1794 from ghurstunither/bugfix/NodeManager_overflow
Prevent integer overflow in NodeManager and LeafManager
2024-10-30 13:50:37 -07:00
ghurstunither 11686a8028 Update TestTree.cc
Remove migrated tests.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-30 15:00:53 -04:00
Dan Bailey 8a81dbb395 Merge pull request #1956 from danrbailey/root_delete_fix
Fix a memory-leak in RootNode::deleteChildOrTile()
2024-10-30 11:54:42 -07:00
ghurstunither 4853738770 Avoid ABI conditionals in Root/Internal/Leaf
Avoid ABI conditionals in Root/Internal/Leaf node files.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-30 13:41:52 -04:00
ghurstunither 52d61fd779 treeDepth stays Index
Keep Index return type for treeDepth.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-30 13:25:05 -04:00
ghurstunither aba7d2d435 define deprecated nodeCount for all versions.
define deprecated nodeCount for all versions.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-30 13:00:36 -04:00
ghurstunither 26f0ad1ea6 deprecation suppression
deprecation suppression in recursive nodeCount calls.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-30 11:52:51 -04:00
ghurstunither 607db982d3 Update TestPointExecutable.cc
AX test failures

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-30 11:41:23 -04:00
ghurstunither 97d6750ef1 Update TestVolumeExecutable.cc
trailing space

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-30 11:28:33 -04:00
ghurstunither a76faad8b6 Update TestVolumeExecutable.cc
AX tests for correct leafCount return type.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-30 11:27:18 -04:00
ghurstunither afbd819f02 Update TestNodeVisitor.cc
trailing space

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-30 10:53:11 -04:00
ghurstunither b1d114a2d2 Backward compatibility for unit tests.
Backward compatibility for unit tests.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-30 10:48:49 -04:00
ghurstunither 907afa0da6 Update Tree.h
Prevent nodeCount deprecation warnings.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-30 09:46:41 -04:00
jmlait 60d4c610b7 Merge pull request #1955 from sideeffects/sendupstream_tscmeeeting_20241029
TSC Meeting notes for Oct 29th 2024.
2024-10-30 09:00:34 -04:00
ghurstunither d1264364a2 compile for versions below 12
Restore 32 bit functionality for versions below 12.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-30 08:59:49 -04:00
ghurstunither 135f41d77e Merge remote-tracking branch 'upstream/master' into bugfix/NodeManager_overflow 2024-10-30 08:49:03 -04:00
Dan Bailey 58c8d3a4f4 Merge pull request #1941 from matthewdcong/pip_openvdb
Add support for pip install
2024-10-29 20:56:13 -07:00
Dan Bailey 2f84be5e20 Merge pull request #1951 from apradhana/levelset_filter_unittest
Add a unit-test for LevelSetFilter::fillet.
2024-10-29 20:54:48 -07:00
Dan Bailey ae6b1a1269 Merge pull request #1821 from tommatterson/vdb_tool_use_pdal
Added feature to read points into vdb_tool using PDAL
2024-10-29 20:53:50 -07:00
ghurstunither a478a0ed64 Merge remote-tracking branch 'upstream/master' into bugfix/NodeManager_overflow 2024-10-29 22:56:01 -04:00
ghurstunither 3813556aa7 More 64 bit return for TreeBase
* nonLeafCount and treeDepth return Index64 in TreeBase.
* All ABI breakages safeguarded for versions < 12.
* Deprecated implementations of nodeCount for vector<Index32> arguments.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-29 22:41:01 -04:00
Dan Bailey 986dfb959d Fix a memory-leak in RootNode::deleteChildOrTile() and add an iterator warning
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-29 16:59:08 -07:00
Jonathan Swartz ced3af8a45 Fix whitespace issue
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-10-30 12:35:13 +13:00
Jonathan Swartz 844c79b38a Added PDAL read test to vdb_tool unittests
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-10-30 12:29:42 +13:00
apradhana e8854bc324 Merge pull request #1953 from apradhana/TSC-Oct8-2024
Add meeting notes October 8th and 22nd, 2024.
2024-10-29 16:01:54 -07:00
Dan Bailey ff9463cf2d Merge pull request #1954 from AcademySoftwareFoundation/feature/ubsan_fix
Disable undefined behavior checks in transformValues()
2024-10-29 15:18:52 -07:00
Dan Bailey cc48dc07f5 Merge pull request #1938 from danrbailey/tree_api_unsafe
Adding unsafe methods to the RootNode, InternalNode and LeafNodes
2024-10-29 15:18:15 -07:00
apradhana da8b764aa9 Add a unit test for LevelSetFilter::fillet.
Signed-off-by: apradhana <andre.pradhana@gmail.com>
2024-10-29 14:53:09 -07:00
Matthew Cong 18ad210758 Consolidate SKBUILD logic
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2024-10-29 14:40:00 -07:00
Matthew Cong 40d1089000 Update classifier
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2024-10-29 14:06:28 -07:00
Matthew Cong 5e4bb9f3ea Add initial pip install implementation
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2024-10-29 14:06:28 -07:00
Dan Bailey 402eaf7877 Merge remote-tracking branch 'upstream/master' into tree_api_unsafe 2024-10-29 12:51:29 -07:00
Dan Bailey 8e395623d6 Merge branch 'feature/tree_api_tests' into tree_api_unsafe 2024-10-29 12:46:52 -07:00
Jeff Lait 7f6945bd00 Fix trailing spaces.
Signed-off-by: Jeff Lait <jlait@andorra.sidefx.com>
2024-10-29 15:44:09 -04:00
Jeff Lait 2e580072bb TSC Meeting notes for Oct 29th 2024.
Merge in pending changes.

Signed-off-by: Jeff Lait <jlait@andorra.sidefx.com>
2024-10-29 15:38:54 -04:00
Dan Bailey 49cc7de94a Switch to ubsan suppress macro
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-29 12:33:19 -07:00
Dan Bailey 251b127427 Merge pull request #1939 from danrbailey/root_node_emplace
Root Node Optimizations
2024-10-29 12:08:26 -07:00
Dan Bailey c33ecbef97 Merge pull request #1952 from danrbailey/python_ci
Python CI Fixes
2024-10-29 12:07:49 -07:00
Dan Bailey fe71e9da2a Disable undefined sanitization in transformValues()
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-29 10:57:39 -07:00
apradhana 8c57afe1d5 Add meeting notes October 8th and 22nd, 2024.
Signed-off-by: apradhana <andre.pradhana@gmail.com>
2024-10-29 10:30:45 -07:00
Dan Bailey 4296ab3508 Where Python_SITELIB is not defined, fall back to "site-packages"
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-29 09:29:20 -07:00
Dan Bailey 59f86855ff Use sudo to make install nanobind
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-29 09:29:09 -07:00
Dan Bailey d855b3f12d Eliminate Python version check now that the minimum version is Python3 and other clean up
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-29 09:29:06 -07:00
Dan Bailey 60a93146da Merge pull request #1931 from danrbailey/root_api_changes
RootNode API Changes
2024-10-28 10:23:10 -07:00
Dan Bailey 0c8caf63e1 Fix some asserts
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-26 17:35:47 -07:00
Dan Bailey 18d4cc3c2c Address feedback
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-26 17:14:33 -07:00
Dan Bailey 682aaf1b93 Address feedback
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-26 16:57:14 -07:00
Dan Bailey 02abba7963 Add changes file
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-26 16:50:37 -07:00
Dan Bailey 0cda152ee6 Extend RootNode unit test to support map and delete test cases
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-26 16:50:37 -07:00
Dan Bailey a984443642 Add RootNode::deleteChildOrTile()
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-26 16:50:37 -07:00
Dan Bailey 937e5fa777 Fix a bug in the setOrigin() call
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-26 16:50:37 -07:00
Dan Bailey bee795bc93 Make hasKey() and coordToKey() public
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-26 16:50:37 -07:00
Dan Bailey eee04931e2 Make tileCount(), activeTileCount(), inactiveTileCount() public
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-26 16:50:37 -07:00
Dan Bailey 30e24e1329 Delete some unused private methods on RootNode
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-26 16:50:37 -07:00
ghurstunither fcff36445a Update TestNodeVisitor.cc
Correct type for nodeCount members.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-24 13:23:29 -04:00
ghurstunither f13a0a8524 Index64 leafCount in AX tests
Use Index64 for tree's leafCount.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-24 13:08:33 -04:00
ghurstunither 1f7798d6c6 Update CMakeLists.txt
Turns off OPENVDB_BUILD_UNITTESTS.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-24 12:21:16 -04:00
ghurstunither a24c8631bc Update Tree.h
Correct type for variable.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-24 12:20:12 -04:00
ghurstunither 187cb1a76e leafCount and friends work with Index64
leafCount, unallocatedLeafCount, nodeCount now work with Index64 to accommodate trees with more than 2^32-1 leaf nodes.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-10-24 12:12:37 -04:00
Jonathan Swartz da7c454b2a Fix pdal Windows package name. Fix linux build warnings causing errors.
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-10-24 10:18:44 +13:00
Jonathan Swartz c9c38d2163 Merge pull request #1 from swahtz/vdb_tool_use_pdal
Merge master, added libpdal to new install_windows ps script
2024-10-24 09:07:25 +13:00
Dan Bailey 7cb47d8626 Fix a compiler warning
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-23 10:27:57 -07:00
apradhana 5201109680 Merge pull request #1793 from ghurstunither/feature/fillet_filter
Fillet filter in LevelSetFilter.h
2024-10-23 09:41:25 -07:00
Jonathan Swartz 581b5d283f Whitespace fix
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-10-23 14:29:24 +13:00
Jonathan Swartz 946952bb9a Add libpdal back to vpckg's in isntall_windows.ps1
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-10-23 14:03:21 +13:00
Jonathan Swartz 1f7c4382ad Merge branch 'master' into vdb_tool_use_pdal
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-10-23 14:01:52 +13:00
Jonathan Swartz f012e748b3 Merge pull request #1926 from AcademySoftwareFoundation/feature/nanovdb_ci_update
Update NanoVDB to 2024 OS Image
2024-10-23 08:35:33 +13:00
Jonathan Swartz 7496bfa45c Merge pull request #1934 from JamesPerlman/patch-1
fVDB: Fix typo in 01_api_basics.ipynb
2024-10-23 07:35:27 +13:00
ghurstunither 3900d483c5 Merge remote-tracking branch 'upstream/master' into feature/fillet_filter 2024-10-22 14:33:14 -04:00
ghurstunither d57fae34ca Merge remote-tracking branch 'upstream/master' into bugfix/NodeManager_overflow 2024-10-22 14:32:57 -04:00
Dan Bailey decf44d08f Merge pull request #1940 from danrbailey/weekly_ax
Remove AX from weekly extra builds due to LLVM 17
2024-10-22 11:26:21 -07:00
Dan Bailey 090b2d9ba9 Merge pull request #1916 from matthewdcong/openvdb_nanovdb_nanobind
Port OpenVDB Python bindings to nanobind and add NanoVDB Python bindings
2024-10-22 11:25:32 -07:00
Jonathan Swartz 164ef42418 Merge branch 'master' into feature/nanovdb_ci_update
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-10-23 07:08:45 +13:00
Matthew Cong 29cd46f613 Add NanoVDB Python bindings
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2024-10-22 08:14:41 -07:00
Matthew Cong 2a7fb5e223 Port OpenVDB Python bindings from pyind11 to nanobind
Signed-off-by: Matthew Cong <mcong@nvidia.com>
2024-10-22 08:14:41 -07:00
Jonathan Swartz 764638fa90 Added CMAKE_POSITION_INDEPENDENT_CODE flag to linux-nanovdb CI job to fix clang default behaviour change
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-10-22 19:48:03 +13:00
Dan Bailey 9b31b07ca4 Remove AX from weekly extra builds due to LLVM 17
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-21 16:00:50 -07:00
Dan Bailey e591925cac Fix a compiler warning
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-21 15:53:31 -07:00
Dan Bailey 37615a0818 Add changes file
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-21 15:53:24 -07:00
Dan Bailey 0794215a67 Merge pull request #1928 from AcademySoftwareFoundation/feature/apache2
Update License to Apache 2.0
2024-10-21 15:44:21 -07:00
Dan Bailey cb6f134b9d Fix a compiler warning
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-21 13:31:50 -07:00
Dan Bailey f9431666b0 Update changes
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-21 13:31:50 -07:00
Dan Bailey 27f67ff5a0 In-place create NodeStruct elements in std::map, avoid re-generating key
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-21 13:31:50 -07:00
Dan Bailey 5c3e7e2c9b Merge pull request #1914 from ghurstunither/notes/meeting-notes-09-24-24
Create 2024-09-24.md
2024-10-21 12:55:18 -07:00
Dan Bailey 961f0f1672 Merge remote-tracking branch 'upstream/master' into feature/apache2 2024-10-21 12:54:16 -07:00
Jonathan Swartz 1a2e3377db Update CUDA paths
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-10-21 16:15:00 +13:00
Jonathan Swartz 302ed4de71 Merge branch 'master' into vdb_tool_use_pdal
Signed-off-by: Jonathan Swartz <2375296+swahtz@users.noreply.github.com>
2024-10-21 15:49:33 +13:00
Dan Bailey ab720f8626 Add unsafe methods and unit tests for RootNode, InternalNode and LeafNode(s)
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-18 17:17:20 -07:00
Dan Bailey 11148eb9d1 Add missing probeValue(Index, val) methods
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-18 17:16:57 -07:00
Dan Bailey bf8b540a25 Add missing isValueOn()/isValueOff() methods
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-18 17:16:49 -07:00
James Perlman 3d4a21b185 Update 01_api_basics.ipynb
There are 5 random features per voxel, and 8 grids.  Not 8 random features per voxel.

Signed-off-by: James Perlman <jam.e.perl@gmail.com>
2024-10-11 13:07:59 -07:00
Dan Bailey 74d8adca6c Merge remote-tracking branch 'upstream/master' into feature/apache2 2024-10-10 12:14:39 -07:00
Dhruv Govil 453fa6fe17 Change MPL-2.0 to Apache-2.0
Signed-off-by: Dhruv Govil <dgovil2@apple.com>
2024-10-09 15:27:51 -07:00
Dan Bailey bdf1ac1e46 Update NanoVDB to 2024 OS Image
Signed-off-by: Dan Bailey <danbailey@ilm.com>
2024-10-09 10:18:39 -07:00
Jonathan Swartz 6faf27c7cb Merge pull request #1915 from swahtz/feature/fvdb
Merge new commits from fVDB repository
2024-09-26 21:01:05 +12:00
Jonathan Swartz b5922af1cb Merge commits from fVDB repository including:
Version v0.1.0 release
Added gaussian splatting support
Significant VDBTensor API rewrite as well as various GridBatch function name changes to make them more consistent

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-09-26 20:47:01 +12:00
ghurstunither 4c51bb6ea0 Create 2024-09-24.md
09-24-24 meeting notes

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-09-25 10:35:27 -04:00
Jonathan Swartz f0324e6fca Merge pull request #1907 from AcademySoftwareFoundation/master
Merge master to feature/fvdb
2024-09-18 20:31:54 +12:00
Jonathan Swartz 9accf19836 Merge pull request #1891 from swahtz/feature/fvdb
fVDB improved test setup and PyTorch 2.4 update
2024-09-17 13:32:09 +12:00
Jonathan Swartz 4592f6c887 Updated fVDB requirements and documentation to PyTorch 2.4
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-09-16 21:04:12 +12:00
Jonathan Swartz 5de7ee4da9 Moved all test data to an external repository and updated tests
Updated Github test actions to split apart build and test steps
Added negative operator to JaggedTensor; to operators to SparseConvPackInfo

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-09-06 21:25:33 +12:00
apradhana 70e0264ed1 Merge pull request #1886 from swahtz/feature/fvdb
fVDB Updates: Bugs fixed for multi-GPU support, JaggedTensor slicing/indexing CUDA kernels
2024-09-04 12:09:21 -07:00
Jonathan Swartz 52ba85af93 Bugs fixed for multi-GPU support
JaggedTensor slicing and indexing moved to CUDA kernels
Small updates to basic_concepts docs and README

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-09-02 18:17:30 +12:00
apradhana 975beecdb6 Merge pull request #1876 from swahtz/feature/fvdb
fVDB code format updates
2024-08-20 20:33:09 -07:00
Jonathan Swartz c9aee5964a Formatting changes to match OpenVDB guidelines
Added examples
Updated README and environment/docker updates

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
2024-08-21 10:47:20 +12:00
apradhana c99b17c85c Merge pull request #1869 from swahtz/feature/fvdb
Updates to fVDB
2024-08-13 17:24:05 -07:00
Jonathan Swartz 9357034f9a fVDB changes including:
•Reintroduced missing src/build/* files that were accidentally ommitted
•JaggedTensor concatentation moved to a cuda kernel
•Non-cumulative indices for ijk mappings is now the default return style (makes indexing into JaggedTensors of data more natural)
•cuDNN disabled for CUDA versions <12
•Updated notebook files to new API and now included
•Removed deprecated usage of `python setup.py test` and running pytest directly

Signed-off-by: Jonathan Swartz <jonathan@swartzfx.com>
2024-08-14 11:54:20 +12:00
apradhana 63f7ab0da4 Merge pull request #1862 from fwilliams/fw/fvdb
Commit fVDB to OpenVDB
2024-07-23 12:01:25 -07:00
Francis Williams 9b178ba16c Commit fVDB to OpenVDB
Signed-off-by: Francis Williams <francis@fwilliams.info>
2024-07-23 14:40:41 -04:00
Tom Matterson f04f2f6864 Added feature to read points into vdb_tool using Point Data Abstraction Library (PDAL)
* Uses any available pdal plugin to read input file
* Writes RGB into Cd channel of points (also extended to PTS implementation)
* Adds a requirement on PDAL, so hidden behind a feature VDB_TOOL_USE_PDAL - off by default

Signed-off-by: Tom Matterson <tommatterson@gmail.com>
2024-05-20 10:10:41 +12:00
ghurstunither 4c3a5affa6 Prevents integer overflow
Prevent integer overflow on grids with many nodes or leafs.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-04-16 13:43:53 -04:00
ghurstunither abe5adf7ec Update LevelSetFilter.h
Adds fillet filter, which rounds off concave edges to create a smoother transition between surfaces.

Signed-off-by: ghurstunither <62885595+ghurstunither@users.noreply.github.com>
2024-04-16 11:46:14 -04:00
1520 changed files with 162532 additions and 6449 deletions
+1
View File
@@ -0,0 +1 @@
+9 -14
View File
@@ -55,7 +55,7 @@ jobs:
github.event_name != 'workflow_dispatch' ||
github.event.inputs.type == 'all' ||
github.event.inputs.type == 'linux'
runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-20.04-8c-32g-300h') || 'ubuntu-latest' }}
runs-on: ${{ (github.repository_owner == 'NVIDIA-Omniverse' && 'linux-amd64-cpu32') || (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }}
name: >
linux-ax:${{ matrix.config.image }}-cxx:${{ matrix.config.cxx }}-${{ matrix.config.build }}
container:
@@ -70,18 +70,14 @@ jobs:
- { image: '2023-clang15', cxx: 'clang++', build: 'Release', cmake: '' }
- { image: '2023-clang15', cxx: 'g++', build: 'Release', cmake: '' }
- { image: '2023-clang15', cxx: 'clang++', build: 'Debug', cmake: '' }
- { image: '2022-clang11', cxx: 'clang++', build: 'Release', cmake: '' }
- { image: '2022-clang11', cxx: 'g++', build: 'Release', cmake: '' }
fail-fast: false
steps:
- name: Enable Node 16
if: contains(matrix.config.image, '2022')
run: |
echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV
- uses: actions/checkout@v3
- name: pybind11
- name: nanobind
#if: contains(matrix.config.image, '2023') == false
run: ./ci/install_pybind11.sh 2.10.0
run: ./ci/install_nanobind.sh 2.0.0
- name: install_gtest
run: ./ci/install_gtest.sh 1.15.2
- name: timestamp
id: timestamp
run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
@@ -126,9 +122,8 @@ jobs:
strategy:
matrix:
config:
#@note llvm10 never got its own brew formula...
# Last macos runner befor M1 (macos-14)
- { runner: 'macos-13', cxx: 'clang++', build: 'Release', llvm: '12' }
# Last macos runner before M1 (macos-14)
- { runner: 'macos-13', cxx: 'clang++', build: 'Release', llvm: '15' }
- { runner: 'macos-13', cxx: 'clang++', build: 'Release', llvm: '13' }
fail-fast: false
steps:
@@ -157,9 +152,9 @@ jobs:
if: |
github.event_name == 'workflow_dispatch' &&
github.event.inputs.type == 'grammar'
runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-20.04-8c-32g-300h') || 'ubuntu-latest' }}
runs-on: ${{ (github.repository_owner == 'NVIDIA-Omniverse' && 'linux-amd64-cpu32') || (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }}
container:
image: aswf/ci-openvdb:2022-clang11
image: aswf/ci-openvdb:2023-clang15
steps:
- uses: actions/checkout@v3
- name: build
+10 -16
View File
@@ -62,7 +62,7 @@ jobs:
github.event_name != 'workflow_dispatch' ||
github.event.inputs.type == 'all' ||
github.event.inputs.type == 'linux'
runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-20.04-8c-32g-300h') || 'ubuntu-latest' }}
runs-on: ${{ (github.repository_owner == 'NVIDIA-Omniverse' && 'linux-amd64-cpu32') || (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }}
name: >
linux-vfx:${{ matrix.config.image }}-
abi:${{ matrix.config.abi }}-
@@ -76,27 +76,21 @@ jobs:
strategy:
matrix:
config:
- { cxx: clang++, image: '2024', abi: '11', build: 'Release', cmake: '' }
- { cxx: g++, image: '2024', abi: '11', build: 'Release', cmake: '' }
- { cxx: clang++, image: '2024', abi: '11', build: 'Debug', cmake: '' }
- { cxx: clang++, image: '2023', abi: '11', build: 'Release', cmake: '' }
- { cxx: g++, image: '2023', abi: '11', build: 'Release', cmake: '' }
- { cxx: clang++, image: '2022', abi: '10', build: 'Release', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' }
- { cxx: g++, image: '2022', abi: '10', build: 'Release', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' }
- { cxx: clang++, image: '2024', abi: '12', build: 'Release', cmake: '' }
- { cxx: g++, image: '2024', abi: '12', build: 'Release', cmake: '' }
- { cxx: clang++, image: '2024', abi: '12', build: 'Debug', cmake: '' }
- { cxx: clang++, image: '2023', abi: '11', build: 'Release', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' }
- { cxx: g++, image: '2023', abi: '11', build: 'Release', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' }
fail-fast: false
steps:
- name: Enable Node 16
# Solution taken from https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default
if: contains(matrix.config.image, '2022')
run: |
echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV
- uses: actions/checkout@v3
- name: pybind11
#if: contains(matrix.config.image, '2023') == false
run: ./ci/install_pybind11.sh 2.10.0
- name: nanobind
run: ./ci/install_nanobind.sh 2.0.0
- name: glfw
if: contains(matrix.config.image, '2023') == true
run: ./ci/install_glfw.sh 3.3.10
- name: install_gtest
run: ./ci/install_gtest.sh 1.15.2
- name: timestamp
id: timestamp
run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
+5 -12
View File
@@ -40,25 +40,18 @@ jobs:
container:
# @note We can't update this as epydoc doesn't support python3. We'll
# need to re-write the python docs to use sphinx
image: aswf/ci-openvdb:2022
image: aswf/ci-openvdb:2024
steps:
- name: Enable Node 16
run: |
echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: install_doxygen
run: ./ci/install_doxygen.sh 1_8_11
- name: pybind11
- name: nanobind
#if: contains(matrix.config.image, '2023') == false
run: ./ci/install_pybind11.sh 2.10.0
run: ./ci/install_nanobind.sh 2.0.0
# - name: install_epydoc
# run: pip install epydoc
- name: install_latex
run: |
# Fix error: Cannot prepare internal mirrorlist: No URLs in mirrorlist. CentOS 8 reached EOL means need to replace the official mirror to vault.centos.org
# Comment out mirrorlist and replace #baseurl=...mirror.centos.org with baseurl=...vault.centos.org in files starting with CentOS- in /etc/yum.repos.d folder
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
yum -y install texlive-latex-bin texlive-dvips texlive-collection-fontsrecommended texlive-collection-latexrecommended
- name: build
run: >
@@ -92,7 +85,7 @@ jobs:
github.event.inputs.deploy == 'docs'
uses: peaceiris/actions-gh-pages@v3
with:
deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
deploy_key: ${{ secrets.PRIVATE_KEY }}
publish_dir: /usr/local/share/doc/OpenVDB/html
destination_dir: documentation/doxygen
external_repository: AcademySoftwareFoundation/openvdb-website
+118
View File
@@ -0,0 +1,118 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
#
# GitHub Actions workflow file
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
name: fVDB Codebuild
on:
pull_request:
paths-ignore:
- 'CHANGES'
- 'CODEOWNERS'
- 'doc/**'
- 'openvdb/**'
- 'openvdb_cmd/**'
- 'openvdb_ax/**'
- 'openvdb_maya/**'
- 'openvdb_houdini/**'
- 'nanovdb/**'
- 'pendingchanges/**'
- '**.md'
- 'fvdb/debug/**'
- 'fvdb/docs/**'
- 'fvdb/examples/**'
- 'fvdb/notebooks/**'
- 'fvdb/scripts/**'
permissions:
contents: read
id-token: write
jobs:
# ---------------------------------------------------------------------------
# Linux GPU (AWS CodeBuild)
# ---------------------------------------------------------------------------
linux_gpu:
name: 'ci-openvdb 2024'
# Don't run on forks
if: github.repository == 'AcademySoftwareFoundation/openvdb'
# GH-hosted VM. The build runs in CentOS 7 'container' hard-coded in
# AWS CodeBuild project.
# TODO: Add support for dynamic GH Action defined CodeBuild
# container choice.
runs-on: ubuntu-latest
steps:
- name: Verify AWS Credentials Set
run: |
if [ -z "${{ secrets.CODEBUILD_ID }}" ] || [ -z "${{ secrets.CODEBUILD_SECRET }}" ]; then
echo "Error: AWS credentials secrets not properly configured"
echo "Please ensure CODEBUILD_ID and CODEBUILD_SECRET are set in organization secrets"
exit 1
fi
echo "AWS credentials secrets are configured"
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.CODEBUILD_ID }}
aws-secret-access-key: ${{ secrets.CODEBUILD_SECRET }}
aws-region: us-west-2
- name: Verify AWS Authentication
run: |
echo "Testing AWS authentication..."
aws sts get-caller-identity || {
echo "Error: AWS authentication failed"
exit 1
}
echo "AWS authentication successful"
- name: CodeBuild Monitoring URLs
run: |
echo "🚀 Starting CodeBuild job..."
echo "Project: OpenVDB"
echo ""
echo "📊 Monitor the build progress at:"
# Check if public builds are enabled by looking for the public project URL
PUBLIC_URL=$(aws codebuild batch-get-projects --names OpenVDB --query 'projects[0].publicProjectUrl' --output text 2>/dev/null || echo "None")
if [ "$PUBLIC_URL" != "None" ] && [ "$PUBLIC_URL" != "null" ]; then
echo "📖 Public Build Results (no sign-in required):"
echo " $PUBLIC_URL"
echo ""
fi
echo "🔒 AWS Console (requires sign-in):"
echo " Project: https://console.aws.amazon.com/codesuite/codebuild/projects/OpenVDB/history"
echo ""
echo "ℹ️ Individual build URLs will be available once the job starts..."
- name: Run CodeBuild
id: codebuild
uses: aws-actions/aws-codebuild-run-build@v1
with:
project-name: OpenVDB
buildspec-override: ci/buildspec.yml
- name: CodeBuild Results
if: always()
run: |
echo "📋 CodeBuild Results:"
echo "Build ID: ${{ steps.codebuild.outputs.aws-build-id }}"
echo "Build Status: ${{ steps.codebuild.outputs.aws-build-status }}"
echo ""
echo "🔗 Detailed Build Links:"
if [ -n "$CODEBUILD_PUBLIC_BUILD_URL" ]; then
echo "📖 Public Build Details: $CODEBUILD_PUBLIC_BUILD_URL"
fi
echo "🔒 AWS Console Build Details: https://console.aws.amazon.com/codesuite/codebuild/projects/OpenVDB/build/${{ steps.codebuild.outputs.aws-build-id }}/"
echo ""
if [ "${{ steps.codebuild.outputs.aws-build-status }}" != "SUCCEEDED" ]; then
echo "❌ Build failed! Check the build logs at the links above for detailed error information."
echo "Common issues to check:"
echo "- Build environment configuration"
echo "- Source code compilation errors"
echo "- Missing dependencies"
echo "- Buildspec.yml configuration"
else
echo "✅ Build succeeded!"
fi
+80
View File
@@ -0,0 +1,80 @@
name: fVDB Code Style
on:
push:
branches:
- "pull-request/[0-9]+"
paths-ignore:
- 'CHANGES'
- 'CODEOWNERS'
- 'doc/**'
- 'ci/**'
- 'openvdb/**'
- 'openvdb_cmd/**'
- 'openvdb_ax/**'
- 'openvdb_maya/**'
- 'openvdb_houdini/**'
- 'openvdb_wolfram/**'
- 'tsc/**'
- 'nanovdb/**'
- 'pendingchanges/**'
- '**.md'
- 'fvdb/docs/**'
- 'fvdb/env/**'
- 'fvdb/notebooks/**'
# Allow subsequent pushes to the same PR or REF to cancel any previous jobs.
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
test-python-black-lint:
name: Check Python code style with black
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: psf/black@stable
with:
options: "--check --verbose --target-version=py311 --line-length=120"
src: "fvdb/"
version: "~= 24.0"
test-cpp-clang-format-lint:
name: Check C++ code style with clang-format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: DoozyX/clang-format-lint-action@v0.18.2
with:
source: 'fvdb/src/'
extensions: 'h,cpp,cc,cu,cuh'
clangFormatVersion: 18
style: file
include-guards:
name: Check include guards
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: swahtz/include-guards-check-action@master
with:
path: 'fvdb/src/'
check-spdx-identifiers:
name: Check SPDX identifiers
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- uses: swahtz/spdx@feature/ignore_paths
with:
licenses: |-
Apache-2.0
ignore-paths: |-
openvdb/openvdb/math/Half.cc
openvdb/openvdb/math/Half.h
openvdb_wolfram/OpenVDBLink
openvdb_ax/openvdb_ax/grammar/generated
fvdb/projects/panoptic_segmentation/garfield/garfield
+5 -11
View File
@@ -65,7 +65,7 @@ jobs:
if: >
${{ needs.checksecret.outputs.HOUDINI_SECRETS == 'true' ||
github.repository_owner == 'AcademySoftwareFoundation' }}
runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-20.04-8c-32g-300h') || 'ubuntu-latest' }}
runs-on: ${{ (github.repository_owner == 'NVIDIA-Omniverse' && 'linux-amd64-cpu32') || (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }}
name: hou:${{ matrix.config.hou_hash }}-vfx:${{ matrix.config.image }}-cxx:${{ matrix.config.cxx }}
container:
image: aswf/ci-base:${{ matrix.config.image }}
@@ -80,27 +80,21 @@ jobs:
- { cxx: g++, image: '2023', hou_hash: '20_5', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' }
- { cxx: clang++, image: '2023', hou_hash: '20_0-newabi', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' }
- { cxx: g++, image: '2023', hou_hash: '20_0-newabi', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' }
- { cxx: clang++, image: '2022', hou_hash: '20_0-oldabi', build: 'Release', components: 'core,hou' }
- { cxx: g++, image: '2022', hou_hash: '20_0-oldabi', build: 'Release', components: 'core,hou' }
fail-fast: false
steps:
# See note on this step in the Houdini weekly.yml job
# We can remove this when we no longer use < 2023 images
- name: Enable Node 16
run: |
echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV
- name: remove zstd
run: yum -y remove zstd
- uses: actions/checkout@v3
- name: pybind11
- name: nanobind
#if: contains(matrix.config.image, '2023') == false
run: ./ci/install_pybind11.sh 2.10.0
run: ./ci/install_nanobind.sh 2.0.0
- name: glfw
if: contains(matrix.config.image, '2023') == true
run: ./ci/install_glfw.sh 3.3.10
- name: cppunit
if: contains(matrix.config.image, '2022') == false
run: ./ci/install_cppunit.sh 1.15.1
- name: install_gtest
run: ./ci/install_gtest.sh 1.15.2
- name: timestamp
id: timestamp
run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
+19 -25
View File
@@ -51,7 +51,7 @@ jobs:
github.event_name != 'workflow_dispatch' ||
github.event.inputs.type == 'all' ||
github.event.inputs.type == 'linux'
runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-20.04-8c-32g-300h') || 'ubuntu-latest' }}
runs-on: ${{ (github.repository_owner == 'NVIDIA-Omniverse' && 'linux-amd64-cpu32') || (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }}
name: >
linux-nanovdb:cxx:${{ matrix.config.cxx }}-${{ matrix.config.build }}
container:
@@ -61,30 +61,21 @@ jobs:
strategy:
matrix:
config:
- { cxx: g++, image: '2022-clang11', build: 'Release' }
- { cxx: g++, image: '2022-clang11', build: 'Debug' }
- { cxx: clang++, image: '2022-clang11', build: 'Release' }
- { cxx: clang++, image: '2022-clang11', build: 'Debug' }
- { cxx: g++, image: '2024', build: 'Release' }
- { cxx: g++, image: '2024', build: 'Debug' }
- { cxx: clang++, image: '2024', build: 'Release' }
- { cxx: clang++, image: '2024', build: 'Debug' }
fail-fast: false
steps:
- name: Enable Node 16
if: contains(matrix.config.image, '2022')
run: |
echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV
- uses: actions/checkout@v3
- name: install_cuda_11
- name: setup_cuda_12
run: |
# Fix error: Cannot prepare internal mirrorlist: No URLs in mirrorlist. CentOS 8 reached EOL means need to replace the official mirror to vault.centos.org
# Comment out mirrorlist and replace #baseurl=...mirror.centos.org with baseurl=...vault.centos.org in files starting with CentOS- in /etc/yum.repos.d folder
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
yum -y install yum-utils
yum-config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
echo "Installing cuda toolkit"
yum --enablerepo=epel -y install cuda-toolkit-11-6
echo "/usr/local/cuda-11.6/bin" >> $GITHUB_PATH
echo "LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64:$LD_LIBRARY_PATH" >> $GITHUB_ENV
echo "/usr/local/cuda-12/bin" >> $GITHUB_PATH
echo "LD_LIBRARY_PATH=/usr/local/cuda-12/lib64:$LD_LIBRARY_PATH" >> $GITHUB_ENV
- name: build
# NOTE: CMAKE_POSITION_INDEPENDENT_CODE set to fix default behaviour change in clang 14
# https://github.com/AcademySoftwareFoundation/aswf-docker/issues/228
run: >
./ci/build.sh -v
--build-type=${{ matrix.config.build }}
@@ -92,9 +83,11 @@ jobs:
--cargs=\'
-DUSE_EXPLICIT_INSTANTIATION=OFF
-DNANOVDB_USE_CUDA=ON
-DCMAKE_CUDA_ARCHITECTURES="80"
-DNANOVDB_USE_OPENVDB=ON
-DCMAKE_INSTALL_PREFIX=`pwd`
-DUSE_BLOSC=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
\'
- name: test
run: cd build && sudo ctest -V -E ".*cuda.*"
@@ -135,6 +128,7 @@ jobs:
-DMSVC_COMPRESS_PDB=ON
-DUSE_EXPLICIT_INSTANTIATION=OFF
-DNANOVDB_USE_CUDA=ON
-DCMAKE_CUDA_ARCHITECTURES="80"
-DNANOVDB_USE_OPENVDB=ON
-DVCPKG_TARGET_TRIPLET=${VCPKG_DEFAULT_TRIPLET}
-DCMAKE_TOOLCHAIN_FILE=\"${VCPKG_INSTALLATION_ROOT}\\scripts\\buildsystems\\vcpkg.cmake\"
@@ -154,8 +148,8 @@ jobs:
strategy:
matrix:
config:
- { runner: 'macos-12', cxx: 'clang++', build: 'Release' }
- { runner: 'macos-12', cxx: 'clang++', build: 'Debug' }
- { runner: 'macos-13', cxx: 'clang++', build: 'Release' }
- { runner: 'macos-13', cxx: 'clang++', build: 'Debug' }
fail-fast: false
steps:
- uses: actions/checkout@v3
@@ -177,13 +171,13 @@ jobs:
github.event_name != 'workflow_dispatch' ||
github.event.inputs.type == 'all' ||
github.event.inputs.type == 'linux'
runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-20.04-8c-32g-300h') || 'ubuntu-latest' }}
runs-on: ${{ (github.repository_owner == 'NVIDIA-Omniverse' && 'linux-amd64-cpu32') || (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }}
container:
image: aswf/ci-openvdb:2024
steps:
- uses: actions/checkout@v3
- name: install_gtest
run: |
sudo apt-get update
sudo apt-get -q install -y libgtest-dev
run: ./ci/install_gtest.sh 1.15.2
- name: build_and_test
run: |
cd nanovdb/nanovdb
+14 -35
View File
@@ -70,17 +70,12 @@ jobs:
strategy:
matrix:
config:
- { houdini_version: '19.5', platform: 'linux_x86_64_gcc9.3', hou_hash: '19_5' }
- { houdini_version: '20.0', platform: 'linux_x86_64_gcc9.3', hou_hash: '20_0-oldabi' }
- { houdini_version: '20.0', platform: 'linux_x86_64_gcc11.2', hou_hash: '20_0-newabi' }
- { houdini_version: '20.5', platform: 'linux_x86_64_gcc11.2', hou_hash: '20_5' }
fail-fast: false
container:
image: aswf/ci-base:2024
steps:
- name: Enable Node 16
run: |
echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV
- uses: actions/checkout@v3
# We bumped from the 2021 CI image to 2023 here to fix some OpenSSL issues
# with the Houdini download script. In so doing we broke some of the caching
@@ -166,19 +161,16 @@ jobs:
- { name: 'sse', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DOPENVDB_SIMD=SSE42' }
- { name: 'avx', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DOPENVDB_SIMD=AVX' }
- { name: 'numpy', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DUSE_NUMPY=ON -DOPENVDB_PYTHON_WRAP_ALL_GRID_TYPES=ON' }
- { name: 'asan', build: 'asan', components: 'core,test,axcore,axtest', cmake: '-DNANOVDB_USE_OPENVDB=ON -DOPENVDB_AX_STATIC=OFF -DOPENVDB_CORE_STATIC=OFF -DUSE_BLOSC=OFF' } # We never called blosc_destroy(), so disable blosc to silence these errors
- { name: 'ubsan', build: 'ubsan', components: 'core,test,axcore,axtest', cmake: '-DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ' }
- { name: 'c++20', build: 'Release', components: 'core,test,axcore,axtest', cmake: '-DCMAKE_CXX_STANDARD=20' }
- { name: 'conf', build: 'Release', components: 'core,python,bin,view,render,test,axcore,axtest', cmake: '-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' }
- { name: 'asan', build: 'asan', components: 'core,test', cmake: '-DNANOVDB_USE_OPENVDB=ON -DOPENVDB_AX_STATIC=OFF -DOPENVDB_CORE_STATIC=OFF -DUSE_BLOSC=OFF' } # We never called blosc_destroy(), so disable blosc to silence these errors
- { name: 'ubsan', build: 'ubsan', components: 'core,test', cmake: '-DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ' }
- { name: 'c++20', build: 'Release', components: 'core,test', cmake: '-DCMAKE_CXX_STANDARD=20' }
- { name: 'conf', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' }
fail-fast: false
steps:
- name: Enable Node 16
run: |
echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV
- uses: actions/checkout@v3
- name: pybind11
- name: nanobind
#if: contains(container.image, '2023') == false
run: ./ci/install_pybind11.sh 2.10.0
run: ./ci/install_nanobind.sh 2.0.0
- name: build
run: >
./ci/build.sh -v
@@ -211,7 +203,8 @@ jobs:
- name: install_deps
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
sudo apt-get -q install -y libboost-dev libboost-iostreams-dev libtbb-dev libblosc-dev llvm-dev libgtest-dev libcppunit-dev pybind11-dev
sudo apt-get -q install -y libboost-dev libboost-iostreams-dev libtbb-dev libblosc-dev llvm-dev libgtest-dev libcppunit-dev
./ci/install_nanobind.sh 2.0.0
elif [ "$RUNNER_OS" == "macOS" ]; then
./ci/install_macos.sh 15
./ci/install_tbb_macos.sh
@@ -223,7 +216,7 @@ jobs:
./ci/build.sh -v
--build-type=Release
--components=\"core,axcore,python,bin,render,test,axbin\"
--cargs=\"-DCMAKE_CXX_STANDARD=20 -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install ${{ matrix.config.cmake }}\"
--cargs=\"-DCMAKE_CXX_STANDARD=20 -DOPENVDB_USE_DELAYED_LOADING=OFF -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install ${{ matrix.config.cmake }}\"
- name: test
run: cd build && ctest -V
@@ -302,24 +295,14 @@ jobs:
matrix:
config:
# Unified
- { image: '2023-clang14', cxx: 'clang++', build: 'Release', components: 'core,bin,axcore,axbin,axtest', cmake: '' }
- { image: '2023-clang14', cxx: 'g++', build: 'Release', components: 'core,bin,axcore,axbin,axtest', cmake: '' }
- { image: '2022-clang13', cxx: 'clang++', build: 'Release', components: 'core,bin,axcore,axbin,axtest', cmake: '' }
- { image: '2022-clang13', cxx: 'g++', build: 'Release', components: 'core,bin,axcore,axbin,axtest', cmake: '' }
# Standalone
- { image: '2022-clang11', cxx: 'clang++', build: 'Debug', components: 'core', cmake: '' }
- { image: '2022-clang11', cxx: 'clang++', build: 'Release', components: 'core', cmake: '' }
- { image: '2022-clang11', cxx: 'g++', build: 'Release', components: 'core', cmake: '' }
- { image: '2023-clang15', cxx: 'clang++', build: 'Release', components: 'core,bin,axcore,axbin,axtest', cmake: '' }
- { image: '2023-clang15', cxx: 'g++', build: 'Release', components: 'core,bin,axcore,axbin,axtest', cmake: '' }
fail-fast: false
steps:
- name: Enable Node 16
if: contains(matrix.config.image, '2022')
run: |
echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV
- uses: actions/checkout@v3
- name: pybind11
- name: nanobind
#f: contains(matrix.config.image, '2023') == false
run: ./ci/install_pybind11.sh 2.10.0
run: ./ci/install_nanobind.sh 2.0.0
- name: build
run: >
./ci/build.sh -v
@@ -363,9 +346,7 @@ jobs:
strategy:
matrix:
config:
- { cxx: 'clang++', build: 'Release', llvm: '14' }
- { cxx: 'clang++', build: 'Release', llvm: '15' }
#- { cxx: 'clang++', build: 'Release', llvm: '16' } - not supported yet
fail-fast: false
steps:
- uses: actions/checkout@v3
@@ -495,6 +476,7 @@ jobs:
-DMSVC_COMPRESS_PDB=ON
-DUSE_EXPLICIT_INSTANTIATION=OFF
-DNANOVDB_USE_CUDA=ON
-DCMAKE_CUDA_ARCHITECTURES="80"
-DNANOVDB_USE_OPENVDB=ON
-DVCPKG_TARGET_TRIPLET=${VCPKG_DEFAULT_TRIPLET}
-DCMAKE_TOOLCHAIN_FILE=\"${VCPKG_INSTALLATION_ROOT}\\scripts\\buildsystems\\vcpkg.cmake\"
@@ -521,9 +503,6 @@ jobs:
blosc: ['1.18.0','1.19.0','1.20.0','1.21.0']
fail-fast: false
steps:
- name: Enable Node 16
run: |
echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV
- uses: actions/checkout@v3
- name: install_blosc
run: sudo ./ci/install_blosc.sh ${{ matrix.blosc }}
+2
View File
@@ -1,2 +1,4 @@
/build/*
**/src/benchmarks/build/*
nanovdb/nanovdb/build/*
.DS_Store
+232 -2
View File
@@ -1,7 +1,238 @@
OpenVDB Version History
=======================
Version 11.0.1 - In development
Version 12.0.2 - In development
Version 12.0.1 - April 3, 2025
OpenVDB:
New features:
- Added read and write support for OFF (Object File Format) files to vdb_tool
Build:
- Fixed a build issue with vdb_render on Windows with newer versions of glew not including glu.h by default
- Fixed issues with newer versions of clang refusing to accept older ::template syntax
NanoVDB:
New features:
- Added support for multiple GPUs to DeviceBuffer
- Added a UnifiedBuffer class that wraps CUDA unified memory
- Added example for multiGPU sparse convolution
- Added CUDA utility functions for device queries
- Added functions to independently stop and compute the elapsed time for timer classes
Improvements:
- Replaced CUB's CachingDeviceAllocator with the default asynchronous stream ordered allocator in PointsToGrid for improved performance
Bug fix:
- Map is now properly transposed when converting NanoVDB to OpenVDB.
- Fixed ostream specializations being hidden within the nanovdb namespace
- Fixed a call to a non-existent method in GridBuild.h
Version 12.0.0 - October 31, 2024
OpenVDB is now licensed under the Apache 2.0 license, instead of the MPL 2.0 license.
This version introduces ABI changes relative to older major releases,
so to preserve ABI compatibility it might be necessary to define the
macro OPENVDB_ABI_VERSION_NUMBER=N, where, for example, N is 10 for
Houdini 20.0 and 11 for Houdini 20.5.
GCC 9 is no longer supported.
OpenVDB:
New features:
- Added fillet() method in tools::LevelSetFilter to round off concave edges
to create smoother transition between surfaces.
Improvements:
- Added openvdb::assertAbort to replace cassert and a
OPENVDB_ENABLE_ASSERTS cmake argument/compile define to toggle
assertions in OpenVDB code, independantly of NDEBUG. Asserts are
no longer enabled by default in when NDEBUG is absent (e.g.
Debug builds).
- Removed last traces of Boost when OPENVDB_USE_DELAYED_LOADING is OFF
[Reported by Brian McKinnon]
- RootNode code cleanup to eliminate redundant key conversion and
to create map values in-place.
- Add RootNode::deleteChildOrTile() to delete a child or tile of
the root node.
- ValueAccessors are now defined and created in the Tree class
instead of in the Grid class so that custom Tree implementations
may define and create their own ValueAccessors if desired.
- Added support for PDAL to vdb_tool [Contributed by Tom Matterson]
- LeafManager and NodeManager now use Index64 for leaf counts internally.
- Added RootNode::probeChild() const.
- Added RootNode::probeChild() and RootNode::probeConstChild().
- Added RootNode::probe() and RootNode::probeConst() to query key presence,
child node, value and active state.
- Added InternalNode::probeChild() const.
- Added InternalNode::probeChild() and probeChildConst() with coord access
and optionally value and active state.
- Added InternalNode::probeChild() and probeChildConst() with index access
and optionally value and active state.
- Added InternalNode::isValueOff(), LeafNode::isValueOff(),
LeafNodeBool::isValueOff(), LeafNodeMask::isValueOff().
- Added LeafNodeMask::probeValue(Index,val), LeafNodeBool::probeValue(Index,val).
- Added RootNode::getValueUnsafe(), RootNode::getChildUnsafe(),
RootNode::getConstChildUnsafe().
- Added InternalNode::getValueUnsafe(), InternalNode::getChildUnsafe(),
InternalNode::getConstChildUnsafe().
- Added InternalNode::setActiveStateUnsafe(), InternalNode::setValueOnlyUnsafe(),
InternalNode::setValueOnUnsafe(), InternalNode::setValueOffUnsafe().
- Added InternalNode::setChildUnsafe(), InternalNode::resetChildUnsafe(),
InternalNode::stealChildUnsafe(), InternalNode::deleteChildUnsafe().
- For LeafNode, LeafNodeBool and LeafNodeMask - added
LeafNode::getValueUnsafe(), LeafNode::setActiveStateunsafe(),
LeafNode::setValueOnlyUnsafe(), LeafNode::setValueOnUnsafe(),
LeafNode::setValueOffUnsafe().
ABI changes:
- Tree::leafCount(), Tree::unallocatedLeafCount(),
Tree::nonLeafCount() and Tree::nodeCount() now use Index64 in their
return types instead of Index32.
API Changes:
- RootNode::tileCount(), RootNode::activeTileCount() and
RootNode::inactiveTileCount() are now public.
- RootNode::hasKey() and RootNode::coordToKey() are now public.
- RootNode::leafCount(), RootNode::nonLeafCount() and RootNode::nodeCount()
now use Index64 instead of Index32. The Index32 variant is deprecated.
- InternalNode::leafCount(), InternalNode::nonLeafCount() and
InternalNode::nodeCount() now use Index64 instead of Index32. The Index32
variant is deprecated.
- LeafNode::leafCount() and LeafNode::nonLeafCount() now use Index64 instead
of Index32. The Index32 variant is deprecated.
Bug Fixes:
- Fix potential crash reading corrupt .vdb files with invalid
blosc or zip chunks.
[Fix thanks to Matthias Ueberheide]
- Fix a bug in RootNode::setOrigin() where the origin was updated
before the error was thrown potentially leaving the root in an
invalid state.
- Fixed a thread sanitizer issue which could cause undefined
behaviour in VolumeToSpheres::fillWithSpheres
[Reported by Jérémie Dumas]
- Fixed an occurance of undefined behaviour in tools::activate
(though this would typically not have manifested with any
unintended behaviour)
NanoVDB:
Bug fix:
- nanovdb::readGrids works with raw grid buffer.
Improvements:
- Restructure files location and namespace to be more align with
OpenVDB. The namespaces touched by the restructuring are: io,
cuda, util, tools, and math.
- Add two scripts updateFiles.sh and updateFiles.py to update the
files using NanoVDB. The script updateFiles.py works on both
Windows and Linux. For a more complete list of changes, see API
Changes (details).
- cuda::PointsToGrid supports target density.
- Add support for NanoVDB Grid of type UInt8.
- Add ability to use externally managed CUDA buffer.
- Add create methods for CudaDeviceBuffer and exceptions.
- Improve GridValidator logic, e.g. include check for grid count.
- Add operator > and >= for class Coord according to lexicographical order.
- Add toCodec to convert string to Codec enumeration type.
- Add nanovdb::strlen<GridType>().
- Add strncpy util.
- Add NANOVDB_DISABLE_SYNC_CUDA_MALLOC that maps cudaMallocAsync
and cudaFreeAsync to cudaMalloc and cudaFree respectively.
- Add guard to UINT64_C.
- Remove use of cudaMallocAsync in PointsToGrid.cuh.
- Align PNanoVDB blind metadata to NanoVDB.
API Changes:
- Change mapToGridType to toGridType.
- Change mapToMagic to toMagic.
- Change CpuTimer.h to Timer.h.
API Changes (details):
- These APIs are now under the math namespace: Ray, DDA, HDDA,
Vec3, Vec4, BBox, ZeroCrossing, TreeMarcher, PointTreeMarcher,
BoxStencil, CurvatureStencil, GradStencil, WenoStencil, AlignUp,
Min, Max, Abs, Clamp, Sqrt, Sign, Maximum, Delta, RoundDown, pi,
isApproxZero, Round, createSampler, SampleFromVoxels.
- These APIs are now under the tools namespace: createNanoGrid,
StatsMode, createLevelSetSphere, createFogVolumeSphere,
createFogVolumeSphere, createFogVolumeSphere,
createFogVolumeTorus, createLevelSetBox, CreateNanoGrid,
updateGridStats, evalChecksum, validateChecksum, checkGrid,
Extrema.
- These APIs are now under the util namespace: is_floating_point,
findLowestOn, findHighestOn, Range, streq, strcpy, strcat,
empty, Split, invoke, forEach, reduce, prefixSum, is_same,
is_specialization, PtrAdd, PtrDiff.
- Move nanovdb::build to nanovdb::tools::build.
- Rename nanovdb::BBoxR to nanovdb::Vec3dBBox.
- Rename nanovdb::BBox<nanovdb::Vec3d> to nanovdb::Vec3dBbox.
- Move nanovdb::cudaCreateNodeManager to nanovdb::cuda::createNodeManager.
- Move and rename nanovdb::cudaVoxelsToGrid to nanovdb::cuda::voxelsToGrid.
- Move and rename nanovdb::cudaPointsToGrid to nanovdb::cuda::pointsToGrid.
- Move nanovdb::DitherLUT to nanovdb::math::DitherLUT.
- Move and rename nanovdb::PackedRGBA8 to nanovdb::math::Rgba8.
- Move nanovdb::Rgba8 to nanovdb::math::Rgba8.
- Move and rename nanovdb::CpuTimer to nanovdb::util::Timer.
- Move nanovdb::GpuTimer to nanovdb::util::cuda::Timer.
- Move and rename nanovdb::CountOn to nanovdb::util::countOn.
- Move util/GridHandle.h to GridHandle.h.
- Move util/BuildGrid.h to tools/GridBuilder.h.
- Move util/GridBuilder.h to tools/GridBuilder.h.
- Move util/IO.h to io/IO.h.
- Move util/CSampleFromVoxels.h to math/CSampleFromVoxels.h.
- Move util/DitherLUT.h to math/DitherLUT.h.
- Move util/HDDA.h to math/HDDA.h.
- Move util/Ray.h to math/Ray.h.
- Move util/SampleFromVoxels.h to math/SampleFromVoxels.h.
- Move util/Stencils.h to nanovdb/math/Stencils.h.
- Move util/CreateNanoGrid.h to tools/CreateNanoGrid.h.
- Move and rename util/Primitives.h to tools/CreatePrimitives.h.
- Move util/GridChecksum.h to tools/GridChecksum.h.
- Move util/GridStats.h to tools/GridStats.h.
- Move util/GridChecksum.h to tools/GridChecksum.h.
- Move util/GridValidator.h to tools/GridValidator.h.
- Move util/NanoToOpenVDB.h to tools/NanoToOpenVDB.h.
- Move util/cuda/CudaGridChecksum.cuh to tools/cuda/CudaGridChecksum.cuh.
- Move util/cuda/CudaGridStats.cuh to tools/cuda/CudaGridStats.cuh.
- Move util/cuda/CudaGridValidator.cuh to tools/cuda/CudaGridValidator.cuh.
- Move util/cuda/CudaIndexToGrid.cuh to tools/cuda/CudaIndexToGrid.cuh.
- Move and rename util/cuda/CudaPointsToGrid.cuh to tools/cuda/PointsToGrid.cuh.
- Move util/cuda/CudaSignedFloodFill.cuh to tools/cuda/CudaSignedFloodFill.cuh.
- Move and rename util/cuda/CudaDeviceBuffer.h to cuda/DeviceBuffer.h.
- Move and rename util/cuda/CudaGridHandle.cuh to cuda/GridHandle.cuh.
- Move and rename util/cuda/CudaUtils.h to util/cuda/Util.h.
- Move and consolidate util/cuda/GpuTimer.h to util/cuda/Timer.h.
Houdini:
- When OPENVDB_ENABLE_RPATH is ON, the location of
libopenvdb_houdini is now added to the rpath of all Houdini
dsos.
Python:
- OpenVDB Python bindings are now implemented using nanobind
instead of pybind11
- The OpenVDB Python module has been changed from pyopenvdb to openvdb
- Added Python bindings for NanoVDB
Build:
- Fixed an issue with OpenVDB AX's CMake on Windows where the
static and shared library targets would have the same name
[Reported by Nicholas Yue]
- USE_EXPLICIT_INSTANTIATION is now disabled on Windows by default
due to OOM linker issues.
- Jemalloc is now the preferred allocator of choice on all
platforms when CONCURRENT_MALLOC is set to Auto.
- Fixed an issue with the Blosc CMake FindPackage for the OpenVDB
Windows static library.
Version 11.0.0 - November 1, 2023
@@ -399,7 +630,6 @@ Version 9.1.0 - June 9, 2022
Positional arguments as input files are deprecated.
- Added tools::minMax() which supports multithreaded evaluation of active
minimum and maximum values. Grid::evalMinMax() has been deprecated.
[Contributed by Greg Hurst]
- Significant performance improvements to AX point kernels, primarily due to
providing AX access to attribute buffers for superior code generation.
- vdb_print now prints both the in-core memory and total memory usage for
+56 -5
View File
@@ -1,5 +1,5 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[
@@ -42,7 +42,7 @@
# note: cmake_minimum_required must be called before project commands to
# ensure policy scope is set up correctly
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
# CMP0091 allows for MSVC ABI targetting via CMAKE_MSVC_RUNTIME_LIBRARY
# from CMake 3.15 and above. Must come before project().
@@ -52,9 +52,9 @@ endif()
###### Version
set(OpenVDB_MAJOR_VERSION 11)
set(OpenVDB_MAJOR_VERSION 12)
set(OpenVDB_MINOR_VERSION 0)
set(OpenVDB_PATCH_VERSION 1)
set(OpenVDB_PATCH_VERSION 2)
set(OpenVDB_VERSION "${OpenVDB_MAJOR_VERSION}.${OpenVDB_MINOR_VERSION}.${OpenVDB_PATCH_VERSION}")
project(OpenVDB LANGUAGES CXX VERSION ${OpenVDB_VERSION})
@@ -285,6 +285,30 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
# Add cmake modules to installation command
if(SKBUILD)
set(OPENVDB_INSTALL_BINDIR openvdb/${CMAKE_INSTALL_BINDIR})
set(OPENVDB_INSTALL_LIBDIR openvdb/${CMAKE_INSTALL_LIBDIR})
set(OPENVDB_INSTALL_INCLUDEDIR openvdb/${CMAKE_INSTALL_INCLUDEDIR})
if(OPENVDB_BUILD_NANOVDB)
set(NANOVDB_INSTALL_BINDIR nanovdb/${CMAKE_INSTALL_BINDIR})
set(NANOVDB_INSTALL_LIBDIR nanovdb/${CMAKE_INSTALL_LIBDIR})
set(NANOVDB_INSTALL_INCLUDEDIR nanovdb/${CMAKE_INSTALL_INCLUDEDIR})
set(NANOVDB_INSTALL_DOCDIR nanovdb/${CMAKE_INSTALL_DOCDIR})
endif()
else()
set(OPENVDB_INSTALL_BINDIR ${CMAKE_INSTALL_BINDIR})
set(OPENVDB_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR})
set(OPENVDB_INSTALL_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR})
if(OPENVDB_BUILD_NANOVDB)
set(NANOVDB_INSTALL_BINDIR ${CMAKE_INSTALL_BINDIR})
set(NANOVDB_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR})
set(NANOVDB_INSTALL_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR})
set(NANOVDB_INSTALL_DOCDIR ${CMAKE_INSTALL_DOCDIR})
endif()
endif()
if(OPENVDB_INSTALL_CMAKE_MODULES)
set(OPENVDB_CMAKE_MODULES
cmake/FindBlosc.cmake
@@ -298,7 +322,7 @@ if(OPENVDB_INSTALL_CMAKE_MODULES)
cmake/OpenVDBMayaSetup.cmake
cmake/OpenVDBUtils.cmake
)
install(FILES ${OPENVDB_CMAKE_MODULES} DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/OpenVDB)
install(FILES ${OPENVDB_CMAKE_MODULES} DESTINATION ${OPENVDB_INSTALL_LIBDIR}/cmake/OpenVDB)
endif()
# Configure component dependencies by loading the Houdini/Maya setup
@@ -451,6 +475,33 @@ if(NOT OPENVDB_BUILD_NANOVDB AND
find_package(OpenVDB REQUIRED COMPONENTS nanovdb)
endif()
# Locate Python and nanobind if necessary
if(OPENVDB_BUILD_PYTHON_MODULE OR (OPENVDB_BUILD_NANOVDB AND NANOVDB_BUILD_PYTHON_MODULE))
# Call find_package(Python ...)
find_package(Python ${MINIMUM_PYTHON_VERSION} REQUIRED COMPONENTS Development Interpreter)
find_package(nanobind ${MINIMUM_NANOBIND_VERSION} REQUIRED)
if(OPENVDB_FUTURE_DEPRECATION AND FUTURE_MINIMUM_PYTHON_VERSION)
if(Python_VERSION VERSION_LESS ${FUTURE_MINIMUM_PYTHON_VERSION})
message(DEPRECATION "Support for Python versions < ${FUTURE_MINIMUM_GLFW_VERSION} "
"is deprecated and will be removed.")
endif()
endif()
if(NOT DEFINED VDB_PYTHON_INSTALL_DIRECTORY)
if(DEFINED Python_SITELIB)
get_filename_component(Python_PACKAGES_DIR ${Python_SITELIB} NAME)
else()
set(Python_PACKAGES_DIR "site-packages")
endif()
set(VDB_PYTHON_INSTALL_DIRECTORY
${CMAKE_INSTALL_LIBDIR}/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/${Python_PACKAGES_DIR}
CACHE STRING "The directory to install the openvdb and nanovdb Python modules."
)
endif()
endif()
# Validate the OpenVDB ABI Version. If OpenVDB_ABI is not set, we're either building
# the core library OR the ABI hasn't been deduced from a VDB installation. Use the
+3
View File
@@ -41,3 +41,6 @@ CHANGES @kmuseth @apradhana
/openvdb_houdini/openvdb_houdini/PointUtils.* @danrbailey @idclip
/openvdb_houdini/openvdb_houdini/*_OpenVDB_Points_* @danrbailey @idclip
/openvdb_houdini/openvdb_houdini/GR_PrimVDBPoints.* @danrbailey @idclip
# fVDB
/fvdb/ @NVIDIA-Omniverse/fvdb-dev
+2 -2
View File
@@ -22,7 +22,7 @@ open source software best practice policies of the Linux Foundation.
#### License
OpenVDB is licensed under the [Mozilla Public License, version 2.0](LICENSE.md)
OpenVDB is licensed under the [Apache License, version 2.0](LICENSE.md)
license. Contributions to OpenVDB should abide by that standard
license.
@@ -54,7 +54,7 @@ Every commit must be signed off. That is, every commit log message
must include a “`Signed-off-by`” line (generated, for example, with
“`git commit --signoff`”), indicating that the committer wrote the
code and has the right to release it under the
[Mozilla Public License, version 2.0](LICENSE.md)
[Apache License, version 2.0](LICENSE.md)
license. See the [TAC documentation on contribution sign off](https://github.com/AcademySoftwareFoundation/tac/blob/master/process/contributing.md#contribution-sign-off) for more information on this requirement.
## Maintainer
+176 -373
View File
@@ -1,373 +1,176 @@
Mozilla Public License Version 2.0
==================================
1. Definitions
--------------
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.
1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.
1.3. "Contribution"
means Covered Software of a particular Contributor.
1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.
1.5. "Incompatible With Secondary Licenses"
means
(a) that the initial Contributor has attached the notice described
in Exhibit B to the Covered Software; or
(b) that the Covered Software was made available under the terms of
version 1.1 or earlier of the License, but not also under the
terms of a Secondary License.
1.6. "Executable Form"
means any form of the work other than Source Code Form.
1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.
1.8. "License"
means this document.
1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.
1.10. "Modifications"
means any of the following:
(a) any file in Source Code Form that results from an addition to,
deletion from, or modification of the contents of Covered
Software; or
(b) any new file in Source Code Form that contains any Covered
Software.
1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having
made, import, or transfer of either its Contributions or its
Contributor Version.
1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU
Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those
licenses.
1.13. "Source Code Form"
means the form of the work preferred for making modifications.
1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that
controls, is controlled by, or is under common control with You. For
purposes of this definition, "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than
fifty percent (50%) of the outstanding shares or beneficial
ownership of such entity.
2. License Grants and Conditions
--------------------------------
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
(a) under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and
(b) under Patent Claims of such Contributor to make, use, sell, offer
for sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:
(a) for any code that a Contributor has removed from Covered Software;
or
(b) for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or
(c) under Patent Claims infringed by Covered Software in the absence of
its Contributions.
This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.
3. Responsibilities
-------------------
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
(a) such Covered Software must also be made available in Source Code
Form, as described in Section 3.1, and You must inform recipients of
the Executable Form how they can obtain a copy of such Source Code
Form by reasonable means in a timely manner, at a charge no more
than the cost of distribution to the recipient; and
(b) You may distribute such Executable Form under the terms of this
License, or sublicense it under different terms, provided that the
license for the Executable Form does not attempt to limit or alter
the recipients' rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).
3.4. Notices
You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty,
or limitations of liability) contained within the Source Code Form of
the Covered Software, except that You may alter any license notices to
the extent required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
4. Inability to Comply Due to Statute or Regulation
---------------------------------------------------
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Software due to
statute, judicial order, or regulation then You must: (a) comply with
the terms of this License to the maximum extent possible; and (b)
describe the limitations and the code they affect. Such description must
be placed in a text file included with all distributions of the Covered
Software under this License. Except to the extent prohibited by statute
or regulation, such description must be sufficiently detailed for a
recipient of ordinary skill to be able to understand it.
5. Termination
--------------
5.1. The rights granted under this License will terminate automatically
if You fail to comply with any of its terms. However, if You become
compliant, then the rights granted under this License from a particular
Contributor are reinstated (a) provisionally, unless and until such
Contributor explicitly and finally terminates Your grants, and (b) on an
ongoing basis, if such Contributor fails to notify You of the
non-compliance by some reasonable means prior to 60 days after You have
come back into compliance. Moreover, Your grants from a particular
Contributor are reinstated on an ongoing basis if such Contributor
notifies You of the non-compliance by some reasonable means, this is the
first time You have received notice of non-compliance with this License
from such Contributor, and You become compliant prior to 30 days after
Your receipt of the notice.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
end user license agreements (excluding distributors and resellers) which
have been validly granted by You or Your distributors under this License
prior to termination shall survive termination.
************************************************************************
* *
* 6. Disclaimer of Warranty *
* ------------------------- *
* *
* Covered Software is provided under this License on an "as is" *
* basis, without warranty of any kind, either expressed, implied, or *
* statutory, including, without limitation, warranties that the *
* Covered Software is free of defects, merchantable, fit for a *
* particular purpose or non-infringing. The entire risk as to the *
* quality and performance of the Covered Software is with You. *
* Should any Covered Software prove defective in any respect, You *
* (not any Contributor) assume the cost of any necessary servicing, *
* repair, or correction. This disclaimer of warranty constitutes an *
* essential part of this License. No use of any Covered Software is *
* authorized under this License except under this disclaimer. *
* *
************************************************************************
************************************************************************
* *
* 7. Limitation of Liability *
* -------------------------- *
* *
* Under no circumstances and under no legal theory, whether tort *
* (including negligence), contract, or otherwise, shall any *
* Contributor, or anyone who distributes Covered Software as *
* permitted above, be liable to You for any direct, indirect, *
* special, incidental, or consequential damages of any character *
* including, without limitation, damages for lost profits, loss of *
* goodwill, work stoppage, computer failure or malfunction, or any *
* and all other commercial damages or losses, even if such party *
* shall have been informed of the possibility of such damages. This *
* limitation of liability shall not apply to liability for death or *
* personal injury resulting from such party's negligence to the *
* extent applicable law prohibits such limitation. Some *
* jurisdictions do not allow the exclusion or limitation of *
* incidental or consequential damages, so this exclusion and *
* limitation may not apply to You. *
* *
************************************************************************
8. Litigation
-------------
Any litigation relating to this License may be brought only in the
courts of a jurisdiction where the defendant maintains its principal
place of business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions.
Nothing in this Section shall prevent a party's ability to bring
cross-claims or counter-claims.
9. Miscellaneous
----------------
This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides
that the language of a contract shall be construed against the drafter
shall not be used to construe this License against a Contributor.
10. Versions of the License
---------------------------
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary
Licenses
If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.
Exhibit A - Source Code Form License Notice
-------------------------------------------
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular
file, then You may include the notice in a location (such as a LICENSE
file in a relevant directory) where a recipient would be likely to look
for such a notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - "Incompatible With Secondary Licenses" Notice
---------------------------------------------------------
This Source Code Form is "Incompatible With Secondary Licenses", as
defined by the Mozilla Public License, v. 2.0.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
+4 -4
View File
@@ -10,7 +10,7 @@
[Discussion Forum](https://github.com/AcademySoftwareFoundation/openvdb/discussions) |
[Documentation](https://www.openvdb.org/documentation/doxygen) |
[Releases](https://github.com/AcademySoftwareFoundation/openvdb/releases) |
[License](https://www.mozilla.org/MPL/2.0) |
[License](https://www.apache.org/licenses/LICENSE-2.0) |
[Slack](https://slack.aswf.io/)
OpenVDB is an open source C++ library comprising a novel hierarchical data
@@ -28,14 +28,14 @@ generally less stable than the [production releases](https://github.com/AcademyS
### License
OpenVDB is released under the [Mozilla Public License Version 2.0](https://www.mozilla.org/MPL/2.0/),
OpenVDB is released under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0),
which is a free, open source software license developed and maintained by the
Mozilla Foundation.
Apache Software Foundation.
The trademarks of any contributor to this project may not be used in
association with the project without the contributor's express permission.
NOTE: OpenVDB is in the process of changing its license from [Mozilla Public License Version 2.0](https://www.mozilla.org/MPL/2.0/) to [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)! Please see the file RE-LICENSE_NOTE.txt for more details.
NOTE: OpenVDB has completed re-licensing from [Mozilla Public License Version 2.0](https://www.mozilla.org/MPL/2.0/) to [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0). Please see the file RE-LICENSE_NOTE.txt for more details.
### Contributing
+4
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env bash
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
set -e
@@ -185,9 +187,11 @@ set -x
# regardless of the 'test' component being enabled or not (see the OPENVDB_BUILD_PYTHON_UNITTESTS option).
cmake \
-DOPENVDB_USE_DEPRECATED_ABI_10=ON \
-DOPENVDB_USE_DEPRECATED_ABI_11=ON \
-DOPENVDB_BUILD_VDB_PRINT=ON \
-DOPENVDB_BUILD_VDB_LOD=ON \
-DOPENVDB_BUILD_VDB_TOOL=ON \
-DOPENVDB_BUILD_VDB_TOOL_UNITTESTS=ON \
-DOPENVDB_TOOL_USE_NANO=OFF \
-DOPENVDB_BUILD_PYTHON_UNITTESTS=ON \
-DMSVC_MP_THREAD_COUNT=${PARMS[-j]} \
+2
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env bash
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
set -ex
+84
View File
@@ -0,0 +1,84 @@
version: 0.2
env:
variables:
PYTHONPATH: ""
# secrets-manager:
# GITHUB_TOKEN: "github-token:token"
phases:
install:
runtime-versions:
python: 3.10
commands:
# Install Conda
- wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
- bash Miniforge3-Linux-x86_64.sh -b -p $HOME/miniforge3
- eval "$($HOME/miniforge3/bin/conda shell.bash hook)"
- conda init
- source ~/.bashrc || true
# Create build environment
- conda env create -f fvdb/env/build_environment.yml -n fvdb_build
- echo "Build environment created successfully"
# Create test environment
- conda env create -f fvdb/env/test_environment.yml -n fvdb_test
- echo "Test environment created successfully"
pre_build:
commands:
- echo "Starting pre_build phase"
- git config --global --add safe.directory "$(pwd)"
# Verify environments exist
- conda env list
- echo "Pre-build phase completed"
build:
commands:
- echo "Starting build phase"
# Build fvdb wheel using conda run (this ensures proper environment activation)
- cd fvdb
- export TORCH_CUDA_ARCH_LIST="7.0;7.5;8.0;8.6+PTX"
- echo "Building wheel with conda run..."
- conda run --no-capture-output -n fvdb_build ./build.sh wheel verbose gtests benchmarks
# Verify wheel was created
- ls -la dist/
- echo "Wheel build completed"
# Move back to root directory
- cd ..
# Install package in test environment using conda run
- echo "Installing wheel in test environment..."
- conda run --no-capture-output -n fvdb_test pip install ./fvdb/dist/*.whl
- echo "Package installation completed"
post_build:
commands:
- echo "Starting post_build phase"
# Run unit tests using conda run
- echo "Running unit tests..."
- cd fvdb/tests
- conda run --no-capture-output -n fvdb_test pytest -v unit
# Run documentation tests using conda run
- echo "Running documentation tests..."
- cd ..
- conda run --no-capture-output -n fvdb_test pytest --markdown-docs docs
- echo "All tests completed successfully"
artifacts:
files:
- fvdb/dist/*.whl
name: fvdb-artifacts
cache:
paths:
- '/root/.cache/pip/**/*'
- '$HOME/miniforge3/**/*'
+1 -1
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
#
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
# Python script to download the latest Houdini builds
# using the SideFX download API:
+2
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env bash
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
set -ex
+2
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env python3
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
import os
import sys
+2
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env bash
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
#################################################################################
# This script extracts all code blocks from AX documentation which are NOT #
# marked as cpp/sh/unparsed and attempts to parse or compile them through the #
+2
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env bash
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
set -ex
+2
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env bash
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
set -ex
CURL_VERSION="$1"
+2
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env bash
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
set -ex
+2
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env bash
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
set -ex
GLFW_VERSION="$1"
+18
View File
@@ -0,0 +1,18 @@
#!/usr/bin/env bash
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
set -ex
GTEST_VERSION="$1"
git clone https://github.com/google/googletest.git -b v${GTEST_VERSION}
cd googletest
mkdir build
cd build
cmake ..
make -j$(nproc)
sudo make install
+3 -1
View File
@@ -1,10 +1,12 @@
#!/usr/bin/env bash
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
set -ex
LLVM_CRT="$1"
git clone -b llvmorg-12.0.0 --depth 1 https://github.com/llvm/llvm-project.git llvm
git clone -b llvmorg-14.0.0 --depth 1 https://github.com/llvm/llvm-project.git llvm
cd llvm
mkdir .build
+6 -3
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env bash
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
set -x
@@ -18,12 +20,13 @@ brew install glfw
brew install googletest
brew install jq # for trivial parsing of brew json
brew install openexr
brew install pybind11 # also installs the dependent python version
brew install nanobind # also installs the dependent python version
brew install robin-map # required for nanobind
brew install zlib
brew install jemalloc
# Alias python version installed by pybind11 to path
py_version=$(brew info pybind11 --json | \
# Alias python version installed by nanobind to path
py_version=$(brew info nanobind --json | \
jq -cr '.[].dependencies[] | select(. | startswith("python"))')
echo "Using python $py_version"
# export for subsequent action steps (note, not exported for this env)
@@ -1,4 +1,6 @@
#!/usr/bin/env bash
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
set -ex
@@ -9,8 +11,8 @@ if [ ! -z "${INSTALL_ROOT}" ]; then
CMAKE_EXTRA+=("-DCMAKE_INSTALL_PREFIX=${INSTALL_ROOT}")
fi
git clone https://github.com/pybind/pybind11.git
cd pybind11
git clone --recurse-submodules https://github.com/wjakob/nanobind.git
cd nanobind
if [ "$PYBIND11_VERSION" != "latest" ]; then
git checkout tags/v${PYBIND11_VERSION} -b v${PYBIND11_VERSION}
@@ -20,9 +22,9 @@ mkdir build
cd build
cmake \
-DPYBIND11_TEST=OFF \
-DNB_TEST=OFF \
"${CMAKE_EXTRA[@]}" \
..
make -j8
make install
sudo make install
+2
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env bash
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
set -x
+2 -2
View File
@@ -18,7 +18,7 @@ $vcpkgPackages = @(
"boost-iostreams",
"boost-interprocess",
"boost-algorithm",
"pybind11"
"nanobind"
)
# Update vcpkg
@@ -37,4 +37,4 @@ try {
vcpkg install $vcpkgPackages
}
Write-Host "vcpkg install completed successfully"
Write-Host "vcpkg install completed successfully"
+3 -1
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env bash
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
set -e
# Various tests to test the FindOpenVDB CMake modules and
@@ -8,7 +10,7 @@ set -e
# the expected VDB installation
cmakelists="
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
project(TestInstall LANGUAGES CXX)
find_package(OpenVDB REQUIRED COMPONENTS openvdb)
add_executable(test_vdb_print \"../openvdb_cmd/vdb_print/main.cc\")
+2
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env bash
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
set -ex
+24
View File
@@ -0,0 +1,24 @@
# SPDX-License-Identifier: MIT
#
# SPDX-FileCopyrightText: Copyright (c) 2019-2023 Lars Melchior and contributors
set(CPM_DOWNLOAD_VERSION 0.40.2)
set(CPM_HASH_SUM "c8cdc32c03816538ce22781ed72964dc864b2a34a310d3b7104812a5ca2d835d")
if(CPM_SOURCE_CACHE)
set(CPM_DOWNLOAD_LOCATION "${CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
elseif(DEFINED ENV{CPM_SOURCE_CACHE})
set(CPM_DOWNLOAD_LOCATION "$ENV{CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
else()
set(CPM_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}/cmake/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
endif()
# Expand relative path. This is important if the provided path contains a tilde (~)
get_filename_component(CPM_DOWNLOAD_LOCATION ${CPM_DOWNLOAD_LOCATION} ABSOLUTE)
file(DOWNLOAD
https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake
${CPM_DOWNLOAD_LOCATION} EXPECTED_HASH SHA256=${CPM_HASH_SUM}
)
include(${CPM_DOWNLOAD_LOCATION})
+2 -2
View File
@@ -1,5 +1,5 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[.rst:
@@ -88,7 +88,7 @@ may be provided to tell this module where to look.
#]=======================================================================]
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
include(GNUInstallDirs)
mark_as_advanced(
+2 -2
View File
@@ -1,5 +1,5 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[.rst:
@@ -83,7 +83,7 @@ may be provided to tell this module where to look.
#]=======================================================================]
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
include(GNUInstallDirs)
+2 -2
View File
@@ -1,5 +1,5 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[.rst:
@@ -64,7 +64,7 @@ may be provided to tell this module where to look.
#]=======================================================================]
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
include(GNUInstallDirs)
+2 -2
View File
@@ -1,5 +1,5 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[.rst:
@@ -87,7 +87,7 @@ may be provided to tell this module where to look.
#]=======================================================================]
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
include(GNUInstallDirs)
+44
View File
@@ -0,0 +1,44 @@
include (FindPackageHandleStandardArgs)
if(NCCL_ROOT)
set(_NCCL_ROOT ${NCCL_ROOT})
elseif(DEFINED ENV{NCCL_ROOT})
set(_NCCL_ROOT $ENV{NCCL_ROOT})
endif()
set(_NCCL_INCLUDE_SEARCH_DIRS "")
list(APPEND _NCCL_INCLUDE_SEARCH_DIRS
${_NCCL_ROOT}/include
)
find_path(NCCL_INCLUDE_DIR
NAMES nccl.h
PATHS ${_NCCL_INCLUDE_SEARCH_DIRS}
)
set(_NCCL_LIBRARY_SEARCH_DIRS "")
list(APPEND _NCCL_LIBRARY_SEARCH_DIRS
${_NCCL_ROOT}/bin
)
find_library(NCCL_LIBRARY
NAMES nccl
PATHS ${_NCCL_LIBRARY_SEARCH_DIRS}
)
find_package_handle_standard_args(NCCL REQUIRED_VARS NCCL_INCLUDE_DIR NCCL_LIBRARY)
if (NCCL_FOUND)
mark_as_advanced(NCCL_INCLUDE_DIR)
mark_as_advanced(NCCL_LIBRARY)
endif()
if (NCCL_FOUND AND NOT TARGET NCCL::NCCL)
add_library(NCCL::NCCL SHARED IMPORTED)
if(MSVC)
string(REPLACE ".lib" ".dll" NCCL_DLL ${NCCL_LIBRARY})
set_property(TARGET NCCL::NCCL PROPERTY IMPORTED_LOCATION ${NCCL_DLL})
set_property(TARGET NCCL::NCCL PROPERTY IMPORTED_IMPLIB ${NCCL_LIBRARY})
else()
set_property(TARGET NCCL::NCCL PROPERTY IMPORTED_LOCATION ${NCCL_LIBRARY})
endif()
target_include_directories(NCCL::NCCL INTERFACE ${NCCL_INCLUDE_DIR})
endif()
+2 -2
View File
@@ -1,5 +1,5 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[.rst:
@@ -93,7 +93,7 @@ may be provided to tell this module where to look.
#]=======================================================================]
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
include(GNUInstallDirs)
+2 -4
View File
@@ -1,5 +1,5 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[.rst:
@@ -109,7 +109,7 @@ may be provided to tell this module where to look.
#]=======================================================================]
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
include(GNUInstallDirs)
@@ -334,10 +334,8 @@ set(_OPENVDB_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
set(OPENVDB_PYTHON_PATH_SUFFIXES
lib64/python
lib64/python2.7
lib64/python3
lib/python
lib/python2.7
lib/python3
)
+2 -2
View File
@@ -1,5 +1,5 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[.rst:
@@ -93,7 +93,7 @@ may be provided to tell this module where to look.
#]=======================================================================]
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
include(GNUInstallDirs)
+2 -14
View File
@@ -1,5 +1,5 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[.rst:
@@ -47,7 +47,7 @@ The following variables may be provided to tell this module where to look.
# Find the glfw3 installation and use glfw's CMake to initialize
# the glfw lib
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
set(_FIND_GLFW3_ADDITIONAL_OPTIONS "")
if(DISABLE_CMAKE_SEARCH_PATHS)
@@ -109,18 +109,6 @@ endif()
set(glfw3_FIND_VERSION ${MINIMUM_GLFW_VERSION})
find_package(glfw3 ${MINIMUM_GLFW_VERSION} REQUIRED)
# We only use find_package_handle_standard_args to verify and print
# appropriate messages. This now explicitly errors in 3.19...
# @todo Improve this entire GLFW3 search
# https://gitlab.kitware.com/cmake/cmake/-/issues/21505
if(${CMAKE_VERSION} VERSION_LESS 3.19)
find_package(PackageHandleStandardArgs)
find_package_handle_standard_args(glfw3
REQUIRED_VARS glfw3_DIR glfw3_FOUND
VERSION_VAR glfw3_VERSION
)
endif()
if(OPENVDB_FUTURE_DEPRECATION AND FUTURE_MINIMUM_GLFW_VERSION)
if(glfw3_VERSION VERSION_LESS ${FUTURE_MINIMUM_GLFW_VERSION})
message(DEPRECATION "Support for GLFW versions < ${FUTURE_MINIMUM_GLFW_VERSION} "
+2 -2
View File
@@ -1,5 +1,5 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[.rst:
@@ -73,7 +73,7 @@ may be provided to tell this module where to look.
# Find the Houdini installation and use Houdini's CMake to initialize
# the Houdini lib
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
# Include utility functions for version information
include(${CMAKE_CURRENT_LIST_DIR}/OpenVDBUtils.cmake)
+2 -2
View File
@@ -1,5 +1,5 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[.rst:
@@ -51,7 +51,7 @@ variables may be provided to tell this module where to look.
# Find the Maya installation and use Maya's CMake to initialize
# the Maya lib
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
set(_FIND_MAYA_ADDITIONAL_OPTIONS "")
+2 -2
View File
@@ -1,5 +1,5 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[.rst:
@@ -57,7 +57,7 @@ The following functions are provided:
#]=======================================================================]
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
function(OPENVDB_GET_VERSION_DEFINE HEADER KEY VALUE)
+2 -2
View File
@@ -1,5 +1,5 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[.rst:
@@ -16,7 +16,7 @@ existing from a previous run of cmake.
#]=======================================================================]
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
set(MANIFEST "${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt")
+10 -7
View File
@@ -1,5 +1,5 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[
@@ -7,7 +7,7 @@
#]=======================================================================]
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
###############################################################################
@@ -184,20 +184,23 @@ if(OPENVDB_CXX_STRICT)
add_compile_options("$<$<AND:$<CXX_COMPILER_ID:GNU>,$<VERSION_GREATER_EQUAL:$<CXX_COMPILER_VERSION>,9.3.0>>:-Wimplicit-fallthrough>")
# Only check global constructors for libraries (we should really check for
# executables too but gtest relies on these types of constructors for its
# framework).
add_compile_options("$<$<AND:$<NOT:$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>>,$<COMPILE_LANG_AND_ID:CXX,Clang,AppleClang>>:-Wglobal-constructors>")
# framework). nanobind also incorporates these constructors so skip it as well.
add_compile_options("$<$<AND:$<NOT:$<OR:$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>,$<STREQUAL:$<TARGET_PROPERTY:NAME>,nanobind-static>>>,$<COMPILE_LANG_AND_ID:CXX,Clang,AppleClang>>:-Wglobal-constructors>")
add_compile_options("$<$<COMPILE_LANG_AND_ID:CXX,Clang,AppleClang>:-Wno-sign-conversion>")
# GNU
add_compile_options("$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Werror>")
add_compile_options("$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wall>")
add_compile_options("$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wextra>")
add_compile_options("$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-pedantic>")
add_compile_options("$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wcast-align>")
add_compile_options("$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wcast-qual>")
add_compile_options("$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wconversion>")
add_compile_options("$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wdisabled-optimization>")
add_compile_options("$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Woverloaded-virtual>")
add_compile_options("$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wnon-virtual-dtor>")
# Disable select warnings for the nanobind static library
add_compile_options("$<$<AND:$<NOT:$<OR:$<STREQUAL:$<TARGET_PROPERTY:NAME>,nanobind-static>,$<STREQUAL:$<TARGET_PROPERTY:NAME>,openvdb_python>,$<STREQUAL:$<TARGET_PROPERTY:NAME>,nanovdb_python>>>,$<COMPILE_LANG_AND_ID:CXX,GNU>>:-pedantic>")
add_compile_options("$<$<AND:$<NOT:$<OR:$<STREQUAL:$<TARGET_PROPERTY:NAME>,nanobind-static>,$<STREQUAL:$<TARGET_PROPERTY:NAME>,openvdb_python>,$<STREQUAL:$<TARGET_PROPERTY:NAME>,nanovdb_python>>>,$<COMPILE_LANG_AND_ID:CXX,GNU>>:-Wcast-qual>")
add_compile_options("$<$<AND:$<NOT:$<OR:$<STREQUAL:$<TARGET_PROPERTY:NAME>,nanobind-static>,$<STREQUAL:$<TARGET_PROPERTY:NAME>,openvdb_python>,$<STREQUAL:$<TARGET_PROPERTY:NAME>,nanovdb_python>>>,$<COMPILE_LANG_AND_ID:CXX,GNU>>:-Wconversion>")
add_compile_options("$<$<AND:$<OR:$<STREQUAL:$<TARGET_PROPERTY:NAME>,nanobind-static>,$<STREQUAL:$<TARGET_PROPERTY:NAME>,openvdb_python>,$<STREQUAL:$<TARGET_PROPERTY:NAME>,nanovdb_python>>,$<COMPILE_LANG_AND_ID:CXX,GNU>>:-Wno-unused-variable>")
add_compile_options("$<$<AND:$<OR:$<STREQUAL:$<TARGET_PROPERTY:NAME>,nanobind-static>,$<STREQUAL:$<TARGET_PROPERTY:NAME>,openvdb_python>,$<STREQUAL:$<TARGET_PROPERTY:NAME>,nanovdb_python>>,$<COMPILE_LANG_AND_ID:CXX,GNU>>:-Wno-unused-but-set-parameter>")
else()
# NO OPENVDB_CXX_STRICT, suppress some warnings
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
+21 -18
View File
@@ -1,5 +1,5 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[
@@ -8,7 +8,7 @@
#]=======================================================================]
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
###############################################################################
@@ -34,24 +34,26 @@ if(NOT DISABLE_DEPENDENCY_VERSION_CHECKS)
# What's usually important is that the version of libstdc++ and glibc in use
# matches. Compilers other than GCC should provide options to ensure this
# targetting e.g. --gcc-toolchain and -fgnuc-version with Clang.
set(MINIMUM_GCC_VERSION 9.3.1)
set(MINIMUM_GCC_VERSION 11.2.1)
set(MINIMUM_CLANG_VERSION 5.0)
set(MINIMUM_ICC_VERSION 19)
set(MINIMUM_MSVC_VERSION 19.28) # 1928 (Visual Studio 2019 Version 16.8 + 16.9)
set(MINIMUM_MSVC_VERSION 19.30) # 1928 (Visual Studio 2019 Version 16.8 + 16.9)
# Should be 1.76 for VFX 22, but only version in apt is 1.73
set(MINIMUM_BOOST_VERSION 1.73)
set(MINIMUM_PYBIND_VERSION 2.9.1)
set(MINIMUM_BOOST_VERSION 1.80)
# Nanobind does not store the version in the CMake config file in 2.0.0.
# This issue was fixed in 2.1.0 so next time we bump the minimum version,
# we can define this.
#set(MINIMUM_NANOBIND_VERSION 2.0.0)
set(MINIMUM_IMATH_VERSION 3.1)
set(MINIMUM_OPENEXR_VERSION 3.1)
set(MINIMUM_ZLIB_VERSION 1.2.7)
set(MINIMUM_TBB_VERSION 2020.3)
set(MINIMUM_LLVM_VERSION 10.0.0)
set(MINIMUM_LLVM_VERSION 13.0.0)
set(MINIMUM_BLOSC_VERSION 1.17.0)
set(MINIMUM_GLFW_VERSION 3.1)
set(MINIMUM_PYTHON_VERSION 3.9.1)
set(MINIMUM_NUMPY_VERSION 1.20.0)
set(MINIMUM_PYTHON_VERSION 3.10)
set(MINIMUM_NUMPY_VERSION 1.23.0)
set(MINIMUM_GOOGLETEST_VERSION 1.10)
set(MINIMUM_LOG4CPLUS_VERSION 1.1.2)
@@ -66,20 +68,21 @@ endif()
# @note At the time of writing, any variables that are commented out don't
# have target transitional versions.
set(FUTURE_MINIMUM_GCC_VERSION 11.2.1)
set(FUTURE_MINIMUM_MSVC_VERSION 19.30) # 1930 (Visual Studio 2022)
# set(FUTURE_MINIMUM_GCC_VERSION 11.2.1)
# set(FUTURE_MINIMUM_MSVC_VERSION 19.30)
# set(FUTURE_MINIMUM_ICC_VERSION 19)
# set(FUTURE_MINIMUM_CXX_STANDARD 20)
set(FUTURE_MINIMUM_CMAKE_VERSION 3.20)
# set(FUTURE_MINIMUM_OPENEXR_VERSION 3.1)
set(FUTURE_MINIMUM_BOOST_VERSION 1.80)
set(FUTURE_MINIMUM_CMAKE_VERSION 3.24)
set(FUTURE_MINIMUM_OPENEXR_VERSION 3.2)
set(FUTURE_MINIMUM_BOOST_VERSION 1.82)
set(FUTURE_MINIMUM_GLFW_VERSION 3.3)
set(FUTURE_MINIMUM_LOG4CPLUS_VERSION 2.0)
# set(FUTURE_MINIMUM_NANOBIND_VERSION 2.1.0)
# set(FUTURE_MINIMUM_BLOSC_VERSION 1.17.0)
# set(FUTURE_MINIMUM_TBB_VERSION 2020.3)
set(FUTURE_MINIMUM_PYTHON_VERSION 3.10)
set(FUTURE_MINIMUM_NUMPY_VERSION 1.23.0)
set(FUTURE_MINIMUM_PYTHON_VERSION 3.11)
set(FUTURE_MINIMUM_NUMPY_VERSION 1.26.0)
# set(FUTURE_MINIMUM_HOUDINI_VERSION 20.0)
set(FUTURE_MINIMUM_LLVM_VERSION 13.0.0)
set(FUTURE_MINIMUM_LLVM_VERSION 15.0.0)
+3 -2
View File
@@ -1,5 +1,5 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: MPL-2.0
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[
@@ -7,7 +7,7 @@
#]=======================================================================]
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
project(OpenVDBDocs LANGUAGES NONE)
include(GNUInstallDirs)
@@ -44,6 +44,7 @@ set(DOXY_FILES
openvdb/openvdb/points/impl
openvdb/openvdb/python/pyopenvdb.h
openvdb/openvdb/tools
openvdb/openvdb/tools/impl
openvdb/openvdb/tree
openvdb/openvdb/util
doc/build.txt
+4 -13
View File
@@ -238,10 +238,8 @@ it's a good idea to read the above section on
DCC | Supported Version | OpenVDB ABI |
-------- | ----------------- | ----------- |
Houdini | 19.5 | 9 |
Houdini | 20.0 | 10 |
Maya | 2018 | Any |
Maya | 2019 | Any |
Houdini | 20.5 | 11 |
@subsection buildBuildHou Building Against Houdini
@@ -263,7 +261,7 @@ CppUnit | A unit testing framework module for C++
GLFW | Simple API for OpenGL development | OpenVDB View |
Doxygen | Documentation generation from C++ | Documentation |
Log4cplus | An optional dependency for improved OpenVDB Logging | Optional (All) |
PyBind11 | C++/python bindings | Optional (Python) |
nanobind | C++/python bindings | Optional (Python) |
NumPy | Scientific computing with Python | Optional (Python) |
LLVM | Target-independent code generation | OpenVDB AX |
@@ -357,7 +355,7 @@ Doxygen | Documentation generation from C++
OpenEXR | EXR serialization support | OpenVDB Render |
Imath | Used half precision floating points and EXR serialization support | Optional (All) |
Log4cplus | An optional dependency for improved OpenVDB Logging | Optional (All) |
PyBind11 | C++/python bindings | Optional (Python) |
nanobind | C++/python bindings | Optional (Python) |
NumPy | Scientific computing with Python | Optional (Python) |
LLVM | Target-independent code generation | OpenVDB AX |
@@ -514,7 +512,7 @@ You can add the below CMake snippet to your main `CMakeLists.txt` to bring in
OpenVDB as a dependency:
@code{.cmake}
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.20)
list(APPEND CMAKE_MODULE_PATH "/location/of/openvdb/install/lib/cmake/OpenVDB")
find_package(OpenVDB REQUIRED)
target_link_libraries(myapp OpenVDB::openvdb)
@@ -607,13 +605,6 @@ OpenVDB uses [imported targets](https://cmake.org/cmake/help/latest/command/add_
for all its dependencies. For imported Boost compatibility, the following
versions of CMake are required:
- Boost 1.73 requires CMake 3.17.2 or newer.
- Boost 1.74 requires CMake 3.19 or newer.
- Boost 1.75 requires CMake 3.19.5 or newer.
- Boost 1.76 requires CMake 3.20.3 or newer.
- Boost 1.77 requires CMake 3.21.3 or newer.
- Boost 1.78 requires CMake 3.22.2 or newer.
- Boost 1.79 requires CMake 3.23.2 or newer.
- Boost 1.80 requires CMake 3.24.2 or newer.
- Boost 1.81 requires CMake 3.25.2 or newer.
- Boost 1.82 requires CMake 3.27.0 or newer.
+257
View File
@@ -2,6 +2,263 @@
@page changes Release Notes
@htmlonly <a name="v12_0_2_changes"></a>@endhtmlonly
@par
<B>Version 12.0.2</B> - <I>In development</I>
@htmlonly <a name="v12_0_1_changes"></a>@endhtmlonly
@par
<B>Version 12.0.1</B> - <I>April 3, 2025</I>
@par
OpenVDB:
- New features:
- Added read and write support for OFF (Object File Format) files to vdb_tool
- Build:
- Fixed a build issue with vdb_render on Windows with newer versions of glew not including glu.h by default
- Fixed issues with newer versions of clang refusing to accept older ::template syntax
@par
NanoVDB:
- New features:
- Added support for multiple GPUs to DeviceBuffer
- Added a UnifiedBuffer class that wraps CUDA unified memory
- Added example for multiGPU sparse convolution
- Added CUDA utility functions for device queries
- Added functions to independently stop and compute the elapsed time for timer classes
- Improvements:
- Replaced CUB's CachingDeviceAllocator with the default asynchronous stream ordered allocator in PointsToGrid for improved performance
- Bug fix:
- Map is now properly transposed when converting NanoVDB to OpenVDB.
- Fixed ostream specializations being hidden within the nanovdb namespace
- Fixed a call to a non-existent method in GridBuild.h
@htmlonly <a name="v1_changes"></a>@endhtmlonly
@par
<B>Version 12.0.0</B> - <I>October 31, 2024</I>
@par
<BLOCKQUOTE>
OpenVDB is now licensed under the Apache&nbsp;2.0 license, instead of the MPL&nbsp;2.0 license.
</BLOCKQUOTE>
@par
<BLOCKQUOTE>
This version introduces ABI changes relative to older major releases, so to
preserve ABI compatibility it might be necessary to define the macro
<TT>OPENVDB_ABI_VERSION_NUMBER=</TT><I>N</I>, where, for example,
<I>N</I> is 10 for Houdini&nbsp;20.0 and 11 for Houdini&nbsp;20.5.
</BLOCKQUOTE>
@par
<BLOCKQUOTE>
GCC 9 is no longer supported.
</BLOCKQUOTE>
@par
OpenVDB:
- New features:
- Added tools::LevelSetFilter::fillet() method to round off concave edges
to create smoother transition between surfaces.
- Improvements:
- Added openvdb::assertAbort to replace cassert and a
@c OPENVDB_ENABLE_ASSERTS cmake argument/compile define to toggle
assertions in OpenVDB code, independantly of NDEBUG. Asserts are
no longer enabled by default in when NDEBUG is absent (e.g.
Debug builds).
- Removed last traces of Boost when @c OPENVDB_USE_DELAYED_LOADING is OFF
<I>[Reported&nbsp;by&nbsp;Brian&nbsp;McKinnon]</I>
- RootNode code cleanup to eliminate redundant key conversion and
to create map values in-place.
- Add RootNode::deleteChildOrTile() to delete a child or tile of
the root node.
- ValueAccessors are now defined and created in the Tree class
instead of in the Grid class so that custom Tree implementations
may define and create their own ValueAccessors if desired.
- Added support for PDAL to vdb_tool [Contributed by Tom Matterson]
- LeafManager and NodeManager now use Index64 for leaf counts internally.
- Added RootNode::probeChild() const.
- Added RootNode::probeChild() and RootNode::probeConstChild().
- Added RootNode::probe() and RootNode::probeConst() to query key presence,
child node, value and active state.
- Added InternalNode::probeChild() const.
- Added InternalNode::probeChild() and probeChildConst() with coord access
and optionally value and active state.
- Added InternalNode::probeChild() and probeChildConst() with index access
and optionally value and active state.
- Added InternalNode::isValueOff(), LeafNode::isValueOff(),
LeafNodeBool::isValueOff(), LeafNodeMask::isValueOff().
- Added LeafNodeMask::probeValue(Index,val), LeafNodeBool::probeValue(Index,val).
- Added RootNode::getValueUnsafe(), RootNode::getChildUnsafe(),
RootNode::getConstChildUnsafe().
- Added InternalNode::getValueUnsafe(), InternalNode::getChildUnsafe(),
InternalNode::getConstChildUnsafe().
- Added InternalNode::setActiveStateUnsafe(), InternalNode::setValueOnlyUnsafe(),
InternalNode::setValueOnUnsafe(), InternalNode::setValueOffUnsafe().
- Added InternalNode::setChildUnsafe(), InternalNode::resetChildUnsafe(),
InternalNode::stealChildUnsafe(), InternalNode::deleteChildUnsafe().
- For LeafNode, LeafNodeBool and LeafNodeMask - added
LeafNode::getValueUnsafe(), LeafNode::setActiveStateunsafe(),
LeafNode::setValueOnlyUnsafe(), LeafNode::setValueOnUnsafe(),
LeafNode::setValueOffUnsafe().
- ABI changes:
- Tree::leafCount(), Tree::unallocatedLeafCount(),
Tree::nonLeafCount() and Tree::nodeCount() now use Index64 in their
return types instead of Index32.
- API Changes:
- RootNode::tileCount(), RootNode::activeTileCount() and
RootNode::inactiveTileCount() are now public.
- RootNode::hasKey() and RootNode::coordToKey() are now public.
- RootNode::leafCount(), RootNode::nonLeafCount() and RootNode::nodeCount()
now use Index64 instead of Index32. The Index32 variant is deprecated.
- InternalNode::leafCount(), InternalNode::nonLeafCount() and
InternalNode::nodeCount() now use Index64 instead of Index32. The Index32
variant is deprecated.
- LeafNode::leafCount() and LeafNode::nonLeafCount() now use Index64 instead
of Index32. The Index32 variant is deprecated.
- Bug Fixes:
- Fix potential crash reading corrupt .vdb files with invalid
blosc or zip chunks.
<I>[Reported&nbsp;by&nbsp;Matthias&nbsp;Ueberheide]</I>
- Fix a bug in RootNode::setOrigin() where the origin was updated
before the error was thrown potentially leaving the root in an
invalid state.
- Fixed a thread sanitizer issue which could cause undefined
behaviour in VolumeToSpheres::fillWithSpheres
<I>[Reported&nbsp;by&nbsp;Jérémie&nbsp;Dumas]</I>
- Fixed an occurance of undefined behaviour in tools::activate
(though this would typically not have manifested with any
unintended behaviour)
@par
NanoVDB:
- Bug fix:
- nanovdb::readGrids works with raw grid buffer.
- Improvements:
- Restructure files location and namespace to be more align with
OpenVDB. The namespaces touched by the restructuring are: io,
cuda, util, tools, and math.
- Add two scripts updateFiles.sh and updateFiles.py to update the
files using NanoVDB. The script updateFiles.py works on both
Windows and Linux. For a more complete list of changes, see API
Changes (details).
- cuda::PointsToGrid supports target density.
- Add support for NanoVDB Grid of type UInt8.
- Add ability to use externally managed CUDA buffer.
- Add create methods for CudaDeviceBuffer and exceptions.
- Improve GridValidator logic, e.g. include check for grid count.
- Add operator > and >= for class Coord according to lexicographical order.
- Add toCodec to convert string to Codec enumeration type.
- Add nanovdb::strlen<GridType>().
- Add strncpy util.
- Add @c NANOVDB_DISABLE_SYNC_CUDA_MALLOC that maps cudaMallocAsync
and cudaFreeAsync to cudaMalloc and cudaFree respectively.
- Add guard to @c UINT64_C.
- Remove use of cudaMallocAsync in PointsToGrid.cuh.
- Align PNanoVDB blind metadata to NanoVDB.
- API Changes:
- Change mapToGridType to toGridType.
- Change mapToMagic to toMagic.
- Change <TT>CpuTimer.h</TT> to <TT>Timer.h</TT>.
- API Changes (details):
- These APIs are now under the math namespace: Ray, DDA, HDDA,
Vec3, Vec4, BBox, ZeroCrossing, TreeMarcher, PointTreeMarcher,
BoxStencil, CurvatureStencil, GradStencil, WenoStencil, AlignUp,
Min, Max, Abs, Clamp, Sqrt, Sign, Maximum, Delta, RoundDown, pi,
isApproxZero, Round, createSampler, SampleFromVoxels.
- These APIs are now under the tools namespace: createNanoGrid,
StatsMode, createLevelSetSphere, createFogVolumeSphere,
createFogVolumeSphere, createFogVolumeSphere,
createFogVolumeTorus, createLevelSetBox, CreateNanoGrid,
updateGridStats, evalChecksum, validateChecksum, checkGrid,
Extrema.
- These APIs are now under the util namespace: is_floating_point,
findLowestOn, findHighestOn, Range, streq, strcpy, strcat,
empty, Split, invoke, forEach, reduce, prefixSum, is_same,
is_specialization, PtrAdd, PtrDiff.
- Move nanovdb::build to nanovdb::tools::build.
- Rename nanovdb::BBoxR to nanovdb::Vec3dBBox.
- Rename nanovdb::BBox<nanovdb::Vec3d> to nanovdb::Vec3dBbox.
- Move nanovdb::cudaCreateNodeManager to nanovdb::cuda::createNodeManager.
- Move and rename nanovdb::cudaVoxelsToGrid to nanovdb::cuda::voxelsToGrid.
- Move and rename nanovdb::cudaPointsToGrid to nanovdb::cuda::pointsToGrid.
- Move nanovdb::DitherLUT to nanovdb::math::DitherLUT.
- Move and rename nanovdb::PackedRGBA8 to nanovdb::math::Rgba8.
- Move nanovdb::Rgba8 to nanovdb::math::Rgba8.
- Move and rename nanovdb::CpuTimer to nanovdb::util::Timer.
- Move nanovdb::GpuTimer to nanovdb::util::cuda::Timer.
- Move and rename nanovdb::CountOn to nanovdb::util::countOn.
- Move <TT>util/GridHandle.h</TT> to <TT>GridHandle.h</TT>.
- Move <TT>util/BuildGrid.h</TT> to <TT>tools/GridBuilder.h</TT>.
- Move <TT>util/GridBuilder.h</TT> to <TT>tools/GridBuilder.h</TT>.
- Move <TT>util/IO.h</TT> to <TT>io/IO.h</TT>.
- Move <TT>util/CSampleFromVoxels.h</TT> to <TT>math/CSampleFromVoxels.h</TT>.
- Move <TT>util/DitherLUT.h</TT> to <TT>math/DitherLUT.h</TT>.
- Move <TT>util/HDDA.h</TT> to <TT>math/HDDA.h</TT>.
- Move <TT>util/Ray.h</TT> to <TT>math/Ray.h</TT>.
- Move <TT>util/SampleFromVoxels.h</TT> to <TT>math/SampleFromVoxels.h</TT>.
- Move <TT>util/Stencils.h</TT> to <TT>nanovdb/math/Stencils.h</TT>.
- Move <TT>util/CreateNanoGrid.h</TT> to <TT>tools/CreateNanoGrid.h</TT>.
- Move and rename <TT>util/Primitives.h</TT> to <TT>tools/CreatePrimitives.h</TT>.
- Move <TT>util/GridChecksum.h</TT> to <TT>tools/GridChecksum.h</TT>.
- Move <TT>util/GridStats.h</TT> to <TT>tools/GridStats.h</TT>.
- Move <TT>util/GridChecksum.h</TT> to <TT>tools/GridChecksum.h</TT>.
- Move <TT>util/GridValidator.h</TT> to <TT>tools/GridValidator.h</TT>.
- Move <TT>util/NanoToOpenVDB.h</TT> to <TT>tools/NanoToOpenVDB.h</TT>.
- Move <TT>util/cuda/CudaGridChecksum.cuh</TT> to <TT>tools/cuda/CudaGridChecksum.cuh</TT>.
- Move <TT>util/cuda/CudaGridStats.cuh</TT> to <TT>tools/cuda/CudaGridStats.cuh</TT>.
- Move <TT>util/cuda/CudaGridValidator.cuh</TT> to <TT>tools/cuda/CudaGridValidator.cuh</TT>.
- Move <TT>util/cuda/CudaIndexToGrid.cuh</TT> to <TT>tools/cuda/CudaIndexToGrid.cuh</TT>.
- Move and rename <TT>util/cuda/CudaPointsToGrid.cuh</TT> to <TT>tools/cuda/PointsToGrid.cuh</TT>.
- Move <TT>util/cuda/CudaSignedFloodFill.cuh</TT> to <TT>tools/cuda/CudaSignedFloodFill.cuh</TT>.
- Move and rename <TT>util/cuda/CudaDeviceBuffer.h</TT> to <TT>cuda/DeviceBuffer.h</TT>.
- Move and rename <TT>util/cuda/CudaGridHandle.cuh</TT> to <TT>cuda/GridHandle.cuh</TT>.
- Move and rename <TT>util/cuda/CudaUtils.h</TT> to <TT>util/cuda/Util.h</TT>.
- Move and consolidate <TT>util/cuda/GpuTimer.h</TT> to <TT>util/cuda/Timer.h</TT>.
@par
Python:
- OpenVDB Python bindings are now implemented using nanobind
instead of pybind11
- The OpenVDB Python module has been changed from pyopenvdb to openvdb
- Added Python bindings for NanoVDB
@par
Houdini:
- When @c OPENVDB_ENABLE_RPATH is @c ON, the location of
libopenvdb_houdini is now added to the rpath of all Houdini
dsos.
@par
Build:
- Fixed an issue with OpenVDB AX's CMake on Windows where the
static and shared library targets would have the same name
<I>[Reported&nbsp;by&nbsp;Nicholas&nbsp;Yue]</I>
- @c USE_EXPLICIT_INSTANTIATION is now disabled on Windows by default
due to OOM linker issues.
- Jemalloc is now the preferred allocator of choice on all
platforms when @c CONCURRENT_MALLOC is set to Auto.
- Fixed an issue with the Blosc CMake FindPackage for the OpenVDB
Windows static library.
@htmlonly <a name="v11_0_0_changes"></a>@endhtmlonly
@par
<B>Version 11.0.0</B> - <I>November 1, 2023</I>
+1 -1
View File
@@ -7,7 +7,7 @@
This document details the coding practices that are used in the OpenVDB
codebase. Contributed code should conform to these guidelines to maintain
consistency and maintainability. If there is a rule that you would like
clarified, changed, or added, please send a note to openvdb@gmail.com.
clarified, changed, or added, please send a note to openvdb-dev@lists.aswf.io.
@section sStyleContents Contents
+15 -15
View File
@@ -41,7 +41,7 @@ OpenVDB Print | Core Library dependencies | -
OpenVDB LOD | Core Library dependencies | -
OpenVDB Render | Core Library dependencies | OpenEXR, Imath::Imath, libpng
OpenVDB View | Core Library dependencies, OpenGL, GLFW3, GLEW* | -
OpenVDB Python | Core Library dependencies, Python, PyBind11 | NumPy
OpenVDB Python | Core Library dependencies, Python, nanobind | NumPy
OpenVDB AX | Core Library dependencies, LLVM | Bison, Flex
NanoVDB | - | Core Library, CUDA, TBB, Blosc, ZLib
OpenVDB UnitTests | Core Library dependencies, GoogleTest | CppUnit**
@@ -56,22 +56,22 @@ OpenVDB Documentation | Doxygen | -
Package | Minimum | Recommended | Description | apt-get | Homebrew | Source
-------------- | ------- | ----------- | ----------------------------------------------------------------- | ------- | -------- | ------
CMake | 3.18 | Latest | Cross-platform family of tools designed to help build software | Y | Y | https://cmake.org
GCC | 9.3.1 | 11.2.1 | C++ 17 Compiler: The GNU Compiler Collection | Y | Y | https://www.gnu.org/software/gcc
CMake | 3.20 | Latest | Cross-platform family of tools designed to help build software | Y | Y | https://cmake.org
GCC | 11.2.1 | 11.2.1 | C++ 17 Compiler: The GNU Compiler Collection | Y | Y | https://www.gnu.org/software/gcc
Clang | 5.0 | Latest | C++ 17 Compiler: A C language family frontend for LLVM | Y | Y | https://clang.llvm.org
Intel ICC | 19 | Latest | C++ 17 Compiler: Intels C++ Compiler | Y | Y | https://software.intel.com/en-us/c-compilers
MSVC | 19.28 | 19.30 | C++ 17 Compiler: Microsoft Visual C++ Compiler | Y | Y | https://visualstudio.microsoft.com/vs
MSVC | 19.30 | 19.30 | C++ 17 Compiler: Microsoft Visual C++ Compiler | Y | Y | https://visualstudio.microsoft.com/vs
Imath | 3.1 | Latest | Half precision floating points | Y | Y | http://www.openexr.com
OpenEXR | 3.1 | Latest | EXR serialization support | Y | Y | http://www.openexr.com
TBB | 2020.2 | 2020.3 | Threading Building Blocks - template library for task parallelism | Y | Y | https://www.threadingbuildingblocks.org
TBB | 2020.3 | 2020.3 | Threading Building Blocks - template library for task parallelism | Y | Y | https://www.threadingbuildingblocks.org
ZLIB | 1.2.7 | Latest | Compression library for disk serialization compression | Y | Y | https://www.zlib.net
Boost | 1.73 | 1.80 | Components: iostreams | Y | Y | https://www.boost.org
LLVM | 10.0.0 | 13.0.0* | Target-independent code generation | Y | Y | https://llvm.org/
Bison | 3.0.0 | 3.7.0 | General-purpose parser generator | Y | Y | https://www.gnu.org/software/gcc
Flex | 2.6.0 | 2.6.4 | Fast lexical analyzer generator | Y | Y | https://github.com/westes/flex
Python | 3.9.1 | 3.10 | The python interpreter and libraries | Y | Y | https://www.python.org
PyBind11 | 2.9.1 | Latest | C++/python bindings | Y | Y | https://pybind11.readthedocs.io
NumPy | 1.20.0 | 1.23.0 | Scientific computing with Python | Y | Y | http://www.numpy.org
Boost | 1.80 | 1.82 | Components: iostreams | Y | Y | https://www.boost.org
LLVM | 13.0.0 | 15.0.0* | Target-independent code generation | Y | Y | https://llvm.org/
Bison | 3.7.0 | 3.7.0 | General-purpose parser generator | Y | Y | https://www.gnu.org/software/gcc
Flex | 2.6.4 | 2.6.4 | Fast lexical analyzer generator | Y | Y | https://github.com/westes/flex
Python | 3.10 | 3.11 | The python interpreter and libraries | Y | Y | https://www.python.org
nanobind | 2.0.0 | 2.1.0 | C++/python bindings | Y | Y | https://nanobind.readthedocs.io
NumPy | 1.23.0 | 1.26.0 | Scientific computing with Python | Y | Y | http://www.numpy.org
GoogleTest | 1.10 | Latest | A unit testing framework module for C++ | Y | Y | https://github.com/google/googletest
CppUnit | 1.10 | Latest | A unit testing framework module for C++ | N | Y | https://freedesktop.org/wiki/Software/cppunit
Blosc | 1.17.0* | 1.17.0 | Recommended dependency for improved disk compression | Y | Y | https://github.com/Blosc/c-blosc/releases
@@ -145,11 +145,11 @@ apt-get install zlibc # zlib
apt-get install libboost-iostreams-dev # Boost::iostream
apt-get install libblosc-dev # Blosc
# AX
apt-get install llvm-10-dev # LLVM
apt-get install llvm-15-dev # LLVM
# Python
apt-get install pybind11-dev # Python
apt-get install python-dev # Python
apt-get install python-numpy # NumPy
pip install nanobind # nanobind
# Optional
apt-get install libpng-dev # libpng
apt-get install libopenexr-dev # OpenEXR
@@ -180,9 +180,9 @@ brew install c-blosc # blosc
# AX
brew install llvm # LLVM
# Python
brew install pybind11 # PyBind11
brew install python # Python
brew install numpy # NumPy
brew install nanobind # nanobind
# Unit Tests
brew install gtest # GoogleTest
brew install cppunit # CppUnit
+4 -4
View File
@@ -40,10 +40,10 @@ details of VDB are described in the paper
<a href="http://www.museth.org/Ken/Publications.html" target="_blank">"VDB: High-Resolution Sparse Volumes with Dynamic Topology"</a>.
@section sWhatLicense What license is OpenVDB distributed under?
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. For more information about this license, see the
<a href="https://www.mozilla.org/en-US/MPL/" target="_blank">Mozilla FAQ</a>.
OpenVDB is released under the Apache License Version 2.0, which is a
free, open source software license developed and maintained by the Apache Software
Foundation. For more information about this license, see
<a href="https://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License, Version 2</a>.
@section sWhatCLA Is there a Contributor License Agreement for OpenVDB?
Yes, developers who wish to contribute code to be considered for inclusion
+139
View File
@@ -0,0 +1,139 @@
---
Language: Cpp
Standard: c++20
# Indentation
TabWidth: 4
IndentWidth: 4
UseTab: Never
IndentPPDirectives: None
IndentWrappedFunctionNames: false
NamespaceIndentation: None
# Empty lines
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 1
# Line length
ColumnLimit: 100
# Line endings
DeriveLineEnding: false
LineEnding: LF
# Breaking and Penalties
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Attach
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakInheritanceList: BeforeColon
BreakStringLiterals: false
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
# Spacing and padding
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: true
SpaceAfterLogicalNot: false
SpaceAfterControlStatementKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: false
SpaceInEmptyParentheses: false
SpacesInAngles: false
SpacesInContainerLiterals: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesBeforeTrailingComments: 1
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeSquareBrackets: false
SpacesInSquareBrackets: false
SpaceBeforeCaseColon: false
# Brace placement
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
Cpp11BracedListStyle: true
# Function definitions
# BreakAfterReturnType: AllDefinitions
AlwaysBreakAfterDefinitionReturnType: All
AttributeMacros:
- __host__
- __device__
- __hostdev__
- __global__
- __forceinline__
- __shared__
- __launch_bounds__
# Alignment
AlignConsecutiveAssignments: true
AlignConsecutiveBitFields: true
AlignConsecutiveDeclarations: false
AlignConsecutiveMacros: true
AlignEscapedNewlines: Left
AlignOperands: true
AlignTrailingComments:
Kind: Always
OverEmptyLines: 2
# Single line allowances
BinPackParameters: false
BinPackArguments: false
AllowAllArgumentsOnNextLine: true
AllowAllConstructorInitializersOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: true
AllowShortCaseLabelsOnASingleLine: true
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: false
AllowShortLambdasOnASingleLine: true
AllowShortLoopsOnASingleLine: false
# Sorting
IncludeBlocks: Regroup
IncludeIsMainRegex: "$"
IncludeCategories:
- Regex: '^"' # quoted includes
Priority: 1
- Regex: '^<fvdb/' # fvdb includes
Priority: 2
- Regex: '^<nanovdb/' # nanovdb includes
Priority: 3
- Regex: '^<(torch|c10|THC|ATen)/' # torch includes
Priority: 4
- Regex: '^<(thrust|cub|cuda)/' # CCCL includes
Priority: 5
- Regex: '^<(cooperative_groups|cuco|cuda.h|cuda_|device_types|math_constants|nvtx3|cute)' # CUDA includes
Priority: 6
- Regex: '^<.*\..*' # other system includes (e.g. with a '.')
Priority: 7
- Regex: '^<[^.]+' # STL includes (no '.')
Priority: 8
IncludeIsMainSourceRegex: "$"
SortIncludes: true
SortUsingDeclarations: true
+71
View File
@@ -0,0 +1,71 @@
# https://clangd.llvm.org/config
# Apply a config conditionally to all C files
If:
PathMatch: .*\.(c|h)$
---
# Apply a config conditionally to all C++ files
If:
PathMatch: .*\.(c|h)pp
---
# Apply a config conditionally to all CUDA files
If:
PathMatch: .*\.cuh?
CompileFlags:
Add:
- "-x"
- "cuda"
# No error on unknown CUDA versions
- "-Wno-unknown-cuda-version"
# Allow variadic CUDA functions
- "-Xclang=-fcuda-allow-variadic-functions"
Diagnostics:
Suppress:
- "variadic_device_fn"
- "attributes_not_allowed"
- "unknown_cuda_version"
- "unknown_type_name"
- "implicit_return_from_non_void_function"
- "no_template_args_on_forwarding_function"
---
# Tweak the clangd parse settings for all files
CompileFlags:
Add:
# report all errors
- "-ferror-limit=0"
- "-fmacro-backtrace-limit=0"
- "-ftemplate-backtrace-limit=0"
# Skip the CUDA version check
- "--no-cuda-version-check"
Remove:
# remove gcc's -fcoroutines
- -fcoroutines
# remove nvc++ flags unknown to clang
- "-gpu=*"
- "-stdpar*"
# remove nvcc flags unknown to clang
- "-arch*"
- "-gencode*"
- "--generate-code*"
- "-ccbin*"
- "-t=*"
- "--threads*"
- "-Xptxas*"
- "-Xcudafe*"
- "-Xfatbin*"
- "-Xcompiler*"
- "--diag-suppress*"
- "--diag_suppress*"
- "--compiler-options*"
- "--extended-lambda"
- "--expt-extended-lambda"
- "--expt-relaxed-constexpr"
- "-forward-unknown-to-host-compiler"
- "-Werror=cross-execution-space-call"
- "-Werror=all-warnings"
+41
View File
@@ -0,0 +1,41 @@
// File location: openvdb/fvdb/.devcontainer/devcontainer.json
{
// A friendly name for the container configuration shown in VS Code
"name": "FVDB Development Environment",
// Tells VS Code to use Docker Compose to define and run the environment.
// The path is relative to this devcontainer.json file.
"dockerComposeFile": [
"../docker-compose.yml" // Points to openvdb/fvdb/docker-compose.yml
],
// The name of the specific service within the docker-compose.yml file
// that VS Code should connect to.
"service": "fvdb-dev",
// Specifies the default directory VS Code should open *inside* the container.
// Since the docker-compose.yml mounts the host's `openvdb/` directory to `/openvdb`
// in the container, the fvdb code resides at `/openvdb/fvdb`.
"workspaceFolder": "/openvdb/fvdb",
// Extensions to install inside the container's VS Code server
"customizations": {
"vscode": {
"extensions": [
"ms-python.python", // Python language support
"ms-vscode.cpptools", // C/C++ language support
"ms-vscode.cmake-tools", // CMake integration
"ms-azuretools.vscode-docker" // Docker integration (useful for managing containers)
],
"settings": {
"python.defaultInterpreterPath": "/opt/conda/envs/fvdb/bin/python"
}
}
},
// Optional: What to do when the VS Code window is closed.
// "stopCompose" will stop the container(s) defined in the compose file.
// "none" would leave them running.
"shutdownAction": "stopCompose"
}
+106
View File
@@ -0,0 +1,106 @@
name: Building Release Wheels
on:
release:
types: [published, edited]
workflow_dispatch:
jobs:
wheel:
runs-on:
- self-hosted
strategy:
fail-fast: false
matrix:
# support version based on: https://download.pytorch.org/whl/torch/
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
torch-version: [2.1.0, 2.1.1, 2.1.2, 2.2.0, 2.2.1, 2.2.2, 2.3.0]
cuda-version: ['12.1.1']
exclude:
- torch-version: 2.1.2
python-version: '3.12'
- torch-version: 2.1.1
python-version: '3.12'
- torch-version: 2.1.0
python-version: '3.12'
steps:
- uses: actions/checkout@v2
- name: Generate release_environment.yml
run: |
echo "cp env/release_base_environment.yml release_environment.yml"
cp env/release_base_environment.yml release_environment.yml
echo " - python=${{ matrix.python-version }}" >> release_environment.yml
echo " - pytorch=${{ matrix.torch-version }}" >> release_environment.yml
perl -E '"${{ matrix.cuda-version }}" =~ /^(\d+\.\d+)/; say " - pytorch-cuda=$1"' >> release_environment.yml
perl -E '"${{ matrix.cuda-version }}" =~ /^(\d+)\.(\d+)/; say " - cuda>=$1.$2.0, <$1." . ($2+1) . ".0"' >> release_environment.yml
perl -E '"${{ matrix.cuda-version }}" =~ /^(\d+)\.(\d+)/; say " - cuda-nvcc>=$1.$2.0, <$1." . ($2+1) . ".0"' >> release_environment.yml
- name: Set up fvdb_release Conda env
uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
mamba-version: "*"
channels: nvidia,pytorch,conda-forge,defaults
channel-priority: true
activate-environment: fvdb_release
environment-file: release_environment.yml
- name: Set version
run: |
VERSION=`sed -n "s/^__version__ = '\(.*\)'/\1/p" fvdb/__init__.py`
TORCH_VERSION=`echo "pt${{ matrix.torch-version }}" | sed "s/..$//" | sed "s/\.//g"`
CUDA_VERSION=`perl -E '"${{ matrix.cuda-version }}" =~ /^(\d+)\.(\d+)/; say "cu$1$2"'`
echo "New version name: $VERSION+$TORCH_VERSION$CUDA_VERSION"
sed -i "s/$VERSION/$VERSION+$TORCH_VERSION$CUDA_VERSION/" fvdb/__init__.py
shell:
bash -el {0}
- name: Build wheel
run: |
conda activate fvdb_release
mkdir dist
TORCH_CUDA_ARCH_LIST="6.1;7.0;7.5;8.0;8.6+PTX" python setup.py bdist_wheel --dist-dir=dist
shell:
bash -el {0}
- name: Rename wheel
run: |
python scripts/rename_wheels.py ${{ matrix.torch-version }} `perl -E '"${{ matrix.cuda-version }}" =~ /^(\d+)\.(\d+)/; say "cu$1$2"'`
shell:
bash -el {0}
- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
token: ${{ secrets.RELEASE_ACTION_TOKEN }}
files: |
dist/*.whl
# - name: Upload to artifacts
# uses: actions/upload-artifact@v3
# with:
# name: wheels
# path: |
# dist/*.whl
# - name: Configure AWS
# uses: aws-actions/configure-aws-credentials@v1
# with:
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# aws-region: ap-northeast-1
# - name: Upload wheel
# run: |
# aws s3 sync dist s3://nksr/whl/torch-${{ matrix.torch-version }}+${{ matrix.cuda-version }} --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
- name: Clean Conda
run: |
conda clean -pty
shell:
bash -el {0}
+221
View File
@@ -0,0 +1,221 @@
name: Running Tests
on:
pull_request:
branches: [main]
paths-ignore:
- 'debug/**'
- 'docs/**'
- 'examples/**'
- 'notebooks/**'
- 'scripts/**'
# Allow subsequent pushes to the same PR or REF to cancel any previous jobs.
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
permissions:
contents: write
deployments: write
jobs:
fvdb-build:
if: ${{ !startsWith(github.event.pull_request.title, 'Draft:') }}
name: fVDB Build
runs-on:
- self-hosted
container:
image: aswf/ci-openvdb:2024
env:
PYTHONPATH: ""
options: --rm
defaults:
run:
shell: bash -el {0}
steps:
- uses: actions/checkout@v4
- name: Set up fvdb_build Conda env
uses: conda-incubator/setup-miniconda@v3
with:
miniforge-version: latest
conda-remove-defaults: "true"
activate-environment: fvdb_build
environment-file: env/build_environment.yml
- name: Buid fvdb
run: |
TORCH_CUDA_ARCH_LIST="7.0;7.5;8.0;8.6+PTX" MAX_JOBS=$(($(nproc) < $(free -g | awk '/^Mem:/{jobs=int($4/2.5); if(jobs<1) jobs=1; print jobs}') ? $(nproc) : $(free -g | awk '/^Mem:/{jobs=int($4/2.5); if(jobs<1) jobs=1; print jobs}'))) conda run --no-capture-output -n fvdb_build python setup.py bdist_wheel --dist-dir=dist
- name: Upload package
uses: actions/upload-artifact@v4
with:
name: fvdb-test-package
path: dist/*.whl
retention-days: 2
- name: Cleanup
if: always()
run: |
echo "Cleaning up /__w/_temp directory"
sudo rm -rf /__w/_temp/*
echo "Cleanup completed"
fvdb-unit-test:
needs: [fvdb-build]
name: fVDB Unit Tests
runs-on:
- self-hosted
container:
image: aswf/ci-openvdb:2024
env:
PYTHONPATH: ""
options: --rm
defaults:
run:
shell: bash -el {0}
steps:
- uses: actions/checkout@v4
- name: Set up fvdb_test Conda env
uses: conda-incubator/setup-miniconda@v3
with:
miniforge-version: latest
conda-remove-defaults: "true"
activate-environment: fvdb_test
environment-file: env/test_environment.yml
- name: Download package
uses: actions/download-artifact@v4
with:
name: fvdb-test-package
path: ./dist
- name: Install package
run: |
conda activate fvdb_test
pip install ./dist/*.whl
- name: Run tests
run: |
cd tests;
pytest -v unit
- name: Cleanup
if: always()
run: |
echo "Cleaning up /__w/_temp directory"
sudo rm -rf /__w/_temp/*
echo "Cleanup completed"
fvdb-docs-test:
needs: [fvdb-build]
name: fVDB Documentation Tests
runs-on:
- self-hosted
container:
image: aswf/ci-openvdb:2024
env:
PYTHONPATH: ""
options: --rm
defaults:
run:
shell: bash -el {0}
steps:
- uses: actions/checkout@v4
- name: Set up fvdb_test Conda env
uses: conda-incubator/setup-miniconda@v3
with:
miniforge-version: latest
conda-remove-defaults: "true"
activate-environment: fvdb_test
environment-file: env/test_environment.yml
- name: Download package
uses: actions/download-artifact@v4
with:
name: fvdb-test-package
path: ./dist
- name: Install package
run: |
conda activate fvdb_test
pip install ./dist/*.whl
- name: Run tests
run: |
cd .. && pytest --markdown-docs fvdb/docs
- name: Cleanup
if: always()
run: |
echo "Cleaning up /__w/_temp directory"
sudo rm -rf /__w/_temp/*
echo "Cleanup completed"
fvdb-benchmarks:
needs: [fvdb-build]
name: fVDB Continuous Benchmarking
runs-on:
- self-hosted
container:
image: aswf/ci-openvdb:2024
env:
PYTHONPATH: ""
options: --rm
defaults:
run:
shell: bash -el {0}
steps:
- uses: actions/checkout@v4
- name: Set up fvdb_test Conda env
uses: conda-incubator/setup-miniconda@v3
with:
miniforge-version: latest
conda-remove-defaults: "true"
activate-environment: fvdb_test
environment-file: env/test_environment.yml
- name: Download package
uses: actions/download-artifact@v4
with:
name: fvdb-test-package
path: ./dist
- name: Install package
run: |
conda activate fvdb_test
pip install ./dist/*.whl
- name: Disable git ownership verification
run: |
git config --global --add safe.directory "$(pwd)"
- name: Run benchmarks
run: |
cd tests;
pytest benchmark --benchmark-json benchmark/output.json
- name: Store benchmark result
uses: benchmark-action/github-action-benchmark@v1
with:
name: Python Benchmark with pytest-benchmark
tool: 'pytest'
output-file-path: tests/benchmark/output.json
# Use personal access token instead of GITHUB_TOKEN due to https://github.community/t/github-action-not-triggering-gh-pages-upon-push/16096
github-token: ${{ secrets.GITHUB_TOKEN }}
auto-push: true
# Show alert with commit comment on detecting possible performance regression
alert-threshold: '200%'
comment-on-alert: true
fail-on-alert: true
alert-comment-cc-users: '@swahtz'
- name: Cleanup
if: always()
run: |
echo "Cleaning up /__w/_temp directory"
sudo rm -rf /__w/_temp/*
echo "Cleanup completed"
+60
View File
@@ -0,0 +1,60 @@
# Generated version file
fvdb/version.py
# Generated compile_commands.json symlink
compile_commands.json
# Build files
/build/*
/src/benchmarks/build/*
/src/tests/build/*
/src/build/*
*.creator
*.includes
*.files
*.config
*.obj
*.off
__pycache__
*.pyc
*.creator.user
*.egg-info
*.so
dist
.cache
.idea
.eggs
cmake-build-debug
external
.polyscope.ini
imgui.ini
datasets/lib/external
datasets/lib/build
*.png
!docs/imgs/**/*.png
!notebooks/img/**/*.png
*.ply
apex/
*.zip
*.npz
!kernel.npz
*.npy
*.o
*.h5
docs/_build
fvdb/include/
trash
scratch
_build
docs/build
*tmp*.py
*.whl
tests/benchmark/data
releases/
/data/
/data/*
!tests/data
.vscode/launch.json
lightning_logs
tests/data/
+30
View File
@@ -0,0 +1,30 @@
# Gitlab CI Pipeline for building and deploying the documentation
default:
image: mambaorg/micromamba:focal-cuda-12.1.1
tags:
- os/linux
- type/docker
before_script:
# - apt-get update
- export TORCH_CUDA_ARCH_LIST="Turing"
- export FORCE_CUDA=1
# install all required libraries using existing conda environment requirements file:
- micromamba env create -f env/build_environment.yml
- eval "$(micromamba shell hook --shell bash)"
- micromamba activate
- micromamba activate fvdb_build
pages:
stage: deploy
script:
# build and publish automated documentation with Sphinx:
- export MAX_JOBS=$(free -g | awk '/^Mem:/{jobs=int($4/3); if(jobs<1) jobs=1; print jobs}')
- python setup.py build_ext --inplace
- sphinx-build -E -a docs/ public/
artifacts:
paths:
- public
only:
- main # Documentation will only be generated on the main branch
+51
View File
@@ -0,0 +1,51 @@
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${env:CONDA_PREFIX}/envs/fvdb/include",
"${env:CONDA_PREFIX}/envs/fvdb/targets/x86_64-linux/include/",
"${workspaceFolder}/src/tests/build/_deps/googletest-src/googletest/include",
"${workspaceFolder}/src/tests/build/_deps/googletest-src/googlemock/include",
"${workspaceFolder}/src/tests/build/_deps/nvtx3-src/include",
"${workspaceFolder}/src",
"${workspaceFolder}/../nanovdb",
"${workspaceFolder}/external/glm",
"${workspaceFolder}/external/cudnn_fe/include",
"${workspaceFolder}/external/cutlass/include",
"${workspaceFolder}/external/tinyply/source",
"${env:CONDA_PREFIX}/envs/fvdb/include/python3.11",
"${env:CONDA_PREFIX}/envs/fvdb/lib/python3.11/site-packages/torch/include",
"${env:CONDA_PREFIX}/envs/fvdb/lib/python3.11/site-packages/torch/include/torch/csrc/api/include",
"${env:CONDA_PREFIX}/envs/fvdb/lib/python3.11/site-packages/torch/include/THC",
"${env:CONDA_PREFIX}/envs/fvdb/lib/python3.11/site-packages/torch/include/c10",
"${default}"
],
"macFrameworkPath": [
"${default}"
],
"defines": [
"${default}",
"NDEVELOP_IDE_ONLY",
"__CUDA_ARCH__=800"
],
"forcedInclude": [
"${default}"
],
"compileCommands": "${default}",
"browse": {
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": "${default}",
"path": [
"${default}"
]
},
"intelliSenseMode": "${default}",
"cStandard": "${default}",
"cppStandard": "c++20",
"compilerPath": "${default}",
"configurationProvider": "ms-vscode.cpptools"
}
],
"version": 4
}
+15
View File
@@ -0,0 +1,15 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
// Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
// List of extensions which should be recommended for users of this workspace.
"recommendations": [
"llvm-vs-code-extensions.vscode-clangd",
"ms-vscode.cpptools-extension-pack",
"Seaube.clangformat"
],
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
"unwantedRecommendations": [
]
}
+58
View File
@@ -0,0 +1,58 @@
{
"files.associations": {
"*.cu": "cuda-cpp",
"*.cuh": "cuda-cpp"
},
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
"editor.rulers": [ 100 ],
"C_Cpp.intelliSenseEngine": "disabled",
"C_Cpp.enhancedColorization": "enabled",
"C_Cpp.errorSquiggles": "enabledIfIncludesResolve",
"C_Cpp.autocomplete": "default",
"C_Cpp.default.compilerPath": "${env:CONDA_PREFIX}/envs/fvdb/bin/x86_64-conda-linux-gnu-c++",
"terminal.integrated.defaultLocation": "editor",
"cmake.environment": {
"PATH": "${env:CONDA_PREFIX}/envs/fvdb/bin:${env:PATH}"
},
"cmake.configureOnOpen": false,
"C_Cpp.formatting": "clangFormat",
"C_Cpp.clang_format_path": "${env:CONDA_PREFIX}/envs/fvdb/bin/clang-format-18",
"C_Cpp.autoAddFileAssociations": false,
"[cpp]": {
"editor.defaultFormatter": "seaube.clangformat",
"editor.formatOnSave": true
},
"[cuda-cpp]": {
"editor.defaultFormatter": "seaube.clangformat",
"editor.formatOnSave": true
},
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
},
},
"python.analysis.typeCheckingMode": "basic",
"python.testing.unittestArgs": [
"-v", "-s", "."
],
"python.testing.pytestEnabled": false,
"python.testing.unittestEnabled": true,
"black-formatter.args": [
"--target-version=py311",
"--line-length=120"
],
"python.analysis.diagnosticSeverityOverrides": {
"reportPrivateImportUsage": "none",
},
"isort.args": [
"--profile", "black"
],
"json.format.keepLines": true,
"clangd.path": "${env:CONDA_PREFIX}/envs/fvdb/bin/clangd",
"clangFormat.executable.linux": "${env.CONDA_PREFIX}/envs/fvdb/bin/clang-format",
}
+98
View File
@@ -0,0 +1,98 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
cmake_minimum_required(VERSION 3.25 FATAL_ERROR)
# Set global download timeout to 600 seconds (10 minutes)
set(CMAKE_DOWNLOAD_TIMEOUT 600 CACHE STRING "Time allowed for downloads in seconds")
project(${SKBUILD_PROJECT_NAME} VERSION ${SKBUILD_PROJECT_VERSION} LANGUAGES CXX)
find_package(Python3 COMPONENTS Development Interpreter)
message(STATUS "CMAKE_BUILD_PARALLEL_LEVEL: ${CMAKE_BUILD_PARALLEL_LEVEL}")
include(${CMAKE_CURRENT_SOURCE_DIR}/src/cmake/get_cpm.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/src/cmake/get_nvtx.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/src/cmake/get_torch.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/src/cmake/get_pybind11.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/src/cmake/configure_torch_pybind11.cmake)
# Generate compile_commands.json
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# configure libfvdb
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src/)
# Source files
set(FVDB_BINDINGS_CPP_FILES
src/python/Bindings.cpp
src/python/GaussianSplatBinding.cpp
src/python/GridBatchBinding.cpp
src/python/JaggedTensorBinding.cpp)
# Build library
Python3_add_library(_Cpp ${FVDB_BINDINGS_CPP_FILES})
if (DEFINED TORCH_PYBIND11_INCLUDE_DIR)
target_link_libraries(_Cpp PUBLIC torch_pybind11_headers)
else()
target_link_libraries(_Cpp PUBLIC pybind11::headers)
endif()
set_target_properties(_Cpp PROPERTIES
INTERPROCEDURAL_OPTIMIZATION ON
CXX_VISIBILITY_PRESET hidden
VISIBILITY_INLINES_HIDDEN ON)
target_link_options(_Cpp PRIVATE "-Wl,--no-as-needed")
set_target_properties(_Cpp PROPERTIES
BUILD_RPATH "\$ORIGIN"
INSTALL_RPATH "\$ORIGIN"
INSTALL_RPATH_USE_LINK_PATH FALSE
BUILD_WITH_INSTALL_RPATH TRUE
CXX_STANDARD 20
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS ON
POSITION_INDEPENDENT_CODE ON
INTERFACE_POSITION_INDEPENDENT_CODE ON)
target_include_directories(_Cpp PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/src
${TORCH_INCLUDE_DIRS})
target_link_libraries(_Cpp PRIVATE
${TORCH_PYTHON_LIBRARY}
${TORCH_LIBRARIES}
fvdb)
target_compile_options(_Cpp PRIVATE
$<$<COMPILE_LANGUAGE:CXX>:
#"-Wno-unused-variable"
"-fvisibility=hidden"
"-fvisibility-inlines-hidden"
"-Wall"
"-Werror"
"${TORCH_CXX_FLAGS}"
>)
target_compile_definitions(_Cpp PRIVATE
TORCH_EXTENSION_NAME=_Cpp
TORCH_API_INCLUDE_EXTENSION_H)
# Configure the pybind11 module with PyTorch compatibility settings
configure_torch_pybind11(_Cpp)
install(TARGETS _Cpp fvdb
LIBRARY
DESTINATION fvdb
COMPONENT PythonModule
RUNTIME
DESTINATION fvdb
COMPONENT PythonModule)
# Add at the beginning after project() call:
set(VERSION_PY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/fvdb/version.py")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/fvdb/version.py.in" "${VERSION_PY_PATH}" @ONLY)
# Make sure version.py is included in the installation
install(FILES "${VERSION_PY_PATH}" DESTINATION fvdb)
+19
View File
@@ -0,0 +1,19 @@
FROM condaforge/miniforge3:24.11.3-2
ARG MODE=dev
RUN echo "Building fVDB container in $MODE mode"
# used for cross-compilation in docker build
ENV FORCE_CUDA=1
WORKDIR /openvdb
# force this CUDA version to be used to build the docker container because `docker build` does not
# expose the GPU to the docker build process for it to be detected
ENV CONDA_OVERRIDE_CUDA=12.0
# copy env/dev_environment.yml to /tmp/
COPY fvdb/env/dev_environment.yml /tmp/
RUN conda env create -f /tmp/dev_environment.yml
RUN conda init
RUN echo "conda activate fvdb" >> ~/.bashrc
+244
View File
@@ -0,0 +1,244 @@
# *ƒ*(VDB)
This repository contains the code for *f*VDB, a data structure for encoding and operating on *sparse voxel hierarchies* of features in PyTorch. A sparse voxel hierarchy is a coarse-to-fine hierarchy of sparse voxel grids such that every fine voxel is contained within some coarse voxel. The image below illustrates an example. *f*VDB supports using PyTorch Tensors to represent features at the corners and centers of voxels in a hierarchy and enables a number of differentiable operations on these Tensors (*e.g.* trilinear interpolation, convolution, splatting, ray tracing).
<p align="center">
<img src="docs/imgs/fvdb_teaser.png" style="width: 40%;"alt="fVDB Teaser">
<!-- <img src="docs/imgs/readme/av_screenshot.png" style="width: 100%;"alt="fVDB Teaser"> -->
<figcaption style="text-align: center; font-style: italic;">An example of a sparse voxel hierarchy with 3 levels. Each fine voxel is contained within exactly one coarse voxel.</figcaption>
</p>
## Learning to Use *f*VDB
After [installing *f*VDB](#installing-fvdb), we recommend starting with our walk-through [notebooks](notebooks) which provide a gentle, illustrated introduction to the main concepts and operations in *f*VDB.
Once familiar with the basics, [Usage Examples](#usage-examples) introduces a few of the practical python scripts that can be further explored in the [examples](examples) directory.
Lastly, our [documentation](docs) provides deeper details on the concepts as well as an exhaustive set of illustrations of all the operations available in *f*VDB and an API reference. The [documentation can be built locally](#building-documentation) or can be accessed online at https://www.openvdb.org/documentation/fvdb/.
## Installing *f*VDB
During the project's initial development stages, it is necessary to [run the build steps](#building-fvdb-from-source) to install ƒVDB. Eventually, ƒVDB will be provided as a pre-built, installable package from anaconda. We support building the latest ƒVDB version for the following dependent library configurations:
| PyTorch | Python | CUDA |
| -------------- | ----------- | ------------ |
| 2.4.0-2.4.1 | 3.10 - 3.12 | 12.1 - 12.4 |
** Notes:**
* Linux is the only platform currently supported (Ubuntu >= 20.04 recommended).
* A CUDA-capable GPU with Ampere architecture or newer (i.e. compute capability >=8.0) is recommended to run the CUDA-accelerated operations in ƒVDB. A GPU with compute capabililty >=7.0 (Volta architecture) is the minimum requirement but some operations and data types are not supported.
## Building *f*VDB from Source
### Environment Management
ƒVDB is a Python library implemented as a C++ Pytorch extension. Of course you can build ƒVDB in whatever environment suits you, but we provide three paths to constructing reliable environments for building and running ƒVDB: using [docker](#setting-up-a-docker-container), [conda](#setting-up-a-conda-environment), or a Python virtual environment.
`conda` tends to be more flexible since reconfiguring toolchains and modules to suit your larger project can be dynamic, but at the same time this can be a more brittle experience compared to using a virtualized `docker` container. Using `conda` is generally recommended for development and testing, while using `docker` is recommended for CI/CD and deployment.
#### Setting up a Docker Container
Running a docker container is a great way to ensure that you have a consistent environment for building and running ƒVDB.
Our provided [`Dockerfile`](Dockerfile) constructs a Docker image which is ready to build ƒVDB. The docker image is configured to install miniforge and the `fvdb` conda environment with all the dependencies needed to build and run ƒVDB.
Building and starting the docker image is done by running the following command from the fvdb directory:
```shell
docker compose run --rm fvdb-dev
```
When you are ready to build ƒVDB, run the following command within the docker container. `TORCH_CUDA_ARCH_LIST` specifies which CUDA architectures to build for.
```shell
conda activate fvdb;
cd /openvdb/fvdb;
TORCH_CUDA_ARCH_LIST="7.0;7.5;8.0;8.6+PTX" \
./build.sh install
```
Additional information about the ƒVDB docker setup, with troubleshooting for common errors, can be found
here: [`ƒVDB Docker`](docs/markdown/docker_readme.md)
#### Setting up a Conda Environment
*f*VDB can be used with any Conda distribution installed on your system. Below is an installation guide using
[miniforge](https://github.com/conda-forge/miniforge). You can skip steps 1-3 if you already have a Conda installation.
1. Download and Run Install Script. Copy the command below to download and run the [miniforge install script](https://github.com/conda-forge/miniforge?tab=readme-ov-file#unix-like-platforms-macos--linux):
```shell
curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh
```
2. Follow the prompts to customize Conda and run the install. Note, we recommend saying yes to enable `conda-init`.
3. Start Conda. Open a new terminal window, which should now show Conda initialized to the `(base)` environment.
4. Create the `fvdb` conda environment. Run the following command from the directory containing this README:
```shell
conda env create -f env/dev_environment.yml
```
5. Activate the *f*VDB environment:
```shell
conda activate fvdb
```
##### Other available environments
* `fvdb_build`: Use `env/build_environment.yml` for a minimum set of dependencies needed just to build/package *f*VDB (note this environment won't have all the runtime dependencies needed to `import fvdb`).
* `fvdb_test`: Use `env/test_environment.yml` for a runtime environment which has only the packages required to run the unit tests after building ƒVDB. This is the environment used by the CI pipeline to run the tests after building ƒVDB in the `fvdb_build` environment.
* `fvdb_learn`: Use `env/learn_environment.yml` for additional runtime requirements and packages needed to run the [notebooks](notebooks) or [examples](examples) and view their visualizations.
#### Setting up a Python virtual environment
After creating a Python virtual environment, proceed to install the exact version of PyTorch that corresponds to your CUDA version. Then, install the rest of the build requirements.
```shell
python -m venv fvdb
source fvdb/bin/activate
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu126
pip install -r env/build_requirements.txt
```
When you're ready to build fVDB, run the following command after activating the Python virtual environment
```shell
TORCH_CUDA_ARCH_LIST="7.0;7.5;8.0;8.6+PTX" ./build.sh install
```
### Building *f*VDB
**:warning: Note:** Compilation can be very memory-consuming. As part of our build script, we set the `CMAKE_BUILD_PARALLEL_LEVEL` environment variable to control compilation job parallelism with a value that we find works well for most machines (allowing for one job every 2.5GB of memory) but this can be overridden by setting the `CMAKE_BUILD_PARALLEL_LEVEL` environment variable to a different value.
You can either perform an install:
```shell
./build.sh
```
or if you would like to build a packaged wheel for installing in other environments, you can run the following command:
```shell
./build.sh wheel
```
### Running Tests
To make sure that everything works by running tests:
```shell
cd tests
pytest unit
```
### Building Documentation
To build the documentation, simply run:
```shell
python setup.py build_ext --inplace
sphinx-build -E -a docs/ build/sphinx
# View the docs
open build/sphinx/index.html
```
### Setting up Intellisense with clangd in Visual Studio Code
Please see the guide [`Clangd for Intellisense in fVDB`](docs/markdown/clangd.md)
## Usage Examples
The [examples](examples) directory contains a number of useful illustrations using the `fvdb` Python package. The sections below show some notable examples and their outputs. Run all commands from the directory containing this README.
### Trilinear sampling of grids
```
python examples/sample_trilinear.py
```
This script generates a grid with scalars at the corners of each voxel and samples this grid at points. The visualization below shows the points colored according to their sampled values as well as the values at grid corners.
<p align="center">
<img src="docs/imgs/readme/trilerp.png" style="width: 40%;"alt="fVDB trilinear interpolation demo">
<figcaption style="text-align: center; font-style: italic;">Trilinearly interpolate the corner values at the points.</figcaption>
</p>
### Trilinear splatting into grids
```
python examples/splat_trilinear.py
```
This script splats normals of a point cloud onto grid centers. The green arrows represent the values of the normals splatted onto each grid center
<p align="center">
<img src="docs/imgs/readme/splat.png" style="width: 40%;"alt="fVDB trilinear splatting demo">
<figcaption style="text-align: center; font-style: italic;">Splat the normals at the blue points into the center of each grid cell. The green arrows are the splatted normals</figcaption>
</p>
### Tracing voxels along rays (hierarchical DDA)
```
python examples/ray_voxel_marching.py
```
This script demonstrates finding the first `N` voxels which lie along a ray (returning thier index as well as their entry and exit points).
<p align="center">
<img src="docs/imgs/readme/rayvox.png" style="width: 70%;"alt="fVDB ray voxel marching">
<figcaption style="text-align: center; font-style: italic;">Find the voxels (yellow) which intersect the pink rays eminating from the green dot.</figcaption>
</p>
### Tracing contiguous segments along rays
```
python examples/ray_segment_marching.py
```
This script demonstrates finding the first `N` continuous segments of voxels which lie along a ray (returning thier index as well as their entry and exit points).
<p align="center">
<img src="docs/imgs/readme/rayseg.png" style="width: 70%;"alt="fVDB ray voxel marching">
<figcaption style="text-align: center; font-style: italic;">Find the contiguous segments of voxels (red and blue lines) which intersect the cyan rays eminating from the pink dot.</figcaption>
</p>
### Backpropagating through sampling and splatting
```
python examples/overfit_sdf.py
```
This scripts fits SDF values at a grid corner to the SDF of a mesh using gradient descent.
<p align="center">
<img src="docs/imgs/readme/fitsdf.png" style="width: 70%;"alt="fVDB SDF fitting">
<figcaption style="text-align: center; font-style: italic;">SDF values at grid corners (colored dots) fitted using gradient descent to the SDF of a mesh.</figcaption>
</p>
The following scripts also show how to bakcprop through splatting and sampling with fVDB:
```
python scripts/debug_grad_trilerp.py
```
```
python scripts/debug_grad_splat.py
```
## Code Structure
The main source code for fVDB lives in the [src](src) directory. There are several important files here:
* `src/python/Bindings.cpp` exposes functionality directly to Python. It is mainly a wrapper around the core classes such as `fvdb::GridBatch` and `fvdb::JaggedTensor`.
* `src/GridBatch.h` contains the implementation of `fvdb::GridBatch` which is the core data structure on which fVDB is built. A `GridBatch` acts as a map between `(i, j, k)` integer coordinates and offsets in linear memory. This mapping can be used to perform a host of operations. The methods in this class are mostly lightweight wrappers around a set of CPU and CUDA *kernels*. The function prototypes for these kernels are defined in `src/detail/ops/Ops.h`.
* `src/detail/ops/Ops.h` contains the function prototypes for the main kernels used by fVDB. Host and device kernel implementations are provided in the `src/detail/ops/*.cu` source files.
* `src/detail/autograd` contains C++ implementations of PyTorch autograd functions for differentiable operations. `#include <detail/autograd/Autograd.h>` includes all of the functions in this directory.
* `src/detail/utils/nanovdb` contains a number of utilities which make it easier to use NanoVDB.
## References
Please consider citing this when using *f*VDB in a project. You can use the citation BibTeX:
```bibtex
@article{williams2024fvdb,
title={fVDB: A Deep-Learning Framework for Sparse, Large-Scale, and High-Performance Spatial Intelligence},
author={Williams, Francis and Huang, Jiahui and Swartz, Jonathan and Klar, Gergely and Thakkar, Vijay and Cong, Matthew and Ren, Xuanchi and Li, Ruilong and Fuji-Tsang, Clement and Fidler, Sanja and Sifakis, Eftychios and Museth, Ken},
journal={ACM Transactions on Graphics (TOG)},
volume={43},
number={4},
pages={133:1--133:15},
year={2024},
publisher={ACM New York, NY, USA}
}
```
## Contact
Executable
+195
View File
@@ -0,0 +1,195 @@
#!/bin/bash
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
usage() {
echo "Usage: $0 [-h|--help] [build_type] [options...]"
echo ""
echo "Builds or tests FVDB."
echo ""
echo "Arguments:"
echo " build_type Specifies the build operation. Can be one of:"
echo " install - Build and install the package (default)."
echo " wheel - Build the Python wheel."
echo " ctest - Run tests (requires tests to be built)."
echo " debug - Build in debug mode with full debug symbols and no optimizations."
echo ""
echo "Options:"
echo " -h, --help Display this help message and exit."
echo ""
echo "Build Modifiers (for 'install' and 'wheel' build types, typically passed after build_type):"
echo " gtests Enable building tests (sets FVDB_BUILD_TESTS=ON)."
echo " benchmarks Enable building benchmarks (sets FVDB_BUILD_BENCHMARKS=ON)."
echo " verbose Enable verbose build output for pip and CMake."
echo ""
echo " Any modifier arguments not matching above are passed through to pip."
exit 0
}
setup_parallel_build_jobs() {
# Calculate the optimal number of parallel build jobs based on available RAM
RAM_GB=$(free -g | awk '/^Mem:/{print $4}')
if [ -z "$RAM_GB" ]; then
echo "Error: Unable to determine available RAM"
exit 1
fi
JOB_RAM_GB=2.5
# Calculate max jobs based on RAM
RAM_JOBS=$(awk -v ram="$RAM_GB" -v job_ram="$JOB_RAM_GB" 'BEGIN { print int(ram / job_ram) }')
# Get number of processors
NPROC=$(nproc)
# if CMAKE_BUILD_PARALLEL_LEVEL is set, use that
if [ -n "$CMAKE_BUILD_PARALLEL_LEVEL" ]; then
echo "Using CMAKE_BUILD_PARALLEL_LEVEL=$CMAKE_BUILD_PARALLEL_LEVEL"
else
# Determine the minimum of RAM-based jobs and processor count
if [ "$RAM_JOBS" -lt "$NPROC" ]; then
CMAKE_BUILD_PARALLEL_LEVEL="$RAM_JOBS"
else
CMAKE_BUILD_PARALLEL_LEVEL="$NPROC"
fi
# Ensure at least 1 job
if [ "$CMAKE_BUILD_PARALLEL_LEVEL" -lt 1 ]; then
CMAKE_BUILD_PARALLEL_LEVEL=1
fi
echo "Setting CMAKE_BUILD_PARALLEL_LEVEL to $CMAKE_BUILD_PARALLEL_LEVEL based on available RAM to target $JOB_RAM_GB GB per translation unit"
export CMAKE_BUILD_PARALLEL_LEVEL
fi
}
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
usage
fi
# Determine BUILD_TYPE from the first positional argument, default to 'install'.
# Handle shifting of arguments appropriately.
_first_arg_val="$1"
BUILD_TYPE="install" # Default build type
if [[ -n "$_first_arg_val" ]]; then
if [[ "$_first_arg_val" == "install" || "$_first_arg_val" == "wheel" || "$_first_arg_val" == "ctest" ]]; then
BUILD_TYPE="$_first_arg_val"
shift # Consume the build_type argument
else
# _first_arg_val is not a recognized build type. Print usage and exit.
echo "Error: Argument '$_first_arg_val' is not a recognized build_type."
usage # This will also exit
fi
fi
CONFIG_SETTINGS=""
PASS_THROUGH_ARGS=""
while (( "$#" )); do
is_config_arg_handled=false
if [[ "$BUILD_TYPE" == "install" || "$BUILD_TYPE" == "wheel" ]]; then
if [[ "$1" == "gtests" ]]; then
echo "Detected 'gtests' flag for $BUILD_TYPE build. Enabling FVDB_BUILD_TESTS."
CONFIG_SETTINGS+=" --config-settings=cmake.define.FVDB_BUILD_TESTS=ON"
is_config_arg_handled=true
elif [[ "$1" == "benchmarks" ]]; then
echo "Detected 'benchmarks' flag for $BUILD_TYPE build. Enabling FVDB_BUILD_BENCHMARKS."
CONFIG_SETTINGS+=" --config-settings=cmake.define.FVDB_BUILD_BENCHMARKS=ON"
is_config_arg_handled=true
elif [[ "$1" == "verbose" ]]; then
echo "Enabling verbose build"
CONFIG_SETTINGS+=" -v -C build.verbose=true"
is_config_arg_handled=true
elif [[ "$1" == "debug" ]]; then
echo "Enabling debug build"
CONFIG_SETTINGS+=" --config-settings=cmake.build-type=debug"
is_config_arg_handled=true
fi
fi
if ! $is_config_arg_handled; then
# Append other arguments, handling potential spaces safely
PASS_THROUGH_ARGS+=" $(printf "%q" "$1")"
fi
shift
done
# Construct PIP_ARGS with potential CMake args and other pass-through args
export PIP_ARGS="--no-build-isolation$CONFIG_SETTINGS$PASS_THROUGH_ARGS"
if [ "$BUILD_TYPE" != "ctest" ]; then
setup_parallel_build_jobs
fi
# if the user specified 'wheel' as the build type, then we will build the wheel
if [ "$BUILD_TYPE" == "wheel" ]; then
echo "Build wheel"
echo "pip wheel . --wheel-dir dist/ $PIP_ARGS"
pip wheel . --wheel-dir dist/ $PIP_ARGS
elif [ "$BUILD_TYPE" == "install" ]; then
echo "Build and install package"
echo "pip install --force-reinstall $PIP_ARGS ."
pip install --force-reinstall $PIP_ARGS .
# TODO: Fix editable install
# else
# echo "Build and install editable package"
# echo "pip install $PIP_ARGS -e . "
# pip install $PIP_ARGS -e .
elif [ "$BUILD_TYPE" == "ctest" ]; then
# --- Ensure Test Data is Cached via CMake Configure Step ---
echo "Ensuring test data is available in CPM cache..."
if [ -z "$CPM_SOURCE_CACHE" ]; then
echo "CPM_SOURCE_CACHE is not set"
else
echo "Using CPM_SOURCE_CACHE: $CPM_SOURCE_CACHE"
fi
# Assume this script runs from the source root directory
SOURCE_DIR=$(pwd)
TEMP_BUILD_DIR="build_temp_download_data"
# Clean up previous temp dir and create anew
rm -rf "$TEMP_BUILD_DIR"
mkdir "$TEMP_BUILD_DIR"
echo "Running CMake configure in temporary directory ($TEMP_BUILD_DIR) to trigger data download..."
pushd "$TEMP_BUILD_DIR" > /dev/null
cmake "$SOURCE_DIR/src/cmake/download_test_data"
popd > /dev/null # Back to SOURCE_DIR
# Clean up temporary directory
rm -rf "$TEMP_BUILD_DIR"
echo "Test data caching step finished."
# --- End Test Data Caching ---
# --- Find and Run Tests ---
echo "Searching for test build directory..."
# Find the directory containing the compiled tests (adjust if needed)
# Using -print -quit to stop after the first match for efficiency
BUILD_DIR=$(find build -name tests -type d -print -quit)
if [ -z "$BUILD_DIR" ]; then
echo "Error: Could not find build directory with tests"
echo "Please enable tests by building with pip argument"
echo "-C cmake.define.FVDB_BUILD_TESTS=ON"
exit 1
fi
echo "Found test build directory: $BUILD_DIR"
# Run ctest within the test build directory
pushd "$BUILD_DIR" > /dev/null
echo "Running ctest..."
ctest --output-on-failure
CTEST_EXIT_CODE=$?
popd > /dev/null # Back to SOURCE_DIR
echo "ctest finished with exit code $CTEST_EXIT_CODE."
exit $CTEST_EXIT_CODE
else
echo "Invalid build/run type: $BUILD_TYPE"
echo "Valid build/run types are: wheel, install, ctest"
exit 1
fi
+25
View File
@@ -0,0 +1,25 @@
version: '3'
services:
fvdb-dev:
build:
context: ../
dockerfile: fvdb/Dockerfile
args:
MODE: dev
volumes:
- ../:/openvdb
# Uncomment and adjust the following as needed
# ports:
# - "8888:8888" # Example for Jupyter notebook
entrypoint: /bin/bash
stdin_open: true
tty: true
environment:
- NVIDIA_VISIBLE_DEVICES=all
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
+5
View File
@@ -0,0 +1,5 @@
GridBatch
===============
.. autoclass:: fvdb.GridBatch
:members:
+5
View File
@@ -0,0 +1,5 @@
JaggedTensor
===============
.. autoclass:: fvdb.JaggedTensor
:members:
+20
View File
@@ -0,0 +1,20 @@
fvdb.nn
=======
`fvdb.nn` is a collection of neural network layers to build sparse neural networks.
.. autoclass:: fvdb.nn.VDBTensor
.. autoclass:: fvdb.nn.MaxPool
.. autoclass:: fvdb.nn.AvgPool
.. autoclass:: fvdb.nn.UpsamplingNearest
.. autoclass:: fvdb.nn.FillFromGrid
.. autoclass:: fvdb.nn.SparseConv3d
.. autoclass:: fvdb.nn.GroupNorm
.. autoclass:: fvdb.nn.Linear
.. autoclass:: fvdb.nn.ReLU
.. autoclass:: fvdb.nn.LeakyReLU
.. autoclass:: fvdb.nn.SELU
.. autoclass:: fvdb.nn.SiLU
.. autoclass:: fvdb.nn.Tanh
.. autoclass:: fvdb.nn.Sigmoid
.. autoclass:: fvdb.nn.Dropout
+4
View File
@@ -0,0 +1,4 @@
fvdb.utils
==================
.. autofunction:: fvdb.utils.build_ext.FVDBExtension
+91
View File
@@ -0,0 +1,91 @@
# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
#
# -- Path setup --------------------------------------------------------------
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
import os
import sys
sys.path.insert(0, os.path.abspath(".."))
# -- Project information -----------------------------------------------------
project = "fVDB"
copyright = "Contributors to the OpenVDB Project"
author = "Contributors to the OpenVDB Project"
# -- General configuration ---------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = ["sphinx.ext.autodoc", "sphinx.ext.viewcode", "sphinx.ext.napoleon", "myst_parser"]
myst_enable_extensions = [
"amsmath",
"attrs_inline",
"colon_fence",
"deflist",
"dollarmath",
"fieldlist",
"html_admonition",
"html_image",
"linkify",
"replacements",
"smartquotes",
"strikethrough",
"substitution",
"tasklist",
]
# Fix return-type in google-style docstrings
napoleon_custom_sections = [("Returns", "params_style")]
# Add any paths that contain templates here, relative to this directory.
templates_path = ["_templates"]
source_suffix = [".rst", ".md"]
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
autodoc_default_options = {"undoc-members": "forward, extra_repr"}
# -- Options for HTML output -------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = "sphinx_rtd_theme"
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
# html_static_path = ['imgs']
# -- Custom hooks ------------------------------------------------------------
def process_signature(app, what, name, obj, options, signature, return_annotation):
if signature is not None:
signature = signature.replace("._Cpp", "")
signature = signature.replace("fvdb::", "fvdb.")
if return_annotation is not None:
return_annotation = return_annotation.replace("._Cpp", "")
return_annotation = return_annotation.replace("fvdb::", "fvdb.")
return signature, return_annotation
def setup(app):
app.connect("autodoc-process-signature", process_signature)
Binary file not shown.

After

Width:  |  Height:  |  Size: 418 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 811 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 958 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

Some files were not shown because too many files have changed in this diff Show More