#include "lantern.hpp" #include #include #include int main() { try { const auto integral=lantern::cosine_integral(65536,42); if (!integral) { std::cerr << integral.error().message << '\n'; return 1; } const std::vector spheres{{1,{0,0,0},1},{2,{3,0,0},0.5},{3,{-3,0,0},0.5}}; const auto index=lantern::SceneIndex::build(spheres); if (!index) { std::cerr << index.error().message << '\n'; return 1; } const auto hit=index->closest({{0,0,4},{0,0,-1}}); if (!hit || !*hit) { std::cerr << "Expected a central hit.\n"; return 1; } std::cout << "Uniform hemisphere estimate: " << *integral << " (analytic pi = " << std::numbers::pi << ")\nBVH nodes: " << index->node_count() << "\nCentral hit id: " << (*hit)->id << ", distance: " << (*hit)->distance << '\n'; return 0; } catch (const std::exception&) { std::cerr << "CPU experiment could not complete.\n"; return 1; } }