ernie-renderer 0.2.0.dev19__tar.gz → 0.2.0.dev20__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ernie-renderer might be problematic. Click here for more details.
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/CMakeLists.txt +1 -1
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/PKG-INFO +1 -1
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/benchmarks/CMakeLists.txt +1 -1
- ernie_renderer-0.2.0.dev19/benchmarks/scene_storage.cpp → ernie_renderer-0.2.0.dev20/benchmarks/scene/storage.cpp +2 -2
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/CMakeLists.txt +2 -0
- ernie_renderer-0.2.0.dev20/ernie/geometry/CMakeLists.txt +3 -0
- ernie_renderer-0.2.0.dev20/ernie/geometry/bounds.h +69 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/io/CMakeLists.txt +1 -1
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/io/nanovdb.cpp +4 -14
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/io/nanovdb.h +5 -5
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/scene/storage.cpp +49 -13
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/scene/storage.h +12 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/io/nanovdb_test.cpp +3 -5
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/scene/storage_test.cpp +29 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/.clang-format +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/.clang-tidy +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/.dockerignore +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/.gersemirc +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/.gitattributes +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/.github/scripts/coverage_badge.py +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/.github/scripts/install-lavapipe-windows.sh +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/.github/workflows/ci.yml +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/.gitignore +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/.pre-commit-config.yaml +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/CMakePresets.json +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/Dockerfile +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/LICENSE +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/README.md +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/benchmarks/bench.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/benchmarks/main.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/ErnieConfig.cmake.in +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/ErnieFetch.cmake +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/ErnieInstall.cmake +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/ErniePackaging.cmake +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/ErnieTesting.cmake +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/ernie.pc.in +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/third_party/bc7enc.cmake +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/third_party/dlpack.cmake +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/third_party/glm.cmake +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/third_party/googletest.cmake +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/third_party/json.cmake +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/third_party/nanobind.cmake +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/third_party/openexr.cmake +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/third_party/stb.cmake +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/third_party/tracy.cmake +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/third_party/volk.cmake +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/third_party/vulkan_headers.cmake +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/docs/README.md +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/docs/index.md +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/docs/requirements.txt +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/app/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/app/main.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/device/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/device/vulkan_devices.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/device/vulkan_devices.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/graph/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/io/ies.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/io/ies.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/io/image.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/io/image.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/io/raster.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/io/raster.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/io/texture.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/io/texture.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/astronomy.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/astronomy.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/atmosphere.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/atmosphere.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/cloud.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/cloud.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/constants.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/reflectance_library.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/reflectance_library.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/reflectance_table.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/regolith.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/regolith.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/scattering.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/scattering.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/solar.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/solar.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/solar_table.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/spectrum.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/spectrum.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/python/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/python/ernie/__init__.py +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/python/module.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/render/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/scene/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/scene/path.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/scene/path.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/bytes.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/disk_cache.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/disk_cache.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/file.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/file.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/glm.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/hash_index.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/linear_algebra.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/log.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/log.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/math.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/noise.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/noise.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/numbers.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/parallel.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/profiler.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/profiler.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/random.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/tensor.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/tensor.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/text.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/version.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/version.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/util/worker_pool.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/mkdocs.yml +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/pyproject.toml +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/common.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/consumer/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/consumer/main.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/device/vulkan_devices_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/exr/README.md +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/exr/make_exr.py +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/exr/rgb_float_zip.exr +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/exr/rgba_half_window.exr +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/exr/y_half_zips.exr +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/ies/README.md +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/ies/downlight_quadrant.ies +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/ies/floodlight_type_b.ies +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/ies/lamp.tilt +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/images/grey16.png +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/ktx2/README.md +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/ktx2/quadrants_etc1s.ktx2 +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/ktx2/quadrants_uastc_zstd.ktx2 +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/ktx2/tilted_normal_etc1s.ktx2 +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/ktx2/tilted_normal_uastc.ktx2 +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/tiff/README.md +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/tiff/float_deflate_predictor3.tif +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/tiff/float_raw.tif +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/tiff/int16_bigtiff_bigendian.tif +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/tiff/rgb_lzw_predictor2.tif +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/tiff/rgb_planar_lzw.tif +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/tiff/rgb_planar_raw.tif +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/tiff/rgb_tiled_deflate.tif +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/volumes/cube.nvdb +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/fixtures/volumes/make_nvdb.py +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/io/ies_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/io/image_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/io/raster_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/io/texture_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/physics/astronomy_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/physics/atmosphere_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/physics/cloud_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/physics/reflectance_library_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/physics/regolith_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/physics/scattering_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/physics/solar_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/physics/spectrum_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/python/test_package.py +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/scene/path_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/util/bytes_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/util/disk_cache_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/util/file_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/util/hash_index_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/util/linear_algebra_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/util/log_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/util/math_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/util/noise_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/util/parallel_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/util/profiler_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/util/random_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/util/tensor_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/util/text_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/util/version_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/tests/util/worker_pool_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/LICENSE +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/LICENSES/Apache-2.0.txt +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/LICENSES/BSD-3-clause.txt +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/LICENSES/MIT.txt +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/NOTICE +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/README.md +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_astc_cfgs.inl +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_astc_hdr_core.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_astc_helpers.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_containers.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_containers_impl.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_dds_transcoder.inl +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_etc1_mods.inl +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_file_headers.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_idct.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_transcoder.cpp +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_transcoder.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_transcoder_internal.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_transcoder_tables_astc.inc +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_transcoder_tables_astc_0_255.inc +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_transcoder_tables_atc_55.inc +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_transcoder_tables_atc_56.inc +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_transcoder_tables_bc7_m5_alpha.inc +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_transcoder_tables_bc7_m5_color.inc +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_transcoder_tables_dxt1_5.inc +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_transcoder_tables_dxt1_6.inc +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_transcoder_tables_pvrtc2_45.inc +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_transcoder_tables_pvrtc2_alpha_33.inc +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_transcoder_uastc.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_xbc7_decoder.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/transcoder/basisu_xbc7_decoder.inl +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/zstd/LICENSE +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/zstd/zstd.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/basisu/zstd/zstd_errors.h +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/nanovdb/LICENSE +0 -0
- {ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/third_party/nanovdb/PNanoVDB.h +0 -0
|
@@ -15,7 +15,7 @@ project(
|
|
|
15
15
|
)
|
|
16
16
|
|
|
17
17
|
# Pre-release suffix such as .dev12, written by CI.
|
|
18
|
-
set(ERNIE_VERSION_SUFFIX ".
|
|
18
|
+
set(ERNIE_VERSION_SUFFIX ".dev20" CACHE STRING "Pre-release suffix of Ernie's version")
|
|
19
19
|
set(ERNIE_VERSION "${PROJECT_VERSION}${ERNIE_VERSION_SUFFIX}")
|
|
20
20
|
|
|
21
21
|
option(ERNIE_BUILD_TESTS "Build Ernie's tests" OFF)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ernie-renderer
|
|
3
|
-
Version: 0.2.0.
|
|
3
|
+
Version: 0.2.0.dev20
|
|
4
4
|
Summary: Efficient Renderer for Natural and Interplanetary Environments: a physically based, spectral Vulkan ray tracer
|
|
5
5
|
Author: Alex Maietta
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
-
/// @file
|
|
2
|
+
/// @file storage.cpp
|
|
3
3
|
/// @brief The prim store at 100,000 prims: create, first sync, one edit, edit all, add and remove.
|
|
4
|
-
#include "benchmarks/bench.h"
|
|
5
4
|
#include "ernie/scene/storage.h"
|
|
5
|
+
#include "benchmarks/bench.h"
|
|
6
6
|
|
|
7
7
|
#include <memory>
|
|
8
8
|
#include <string>
|
|
@@ -22,6 +22,7 @@ set_target_properties(
|
|
|
22
22
|
|
|
23
23
|
# One object library per layer; a layer links only the layers below it.
|
|
24
24
|
add_subdirectory(util)
|
|
25
|
+
add_subdirectory(geometry)
|
|
25
26
|
add_subdirectory(physics)
|
|
26
27
|
add_subdirectory(io)
|
|
27
28
|
add_subdirectory(scene)
|
|
@@ -31,6 +32,7 @@ add_subdirectory(render)
|
|
|
31
32
|
|
|
32
33
|
set(ernie_layers
|
|
33
34
|
ernie_util
|
|
35
|
+
ernie_geometry
|
|
34
36
|
ernie_physics
|
|
35
37
|
ernie_io
|
|
36
38
|
ernie_scene
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
/// @file bounds.h
|
|
3
|
+
/// @brief Axis-aligned boxes in double precision.
|
|
4
|
+
#pragma once
|
|
5
|
+
|
|
6
|
+
#include <glm/glm.hpp>
|
|
7
|
+
|
|
8
|
+
#include <cmath>
|
|
9
|
+
#include <limits>
|
|
10
|
+
|
|
11
|
+
namespace ernie {
|
|
12
|
+
|
|
13
|
+
/// @brief An axis-aligned box; the default one is empty and grows to hold what it is given.
|
|
14
|
+
struct Box {
|
|
15
|
+
glm::dvec3 min{std::numeric_limits<double>::infinity()};
|
|
16
|
+
glm::dvec3 max{-std::numeric_limits<double>::infinity()};
|
|
17
|
+
|
|
18
|
+
static Box Around(const glm::dvec3& center, const glm::dvec3& halfSize) {
|
|
19
|
+
return {center - halfSize, center + halfSize};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
bool Empty() const {
|
|
23
|
+
return !(min.x <= max.x && min.y <= max.y && min.z <= max.z);
|
|
24
|
+
}
|
|
25
|
+
glm::dvec3 Center() const {
|
|
26
|
+
return 0.5 * (min + max);
|
|
27
|
+
}
|
|
28
|
+
glm::dvec3 Size() const {
|
|
29
|
+
return Empty() ? glm::dvec3(0.0) : max - min;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
Box& Extend(const glm::dvec3& point) {
|
|
33
|
+
min = glm::min(min, point);
|
|
34
|
+
max = glm::max(max, point);
|
|
35
|
+
return *this;
|
|
36
|
+
}
|
|
37
|
+
Box& Extend(const Box& other) {
|
|
38
|
+
if (!other.Empty()) {
|
|
39
|
+
min = glm::min(min, other.min);
|
|
40
|
+
max = glm::max(max, other.max);
|
|
41
|
+
}
|
|
42
|
+
return *this;
|
|
43
|
+
}
|
|
44
|
+
Box Grown(double margin) const {
|
|
45
|
+
return Empty() ? *this : Box{min - margin, max + margin};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/// @return The box holding this one after `transform` (Arvo's method, exact for affine maps).
|
|
49
|
+
Box Transformed(const glm::dmat4& transform) const {
|
|
50
|
+
if (Empty()) {
|
|
51
|
+
return *this;
|
|
52
|
+
}
|
|
53
|
+
const glm::dvec3 translation(transform[3]);
|
|
54
|
+
Box out{translation, translation};
|
|
55
|
+
for (int column = 0; column < 3; ++column) {
|
|
56
|
+
for (int row = 0; row < 3; ++row) {
|
|
57
|
+
const double a = transform[column][row] * min[column];
|
|
58
|
+
const double b = transform[column][row] * max[column];
|
|
59
|
+
out.min[row] += std::min(a, b);
|
|
60
|
+
out.max[row] += std::max(a, b);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
bool operator==(const Box&) const = default;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
} // namespace ernie
|
|
@@ -222,22 +222,12 @@ bool NanoVdbGrid::Vector() const {
|
|
|
222
222
|
return type == NanoVdbType::Vec3f;
|
|
223
223
|
}
|
|
224
224
|
|
|
225
|
-
|
|
226
|
-
min = glm::dvec3(std::numeric_limits<double>::infinity());
|
|
227
|
-
max = -min;
|
|
225
|
+
Box NanoVdbGrid::GridBounds() const {
|
|
228
226
|
if (Empty()) {
|
|
229
|
-
|
|
230
|
-
return;
|
|
231
|
-
}
|
|
232
|
-
const glm::dvec3 lo = glm::dvec3(indexMin) - 1.0;
|
|
233
|
-
const glm::dvec3 hi = glm::dvec3(indexMax) + 1.0;
|
|
234
|
-
for (int corner = 0; corner < 8; ++corner) {
|
|
235
|
-
const glm::dvec3 index{(corner & 1) != 0 ? hi.x : lo.x, (corner & 2) != 0 ? hi.y : lo.y,
|
|
236
|
-
(corner & 4) != 0 ? hi.z : lo.z};
|
|
237
|
-
const glm::dvec3 point = glm::dvec3(indexToGrid * glm::dvec4(index, 1.0));
|
|
238
|
-
min = glm::min(min, point);
|
|
239
|
-
max = glm::max(max, point);
|
|
227
|
+
const glm::dvec3 origin(indexToGrid[3]);
|
|
228
|
+
return {origin, origin};
|
|
240
229
|
}
|
|
230
|
+
return Box{glm::dvec3(indexMin) - 1.0, glm::dvec3(indexMax) + 1.0}.Transformed(indexToGrid);
|
|
241
231
|
}
|
|
242
232
|
|
|
243
233
|
std::vector<NanoVdbGrid> ParseNanoVdbGrids(std::span<const std::uint8_t> bytes) {
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
/// @brief NanoVDB grids: reading .nvdb/.vdb files and building grids.
|
|
4
4
|
#pragma once
|
|
5
5
|
|
|
6
|
+
#include "ernie/geometry/bounds.h"
|
|
7
|
+
|
|
6
8
|
#include <glm/glm.hpp>
|
|
7
9
|
|
|
8
10
|
#include <cstdint>
|
|
@@ -79,11 +81,9 @@ struct NanoVdbGrid {
|
|
|
79
81
|
bool Scalar() const;
|
|
80
82
|
/// @return Whether volumes sample a 3-vector per voxel.
|
|
81
83
|
bool Vector() const;
|
|
82
|
-
/// @
|
|
83
|
-
///
|
|
84
|
-
|
|
85
|
-
/// @param max Receives the upper corner.
|
|
86
|
-
void GridBounds(glm::dvec3& min, glm::dvec3& max) const;
|
|
84
|
+
/// @return Active bounds in the grid frame, grown by a voxel on each side for trilinear
|
|
85
|
+
/// sampling; the grid's origin when it has no active voxels.
|
|
86
|
+
Box GridBounds() const;
|
|
87
87
|
};
|
|
88
88
|
|
|
89
89
|
/// @brief Reads every grid of a NanoVDB file, in file order.
|
|
@@ -113,26 +113,66 @@ std::vector<PrimId> PrimStore::DefineMany(std::span<const PathId> paths, BucketI
|
|
|
113
113
|
throw std::invalid_argument("Prim " + paths_.ToPath(path).String() + " already exists");
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
-
Bucket& b = *buckets_[bucket];
|
|
117
|
-
const std::uint32_t first = b.Rows();
|
|
118
116
|
const auto count = static_cast<std::uint32_t>(paths.size());
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
column.Resize(first + count);
|
|
122
|
-
}
|
|
117
|
+
const std::uint32_t first = AddRows(bucket, count);
|
|
118
|
+
Bucket& b = *buckets_[bucket];
|
|
123
119
|
std::vector<PrimId> prims;
|
|
124
120
|
prims.reserve(count);
|
|
125
|
-
b.prims.reserve(first + count);
|
|
126
121
|
for (std::uint32_t i = 0; i < count; ++i) {
|
|
127
122
|
prims.push_back(AddSlot(paths[i], bucket, first + i));
|
|
128
|
-
b.prims
|
|
123
|
+
b.prims[first + i] = prims.back();
|
|
129
124
|
}
|
|
130
|
-
Log(b, {Next(), StructuralChange::Kind::Added, first, count, 0});
|
|
131
125
|
return prims;
|
|
132
126
|
}
|
|
133
127
|
|
|
128
|
+
std::uint32_t PrimStore::AddRows(BucketId bucket, std::uint32_t count) {
|
|
129
|
+
Bucket& b = *buckets_[bucket];
|
|
130
|
+
const std::uint32_t first = b.Rows();
|
|
131
|
+
for (Column& column : b.columns) {
|
|
132
|
+
column.values->Grow(count);
|
|
133
|
+
column.Resize(first + count);
|
|
134
|
+
}
|
|
135
|
+
b.prims.resize(first + count);
|
|
136
|
+
Log(b, {Next(), StructuralChange::Kind::Added, first, count, 0});
|
|
137
|
+
return first;
|
|
138
|
+
}
|
|
139
|
+
|
|
134
140
|
void PrimStore::Remove(PrimId prim) {
|
|
135
141
|
SlotData& slot = const_cast<SlotData&>(Slot(prim));
|
|
142
|
+
DropRow(slot);
|
|
143
|
+
pathSlots_[slot.path] = kNoSlot;
|
|
144
|
+
slot.alive = false;
|
|
145
|
+
++slot.generation;
|
|
146
|
+
free_.push_back(prim.slot);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
void PrimStore::Move(PrimId prim, BucketId bucket) {
|
|
150
|
+
SlotData& slot = const_cast<SlotData&>(Slot(prim));
|
|
151
|
+
if (slot.bucket == bucket) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const std::uint32_t row = AddRows(bucket, 1);
|
|
155
|
+
Bucket& to = *buckets_[bucket];
|
|
156
|
+
const Bucket& from = *buckets_[slot.bucket];
|
|
157
|
+
to.prims[row] = prim;
|
|
158
|
+
const std::uint64_t version = Next();
|
|
159
|
+
for (const Column& source : from.columns) {
|
|
160
|
+
const auto found = to.columnIndex.find(source.attribute);
|
|
161
|
+
if (found == to.columnIndex.end() || !source.authored.Test(slot.row)) {
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
Column& column = to.columns[found->second];
|
|
165
|
+
if (column.values->Type() == source.values->Type()) {
|
|
166
|
+
column.values->CopyRow(row, *source.values, slot.row);
|
|
167
|
+
Stamp(bucket, column, row, row + 1, version);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
DropRow(slot);
|
|
171
|
+
slot.bucket = bucket;
|
|
172
|
+
slot.row = row;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
void PrimStore::DropRow(const SlotData& slot) {
|
|
136
176
|
Bucket& b = *buckets_[slot.bucket];
|
|
137
177
|
const std::uint32_t row = slot.row;
|
|
138
178
|
const std::uint32_t last = b.Rows() - 1;
|
|
@@ -149,10 +189,6 @@ void PrimStore::Remove(PrimId prim) {
|
|
|
149
189
|
column.authored.Set(row, column.authored.Test(last));
|
|
150
190
|
column.Resize(last);
|
|
151
191
|
}
|
|
152
|
-
pathSlots_[slot.path] = kNoSlot;
|
|
153
|
-
slot.alive = false;
|
|
154
|
-
++slot.generation;
|
|
155
|
-
free_.push_back(prim.slot);
|
|
156
192
|
}
|
|
157
193
|
|
|
158
194
|
void PrimStore::Clear(PrimId prim, AttributeId attribute) {
|
|
@@ -108,6 +108,8 @@ class ColumnValues {
|
|
|
108
108
|
virtual void SwapRemove(std::size_t row) = 0;
|
|
109
109
|
/// Puts the fallback back in `row`.
|
|
110
110
|
virtual void Reset(std::size_t row) = 0;
|
|
111
|
+
/// Copies `source`'s value at `from` into `row`; `source` holds the same type.
|
|
112
|
+
virtual void CopyRow(std::size_t row, const ColumnValues& source, std::size_t from) = 0;
|
|
111
113
|
};
|
|
112
114
|
|
|
113
115
|
template <typename T> class TypedColumn final : public ColumnValues {
|
|
@@ -132,6 +134,9 @@ template <typename T> class TypedColumn final : public ColumnValues {
|
|
|
132
134
|
void Reset(std::size_t row) override {
|
|
133
135
|
values_[row] = fallback_;
|
|
134
136
|
}
|
|
137
|
+
void CopyRow(std::size_t row, const ColumnValues& source, std::size_t from) override {
|
|
138
|
+
values_[row] = static_cast<const TypedColumn&>(source).values_[from];
|
|
139
|
+
}
|
|
135
140
|
|
|
136
141
|
std::vector<T>& Values() {
|
|
137
142
|
return values_;
|
|
@@ -290,6 +295,9 @@ class PrimStore {
|
|
|
290
295
|
std::vector<PrimId> DefineMany(std::span<const PathId> paths, BucketId bucket);
|
|
291
296
|
/// @brief Removes a prim; the bucket's last row moves into its place.
|
|
292
297
|
void Remove(PrimId prim);
|
|
298
|
+
/// @brief Moves a prim to another bucket, keeping its id and the authored values of the
|
|
299
|
+
/// attributes both buckets have.
|
|
300
|
+
void Move(PrimId prim, BucketId bucket);
|
|
293
301
|
|
|
294
302
|
bool Alive(PrimId prim) const;
|
|
295
303
|
std::optional<PrimId> Find(PathId path) const;
|
|
@@ -362,6 +370,10 @@ class PrimStore {
|
|
|
362
370
|
}
|
|
363
371
|
const SlotData& Slot(PrimId prim) const;
|
|
364
372
|
PrimId AddSlot(PathId path, BucketId bucket, std::uint32_t row);
|
|
373
|
+
/// Appends `count` rows at their fallbacks to a bucket, logged as one change.
|
|
374
|
+
std::uint32_t AddRows(BucketId bucket, std::uint32_t count);
|
|
375
|
+
/// Drops a prim's row from its bucket, the last row moving into its place.
|
|
376
|
+
void DropRow(const SlotData& slot);
|
|
365
377
|
void Log(Bucket& bucket, StructuralChange change);
|
|
366
378
|
/// Marks rows [begin, end) authored and changed at `version`.
|
|
367
379
|
void Stamp(BucketId bucket, Column& column, std::uint32_t begin, std::uint32_t end,
|
|
@@ -62,11 +62,9 @@ TEST(NanoVdb, ReadsWarpsFile) {
|
|
|
62
62
|
EXPECT_EQ(grid.maxValue, 0.0);
|
|
63
63
|
|
|
64
64
|
// Grown by a voxel each side, what trilinear sampling reaches.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
EXPECT_NEAR(min.x, -0.85, kFloat);
|
|
69
|
-
EXPECT_NEAR(max.y, 0.85, kFloat);
|
|
65
|
+
const Box bounds = grid.GridBounds();
|
|
66
|
+
EXPECT_NEAR(bounds.min.x, -0.85, kFloat);
|
|
67
|
+
EXPECT_NEAR(bounds.max.y, 0.85, kFloat);
|
|
70
68
|
}
|
|
71
69
|
|
|
72
70
|
TEST(NanoVdb, RawBufferMatchesTheFile) {
|
|
@@ -48,6 +48,35 @@ TEST(PrimStore, DefinesFindsAndRemovesPrims) {
|
|
|
48
48
|
EXPECT_FALSE(s.store.Alive(a));
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
+
TEST(PrimStore, MovingToAnotherBucketKeepsTheIdAndSharedAuthoredValues) {
|
|
52
|
+
Spheres s;
|
|
53
|
+
const AttributeId height = s.store.Tokens().Intern("height");
|
|
54
|
+
const BucketId cylinders =
|
|
55
|
+
s.store.AddBucket({s.store.Tokens().Intern("Cylinder"), {}},
|
|
56
|
+
std::vector<ColumnLayout>{ColumnLayout::Of<double>(s.radius, 1.0),
|
|
57
|
+
ColumnLayout::Of<double>(height, 2.0)});
|
|
58
|
+
const PrimId a = s.Define("/A");
|
|
59
|
+
const PrimId b = s.Define("/B");
|
|
60
|
+
s.store.Set(a, s.radius, 3.0);
|
|
61
|
+
s.store.Set(a, s.color, glm::dvec3(1.0));
|
|
62
|
+
const std::uint64_t cursor = s.store.Version();
|
|
63
|
+
|
|
64
|
+
s.store.Move(a, cylinders);
|
|
65
|
+
EXPECT_TRUE(s.store.Alive(a));
|
|
66
|
+
EXPECT_EQ(s.store.BucketOf(a), cylinders);
|
|
67
|
+
EXPECT_EQ(*s.store.Get<double>(a, s.radius), 3.0) << "both buckets have radius";
|
|
68
|
+
EXPECT_EQ(s.store.Get<double>(a, height), nullptr) << "unauthored in its new bucket";
|
|
69
|
+
EXPECT_EQ(s.store.RowOf(b), 0u) << "the old bucket's last row filled the gap";
|
|
70
|
+
|
|
71
|
+
const ChangeSet changes = s.store.ChangesSince(cursor);
|
|
72
|
+
ASSERT_EQ(changes.rows.size(), 3u) << "removed and moved in one bucket, added in the other";
|
|
73
|
+
EXPECT_EQ(changes.rows[0].bucket, s.bucket);
|
|
74
|
+
EXPECT_EQ(changes.rows[0].change.kind, StructuralChange::Kind::Removed);
|
|
75
|
+
EXPECT_EQ(changes.rows[1].change.kind, StructuralChange::Kind::Moved);
|
|
76
|
+
EXPECT_EQ(changes.rows[2].bucket, cylinders);
|
|
77
|
+
EXPECT_EQ(changes.rows[2].change.kind, StructuralChange::Kind::Added);
|
|
78
|
+
}
|
|
79
|
+
|
|
51
80
|
TEST(PrimStore, UnauthoredRowsHoldTheFallbackForWholeColumnReads) {
|
|
52
81
|
Spheres s;
|
|
53
82
|
const PrimId a = s.Define("/A");
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/third_party/googletest.cmake
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/cmake/third_party/vulkan_headers.cmake
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/reflectance_library.cpp
RENAMED
|
File without changes
|
{ernie_renderer-0.2.0.dev19 → ernie_renderer-0.2.0.dev20}/ernie/physics/reflectance_library.h
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|