ernie-renderer 0.2.0.dev13__tar.gz → 0.2.0.dev16__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.dev13 → ernie_renderer-0.2.0.dev16}/.github/workflows/ci.yml +28 -3
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/CMakeLists.txt +20 -4
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/Dockerfile +4 -1
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/PKG-INFO +1 -1
- ernie_renderer-0.2.0.dev16/cmake/ErnieConfig.cmake.in +26 -0
- ernie_renderer-0.2.0.dev16/cmake/ErnieInstall.cmake +123 -0
- ernie_renderer-0.2.0.dev16/cmake/ErniePackaging.cmake +57 -0
- ernie_renderer-0.2.0.dev16/cmake/ernie.pc.in +10 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/cmake/third_party/glm.cmake +2 -1
- ernie_renderer-0.2.0.dev16/ernie/CMakeLists.txt +70 -0
- ernie_renderer-0.2.0.dev16/ernie/app/CMakeLists.txt +5 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/device/CMakeLists.txt +1 -1
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/io/CMakeLists.txt +1 -1
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/io/ies.h +7 -5
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/io/image.cpp +1 -1
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/io/image.h +14 -12
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/io/nanovdb.cpp +1 -1
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/io/raster.cpp +1 -1
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/io/raster.h +30 -26
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/io/texture.cpp +1 -1
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/io/texture.h +30 -24
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/CMakeLists.txt +1 -1
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/regolith.cpp +1 -1
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/python/CMakeLists.txt +1 -1
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/CMakeLists.txt +6 -4
- ernie_renderer-0.2.0.dev13/ernie/util/mapped_file.cpp → ernie_renderer-0.2.0.dev16/ernie/util/file.cpp +35 -6
- ernie_renderer-0.2.0.dev16/ernie/util/file.h +57 -0
- ernie_renderer-0.2.0.dev16/ernie/util/glm.h +19 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/log.h +6 -4
- ernie_renderer-0.2.0.dev13/ernie/util/profile_report.cpp → ernie_renderer-0.2.0.dev16/ernie/util/profiler.cpp +186 -3
- ernie_renderer-0.2.0.dev16/ernie/util/profiler.h +264 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/tensor.h +8 -5
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/version.h +6 -4
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/worker_pool.h +1 -1
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/CMakeLists.txt +5 -7
- ernie_renderer-0.2.0.dev16/tests/consumer/CMakeLists.txt +34 -0
- ernie_renderer-0.2.0.dev16/tests/consumer/main.cpp +20 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/util/file_test.cpp +34 -1
- ernie_renderer-0.2.0.dev13/tests/util/profile_report_test.cpp → ernie_renderer-0.2.0.dev16/tests/util/profiler_test.cpp +57 -6
- ernie_renderer-0.2.0.dev13/cmake/ErniePackaging.cmake +0 -38
- ernie_renderer-0.2.0.dev13/ernie/CMakeLists.txt +0 -21
- ernie_renderer-0.2.0.dev13/ernie/app/CMakeLists.txt +0 -5
- ernie_renderer-0.2.0.dev13/ernie/util/file.cpp +0 -40
- ernie_renderer-0.2.0.dev13/ernie/util/file.h +0 -26
- ernie_renderer-0.2.0.dev13/ernie/util/mapped_file.h +0 -39
- ernie_renderer-0.2.0.dev13/ernie/util/profile.h +0 -45
- ernie_renderer-0.2.0.dev13/ernie/util/profile_report.h +0 -110
- ernie_renderer-0.2.0.dev13/ernie/util/profiler.cpp +0 -189
- ernie_renderer-0.2.0.dev13/ernie/util/profiler.h +0 -125
- ernie_renderer-0.2.0.dev13/tests/util/mapped_file_test.cpp +0 -50
- ernie_renderer-0.2.0.dev13/tests/util/profiler_test.cpp +0 -62
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/.clang-format +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/.clang-tidy +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/.dockerignore +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/.gersemirc +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/.gitattributes +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/.github/scripts/coverage_badge.py +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/.github/scripts/install-lavapipe-windows.sh +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/.gitignore +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/.pre-commit-config.yaml +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/CMakePresets.json +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/LICENSE +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/README.md +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/cmake/ErnieFetch.cmake +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/cmake/ErnieTesting.cmake +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/cmake/third_party/bc7enc.cmake +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/cmake/third_party/dlpack.cmake +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/cmake/third_party/googletest.cmake +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/cmake/third_party/json.cmake +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/cmake/third_party/nanobind.cmake +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/cmake/third_party/openexr.cmake +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/cmake/third_party/stb.cmake +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/cmake/third_party/tracy.cmake +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/cmake/third_party/volk.cmake +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/cmake/third_party/vulkan_headers.cmake +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/docs/README.md +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/docs/index.md +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/docs/requirements.txt +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/app/main.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/device/vulkan_devices.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/device/vulkan_devices.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/graph/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/io/ies.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/io/nanovdb.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/astronomy.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/astronomy.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/atmosphere.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/atmosphere.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/cloud.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/cloud.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/constants.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/reflectance_library.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/reflectance_library.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/reflectance_table.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/regolith.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/scattering.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/scattering.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/solar.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/solar.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/solar_table.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/spectrum.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/physics/spectrum.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/python/ernie/__init__.py +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/python/module.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/render/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/scene/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/bytes.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/disk_cache.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/disk_cache.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/linear_algebra.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/log.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/math.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/noise.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/noise.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/numbers.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/parallel.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/random.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/tensor.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/text.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/ernie/util/version.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/mkdocs.yml +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/pyproject.toml +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/device/vulkan_devices_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/exr/README.md +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/exr/make_exr.py +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/exr/rgb_float_zip.exr +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/exr/rgba_half_window.exr +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/exr/y_half_zips.exr +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/ies/README.md +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/ies/downlight_quadrant.ies +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/ies/floodlight_type_b.ies +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/ies/lamp.tilt +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/images/grey16.png +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/ktx2/README.md +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/ktx2/quadrants_etc1s.ktx2 +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/ktx2/quadrants_uastc_zstd.ktx2 +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/ktx2/tilted_normal_etc1s.ktx2 +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/ktx2/tilted_normal_uastc.ktx2 +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/tiff/README.md +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/tiff/float_deflate_predictor3.tif +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/tiff/float_raw.tif +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/tiff/int16_bigtiff_bigendian.tif +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/tiff/rgb_lzw_predictor2.tif +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/tiff/rgb_planar_lzw.tif +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/tiff/rgb_planar_raw.tif +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/tiff/rgb_tiled_deflate.tif +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/volumes/cube.nvdb +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/fixtures/volumes/make_nvdb.py +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/io/ies_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/io/image_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/io/nanovdb_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/io/raster_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/io/texture_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/physics/astronomy_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/physics/atmosphere_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/physics/cloud_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/physics/reflectance_library_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/physics/regolith_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/physics/scattering_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/physics/solar_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/physics/spectrum_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/python/test_package.py +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/util/bytes_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/util/disk_cache_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/util/linear_algebra_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/util/log_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/util/math_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/util/noise_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/util/parallel_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/util/random_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/util/tensor_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/util/text_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/util/version_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/tests/util/worker_pool_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/LICENSE +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/LICENSES/Apache-2.0.txt +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/LICENSES/BSD-3-clause.txt +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/LICENSES/MIT.txt +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/NOTICE +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/README.md +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_astc_cfgs.inl +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_astc_hdr_core.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_astc_helpers.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_containers.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_containers_impl.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_dds_transcoder.inl +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_etc1_mods.inl +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_file_headers.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_idct.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_transcoder.cpp +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_transcoder.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_transcoder_internal.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_transcoder_tables_astc.inc +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_transcoder_tables_astc_0_255.inc +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_transcoder_tables_atc_55.inc +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_transcoder_tables_atc_56.inc +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_transcoder_tables_bc7_m5_alpha.inc +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_transcoder_tables_bc7_m5_color.inc +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_transcoder_tables_dxt1_5.inc +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_transcoder_tables_dxt1_6.inc +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_transcoder_tables_pvrtc2_45.inc +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_transcoder_tables_pvrtc2_alpha_33.inc +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_transcoder_uastc.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_xbc7_decoder.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/transcoder/basisu_xbc7_decoder.inl +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/zstd/LICENSE +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/zstd/zstd.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/basisu/zstd/zstd_errors.h +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/nanovdb/LICENSE +0 -0
- {ernie_renderer-0.2.0.dev13 → ernie_renderer-0.2.0.dev16}/third_party/nanovdb/PNanoVDB.h +0 -0
|
@@ -95,6 +95,18 @@ jobs:
|
|
|
95
95
|
-DERNIE_TEST_PYTHON=python
|
|
96
96
|
- name: Build
|
|
97
97
|
run: cmake --build --preset ci --parallel 4
|
|
98
|
+
# The installed library used as end users use it: its headers compile alone and a program
|
|
99
|
+
# links and runs against it (QA-072). Windows finds ernie.dll on the PATH.
|
|
100
|
+
- name: Install and build a consumer
|
|
101
|
+
shell: bash
|
|
102
|
+
run: |
|
|
103
|
+
prefix="$RUNNER_TEMP/ernie"
|
|
104
|
+
cmake --install build/ci --prefix "$prefix" --component runtime
|
|
105
|
+
cmake --install build/ci --prefix "$prefix" --component dev
|
|
106
|
+
cmake -S tests/consumer -B build/consumer -G Ninja -DCMAKE_BUILD_TYPE=Release \
|
|
107
|
+
"-DCMAKE_PREFIX_PATH=$prefix"
|
|
108
|
+
cmake --build build/consumer
|
|
109
|
+
PATH="$prefix/bin:$PATH" ctest --test-dir build/consumer --output-on-failure
|
|
98
110
|
# The build tree without objects, for this platform's test job; tar keeps file modes.
|
|
99
111
|
- name: Pack the build tree
|
|
100
112
|
shell: bash
|
|
@@ -334,11 +346,16 @@ jobs:
|
|
|
334
346
|
run: |
|
|
335
347
|
dnf install -y -q rpm-build
|
|
336
348
|
command -v ninja >/dev/null || pipx install -q ninja
|
|
349
|
+
# One build; each format installs the library where its distributions look for it, as the
|
|
350
|
+
# build image (RHEL's lib64) is not where Debian and Ubuntu look.
|
|
337
351
|
- name: Build
|
|
338
352
|
run: |
|
|
339
353
|
cmake --preset package
|
|
340
354
|
cmake --build --preset package --parallel 4
|
|
341
|
-
cd build/package
|
|
355
|
+
cd build/package
|
|
356
|
+
cmake "-DCMAKE_INSTALL_LIBDIR=lib/$(uname -m)-linux-gnu" . && cpack -G DEB
|
|
357
|
+
cmake -DCMAKE_INSTALL_LIBDIR=lib64 . && cpack -G RPM
|
|
358
|
+
cmake -DCMAKE_INSTALL_LIBDIR=lib . && cpack -G TGZ
|
|
342
359
|
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
343
360
|
with:
|
|
344
361
|
name: packages-linux-${{ matrix.arch }}
|
|
@@ -360,6 +377,8 @@ jobs:
|
|
|
360
377
|
image: ["ubuntu:22.04", "ubuntu:24.04", "debian:12", "rockylinux/rockylinux:9"]
|
|
361
378
|
container: ${{ matrix.image }}
|
|
362
379
|
steps:
|
|
380
|
+
# The consumer project; checked out first, as checkout clears the workspace.
|
|
381
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
363
382
|
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
364
383
|
with:
|
|
365
384
|
name: packages-linux-${{ matrix.arch }}
|
|
@@ -367,10 +386,16 @@ jobs:
|
|
|
367
386
|
if: ${{ !startsWith(matrix.image, 'rockylinux') }}
|
|
368
387
|
run: |
|
|
369
388
|
apt-get update
|
|
370
|
-
apt-get install -y --no-install-recommends ./*.deb mesa-vulkan-drivers
|
|
389
|
+
apt-get install -y --no-install-recommends ./*.deb mesa-vulkan-drivers cmake g++ make
|
|
371
390
|
- name: Install
|
|
372
391
|
if: ${{ startsWith(matrix.image, 'rockylinux') }}
|
|
373
|
-
run: dnf install -y ./*.rpm
|
|
392
|
+
run: dnf install -y ./*.rpm cmake gcc-c++ make
|
|
393
|
+
# The -dev package used as end users use it, with the distribution's own compiler and CMake.
|
|
394
|
+
- name: Build a consumer
|
|
395
|
+
run: |
|
|
396
|
+
cmake -S tests/consumer -B /tmp/consumer -DCMAKE_BUILD_TYPE=Release
|
|
397
|
+
cmake --build /tmp/consumer
|
|
398
|
+
ctest --test-dir /tmp/consumer --output-on-failure
|
|
374
399
|
# Rocky 9 has no lavapipe for aarch64, so there the program is only run, not given a device.
|
|
375
400
|
- name: Install lavapipe
|
|
376
401
|
if: ${{ startsWith(matrix.image, 'rockylinux') && matrix.arch == 'x86_64' }}
|
|
@@ -10,11 +10,12 @@ project(
|
|
|
10
10
|
VERSION 0.2.0
|
|
11
11
|
DESCRIPTION
|
|
12
12
|
"Efficient Renderer for Natural and Interplanetary Environments: a spectral Vulkan ray tracer"
|
|
13
|
+
HOMEPAGE_URL "https://github.com/alexmaietta/ernie"
|
|
13
14
|
LANGUAGES C CXX
|
|
14
15
|
)
|
|
15
16
|
|
|
16
17
|
# Pre-release suffix such as .dev12, written by CI.
|
|
17
|
-
set(ERNIE_VERSION_SUFFIX ".
|
|
18
|
+
set(ERNIE_VERSION_SUFFIX ".dev16" CACHE STRING "Pre-release suffix of Ernie's version")
|
|
18
19
|
set(ERNIE_VERSION "${PROJECT_VERSION}${ERNIE_VERSION_SUFFIX}")
|
|
19
20
|
|
|
20
21
|
option(ERNIE_BUILD_TESTS "Build Ernie's tests" OFF)
|
|
@@ -24,6 +25,10 @@ option(ERNIE_WARNINGS_AS_ERRORS "Treat compiler warnings as errors" OFF)
|
|
|
24
25
|
option(ERNIE_ASSERTS "Keep assertions in optimised builds" OFF)
|
|
25
26
|
option(ERNIE_TRACY "Send profiling zones to the Tracy profiler too" OFF)
|
|
26
27
|
option(ERNIE_COVERAGE "Instrument Ernie for code coverage (GCC or Clang)" OFF)
|
|
28
|
+
option(ERNIE_INSTALL "Install libernie for C++ consumers" ${PROJECT_IS_TOP_LEVEL})
|
|
29
|
+
|
|
30
|
+
set(CMAKE_INSTALL_DOCDIR "share/doc/ernie" CACHE PATH "Documentation and licences")
|
|
31
|
+
include(GNUInstallDirs)
|
|
27
32
|
|
|
28
33
|
get_property(ernie_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
|
29
34
|
if(PROJECT_IS_TOP_LEVEL AND NOT ernie_multi_config AND NOT CMAKE_BUILD_TYPE)
|
|
@@ -36,9 +41,13 @@ set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
36
41
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
37
42
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin")
|
|
38
43
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib")
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib")
|
|
45
|
+
# Every object goes into the shared library too, and only its public API leaves it: symbols are
|
|
46
|
+
# hidden unless marked ERNIE_API, including those of the dependencies built here.
|
|
47
|
+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
48
|
+
set(CMAKE_C_VISIBILITY_PRESET hidden)
|
|
49
|
+
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
|
50
|
+
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
|
|
42
51
|
|
|
43
52
|
include(cmake/ErnieFetch.cmake)
|
|
44
53
|
include(cmake/third_party/glm.cmake)
|
|
@@ -53,6 +62,10 @@ include(cmake/third_party/volk.cmake)
|
|
|
53
62
|
add_subdirectory(third_party)
|
|
54
63
|
|
|
55
64
|
add_library(ernie_build_options INTERFACE)
|
|
65
|
+
# All of Ernie's own code is built as the shared library's (ernie_EXPORTS), so ERNIE_API exports
|
|
66
|
+
# there and is harmless in the static library. glm's configuration stays inside Ernie: it changes
|
|
67
|
+
# no layout, but consumers' own glm calls must not see it.
|
|
68
|
+
target_compile_definitions(ernie_build_options INTERFACE ernie_EXPORTS GLM_FORCE_DEPTH_ZERO_TO_ONE)
|
|
56
69
|
if(MSVC)
|
|
57
70
|
target_compile_options(ernie_build_options INTERFACE /W4 /permissive- /Zc:__cplusplus /utf-8)
|
|
58
71
|
# The CRT's "unsafe function" deprecations (getenv, fopen) would fail warnings-as-errors builds.
|
|
@@ -89,6 +102,9 @@ if(ERNIE_COVERAGE)
|
|
|
89
102
|
endif()
|
|
90
103
|
|
|
91
104
|
add_subdirectory(ernie)
|
|
105
|
+
if(ERNIE_INSTALL)
|
|
106
|
+
include(cmake/ErnieInstall.cmake)
|
|
107
|
+
endif()
|
|
92
108
|
|
|
93
109
|
if(ERNIE_BUILD_TESTS)
|
|
94
110
|
enable_testing()
|
|
@@ -8,7 +8,8 @@ WORKDIR /src
|
|
|
8
8
|
COPY . .
|
|
9
9
|
RUN cmake -S . -B /build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/ernie \
|
|
10
10
|
&& cmake --build /build \
|
|
11
|
-
&& cmake --install /build --component app
|
|
11
|
+
&& cmake --install /build --component app \
|
|
12
|
+
&& cmake --install /build --component runtime
|
|
12
13
|
|
|
13
14
|
FROM ubuntu:24.04
|
|
14
15
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
@@ -16,6 +17,8 @@ RUN apt-get update \
|
|
|
16
17
|
&& apt-get install -y --no-install-recommends libvulkan1 mesa-vulkan-drivers \
|
|
17
18
|
&& rm -rf /var/lib/apt/lists/*
|
|
18
19
|
COPY --from=build /opt/ernie/bin/ernie /usr/local/bin/ernie
|
|
20
|
+
# Data and the licences of everything the program carries.
|
|
21
|
+
COPY --from=build /opt/ernie/share /usr/local/share
|
|
19
22
|
ENV NVIDIA_DRIVER_CAPABILITIES=graphics,compute,utility
|
|
20
23
|
WORKDIR /work
|
|
21
24
|
ENTRYPOINT ["ernie"]
|
|
@@ -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.dev16
|
|
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
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
# find_package(Ernie): the shared library and its public headers, as Ernie::ernie.
|
|
3
|
+
@PACKAGE_INIT@
|
|
4
|
+
|
|
5
|
+
include("${CMAKE_CURRENT_LIST_DIR}/ErnieTargets.cmake")
|
|
6
|
+
|
|
7
|
+
# Public headers use glm: the consumer's own when it has one, else the copy installed with Ernie.
|
|
8
|
+
# Either way one glm reaches each translation unit; ernie/util/glm.h checks its layout.
|
|
9
|
+
find_package(glm CONFIG QUIET)
|
|
10
|
+
if(TARGET glm::glm)
|
|
11
|
+
target_link_libraries(Ernie::ernie INTERFACE glm::glm)
|
|
12
|
+
else()
|
|
13
|
+
set_property(
|
|
14
|
+
TARGET Ernie::ernie
|
|
15
|
+
APPEND
|
|
16
|
+
PROPERTY INTERFACE_INCLUDE_DIRECTORIES "@PACKAGE_ERNIE_THIRD_PARTY_INCLUDEDIR@/glm"
|
|
17
|
+
)
|
|
18
|
+
endif()
|
|
19
|
+
# DLPack, a single versioned C header, always comes from Ernie.
|
|
20
|
+
set_property(
|
|
21
|
+
TARGET Ernie::ernie
|
|
22
|
+
APPEND
|
|
23
|
+
PROPERTY INTERFACE_INCLUDE_DIRECTORIES "@PACKAGE_ERNIE_THIRD_PARTY_INCLUDEDIR@/dlpack"
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
check_required_components(Ernie)
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
include(CMakePackageConfigHelpers)
|
|
3
|
+
|
|
4
|
+
set(ERNIE_THIRD_PARTY_INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}/ernie/third_party")
|
|
5
|
+
set(ernie_cmake_dir "${CMAKE_INSTALL_LIBDIR}/cmake/Ernie")
|
|
6
|
+
set(ernie_doc_dir "${CMAKE_INSTALL_DOCDIR}")
|
|
7
|
+
|
|
8
|
+
install(
|
|
9
|
+
TARGETS ernie
|
|
10
|
+
EXPORT ErnieTargets
|
|
11
|
+
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime
|
|
12
|
+
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT runtime NAMELINK_COMPONENT dev
|
|
13
|
+
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT dev
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
set(ernie_public_headers
|
|
17
|
+
util/glm.h
|
|
18
|
+
util/log.h
|
|
19
|
+
util/file.h
|
|
20
|
+
util/profiler.h
|
|
21
|
+
util/tensor.h
|
|
22
|
+
util/version.h
|
|
23
|
+
io/ies.h
|
|
24
|
+
io/image.h
|
|
25
|
+
io/raster.h
|
|
26
|
+
io/texture.h
|
|
27
|
+
)
|
|
28
|
+
foreach(header ${ernie_public_headers})
|
|
29
|
+
get_filename_component(directory "${header}" DIRECTORY)
|
|
30
|
+
install(
|
|
31
|
+
FILES "${PROJECT_SOURCE_DIR}/ernie/${header}"
|
|
32
|
+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/ernie/${directory}"
|
|
33
|
+
COMPONENT dev
|
|
34
|
+
)
|
|
35
|
+
endforeach()
|
|
36
|
+
install(
|
|
37
|
+
FILES "${PROJECT_BINARY_DIR}/include/ernie/export.h"
|
|
38
|
+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/ernie"
|
|
39
|
+
COMPONENT dev
|
|
40
|
+
)
|
|
41
|
+
install(
|
|
42
|
+
DIRECTORY "${glm_SOURCE_DIR}/glm"
|
|
43
|
+
DESTINATION "${ERNIE_THIRD_PARTY_INCLUDEDIR}/glm"
|
|
44
|
+
COMPONENT dev
|
|
45
|
+
FILES_MATCHING
|
|
46
|
+
PATTERN "*.hpp"
|
|
47
|
+
PATTERN "*.inl"
|
|
48
|
+
PATTERN "*.h"
|
|
49
|
+
)
|
|
50
|
+
install(
|
|
51
|
+
FILES "${dlpack_SOURCE_DIR}/include/dlpack/dlpack.h"
|
|
52
|
+
DESTINATION "${ERNIE_THIRD_PARTY_INCLUDEDIR}/dlpack/dlpack"
|
|
53
|
+
COMPONENT dev
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
install(EXPORT ErnieTargets NAMESPACE Ernie:: DESTINATION "${ernie_cmake_dir}" COMPONENT dev)
|
|
57
|
+
configure_package_config_file(
|
|
58
|
+
"${PROJECT_SOURCE_DIR}/cmake/ErnieConfig.cmake.in"
|
|
59
|
+
"${PROJECT_BINARY_DIR}/ErnieConfig.cmake"
|
|
60
|
+
INSTALL_DESTINATION "${ernie_cmake_dir}"
|
|
61
|
+
PATH_VARS ERNIE_THIRD_PARTY_INCLUDEDIR
|
|
62
|
+
)
|
|
63
|
+
# 0.x releases keep compatibility within a minor series.
|
|
64
|
+
write_basic_package_version_file(
|
|
65
|
+
"${PROJECT_BINARY_DIR}/ErnieConfigVersion.cmake"
|
|
66
|
+
COMPATIBILITY SameMinorVersion
|
|
67
|
+
)
|
|
68
|
+
install(
|
|
69
|
+
FILES "${PROJECT_BINARY_DIR}/ErnieConfig.cmake" "${PROJECT_BINARY_DIR}/ErnieConfigVersion.cmake"
|
|
70
|
+
DESTINATION "${ernie_cmake_dir}"
|
|
71
|
+
COMPONENT dev
|
|
72
|
+
)
|
|
73
|
+
# Relocatable: paths are relative to the .pc file, so an unpacked archive works anywhere.
|
|
74
|
+
file(RELATIVE_PATH ernie_pc_to_prefix "/prefix/${CMAKE_INSTALL_LIBDIR}/pkgconfig" "/prefix")
|
|
75
|
+
configure_file("${PROJECT_SOURCE_DIR}/cmake/ernie.pc.in" "${PROJECT_BINARY_DIR}/ernie.pc" @ONLY)
|
|
76
|
+
install(
|
|
77
|
+
FILES "${PROJECT_BINARY_DIR}/ernie.pc"
|
|
78
|
+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
|
|
79
|
+
COMPONENT dev
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
# Ernie's licence and those of what the library and its headers carry.
|
|
83
|
+
install(FILES "${PROJECT_SOURCE_DIR}/LICENSE" DESTINATION "${ernie_doc_dir}" COMPONENT runtime)
|
|
84
|
+
set(ernie_notices
|
|
85
|
+
"basisu|${PROJECT_SOURCE_DIR}/third_party/basisu/LICENSE"
|
|
86
|
+
"basisu|${PROJECT_SOURCE_DIR}/third_party/basisu/NOTICE"
|
|
87
|
+
"bc7enc_rdo|${bc7enc_SOURCE_DIR}/LICENSE"
|
|
88
|
+
"dlpack|${dlpack_SOURCE_DIR}/LICENSE"
|
|
89
|
+
"glm|${glm_SOURCE_DIR}/copying.txt"
|
|
90
|
+
"imath|${imath_SOURCE_DIR}/LICENSE.md"
|
|
91
|
+
"libdeflate|${openexr_SOURCE_DIR}/external/deflate/COPYING"
|
|
92
|
+
"nanovdb|${PROJECT_SOURCE_DIR}/third_party/nanovdb/LICENSE"
|
|
93
|
+
"nlohmann_json|${nlohmann_json_SOURCE_DIR}/LICENSE.MIT"
|
|
94
|
+
"openexr|${openexr_SOURCE_DIR}/LICENSE.md"
|
|
95
|
+
"openjph|${openexr_SOURCE_DIR}/external/OpenJPH/LICENSE"
|
|
96
|
+
"stb|${stb_SOURCE_DIR}/LICENSE"
|
|
97
|
+
"volk|${volk_SOURCE_DIR}/LICENSE.md"
|
|
98
|
+
"vulkan_headers|${vulkan_headers_SOURCE_DIR}/LICENSE.md"
|
|
99
|
+
"zstd|${openexr_SOURCE_DIR}/external/zstd/LICENSE"
|
|
100
|
+
)
|
|
101
|
+
# A Debian machine-readable copyright file: Ernie's licence, and where each bundled one is.
|
|
102
|
+
file(READ "${PROJECT_SOURCE_DIR}/LICENSE" ernie_license)
|
|
103
|
+
string(REGEX REPLACE "\n" "\n " ernie_license " ${ernie_license}")
|
|
104
|
+
set(ernie_copyright
|
|
105
|
+
"Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/\n"
|
|
106
|
+
"Upstream-Name: Ernie\nSource: ${PROJECT_HOMEPAGE_URL}\n\n"
|
|
107
|
+
"Files: *\nCopyright: Alex Maietta\nLicense: BSD-3-Clause\n${ernie_license}\n"
|
|
108
|
+
)
|
|
109
|
+
foreach(notice ${ernie_notices})
|
|
110
|
+
string(REPLACE "|" ";" parts "${notice}")
|
|
111
|
+
list(GET parts 0 name)
|
|
112
|
+
list(GET parts 1 file)
|
|
113
|
+
get_filename_component(file_name "${file}" NAME)
|
|
114
|
+
install(FILES "${file}" DESTINATION "${ernie_doc_dir}/third_party/${name}" COMPONENT runtime)
|
|
115
|
+
list(
|
|
116
|
+
APPEND ernie_copyright
|
|
117
|
+
"\nFiles: bundled/${name}/*\nCopyright: see the licence\n"
|
|
118
|
+
"License: see /usr/${ernie_doc_dir}/third_party/${name}/${file_name}\n"
|
|
119
|
+
)
|
|
120
|
+
endforeach()
|
|
121
|
+
list(JOIN ernie_copyright "" ernie_copyright)
|
|
122
|
+
file(WRITE "${PROJECT_BINARY_DIR}/copyright" "${ernie_copyright}")
|
|
123
|
+
install(FILES "${PROJECT_BINARY_DIR}/copyright" DESTINATION "${ernie_doc_dir}" COMPONENT runtime)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
# DEB and RPM packages per install component, and one TGZ of everything, through CPack:
|
|
3
|
+
# runtime libernie0 / ernie-libs libernie, share/ernie data, licences and notices
|
|
4
|
+
# app ernie / ernie the ernie program, depending on the runtime package
|
|
5
|
+
# dev libernie-dev / ernie-devel headers, the CMake package and pkg-config file
|
|
6
|
+
|
|
7
|
+
set(CPACK_PACKAGE_NAME ernie)
|
|
8
|
+
set(CPACK_PACKAGE_VERSION "${ERNIE_VERSION}")
|
|
9
|
+
set(CPACK_PACKAGE_VENDOR "Alex Maietta")
|
|
10
|
+
set(CPACK_PACKAGE_CONTACT "Alex Maietta <maiettaalex@gmail.com>")
|
|
11
|
+
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_DESCRIPTION}")
|
|
12
|
+
set(CPACK_PACKAGE_HOMEPAGE_URL "${PROJECT_HOMEPAGE_URL}")
|
|
13
|
+
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
|
|
14
|
+
set(CPACK_PACKAGE_DIRECTORY "${PROJECT_BINARY_DIR}/packages")
|
|
15
|
+
# Archives named for their architecture, so x86_64 and aarch64 tarballs can sit side by side.
|
|
16
|
+
set(CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
|
17
|
+
|
|
18
|
+
set(CPACK_COMPONENTS_ALL runtime app dev)
|
|
19
|
+
set(CPACK_COMPONENT_APP_DEPENDS runtime)
|
|
20
|
+
set(CPACK_COMPONENT_DEV_DEPENDS runtime)
|
|
21
|
+
set(CPACK_COMPONENTS_GROUPING IGNORE)
|
|
22
|
+
set(CPACK_ARCHIVE_COMPONENT_INSTALL OFF)
|
|
23
|
+
set(CPACK_DEB_COMPONENT_INSTALL ON)
|
|
24
|
+
set(CPACK_RPM_COMPONENT_INSTALL ON)
|
|
25
|
+
|
|
26
|
+
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
|
|
27
|
+
set(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS ON)
|
|
28
|
+
# Set here, as CPack otherwise asks dpkg, which the manylinux build image lacks.
|
|
29
|
+
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|AMD64)$")
|
|
30
|
+
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE amd64)
|
|
31
|
+
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)$")
|
|
32
|
+
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE arm64)
|
|
33
|
+
endif()
|
|
34
|
+
set(CPACK_DEBIAN_RUNTIME_PACKAGE_NAME libernie0)
|
|
35
|
+
set(CPACK_DEBIAN_APP_PACKAGE_NAME ernie)
|
|
36
|
+
set(CPACK_DEBIAN_DEV_PACKAGE_NAME libernie-dev)
|
|
37
|
+
# Built on manylinux_2_34 (glibc 2.34, GCC 11's libstdc++), so these are the floors. The library
|
|
38
|
+
# loads the Vulkan loader at run time, a dependency the linker cannot see.
|
|
39
|
+
set(CPACK_DEBIAN_RUNTIME_PACKAGE_DEPENDS "libc6 (>= 2.34), libstdc++6 (>= 11), libvulkan1")
|
|
40
|
+
set(CPACK_DEBIAN_RUNTIME_PACKAGE_RECOMMENDS "mesa-vulkan-drivers")
|
|
41
|
+
set(CPACK_DEBIAN_RUNTIME_PACKAGE_SECTION libs)
|
|
42
|
+
set(CPACK_DEBIAN_APP_PACKAGE_DEPENDS "libc6 (>= 2.34), libstdc++6 (>= 11), libvulkan1")
|
|
43
|
+
set(CPACK_DEBIAN_APP_PACKAGE_SECTION graphics)
|
|
44
|
+
set(CPACK_DEBIAN_DEV_PACKAGE_SECTION libdevel)
|
|
45
|
+
|
|
46
|
+
set(CPACK_RPM_FILE_NAME RPM-DEFAULT)
|
|
47
|
+
set(CPACK_RPM_PACKAGE_LICENSE "BSD-3-Clause")
|
|
48
|
+
set(CPACK_RPM_RUNTIME_PACKAGE_NAME ernie-libs)
|
|
49
|
+
set(CPACK_RPM_APP_PACKAGE_NAME ernie)
|
|
50
|
+
set(CPACK_RPM_DEV_PACKAGE_NAME ernie-devel)
|
|
51
|
+
set(CPACK_RPM_RUNTIME_PACKAGE_REQUIRES "vulkan-loader")
|
|
52
|
+
set(CPACK_RPM_APP_PACKAGE_REQUIRES "vulkan-loader")
|
|
53
|
+
set(CPACK_RPM_RUNTIME_PACKAGE_GROUP "System Environment/Libraries")
|
|
54
|
+
set(CPACK_RPM_APP_PACKAGE_GROUP "Applications/Graphics")
|
|
55
|
+
set(CPACK_RPM_DEV_PACKAGE_GROUP "Development/Libraries")
|
|
56
|
+
|
|
57
|
+
include(CPack)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
prefix=${pcfiledir}/@ernie_pc_to_prefix@
|
|
2
|
+
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
|
3
|
+
libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
|
|
4
|
+
|
|
5
|
+
Name: Ernie
|
|
6
|
+
Description: @PROJECT_DESCRIPTION@
|
|
7
|
+
Version: @ERNIE_VERSION@
|
|
8
|
+
URL: @PROJECT_HOMEPAGE_URL@
|
|
9
|
+
Cflags: -I${includedir} -I${includedir}/ernie/third_party/glm -I${includedir}/ernie/third_party/dlpack
|
|
10
|
+
Libs: -L${libdir} -lernie
|
|
@@ -8,6 +8,7 @@ set(GLM_BUILD_INSTALL OFF)
|
|
|
8
8
|
|
|
9
9
|
ernie_fetch(glm URL https://github.com/g-truc/glm/archive/refs/tags/${ERNIE_DEP_VERSION_glm}.tar.gz)
|
|
10
10
|
|
|
11
|
+
# Headers only; Ernie's own glm configuration is in ernie_build_options, so it never reaches
|
|
12
|
+
# consumers.
|
|
11
13
|
add_library(ernie_glm INTERFACE)
|
|
12
14
|
target_include_directories(ernie_glm SYSTEM INTERFACE "${glm_SOURCE_DIR}")
|
|
13
|
-
target_compile_definitions(ernie_glm INTERFACE GLM_FORCE_DEPTH_ZERO_TO_ONE)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
include(GenerateExportHeader)
|
|
3
|
+
|
|
4
|
+
# The installed library: every layer's objects in one shared library, exporting only the public
|
|
5
|
+
# API (ERNIE_API) and hiding its dependencies. Defined first, as `ernie/export.h` is generated from
|
|
6
|
+
# it.
|
|
7
|
+
add_library(ernie SHARED)
|
|
8
|
+
add_library(Ernie::ernie ALIAS ernie)
|
|
9
|
+
# MSVC warns that exported classes' standard library members need "dll-interface" (C4251, C4275);
|
|
10
|
+
# Ernie's C++ ABI already requires consumers to use the same compiler and runtime, so they match.
|
|
11
|
+
set(ernie_export_msvc "#ifdef _MSC_VER\n#pragma warning(disable : 4251 4275)\n#endif")
|
|
12
|
+
generate_export_header(
|
|
13
|
+
ernie
|
|
14
|
+
EXPORT_MACRO_NAME ERNIE_API
|
|
15
|
+
EXPORT_FILE_NAME "${PROJECT_BINARY_DIR}/include/ernie/export.h"
|
|
16
|
+
CUSTOM_CONTENT_FROM_VARIABLE ernie_export_msvc
|
|
17
|
+
)
|
|
18
|
+
set_target_properties(
|
|
19
|
+
ernie
|
|
20
|
+
PROPERTIES VERSION "${PROJECT_VERSION}" SOVERSION "${PROJECT_VERSION_MAJOR}"
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
# One object library per layer; a layer links only the layers below it.
|
|
24
|
+
add_subdirectory(util)
|
|
25
|
+
add_subdirectory(physics)
|
|
26
|
+
add_subdirectory(io)
|
|
27
|
+
add_subdirectory(scene)
|
|
28
|
+
add_subdirectory(device)
|
|
29
|
+
add_subdirectory(graph)
|
|
30
|
+
add_subdirectory(render)
|
|
31
|
+
|
|
32
|
+
set(ernie_layers
|
|
33
|
+
ernie_util
|
|
34
|
+
ernie_physics
|
|
35
|
+
ernie_io
|
|
36
|
+
ernie_scene
|
|
37
|
+
ernie_device
|
|
38
|
+
ernie_graph
|
|
39
|
+
ernie_render
|
|
40
|
+
)
|
|
41
|
+
target_link_libraries(ernie PRIVATE ${ernie_layers} ernie_build_options)
|
|
42
|
+
target_include_directories(
|
|
43
|
+
ernie
|
|
44
|
+
INTERFACE
|
|
45
|
+
"$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>"
|
|
46
|
+
"$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>"
|
|
47
|
+
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
|
|
48
|
+
)
|
|
49
|
+
# Public headers use glm and DLPack; installed, ErnieConfig.cmake supplies them instead.
|
|
50
|
+
target_link_libraries(ernie INTERFACE "$<BUILD_INTERFACE:ernie_glm;ernie_dlpack>")
|
|
51
|
+
target_compile_features(ernie INTERFACE cxx_std_20)
|
|
52
|
+
# Archives linked in keep their symbols to themselves.
|
|
53
|
+
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
54
|
+
target_link_options(ernie PRIVATE "LINKER:--exclude-libs,ALL")
|
|
55
|
+
endif()
|
|
56
|
+
|
|
57
|
+
# The same objects as one static library, for in-tree programs and tests, which may also reach
|
|
58
|
+
# internal APIs, and for the Python module, which carries everything itself.
|
|
59
|
+
add_library(ernie_static STATIC)
|
|
60
|
+
target_link_libraries(ernie_static PUBLIC ${ernie_layers})
|
|
61
|
+
# Its objects export the API (ERNIE_API), so on Windows every program linking it would also write
|
|
62
|
+
# an import library; the ernie program's would collide with libernie's own ernie.lib and ernie.exp.
|
|
63
|
+
target_link_options(ernie_static INTERFACE "$<$<CXX_COMPILER_ID:MSVC>:/NOIMPLIB;/NOEXP>")
|
|
64
|
+
|
|
65
|
+
if(ERNIE_BUILD_APP)
|
|
66
|
+
add_subdirectory(app)
|
|
67
|
+
endif()
|
|
68
|
+
if(ERNIE_BUILD_PYTHON)
|
|
69
|
+
add_subdirectory(python)
|
|
70
|
+
endif()
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
add_executable(ernie_app main.cpp)
|
|
3
|
+
set_target_properties(ernie_app PROPERTIES OUTPUT_NAME ernie)
|
|
4
|
+
target_link_libraries(ernie_app PRIVATE ernie_static ernie_build_options)
|
|
5
|
+
install(TARGETS ernie_app RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT app)
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
/// @brief IES LM-63 photometric profiles of luminaires.
|
|
4
4
|
#pragma once
|
|
5
5
|
|
|
6
|
-
#include
|
|
6
|
+
#include "ernie/export.h"
|
|
7
|
+
|
|
8
|
+
#include "ernie/util/glm.h"
|
|
7
9
|
|
|
8
10
|
#include <filesystem>
|
|
9
11
|
#include <string_view>
|
|
@@ -33,7 +35,7 @@ enum class IesType {
|
|
|
33
35
|
/// @brief How a lamp's output changes as its luminaire tilts.
|
|
34
36
|
/// From TILT=INCLUDE or a tilt file; for lamps sensitive to burning
|
|
35
37
|
/// position, such as metal halide.
|
|
36
|
-
struct IesTilt {
|
|
38
|
+
struct ERNIE_API IesTilt {
|
|
37
39
|
/// Lamp position: 1 vertical, 2 horizontal along x (0 degree
|
|
38
40
|
/// plane), 3 horizontal along y (90 degree plane); 0 for none.
|
|
39
41
|
int geometry = 0;
|
|
@@ -72,7 +74,7 @@ struct IesTilt {
|
|
|
72
74
|
/// - G. Ward, Radiance ies2rad, source.cal and tilt.cal (type B
|
|
73
75
|
/// coordinates and tilt angles),
|
|
74
76
|
/// https://github.com/NREL/Radiance/tree/master/src/cv
|
|
75
|
-
struct IesProfile {
|
|
77
|
+
struct ERNIE_API IesProfile {
|
|
76
78
|
/// The photometric type.
|
|
77
79
|
IesType type = IesType::C;
|
|
78
80
|
/// Vertical angles, in degrees, increasing.
|
|
@@ -108,12 +110,12 @@ struct IesProfile {
|
|
|
108
110
|
/// @throws std::invalid_argument If the text is not LM-63, has an
|
|
109
111
|
/// unknown type, or has angles out of order.
|
|
110
112
|
/// @throws std::runtime_error If a tilt file cannot be read.
|
|
111
|
-
IesProfile ParseIes(std::string_view text, const std::filesystem::path& directory = {});
|
|
113
|
+
ERNIE_API IesProfile ParseIes(std::string_view text, const std::filesystem::path& directory = {});
|
|
112
114
|
|
|
113
115
|
/// @brief Reads and parses an IES file; tilt files resolve beside it.
|
|
114
116
|
/// @param path The file.
|
|
115
117
|
/// @return The profile.
|
|
116
118
|
/// @throws std::runtime_error If it cannot be read.
|
|
117
|
-
IesProfile ReadIes(const std::filesystem::path& path);
|
|
119
|
+
ERNIE_API IesProfile ReadIes(const std::filesystem::path& path);
|
|
118
120
|
|
|
119
121
|
} // namespace ernie
|
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
/// @brief Float RGBA images: loading, EXR output, sRGB and mips.
|
|
4
4
|
#pragma once
|
|
5
5
|
|
|
6
|
+
#include "ernie/export.h"
|
|
7
|
+
|
|
6
8
|
#include "ernie/util/tensor.h"
|
|
7
9
|
|
|
8
|
-
#include
|
|
10
|
+
#include "ernie/util/glm.h"
|
|
9
11
|
|
|
10
12
|
#include <cstdint>
|
|
11
13
|
#include <filesystem>
|
|
@@ -41,14 +43,14 @@ inline constexpr float kMinNormalZ = 0.05f;
|
|
|
41
43
|
/// @brief Packs a slope deviation into [0, 1) for 8-bit storage.
|
|
42
44
|
/// @param sigma The deviation, 0 or more.
|
|
43
45
|
/// @return sigma / (1 + sigma), finest near 0.
|
|
44
|
-
float EncodeSlopeDeviation(float sigma);
|
|
46
|
+
ERNIE_API float EncodeSlopeDeviation(float sigma);
|
|
45
47
|
/// @brief Inverts `EncodeSlopeDeviation`.
|
|
46
48
|
/// @param encoded The stored value.
|
|
47
49
|
/// @return The slope deviation.
|
|
48
|
-
float DecodeSlopeDeviation(float encoded);
|
|
50
|
+
ERNIE_API float DecodeSlopeDeviation(float encoded);
|
|
49
51
|
|
|
50
52
|
/// @brief An RGBA image of linear floats, rows top to bottom.
|
|
51
|
-
struct Image {
|
|
53
|
+
struct ERNIE_API Image {
|
|
52
54
|
/// Width, in pixels.
|
|
53
55
|
std::uint32_t width = 0;
|
|
54
56
|
/// Height, in pixels.
|
|
@@ -86,12 +88,12 @@ struct Image {
|
|
|
86
88
|
/// @return The image.
|
|
87
89
|
/// @throws std::runtime_error If the file cannot be read or decoded,
|
|
88
90
|
/// or is not .png, .jpg, .jpeg or .exr.
|
|
89
|
-
Image LoadImageFile(const std::filesystem::path& path, ImageEncoding encoding);
|
|
91
|
+
ERNIE_API Image LoadImageFile(const std::filesystem::path& path, ImageEncoding encoding);
|
|
90
92
|
|
|
91
93
|
/// @brief Tests for a .png, .jpg or .jpeg extension, in any case.
|
|
92
94
|
/// @param path The file.
|
|
93
95
|
/// @return Whether it is a PNG or JPEG, read by stb.
|
|
94
|
-
bool IsPngOrJpeg(const std::filesystem::path& path);
|
|
96
|
+
ERNIE_API bool IsPngOrJpeg(const std::filesystem::path& path);
|
|
95
97
|
|
|
96
98
|
/// @brief Writes a CPU tensor as a ZIP-compressed OpenEXR file.
|
|
97
99
|
/// Channels are float32, or uint32 for uint32 data such as ids;
|
|
@@ -102,16 +104,16 @@ bool IsPngOrJpeg(const std::filesystem::path& path);
|
|
|
102
104
|
/// bottom.
|
|
103
105
|
/// @throws std::invalid_argument For another rank or type.
|
|
104
106
|
/// @throws std::runtime_error If the file cannot be written.
|
|
105
|
-
void WriteExr(const std::filesystem::path& path, const Tensor& image);
|
|
107
|
+
ERNIE_API void WriteExr(const std::filesystem::path& path, const Tensor& image);
|
|
106
108
|
|
|
107
109
|
/// @brief Decodes one sRGB channel to linear (IEC 61966-2-1).
|
|
108
110
|
/// @param value The encoded value in [0, 1].
|
|
109
111
|
/// @return The linear value.
|
|
110
|
-
float SrgbToLinear(float value);
|
|
112
|
+
ERNIE_API float SrgbToLinear(float value);
|
|
111
113
|
/// @brief Encodes one linear channel to sRGB (IEC 61966-2-1).
|
|
112
114
|
/// @param value The linear value in [0, 1].
|
|
113
115
|
/// @return The encoded value.
|
|
114
|
-
float LinearToSrgb(float value);
|
|
116
|
+
ERNIE_API float LinearToSrgb(float value);
|
|
115
117
|
|
|
116
118
|
/// @brief Builds the mip chain down to 1 x 1.
|
|
117
119
|
/// Level n is max(1, floor(size / 2^n)) per side, as WebGPU expects;
|
|
@@ -124,13 +126,13 @@ float LinearToSrgb(float value);
|
|
|
124
126
|
/// - M. Toksvig, "Mipmapping Normal Maps", Journal of Graphics Tools
|
|
125
127
|
/// 10(3), 2005.
|
|
126
128
|
/// - M. Olano and D. Baker, "LEAN Mapping", I3D 2010.
|
|
127
|
-
std::vector<Image> MipChain(const Image& image, MipFilter filter);
|
|
129
|
+
ERNIE_API std::vector<Image> MipChain(const Image& image, MipFilter filter);
|
|
128
130
|
|
|
129
131
|
/// @brief Quantises to 8-bit RGBA.
|
|
130
132
|
/// @param image The image.
|
|
131
133
|
/// @param encoding `Srgb` encodes rgb as sRGB; alpha stays linear.
|
|
132
134
|
/// @return Four bytes per pixel.
|
|
133
|
-
std::vector<std::uint8_t> ToRgba8(const Image& image, ImageEncoding encoding);
|
|
135
|
+
ERNIE_API std::vector<std::uint8_t> ToRgba8(const Image& image, ImageEncoding encoding);
|
|
134
136
|
|
|
135
137
|
/// @brief A texture tensor as an image.
|
|
136
138
|
/// @details Grey replicates into rgb and a missing alpha reads as 1.
|
|
@@ -139,6 +141,6 @@ std::vector<std::uint8_t> ToRgba8(const Image& image, ImageEncoding encoding);
|
|
|
139
141
|
/// @param encoding How uint8 colour is encoded: sRGB or linear.
|
|
140
142
|
/// @return The image.
|
|
141
143
|
/// @throws std::invalid_argument For another kind of tensor.
|
|
142
|
-
Image ImageFromTensor(const Tensor& tensor, ImageEncoding encoding);
|
|
144
|
+
ERNIE_API Image ImageFromTensor(const Tensor& tensor, ImageEncoding encoding);
|
|
143
145
|
|
|
144
146
|
} // namespace ernie
|