ernie-renderer 0.1.0.dev266__tar.gz → 0.1.0.dev309__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.1.0.dev266 → ernie_renderer-0.1.0.dev309}/.github/workflows/ci.yml +30 -7
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/CMakeLists.txt +7 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/CONTRIBUTING.md +1 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/PKG-INFO +16 -5
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/README.md +15 -4
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/ErniePackaging.cmake +6 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/curl.cmake +3 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/demos/CMakeLists.txt +15 -7
- ernie_renderer-0.1.0.dev266/demos/atmosphere/earth.cpp → ernie_renderer-0.1.0.dev309/demos/atmosphere/demo_atmosphere_earth.cpp +2 -4
- ernie_renderer-0.1.0.dev266/demos/atmosphere/earth.py → ernie_renderer-0.1.0.dev309/demos/atmosphere/demo_atmosphere_earth.py +2 -4
- ernie_renderer-0.1.0.dev309/demos/atmosphere/demo_atmosphere_eclipse.cpp +294 -0
- ernie_renderer-0.1.0.dev309/demos/atmosphere/demo_atmosphere_eclipse.py +273 -0
- ernie_renderer-0.1.0.dev309/demos/atmosphere/demo_atmosphere_lunar_eclipse.cpp +199 -0
- ernie_renderer-0.1.0.dev309/demos/atmosphere/demo_atmosphere_lunar_eclipse.py +182 -0
- ernie_renderer-0.1.0.dev266/demos/atmosphere/mars.cpp → ernie_renderer-0.1.0.dev309/demos/atmosphere/demo_atmosphere_mars.cpp +2 -4
- ernie_renderer-0.1.0.dev266/demos/atmosphere/mars.py → ernie_renderer-0.1.0.dev309/demos/atmosphere/demo_atmosphere_mars.py +2 -4
- ernie_renderer-0.1.0.dev309/demos/atmosphere/demo_atmosphere_refraction.cpp +266 -0
- ernie_renderer-0.1.0.dev309/demos/atmosphere/demo_atmosphere_refraction.py +260 -0
- ernie_renderer-0.1.0.dev266/demos/batched/batch_camera.cpp → ernie_renderer-0.1.0.dev309/demos/batched/demo_batched_cameras.cpp +4 -5
- ernie_renderer-0.1.0.dev266/demos/batched/batch_camera.py → ernie_renderer-0.1.0.dev309/demos/batched/demo_batched_cameras.py +3 -4
- ernie_renderer-0.1.0.dev266/demos/cameras/floating_origin.cpp → ernie_renderer-0.1.0.dev309/demos/cameras/demo_cameras_floating_origin.cpp +101 -26
- ernie_renderer-0.1.0.dev266/demos/cameras/floating_origin.py → ernie_renderer-0.1.0.dev309/demos/cameras/demo_cameras_floating_origin.py +73 -25
- ernie_renderer-0.1.0.dev266/demos/cameras/lroc.cpp → ernie_renderer-0.1.0.dev309/demos/cameras/demo_cameras_lroc.cpp +34 -20
- ernie_renderer-0.1.0.dev266/demos/cameras/lroc.py → ernie_renderer-0.1.0.dev309/demos/cameras/demo_cameras_lroc.py +32 -22
- ernie_renderer-0.1.0.dev309/demos/cameras/demo_cameras_lroc_nac.cpp +587 -0
- ernie_renderer-0.1.0.dev309/demos/cameras/demo_cameras_lroc_nac.py +583 -0
- ernie_renderer-0.1.0.dev309/demos/cameras/demo_cameras_mars2020.cpp +905 -0
- ernie_renderer-0.1.0.dev309/demos/cameras/demo_cameras_mars2020.py +873 -0
- ernie_renderer-0.1.0.dev309/demos/cameras/demo_cameras_nir_swir.cpp +262 -0
- ernie_renderer-0.1.0.dev309/demos/cameras/demo_cameras_nir_swir.py +245 -0
- ernie_renderer-0.1.0.dev309/demos/interop/demo_interop_laser_pattern.py +196 -0
- ernie_renderer-0.1.0.dev309/demos/lasers/demo_lasers_patterns.cpp +293 -0
- ernie_renderer-0.1.0.dev309/demos/lasers/demo_lasers_patterns.py +250 -0
- ernie_renderer-0.1.0.dev309/demos/lasers/demo_lasers_pulsed.cpp +227 -0
- ernie_renderer-0.1.0.dev309/demos/lasers/demo_lasers_pulsed.py +212 -0
- ernie_renderer-0.1.0.dev309/demos/lasers/demo_lasers_structured_light.cpp +234 -0
- ernie_renderer-0.1.0.dev309/demos/lasers/demo_lasers_structured_light.py +206 -0
- ernie_renderer-0.1.0.dev309/demos/lasers/demo_lasers_wavelengths.cpp +287 -0
- ernie_renderer-0.1.0.dev309/demos/lasers/demo_lasers_wavelengths.py +251 -0
- ernie_renderer-0.1.0.dev266/demos/lighting/illuminants.cpp → ernie_renderer-0.1.0.dev309/demos/lighting/demo_lighting_illuminants.cpp +2 -3
- ernie_renderer-0.1.0.dev266/demos/lighting/illuminants.py → ernie_renderer-0.1.0.dev309/demos/lighting/demo_lighting_illuminants.py +2 -3
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/api/python/cameras.md +4 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/getting-started/demos.md +10 -10
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/cli.cpp +2 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/cli.h +1 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/create.cpp +1 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/demo.cpp +19 -7
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/demo.h +7 -5
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/prim_icons.cpp +1 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/prim_schemas.cpp +41 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/session.cpp +28 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/session.h +11 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/stage_panel.cpp +1 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/viewer.cpp +71 -9
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/viewer.h +11 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/buffer.cpp +26 -9
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/buffer.h +3 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/pipeline.cpp +1 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/pipeline.h +3 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/vulkan_context.cpp +31 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/vulkan_context.h +17 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/atmosphere.slang +219 -14
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/atmosphere_luts.slang +123 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/cull.slang +11 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/shading.slang +401 -71
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/CMakeLists.txt +1 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/app.cpp +32 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/bindings.h +12 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/ernie/__init__.py +6 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/ernie/__main__.py +1 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/ernie/demo.py +16 -78
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/ernie/demos/__init__.py +21 -11
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/render.cpp +48 -34
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/scene.cpp +119 -38
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/stub_schema.py +2 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/atmosphere_luts.cpp +66 -16
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/atmosphere_luts.h +24 -5
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/delegate.cpp +57 -3
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/delegate.h +8 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/mesh_drawable.cpp +46 -24
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/mesh_drawable.h +8 -3
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/renderer.cpp +393 -53
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/renderer.h +78 -3
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/shadow_cascades.h +3 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/dem.cpp +208 -32
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/dem.h +65 -11
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/light_pattern.cpp +54 -10
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/light_pattern.h +15 -4
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/light_schemas.h +28 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/material_schemas.h +11 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/terrain_schemas.cpp +8 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/terrain_schemas.h +32 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/tokens.h +50 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/session/delegate.h +5 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/session/frame_params.cpp +77 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/session/frame_params.h +56 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/session/resolve.cpp +173 -9
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/session/resolve.h +31 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/CMakeLists.txt +60 -10
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/app_prim_schemas_test.cpp +28 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/app_session_test.cpp +44 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/app_viewer_gpu_test.cpp +20 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/device_cuda_interop_test.cpp +32 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/fixtures/isd/README.md +4 -0
- ernie_renderer-0.1.0.dev309/ernie/test/fixtures/isd/lroNacM1282557272RE.json +1265 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_cameras.py +90 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_demos.py +73 -85
- ernie_renderer-0.1.0.dev309/ernie/test/python/test_laser_pattern_array.py +124 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_schema_terrain.py +13 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_atmosphere_gpu_test.cpp +420 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_culling_gpu_test.cpp +4 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_lights_gpu_test.cpp +184 -0
- ernie_renderer-0.1.0.dev309/ernie/test/scene_dem_test.cpp +234 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_terrain_schemas_test.cpp +8 -1
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/session_frame_params_test.cpp +59 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/session_lights_test.cpp +14 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/session_resolve_test.cpp +46 -0
- ernie_renderer-0.1.0.dev309/ernie/test/util_reflectance_library_test.cpp +52 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/CMakeLists.txt +1 -0
- ernie_renderer-0.1.0.dev309/ernie/util/reflectance_library.cpp +51 -0
- ernie_renderer-0.1.0.dev309/ernie/util/reflectance_library.h +49 -0
- ernie_renderer-0.1.0.dev309/ernie/util/reflectance_table.h +5596 -0
- ernie_renderer-0.1.0.dev309/tools/reflectance_library.py +249 -0
- ernie_renderer-0.1.0.dev266/ernie/test/scene_dem_test.cpp +0 -128
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/.clang-format +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/.clang-tidy +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/.cmake-format.yaml +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/.gitattributes +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/.github/dependabot.yml +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/.github/pull_request_template.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/.github/scripts/ci_metrics.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/.github/scripts/debug-windows.sh +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/.github/scripts/install-lavapipe-windows.sh +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/.github/workflows/ci-metrics.yml +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/.gitignore +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/.pre-commit-config.yaml +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/CITATION.cff +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/CMakePresets.json +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/LICENSE +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/EmbedShaders.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/ErnieCPackOptions.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/ErnieConfig.cmake.in +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/ErnieInstall.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/ErnieLicenses.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/ErnieTesting.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/cppcheck/ernie.cfg +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/ernie_exports.map +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/dear_imgui/CMakeLists.txt +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/dear_imgui.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/dlpack.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/embed_file.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/glfw.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/glm.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/googletest.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/gui_fonts.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/imguizmo.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/implot.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/json.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/meshoptimizer.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/moltenvk.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/nanobind.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/openexr.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/slang.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/stb.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/tracy.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/vma/vma.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/vma.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/volk.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/cmake/third_party/vulkan_headers.cmake +0 -0
- /ernie_renderer-0.1.0.dev266/demos/interop/zero_copy_image.py → /ernie_renderer-0.1.0.dev309/demos/interop/demo_interop_zero_copy_image.py +0 -0
- /ernie_renderer-0.1.0.dev266/demos/lighting/cornell_box.cpp → /ernie_renderer-0.1.0.dev309/demos/lighting/demo_lighting_cornell_box.cpp +0 -0
- /ernie_renderer-0.1.0.dev266/demos/lighting/cornell_box.py → /ernie_renderer-0.1.0.dev309/demos/lighting/demo_lighting_cornell_box.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/demos/main.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/demos/util.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/demos/util.h +0 -0
- /ernie_renderer-0.1.0.dev266/demos/viewer/custom_panel.cpp → /ernie_renderer-0.1.0.dev309/demos/viewer/demo_viewer_custom_panel.cpp +0 -0
- /ernie_renderer-0.1.0.dev266/demos/viewer/custom_panel.py → /ernie_renderer-0.1.0.dev309/demos/viewer/demo_viewer_custom_panel.py +0 -0
- /ernie_renderer-0.1.0.dev266/demos/viewer/log_array.cpp → /ernie_renderer-0.1.0.dev309/demos/viewer/demo_viewer_log_array.cpp +0 -0
- /ernie_renderer-0.1.0.dev266/demos/viewer/log_array.py → /ernie_renderer-0.1.0.dev309/demos/viewer/demo_viewer_log_array.py +0 -0
- /ernie_renderer-0.1.0.dev266/demos/viewer/log_image.cpp → /ernie_renderer-0.1.0.dev309/demos/viewer/demo_viewer_log_image.cpp +0 -0
- /ernie_renderer-0.1.0.dev266/demos/viewer/log_image.py → /ernie_renderer-0.1.0.dev309/demos/viewer/demo_viewer_log_image.py +0 -0
- /ernie_renderer-0.1.0.dev266/demos/viewer/log_scalar.cpp → /ernie_renderer-0.1.0.dev309/demos/viewer/demo_viewer_log_scalar.cpp +0 -0
- /ernie_renderer-0.1.0.dev266/demos/viewer/log_scalar.py → /ernie_renderer-0.1.0.dev309/demos/viewer/demo_viewer_log_scalar.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/Makefile +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/README.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/api/cpp.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/api/python/app.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/api/python/astronomy.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/api/python/batch.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/api/python/demo.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/api/python/rendering.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/api/python/scene.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/api/python/schemas.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/api/python/tokens.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/concepts/cameras.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/concepts/lighting.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/concepts/materials.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/concepts/scene.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/concepts/sensor-filters.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/concepts/shadows.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/concepts/spectral.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/concepts/star-fields.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/concepts/terrain.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/concepts/transforms.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/css/extra.css +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/extending/custom-aovs.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/extending/custom-brdfs.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/extending/custom-lenses.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/extending/custom-panels.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/extending/custom-render-delegates.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/extending/custom-sensor-filters.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/extending/custom-spectra.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/extending/custom-star-catalogs.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/extending/debug-draw.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/extending/frame-callbacks.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/extending/index.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/getting-started/installation.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/getting-started/quickstart.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/getting-started/viewer.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/guides/batched-rendering.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/guides/gpu-interop.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/guides/scenes.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/index.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/js/sidebar.js +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/docs/requirements.txt +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/CMakeLists.txt +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/CMakeLists.txt +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/app.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/builtin_panels.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/camera_panel.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/create.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/file_dialog.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/file_dialog.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/icons.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/log_panel.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/logs.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/logs.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/main.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/panel.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/panel.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/prim_icons.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/prim_schemas.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/profiler_panel.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/properties_panel.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/property_fields.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/property_fields.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/settings_panel.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/theme.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/app/theme.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/CMakeLists.txt +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/compute_interop.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/compute_interop.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/cuda_interop.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/cuda_interop.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/frame_uploads.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/frame_uploads.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/gpu_profile.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/gpu_timer.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/gpu_timer.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/image.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/image.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/offscreen_target.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/offscreen_target.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/shader_compiler.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/shader_compiler.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/swapchain.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/device/swapchain.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/geometry/CMakeLists.txt +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/geometry/cube_sphere_lod.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/geometry/cube_sphere_lod.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/geometry/frustum.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/geometry/frustum.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/geometry/lod_quadtree.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/geometry/lod_quadtree.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/geometry/mesh_data.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/geometry/mesh_data.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/geometry/primitives.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/geometry/primitives.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/CMakeLists.txt +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/closure/brdf.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/closure/hapke.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/closure/lambert.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/closure/lommel_seeliger.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/closure/lunar_lambert.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/closure/oren_nayar.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/closure/preview_surface.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/embedded_shaders.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/cube_faces.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_bayer.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_blooming.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_color_matrix.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_compand.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_compand_lookup.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_compand_table.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_dark_current.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_defect_pixels.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_defocus.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_demosaic.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_detector_pattern.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_flare.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_glare.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_jpeg.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_lag.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_measured_qe.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_psf.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_readout_taps.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_smear.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_spectral_transmission.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_stray_light.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_tdi.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_temporal_average.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_tone_curve.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/filter_white_balance.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/lens.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/pyramid.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/film/sensor.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/depth_range.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/frame.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/ground.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/hzb.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/instance_anchors.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/instance_compose.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/light_views.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/mesh.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/mesh_normals.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/meter.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/minimal_resolve.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/motion.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/motion_vectors.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/overlay.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/planet.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/planet_color.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/planet_shadow.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/points.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/present.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/projection_pinhole.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/projection_pushbroom.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/surface.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/terrain.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/terrain_color.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/terrain_horizon.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/terrain_shadow.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/terrain_update.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/kernel/raster/views.slang +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/demo.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/ernie/app.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/ernie/batch.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/ernie/demos/__main__.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/ernie/schema.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/module.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/scene_json.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/schema.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/stub_patterns.txt +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/python/tensor.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/CMakeLists.txt +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/drawable.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/ground_drawable.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/ground_drawable.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/material.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/material.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/minimal_targets.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/minimal_targets.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/overlay_pass.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/overlay_pass.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/planet_drawable.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/planet_drawable.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/points_drawable.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/points_drawable.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/poisson_disk.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/poisson_disk.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/render_targets.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/render_targets.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/sensor_plan.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/sensor_plan.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/shadow_cascades.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/terrain_drawable.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/raster/terrain_drawable.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/CMakeLists.txt +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/base_schemas.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/base_schemas.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/brdf.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/brdf.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/cahvore.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/cahvore.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/camera.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/camera.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/camera_schemas.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/camera_schemas.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/edit_history.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/edit_history.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/geometry_schemas.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/geometry_schemas.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/isd.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/isd.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/light_schemas.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/material.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/material_schemas.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/orbit_controller.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/orbit_controller.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/overlay.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/overlay.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/path.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/path.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/prim_type.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/prim_type.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/render_schemas.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/render_schemas.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/scene.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/scene.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/scene_json.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/scene_json.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/schema.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/schema.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/sensor_filters.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/sensor_filters.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/stage_schemas.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/stage_schemas.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/value.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/wide_view.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/wide_view.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/xform.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/scene/xform.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/session/CMakeLists.txt +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/session/backends.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/session/delegate.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/session/outputs.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/session/outputs.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/session/product_frame.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/session/renderer.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/session/renderer.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/session/sampling.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/app_demo_gpu_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/app_demo_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/app_file_dialog_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/app_panel_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/app_theme_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/device_frame_uploads_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/device_pipeline_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/device_shader_compiler_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/device_vulkan_context_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/fixtures/cahvore/README.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/fixtures/cahvore/m2020_camera_models.json +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/fixtures/images/grey16.png +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/fixtures/isd/constVelocityLineScan.json +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/fixtures/isd/ctxLineScan.json +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/fixtures/isd/dawnfc_radtan.json +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/fixtures/isd/jitterFramer.json +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/fixtures/isd/lroWacPushFrame.json +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/fixtures/isd/orbitalFramer.json +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/fixtures/isd/orbitalLineScan.json +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/fixtures/isd/orbitalPushFrame.json +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/fixtures/isd/simpleFramerISD.json +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/fixtures/isd/toughLroNacLineScan.json +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/fixtures/scene_basic.json +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/geometry_cube_sphere_lod_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/geometry_frustum_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/geometry_lod_quadtree_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/geometry_mesh_data_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/geometry_primitives_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/install/CMakeLists.txt +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/install/consumer.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/install/run_install_test.cmake +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/conftest.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_app.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_batch.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_cahvore.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_cuda.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_filters.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_isd.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_map.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_materials.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_minimal.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_overlays.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_readme.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_render.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_scene.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_schema.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_schema_camera.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_schema_geometry.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_schema_material.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_schema_render.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_stars.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_step.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_xform.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_xform_gpu.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_xform_gpu_cameras.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_xform_gpu_compose.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_xform_gpu_lights.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_xform_gpu_map.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/python/test_xform_gpu_points.py +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_batch_gpu_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_delegate_gpu_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_delegate_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_gpu_meshes_gpu_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_gpu_terrain_gpu_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_hex_tiling_gpu_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_lens_rays_gpu_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_mesh_drawable_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_motion_gpu_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_overlays_gpu_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_planet_gpu_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_points_gpu_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_poisson_disk_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_products_gpu_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_sensor_filters_gpu_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_sensor_plan_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_shadow_cascades_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_standard_filters_gpu_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_terrain_drawable_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_textures_gpu_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/raster_zero_copy_gpu_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_brdf_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_brdf_vulkan_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_cahvore_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_camera_schemas_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_camera_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_edit_history_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_geometry_schemas_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_isd_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_json_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_light_pattern_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_material_schemas_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_orbit_controller_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_overlay_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_path_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_prim_type_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_render_schemas_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_scene_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_schema_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_sensor_filters_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_stage_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_wide_view_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/scene_xform_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/session_delegate_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/session_gpu_xform_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/session_sampling_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/support/brdf_reference.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/support/delegate_scenes.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/support/delegate_scenes.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/support/terrain_harness.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/support/test_raster.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/support/vulkan_fixture.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/util_astronomy_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/util_atmosphere_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/util_ies_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/util_image_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/util_scattering_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/util_solar_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/util_spectrum_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/test/util_tensor_test.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/astronomy.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/astronomy.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/atmosphere.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/atmosphere.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/ies.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/ies.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/image.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/image.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/least_squares.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/profile.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/profiler.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/profiler.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/raster_checks.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/raster_view.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/scattering.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/scattering.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/shader_source.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/solar.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/solar.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/solar_table.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/spectrum.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/spectrum.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/tensor.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/ernie/util/tensor.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/mkdocs.yml +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/pyproject.toml +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/third_party/README.md +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/third_party/cameramodelutilsjs/LICENSE +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/third_party/dlpack/LICENSE +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/third_party/dlpack/include/dlpack/dlpack.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/third_party/stb/LICENSE +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/third_party/stb/stb.cpp +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/third_party/stb/stb_easy_font.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/third_party/stb/stb_image.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/third_party/stb/stb_image_write.h +0 -0
- {ernie_renderer-0.1.0.dev266 → ernie_renderer-0.1.0.dev309}/tools/solar_spectrum.py +0 -0
|
@@ -155,6 +155,13 @@ jobs:
|
|
|
155
155
|
include-hidden-files: true
|
|
156
156
|
if-no-files-found: ignore
|
|
157
157
|
retention-days: 30
|
|
158
|
+
# The data the demos fetch (LOLA's terrain and the like) into their
|
|
159
|
+
# cache, kept between runs rather than downloaded by each.
|
|
160
|
+
- uses: actions/cache@v6
|
|
161
|
+
with:
|
|
162
|
+
path: ~/.cache/ernie
|
|
163
|
+
key: demo-data-${{ hashFiles('demos/**') }}
|
|
164
|
+
restore-keys: demo-data-
|
|
158
165
|
- name: Test on lavapipe
|
|
159
166
|
run: |
|
|
160
167
|
VK_DRIVER_FILES=$(find /usr/share/vulkan/icd.d -name 'lvp_icd*.json' | head -n1)
|
|
@@ -483,7 +490,7 @@ jobs:
|
|
|
483
490
|
run: |
|
|
484
491
|
dnf install -y -q --enablerepo=crb libX11-devel libXrandr-devel libXinerama-devel \
|
|
485
492
|
libXcursor-devel libXi-devel libXext-devel wayland-devel wayland-protocols-devel \
|
|
486
|
-
libxkbcommon-devel rpm-build
|
|
493
|
+
libxkbcommon-devel libcurl-devel rpm-build
|
|
487
494
|
dnf install -y -q epel-release
|
|
488
495
|
dnf install -y -q ccache
|
|
489
496
|
command -v ninja >/dev/null || pipx install -q ninja
|
|
@@ -507,6 +514,9 @@ jobs:
|
|
|
507
514
|
cpack --preset package-$kind
|
|
508
515
|
done
|
|
509
516
|
ccache --show-stats
|
|
517
|
+
# rpmbuild finds the libraries the binaries link, libcurl
|
|
518
|
+
# among them.
|
|
519
|
+
rpm -qpR build/package-rpm/packages/*.rpm | grep -F libcurl.so
|
|
510
520
|
mkdir packages
|
|
511
521
|
cp build/package-deb/packages/*.deb build/package-deb/packages/*.tar.gz \
|
|
512
522
|
build/package-rpm/packages/*.rpm packages/
|
|
@@ -531,29 +541,42 @@ jobs:
|
|
|
531
541
|
include:
|
|
532
542
|
- image: ubuntu:22.04
|
|
533
543
|
install: apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y -qq
|
|
534
|
-
packages: ./packages/*.deb
|
|
544
|
+
packages: ./packages/*.deb
|
|
545
|
+
tools: mesa-vulkan-drivers cmake g++ make
|
|
535
546
|
- image: ubuntu:24.04
|
|
536
547
|
install: apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y -qq
|
|
537
|
-
packages: ./packages/*.deb
|
|
548
|
+
packages: ./packages/*.deb
|
|
549
|
+
tools: mesa-vulkan-drivers cmake g++ make
|
|
538
550
|
- image: debian:12
|
|
539
551
|
install: apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y -qq
|
|
540
|
-
packages: ./packages/*.deb
|
|
552
|
+
packages: ./packages/*.deb
|
|
553
|
+
tools: mesa-vulkan-drivers cmake g++ make
|
|
541
554
|
- image: rockylinux:9
|
|
542
555
|
install: dnf install -y -q
|
|
543
|
-
packages: ./packages/*.rpm
|
|
556
|
+
packages: ./packages/*.rpm
|
|
557
|
+
tools: mesa-vulkan-drivers cmake gcc-c++ make
|
|
544
558
|
- image: fedora:latest
|
|
545
559
|
install: dnf install -y -q
|
|
546
|
-
packages: ./packages/*.rpm
|
|
560
|
+
packages: ./packages/*.rpm
|
|
561
|
+
tools: mesa-vulkan-drivers cmake gcc-c++ make
|
|
547
562
|
steps:
|
|
548
563
|
- uses: actions/checkout@v7
|
|
549
564
|
- uses: actions/download-artifact@v8
|
|
550
565
|
with:
|
|
551
566
|
name: packages-linux-x86_64
|
|
552
567
|
path: packages
|
|
568
|
+
# Ernie's packages alone first, so the program runs on what they
|
|
569
|
+
# pull in themselves (the build tools bring libcurl, for one).
|
|
553
570
|
- name: Install the packages
|
|
554
571
|
run: ${{ matrix.install }} ${{ matrix.packages }}
|
|
555
572
|
- name: Run the viewer
|
|
556
|
-
run:
|
|
573
|
+
run: |
|
|
574
|
+
if ldd "$(command -v ernie)" | grep "not found"; then
|
|
575
|
+
exit 1
|
|
576
|
+
fi
|
|
577
|
+
ernie --version
|
|
578
|
+
- name: Install the build tools
|
|
579
|
+
run: ${{ matrix.install }} ${{ matrix.tools }}
|
|
557
580
|
- name: Build and run an application against them
|
|
558
581
|
run: |
|
|
559
582
|
cmake -S ernie/test/install -B consumer -DCMAKE_BUILD_TYPE=Release
|
|
@@ -17,7 +17,7 @@ project(
|
|
|
17
17
|
# reads it here too (pyproject.toml), and the packages turn it into "~dev12".
|
|
18
18
|
# One line, as CI rewrites it and the wheel's version regex reads it.
|
|
19
19
|
# cmake-format: off
|
|
20
|
-
set(ERNIE_VERSION_SUFFIX ".
|
|
20
|
+
set(ERNIE_VERSION_SUFFIX ".dev309" CACHE STRING "Pre-release suffix of Ernie's version, such as .dev12")
|
|
21
21
|
# cmake-format: on
|
|
22
22
|
set(ERNIE_VERSION "${PROJECT_VERSION}${ERNIE_VERSION_SUFFIX}")
|
|
23
23
|
|
|
@@ -136,6 +136,12 @@ endif()
|
|
|
136
136
|
|
|
137
137
|
add_subdirectory(ernie)
|
|
138
138
|
|
|
139
|
+
# The demos' libcurl, found before the packaging so the packages can
|
|
140
|
+
# depend on it.
|
|
141
|
+
if(TARGET ernie_app)
|
|
142
|
+
include(cmake/third_party/curl.cmake)
|
|
143
|
+
endif()
|
|
144
|
+
|
|
139
145
|
if(ERNIE_INSTALL)
|
|
140
146
|
include(cmake/ErnieInstall.cmake)
|
|
141
147
|
include(cmake/ErniePackaging.cmake)
|
|
@@ -81,7 +81,7 @@ Packages: `cmake --preset package-deb` (or `package-rpm`), then `cmake --build -
|
|
|
81
81
|
- Each module in `ernie/` is a library that depends only on the modules before it (see `ernie/CMakeLists.txt`). Headers sit next to their sources and are included as `"ernie/<module>/<file>.h"`.
|
|
82
82
|
- Document public API with `///` comments. When code implements a published technique, cite it in a `References:` list in the doc comment.
|
|
83
83
|
- Scene attributes use physical units (meters, kelvin, lux and so on). Say which unit in the doc comment.
|
|
84
|
-
- Demos go in `demos/<category>/` as a pair,
|
|
84
|
+
- Demos go in `demos/<category>/` as a pair, `demo_<category>_<name>.cpp` and `demo_<category>_<name>.py`, the same demo in each language (registered with `ERNIE_REGISTER_DEMO(Class, "<category>", "<name>", ...)` in C++); only `demos/interop/` is Python alone. The file stem is the demo's name everywhere: `ernie --demo demo_<category>_<name>`, `python -m ernie.demos demo_<category>_<name>` and its own program. `ernie/test/python/test_demos.py` checks every pair renders the same image.
|
|
85
85
|
- Tests are named `<module>_<topic>_test.cpp`. GPU tests use the `_gpu_test.cpp` suffix.
|
|
86
86
|
|
|
87
87
|
## Pull requests
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ernie-renderer
|
|
3
|
-
Version: 0.1.0.
|
|
3
|
+
Version: 0.1.0.dev309
|
|
4
4
|
Summary: Efficient Renderer for Natural and Interplanetary Environments: a spectral Vulkan renderer with a USD-style scene and batched cameras
|
|
5
5
|
Keywords: rendering,spectral,vulkan,planetary,space,sensor-simulation,reinforcement-learning,robotics
|
|
6
6
|
Author: Alex Maietta
|
|
@@ -35,7 +35,11 @@ Description-Content-Type: text/markdown
|
|
|
35
35
|
|
|
36
36
|
> 🚧 **This project is in active beta development.** This means the API is unstable, features may be added or removed, and breaking changes are likely to occur frequently and without notice as the design is refined.
|
|
37
37
|
|
|
38
|
-
[](https://github.com/alexmaietta/ernie/actions/workflows/ci.yml)
|
|
38
|
+
[](https://github.com/alexmaietta/ernie/actions/workflows/ci.yml)
|
|
39
|
+
[](https://github.com/alexmaietta/ernie/releases)
|
|
40
|
+
[](https://pypi.org/project/ernie-renderer/)
|
|
41
|
+
[](https://alexmaietta.github.io/ernie/)
|
|
42
|
+
[](LICENSE)
|
|
39
43
|
|
|
40
44
|
# Efficient Renderer for Natural and Interplanetary Environments (Ernie)
|
|
41
45
|
|
|
@@ -43,7 +47,7 @@ Description-Content-Type: text/markdown
|
|
|
43
47
|
|
|
44
48
|
Ernie is a physically accurate, real-time, spectral renderer for interplanetary environments.
|
|
45
49
|
|
|
46
|
-
It is a Vulkan rasterizer for Linux, Windows and macOS (through MoltenVK), with C++ and Python APIs and a Hydra-like scene API. Ernie is designed around physical quantities, efficient batched rendering and
|
|
50
|
+
It is a Vulkan rasterizer for Linux, Windows and macOS (through MoltenVK), with C++ and Python APIs and a Hydra-like scene API. Ernie is designed around physical quantities, efficient batched rendering, and user experience.
|
|
47
51
|
|
|
48
52
|
Ernie is built to be customized and to work alongside other tools. You can add your own BRDFs, sensor filters and light patterns. Rendered outputs and scene attributes (transforms, mesh vertices, light parameters and more) are shared zero copy with any DLPack tensor (PyTorch, JAX, Warp, NumPy), which makes Ernie a good fit for real-time physics simulation and reinforcement learning. Support for OpenUSD and glTF scenes, and for MDL and MaterialX materials, is planned.
|
|
49
53
|
|
|
@@ -52,7 +56,7 @@ Its key features are aimed at planetary robotics and sensing:
|
|
|
52
56
|
- **Cameras and sensors**
|
|
53
57
|
- Exposure, aperture, motion blur, rolling shutter, lens distortion and vignetting.
|
|
54
58
|
- Perspective, fisheye and orthographic projections, and line-scan pushbroom cameras like LROC's.
|
|
55
|
-
-
|
|
59
|
+
- Quantum efficiency curves, full well, read noise, dark current, PRNU, DSNU, gain and ADC bit depth.
|
|
56
60
|
- USGS CSM camera models for non-standard instruments.
|
|
57
61
|
- Sensor filter chains (noise models, lens flare, vignetting), with your own filters written in Slang.
|
|
58
62
|
- **Planetary environments**
|
|
@@ -71,7 +75,7 @@ Its key features are aimed at planetary robotics and sensing:
|
|
|
71
75
|
- A floating origin, so large scenes keep their precision.
|
|
72
76
|
- **Tools**
|
|
73
77
|
- A viewer with customizable panels, to drive your own simulations and workflows.
|
|
74
|
-
- Debug drawing
|
|
78
|
+
- Debug drawing for labels, trajectories and overlays in the scene.
|
|
75
79
|
|
|
76
80
|
For a more detailed overview of the features, see our [documentation](https://alexmaietta.github.io/ernie/).
|
|
77
81
|
|
|
@@ -203,6 +207,13 @@ Planned future examples.
|
|
|
203
207
|
- Illuminants across the same scene
|
|
204
208
|
- Laser lines competing with sunlight
|
|
205
209
|
|
|
210
|
+
**Lasers**
|
|
211
|
+
|
|
212
|
+
- Lasers from 405 to 940 nm seen by RGB, narrowband, NIR and wideband cameras (`demo_lasers_wavelengths`)
|
|
213
|
+
- A projector's patterns: spot, line, grid, dots, fringes and rings written in Slang (`demo_lasers_patterns`)
|
|
214
|
+
- A pulsed line laser against long, in-step and between-pulse exposures (`demo_lasers_pulsed`)
|
|
215
|
+
- Gray-code structured light decoded to projector columns (`demo_lasers_structured_light`)
|
|
216
|
+
|
|
206
217
|
**Star Field**
|
|
207
218
|
|
|
208
219
|
- Hipparcos star catalog
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
> 🚧 **This project is in active beta development.** This means the API is unstable, features may be added or removed, and breaking changes are likely to occur frequently and without notice as the design is refined.
|
|
2
2
|
|
|
3
|
-
[](https://github.com/alexmaietta/ernie/actions/workflows/ci.yml)
|
|
3
|
+
[](https://github.com/alexmaietta/ernie/actions/workflows/ci.yml)
|
|
4
|
+
[](https://github.com/alexmaietta/ernie/releases)
|
|
5
|
+
[](https://pypi.org/project/ernie-renderer/)
|
|
6
|
+
[](https://alexmaietta.github.io/ernie/)
|
|
7
|
+
[](LICENSE)
|
|
4
8
|
|
|
5
9
|
# Efficient Renderer for Natural and Interplanetary Environments (Ernie)
|
|
6
10
|
|
|
@@ -8,7 +12,7 @@
|
|
|
8
12
|
|
|
9
13
|
Ernie is a physically accurate, real-time, spectral renderer for interplanetary environments.
|
|
10
14
|
|
|
11
|
-
It is a Vulkan rasterizer for Linux, Windows and macOS (through MoltenVK), with C++ and Python APIs and a Hydra-like scene API. Ernie is designed around physical quantities, efficient batched rendering and
|
|
15
|
+
It is a Vulkan rasterizer for Linux, Windows and macOS (through MoltenVK), with C++ and Python APIs and a Hydra-like scene API. Ernie is designed around physical quantities, efficient batched rendering, and user experience.
|
|
12
16
|
|
|
13
17
|
Ernie is built to be customized and to work alongside other tools. You can add your own BRDFs, sensor filters and light patterns. Rendered outputs and scene attributes (transforms, mesh vertices, light parameters and more) are shared zero copy with any DLPack tensor (PyTorch, JAX, Warp, NumPy), which makes Ernie a good fit for real-time physics simulation and reinforcement learning. Support for OpenUSD and glTF scenes, and for MDL and MaterialX materials, is planned.
|
|
14
18
|
|
|
@@ -17,7 +21,7 @@ Its key features are aimed at planetary robotics and sensing:
|
|
|
17
21
|
- **Cameras and sensors**
|
|
18
22
|
- Exposure, aperture, motion blur, rolling shutter, lens distortion and vignetting.
|
|
19
23
|
- Perspective, fisheye and orthographic projections, and line-scan pushbroom cameras like LROC's.
|
|
20
|
-
-
|
|
24
|
+
- Quantum efficiency curves, full well, read noise, dark current, PRNU, DSNU, gain and ADC bit depth.
|
|
21
25
|
- USGS CSM camera models for non-standard instruments.
|
|
22
26
|
- Sensor filter chains (noise models, lens flare, vignetting), with your own filters written in Slang.
|
|
23
27
|
- **Planetary environments**
|
|
@@ -36,7 +40,7 @@ Its key features are aimed at planetary robotics and sensing:
|
|
|
36
40
|
- A floating origin, so large scenes keep their precision.
|
|
37
41
|
- **Tools**
|
|
38
42
|
- A viewer with customizable panels, to drive your own simulations and workflows.
|
|
39
|
-
- Debug drawing
|
|
43
|
+
- Debug drawing for labels, trajectories and overlays in the scene.
|
|
40
44
|
|
|
41
45
|
For a more detailed overview of the features, see our [documentation](https://alexmaietta.github.io/ernie/).
|
|
42
46
|
|
|
@@ -168,6 +172,13 @@ Planned future examples.
|
|
|
168
172
|
- Illuminants across the same scene
|
|
169
173
|
- Laser lines competing with sunlight
|
|
170
174
|
|
|
175
|
+
**Lasers**
|
|
176
|
+
|
|
177
|
+
- Lasers from 405 to 940 nm seen by RGB, narrowband, NIR and wideband cameras (`demo_lasers_wavelengths`)
|
|
178
|
+
- A projector's patterns: spot, line, grid, dots, fringes and rings written in Slang (`demo_lasers_patterns`)
|
|
179
|
+
- A pulsed line laser against long, in-step and between-pulse exposures (`demo_lasers_pulsed`)
|
|
180
|
+
- Gray-code structured light decoded to projector columns (`demo_lasers_structured_light`)
|
|
181
|
+
|
|
171
182
|
**Star Field**
|
|
172
183
|
|
|
173
184
|
- Hipparcos star catalog
|
|
@@ -97,6 +97,12 @@ else()
|
|
|
97
97
|
CPACK_DEBIAN_PACKAGE_DEPENDS
|
|
98
98
|
", libc6 (>= ${ernie_glibc}), libstdc++6 (>= 11), libgcc-s1 (>= 3.4)"
|
|
99
99
|
)
|
|
100
|
+
# The system's libcurl, which the demos link (curl.cmake): renamed
|
|
101
|
+
# libcurl4t64 in Debian 13 and Ubuntu 24.04.
|
|
102
|
+
if(TARGET ernie_curl AND CURL_FOUND)
|
|
103
|
+
string(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS
|
|
104
|
+
", libcurl4t64 | libcurl4")
|
|
105
|
+
endif()
|
|
100
106
|
endif()
|
|
101
107
|
# Recommended rather than required, so headless servers can leave the window libraries out
|
|
102
108
|
# (`apt install --no-install-recommends`).
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
-
# Ernie's demos, by category: demos/<category
|
|
3
|
-
# language (interop/ is Python only). Each C++ demo
|
|
4
|
-
# their objects go into the `ernie` program and the
|
|
5
|
-
# With ERNIE_BUILD_DEMOS each is also a program of
|
|
2
|
+
# Ernie's demos, by category: demos/<category>/demo_<category>_<name>.cpp beside its .py, the
|
|
3
|
+
# same demo in each language (interop/ is Python only), named by that stem. Each C++ demo
|
|
4
|
+
# registers itself (ERNIE_REGISTER_DEMO), and their objects go into the `ernie` program and the
|
|
5
|
+
# Python module, whose Demos panels list them. With ERNIE_BUILD_DEMOS each is also a program of
|
|
6
|
+
# its own, named as its files.
|
|
6
7
|
|
|
7
8
|
file(GLOB ernie_demo_cpp CONFIGURE_DEPENDS
|
|
8
9
|
"${CMAKE_CURRENT_SOURCE_DIR}/*/*.cpp")
|
|
@@ -45,11 +46,18 @@ if(ERNIE_BUILD_DEMOS)
|
|
|
45
46
|
get_filename_component(name "${source}" NAME_WE)
|
|
46
47
|
get_filename_component(directory "${source}" DIRECTORY)
|
|
47
48
|
get_filename_component(category "${directory}" NAME)
|
|
48
|
-
|
|
49
|
+
# The demo's id and program: its file's stem,
|
|
50
|
+
# demo_<category>_<name> (a file of the former <name> form
|
|
51
|
+
# gets the prefix).
|
|
52
|
+
if(name MATCHES "^demo_${category}_")
|
|
53
|
+
set(program "${name}")
|
|
54
|
+
else()
|
|
55
|
+
set(program "demo_${category}_${name}")
|
|
56
|
+
endif()
|
|
49
57
|
add_executable(${program} main.cpp
|
|
50
58
|
$<TARGET_OBJECTS:ernie_demos>)
|
|
51
|
-
target_compile_definitions(
|
|
52
|
-
|
|
59
|
+
target_compile_definitions(${program}
|
|
60
|
+
PRIVATE ERNIE_DEMO_ID="${program}")
|
|
53
61
|
target_link_libraries(
|
|
54
62
|
${program} PRIVATE ernie_app ernie_build_options
|
|
55
63
|
${ernie_demo_links})
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
-
// Earth's atmosphere from the ground and from orbit: a
|
|
3
|
-
//
|
|
4
|
-
// Station's 400 km, under the Sun's measured spectrum (TSIS-1) at
|
|
5
|
-
// 1361 W/m^2.
|
|
2
|
+
// Earth's atmosphere from the ground and from orbit: a noon sky, a
|
|
3
|
+
// sunset and the limb from the ISS.
|
|
6
4
|
|
|
7
5
|
#include "ernie/app/demo.h"
|
|
8
6
|
#include "ernie/scene/base_schemas.h"
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
-
"""Earth's atmosphere from the ground and from orbit: a
|
|
3
|
-
|
|
4
|
-
Station's 400 km, under the Sun's measured spectrum (TSIS-1) at
|
|
5
|
-
1361 W/m^2."""
|
|
2
|
+
"""Earth's atmosphere from the ground and from orbit: a noon sky, a
|
|
3
|
+
sunset and the limb from the ISS."""
|
|
6
4
|
|
|
7
5
|
import math
|
|
8
6
|
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
// Solar eclipses by a CelestialBody Moon: partial and annular through
|
|
3
|
+
// a solar filter, totality from the ground, and its shadow from
|
|
4
|
+
// orbit.
|
|
5
|
+
|
|
6
|
+
#include "ernie/app/demo.h"
|
|
7
|
+
#include "ernie/scene/base_schemas.h"
|
|
8
|
+
#include "ernie/scene/camera_schemas.h"
|
|
9
|
+
#include "ernie/scene/light_schemas.h"
|
|
10
|
+
#include "ernie/scene/render_schemas.h"
|
|
11
|
+
#include "ernie/scene/terrain_schemas.h"
|
|
12
|
+
#include "ernie/scene/tokens.h"
|
|
13
|
+
#include "ernie/scene/xform.h"
|
|
14
|
+
#include "util.h"
|
|
15
|
+
|
|
16
|
+
#include <algorithm>
|
|
17
|
+
#include <array>
|
|
18
|
+
#include <cmath>
|
|
19
|
+
#include <cstdint>
|
|
20
|
+
#include <cstdio>
|
|
21
|
+
#include <numbers>
|
|
22
|
+
#include <string>
|
|
23
|
+
#include <vector>
|
|
24
|
+
|
|
25
|
+
namespace {
|
|
26
|
+
|
|
27
|
+
using namespace ernie;
|
|
28
|
+
using demos::Check;
|
|
29
|
+
|
|
30
|
+
constexpr double kPi = std::numbers::pi;
|
|
31
|
+
constexpr double kSunElevation = 40.0; // degrees
|
|
32
|
+
|
|
33
|
+
/// A camera, an exposure, and the Moon's distance and offset from the
|
|
34
|
+
/// sun (towards the zenith).
|
|
35
|
+
struct View {
|
|
36
|
+
const char* name;
|
|
37
|
+
glm::dvec3 eye;
|
|
38
|
+
double elevation; ///< Of the camera's aim, degrees, towards +x.
|
|
39
|
+
glm::dvec3 up;
|
|
40
|
+
double focalLength; ///< Millimetres.
|
|
41
|
+
double moonDistance; ///< Metres.
|
|
42
|
+
double moonOffset; ///< Degrees.
|
|
43
|
+
double fStop;
|
|
44
|
+
double exposureTime; ///< Seconds, at ISO 100.
|
|
45
|
+
double filter; ///< Stops; -13.3 is an ND 4.0 solar filter.
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// At 360,000 km the Moon covers the sun; at 405,500 km it leaves a
|
|
49
|
+
// ring.
|
|
50
|
+
const std::array<View, 4> kViews = {{
|
|
51
|
+
{"Partial, through a solar filter",
|
|
52
|
+
{0.0, 0.0, 2.0},
|
|
53
|
+
kSunElevation,
|
|
54
|
+
{0.0, 0.0, 1.0},
|
|
55
|
+
1200.0,
|
|
56
|
+
384400e3,
|
|
57
|
+
0.3,
|
|
58
|
+
16.0,
|
|
59
|
+
1.0 / 1000.0,
|
|
60
|
+
-13.3},
|
|
61
|
+
{"Annular, through a solar filter",
|
|
62
|
+
{0.0, 0.0, 2.0},
|
|
63
|
+
kSunElevation,
|
|
64
|
+
{0.0, 0.0, 1.0},
|
|
65
|
+
1200.0,
|
|
66
|
+
405500e3,
|
|
67
|
+
0.0,
|
|
68
|
+
16.0,
|
|
69
|
+
1.0 / 1000.0,
|
|
70
|
+
-13.3},
|
|
71
|
+
{"Totality, from the ground",
|
|
72
|
+
{0.0, 0.0, 2.0},
|
|
73
|
+
22.0,
|
|
74
|
+
{0.0, 0.0, 1.0},
|
|
75
|
+
14.0,
|
|
76
|
+
360000e3,
|
|
77
|
+
0.0,
|
|
78
|
+
2.8,
|
|
79
|
+
1.0 / 2.0,
|
|
80
|
+
0.0},
|
|
81
|
+
{"The Moon's shadow from geostationary orbit",
|
|
82
|
+
{0.0, 0.0, 35786e3},
|
|
83
|
+
-90.0,
|
|
84
|
+
{1.0, 0.0, 0.0},
|
|
85
|
+
100.0,
|
|
86
|
+
360000e3,
|
|
87
|
+
0.0,
|
|
88
|
+
16.0,
|
|
89
|
+
1.0 / 125.0,
|
|
90
|
+
0.0},
|
|
91
|
+
}};
|
|
92
|
+
|
|
93
|
+
/// The mean linear colour of rows [top, bottom) and columns [left,
|
|
94
|
+
/// right) of a uint8 (rows, cols, 4) image.
|
|
95
|
+
glm::dvec3 RegionLinearRgb(const Tensor& image, std::int64_t top,
|
|
96
|
+
std::int64_t bottom, std::int64_t left,
|
|
97
|
+
std::int64_t right) {
|
|
98
|
+
const std::int64_t cols = image.Shape()[1];
|
|
99
|
+
const auto* pixels =
|
|
100
|
+
static_cast<const std::uint8_t*>(image.Data());
|
|
101
|
+
glm::dvec3 sum(0.0);
|
|
102
|
+
for (std::int64_t row = top; row < bottom; ++row) {
|
|
103
|
+
for (std::int64_t col = left; col < right; ++col) {
|
|
104
|
+
const std::uint8_t* p = pixels + (row * cols + col) * 4;
|
|
105
|
+
sum += demos::SrgbToLinear(glm::dvec3(p[0], p[1], p[2]) /
|
|
106
|
+
255.0);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return sum / static_cast<double>((bottom - top) * (right - left));
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
double Luminance(glm::dvec3 rgb) {
|
|
113
|
+
return 0.2126 * rgb.r + 0.7152 * rgb.g + 0.0722 * rgb.b;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/// The pixels of a uint8 (rows, cols, 4) image brighter than half
|
|
117
|
+
/// white.
|
|
118
|
+
int BrightPixels(const Tensor& image) {
|
|
119
|
+
const auto* pixels =
|
|
120
|
+
static_cast<const std::uint8_t*>(image.Data());
|
|
121
|
+
const std::int64_t count = image.Shape()[0] * image.Shape()[1];
|
|
122
|
+
int bright = 0;
|
|
123
|
+
for (std::int64_t i = 0; i < count; ++i) {
|
|
124
|
+
bright += pixels[i * 4 + 1] > 128 ? 1 : 0;
|
|
125
|
+
}
|
|
126
|
+
return bright;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
class EclipseDemo : public app::Demo {
|
|
130
|
+
public:
|
|
131
|
+
EclipseDemo(app::Viewer* viewer, const app::DemoOptions& options)
|
|
132
|
+
: Demo(viewer, options) {
|
|
133
|
+
numFrames = 1;
|
|
134
|
+
Scene& scene = GetScene();
|
|
135
|
+
Xform::Define(scene, "/World");
|
|
136
|
+
Atmosphere::Define(scene, "/World/Air")
|
|
137
|
+
.SetPreset(std::string(tokens::kEarth));
|
|
138
|
+
DistantLight::Define(scene, "/World/Sun")
|
|
139
|
+
.SetIrradiance(1361.0)
|
|
140
|
+
.SetPhysicalIlluminant(std::string(tokens::kSun))
|
|
141
|
+
.SetAngle(0.53);
|
|
142
|
+
const double e = kSunElevation * kPi / 180.0;
|
|
143
|
+
DistantLight(scene, "/World/Sun")
|
|
144
|
+
.SetTransform(DistantLightTransform(
|
|
145
|
+
{std::cos(e), 0.0, std::sin(e)}));
|
|
146
|
+
// The Moon: its mean radius and normal albedo.
|
|
147
|
+
CelestialBody::Define(scene, "/World/Moon")
|
|
148
|
+
.SetRadius(1737.4e3)
|
|
149
|
+
.SetAlbedo(glm::dvec3(0.12));
|
|
150
|
+
Camera::Define(scene, "/World/Camera")
|
|
151
|
+
.SetSensorNoise(false)
|
|
152
|
+
.SetExposureIso(100.0);
|
|
153
|
+
RenderSettings::Define(scene, "/Render/Settings")
|
|
154
|
+
.SetCamera(Path("/World/Camera"))
|
|
155
|
+
.SetResolution({480, 320})
|
|
156
|
+
.SetAmbient(0.0);
|
|
157
|
+
Show(0);
|
|
158
|
+
|
|
159
|
+
std::vector<std::string> names;
|
|
160
|
+
for (const View& view : kViews) {
|
|
161
|
+
names.emplace_back(view.name);
|
|
162
|
+
}
|
|
163
|
+
Widgets().Combo("View", std::move(names), 0,
|
|
164
|
+
[this](std::size_t index) {
|
|
165
|
+
Show(static_cast<int>(index));
|
|
166
|
+
});
|
|
167
|
+
Widgets().Slider(
|
|
168
|
+
"Moon offset", -1.0, 1.0, kViews[0].moonOffset,
|
|
169
|
+
[this](double degrees) {
|
|
170
|
+
MoonAt(kViews[static_cast<std::size_t>(view_)]
|
|
171
|
+
.moonDistance,
|
|
172
|
+
degrees);
|
|
173
|
+
});
|
|
174
|
+
if (viewer != nullptr) {
|
|
175
|
+
viewer->SetActiveCamera("/World/Camera");
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/// The four views side by side.
|
|
180
|
+
void SaveOutput(const std::filesystem::path& path) override {
|
|
181
|
+
app::WritePng(path, demos::SideBySide(RenderAll()));
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
void TestFinal() override {
|
|
185
|
+
const std::vector<Tensor> images = RenderAll();
|
|
186
|
+
for (std::size_t i = 0; i < images.size(); ++i) {
|
|
187
|
+
const glm::dvec3 mean = demos::MeanLinearRgb(images[i]);
|
|
188
|
+
std::printf("%s: mean linear RGB %.4f %.4f %.4f\n",
|
|
189
|
+
kViews[i].name, mean.r, mean.g, mean.b);
|
|
190
|
+
}
|
|
191
|
+
// A crescent and a ring: less of the sun than its whole disc.
|
|
192
|
+
const int whole = BrightPixels(RenderWithoutMoon(0));
|
|
193
|
+
const int crescent = BrightPixels(images[0]);
|
|
194
|
+
const int ring = BrightPixels(images[1]);
|
|
195
|
+
std::printf("bright pixels: whole %d, crescent %d, ring %d\n",
|
|
196
|
+
whole, crescent, ring);
|
|
197
|
+
Check(crescent > 0 && crescent < 0.8 * whole,
|
|
198
|
+
"the partial eclipse should leave a crescent");
|
|
199
|
+
Check(ring > 0 && ring < 0.3 * whole,
|
|
200
|
+
"the annular eclipse should leave a thin ring");
|
|
201
|
+
// The ring: dark at the Moon's centre.
|
|
202
|
+
const std::int64_t rows = images[1].Shape()[0];
|
|
203
|
+
const std::int64_t cols = images[1].Shape()[1];
|
|
204
|
+
Check(Luminance(RegionLinearRgb(images[1], rows / 2 - 2,
|
|
205
|
+
rows / 2 + 2, cols / 2 - 2,
|
|
206
|
+
cols / 2 + 2)) < 0.01,
|
|
207
|
+
"the Moon should be dark against the sun");
|
|
208
|
+
// Totality: a dark sky, brightest along the horizon.
|
|
209
|
+
const Tensor day = RenderWithoutMoon(2);
|
|
210
|
+
const double total =
|
|
211
|
+
Luminance(demos::MeanLinearRgb(images[2]));
|
|
212
|
+
const double daylight = Luminance(demos::MeanLinearRgb(day));
|
|
213
|
+
std::printf("totality %.5f of daylight\n", total / daylight);
|
|
214
|
+
Check(total < 0.05 * daylight,
|
|
215
|
+
"totality should darken the sky");
|
|
216
|
+
const double horizon = Luminance(RegionLinearRgb(
|
|
217
|
+
images[2], rows - rows / 5, rows, 0, cols));
|
|
218
|
+
const double overhead = Luminance(
|
|
219
|
+
RegionLinearRgb(images[2], 0, rows / 5, 0, cols));
|
|
220
|
+
std::printf("totality: horizon %.5f, top %.5f\n", horizon,
|
|
221
|
+
overhead);
|
|
222
|
+
Check(horizon > 2.0 * overhead,
|
|
223
|
+
"the horizon should glow in totality");
|
|
224
|
+
// From orbit: a dark umbra under the camera.
|
|
225
|
+
const double umbra = Luminance(
|
|
226
|
+
RegionLinearRgb(images[3], rows / 2 - 2, rows / 2 + 2,
|
|
227
|
+
cols / 2 - 2, cols / 2 + 2));
|
|
228
|
+
const double around = Luminance(
|
|
229
|
+
RegionLinearRgb(images[3], 0, rows / 8, 0, cols));
|
|
230
|
+
std::printf("from orbit: umbra %.5f, around %.5f\n", umbra,
|
|
231
|
+
around);
|
|
232
|
+
Check(umbra < 0.1 * around,
|
|
233
|
+
"the umbra should be dark from orbit");
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
private:
|
|
237
|
+
void Show(int index) {
|
|
238
|
+
view_ = index;
|
|
239
|
+
const View& view = kViews[static_cast<std::size_t>(index)];
|
|
240
|
+
const double a = view.elevation * kPi / 180.0;
|
|
241
|
+
Camera(GetScene(), "/World/Camera")
|
|
242
|
+
.SetFocalLength(view.focalLength)
|
|
243
|
+
.SetExposureFStop(view.fStop)
|
|
244
|
+
.SetExposureTime(view.exposureTime)
|
|
245
|
+
.SetExposure(view.filter)
|
|
246
|
+
.SetTransform(LookAtTransform(
|
|
247
|
+
view.eye,
|
|
248
|
+
view.eye + glm::dvec3(std::cos(a), 0.0, std::sin(a)),
|
|
249
|
+
view.up));
|
|
250
|
+
MoonAt(view.moonDistance, view.moonOffset);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/// The Moon `distance` from the world's origin, `degrees` from
|
|
254
|
+
/// the sun's direction towards the zenith.
|
|
255
|
+
void MoonAt(double distance, double degrees) {
|
|
256
|
+
const double e = (kSunElevation + degrees) * kPi / 180.0;
|
|
257
|
+
SetXform(GetScene(), "/World/Moon",
|
|
258
|
+
{.translate = distance * glm::dvec3(std::cos(e), 0.0,
|
|
259
|
+
std::sin(e))});
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/// View `index` with the Moon far from the sun; leaves the view
|
|
263
|
+
/// as it was.
|
|
264
|
+
Tensor RenderWithoutMoon(int index) {
|
|
265
|
+
const int current = view_;
|
|
266
|
+
Show(index);
|
|
267
|
+
MoonAt(kViews[static_cast<std::size_t>(index)].moonDistance,
|
|
268
|
+
-30.0);
|
|
269
|
+
Tensor image = GetRenderer().Render(GetScene());
|
|
270
|
+
Show(current);
|
|
271
|
+
return image;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/// The scene from each view in turn, RGBA uint8; leaves the view
|
|
275
|
+
/// as it was.
|
|
276
|
+
std::vector<Tensor> RenderAll() {
|
|
277
|
+
const int current = view_;
|
|
278
|
+
std::vector<Tensor> images;
|
|
279
|
+
for (int i = 0; i < static_cast<int>(kViews.size()); ++i) {
|
|
280
|
+
Show(i);
|
|
281
|
+
images.push_back(GetRenderer().Render(GetScene()));
|
|
282
|
+
}
|
|
283
|
+
Show(current);
|
|
284
|
+
return images;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
int view_ = 0;
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
} // namespace
|
|
291
|
+
|
|
292
|
+
ERNIE_REGISTER_DEMO(EclipseDemo, "atmosphere", "eclipse",
|
|
293
|
+
"Solar eclipses: partial, annular and total from "
|
|
294
|
+
"the ground, and the Moon's shadow from orbit.");
|