Skip to content
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 21 additions & 22 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -111,31 +111,30 @@ if (XDG_ENABLE_GPRT)
endif()

list(APPEND xdg_sources
src/geometry/measure.cpp
src/geometry/plucker.cpp
src/geometry/closest.cpp
src/error.cpp
src/mesh_manager_interface.cpp
src/ray_tracing_interface.cpp
src/triangle_intersect.cpp
src/util/str_utils.cpp
src/tetrahedron_contain.cpp
src/config.cpp
src/xdg.cpp
src/overlap_check/overlap.cpp
src/element_face_accessor.cpp
src/xdg.cpp
src/geometry/measure.cpp
src/geometry/plucker.cpp
src/geometry/closest.cpp
src/error.cpp
src/mesh_manager_interface.cpp
src/ray_tracing_interface.cpp
src/util/str_utils.cpp
src/overlap_check/overlap.cpp
src/element_face_accessor.cpp
src/config.cpp
src/xdg.cpp
)

if (XDG_ENABLE_EMBREE)
list(APPEND xdg_sources
src/embree/ray_tracer.cpp
src/embree/ray_tracer.cpp
src/embree/triangle_intersect.cpp
src/embree/tetrahedron_contain.cpp
)
endif()

if (XDG_ENABLE_GPRT)
list(APPEND xdg_sources
src/gprt/ray_tracer.cpp
src/gprt/ray_tracer.cpp
)
list(APPEND xdg_device_codes
dbl_deviceCode
Expand All @@ -145,16 +144,15 @@ endif()

if (XDG_ENABLE_LIBMESH)
list(APPEND xdg_sources
src/libmesh/mesh_manager.cpp
src/libmesh/mesh_manager.cpp
)
endif()

if (XDG_ENABLE_MOAB)
list(APPEND xdg_sources
# MOAB
src/moab/mesh_manager.cpp
src/moab/direct_access.cpp
src/moab/metadata.cpp
src/moab/mesh_manager.cpp
src/moab/direct_access.cpp
src/moab/metadata.cpp
)
endif()

Expand Down Expand Up @@ -190,6 +188,7 @@ endif()
add_library(xdg SHARED ${xdg_sources})

target_link_libraries(xdg indicators::indicators)
target_link_libraries(xdg fmt::fmt)

if(XDG_ENABLE_EMBREE)
# pass precompile definition depending on embree version
Expand Down Expand Up @@ -250,7 +249,7 @@ endif()
# ==========================

if (XDG_ENABLE_EMBREE)
target_link_libraries(xdg embree fmt::fmt)
target_link_libraries(xdg embree)
endif()

if (XDG_ENABLE_GPRT)
Expand Down
File renamed without changes.
File renamed without changes.
10 changes: 10 additions & 0 deletions include/xdg/embree/embree_interface.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

#ifdef XDG_EMBREE4

#include "xdg/embree/embree4.h"

#elif defined(XDG_EMBREE3)

#include "xdg/embree/embree3.h"

#endif
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#define _XDG_TRIANGLE_REF_H

#include "xdg/constants.h"
#include "xdg/embree_interface.h"
#include "xdg/embree/embree_interface.h"
#include "xdg/mesh_manager_interface.h"

namespace xdg {
Expand Down
4 changes: 2 additions & 2 deletions include/xdg/ray.h → include/xdg/embree/ray.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
#include "xdg/vec3da.h"

#include "xdg/constants.h"
#include "xdg/embree_interface.h"
#include "xdg/primitive_ref.h"
#include "xdg/embree/embree_interface.h"
#include "xdg/embree/primitive_ref.h"

namespace xdg {

Expand Down
9 changes: 5 additions & 4 deletions include/xdg/embree/ray_tracer.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
#include <unordered_map>

#include "xdg/constants.h"
#include "xdg/embree_interface.h"
#include "xdg/embree/embree_interface.h"
#include "xdg/mesh_manager_interface.h"
#include "xdg/primitive_ref.h"
#include "xdg/geometry_data.h"
#include "xdg/embree/primitive_ref.h"
#include "xdg/embree/geometry_data.h"
#include "xdg/ray_tracing_interface.h"
#include "xdg/ray.h"
#include "xdg/embree/ray.h"
#include "xdg/error.h"

namespace xdg {
Expand All @@ -21,6 +21,7 @@ class EmbreeRayTracer : public RayTracer {
public:
EmbreeRayTracer();
~EmbreeRayTracer();

RTLibrary library() const override { return RTLibrary::EMBREE; }

void init() override;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#define XDG_TETRAHEDRON_INTERSECT_H


#include "xdg/embree/embree_interface.h"
#include "xdg/vec3da.h"

namespace xdg
Expand Down
14 changes: 0 additions & 14 deletions include/xdg/embree_interface.h

This file was deleted.

3 changes: 0 additions & 3 deletions include/xdg/gprt/ray_tracer.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,7 @@

#include "xdg/constants.h"
#include "xdg/mesh_manager_interface.h"
#include "xdg/primitive_ref.h"
#include "xdg/geometry_data.h"
#include "xdg/ray_tracing_interface.h"
#include "xdg/ray.h"
#include "xdg/error.h"
#include "gprt/gprt.h"
#include "shared_structs.h"
Expand Down
3 changes: 0 additions & 3 deletions include/xdg/ray_tracing_interface.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@
#include <unordered_map>

#include "xdg/constants.h"
#include "xdg/embree_interface.h"
#include "xdg/mesh_manager_interface.h"
#include "xdg/primitive_ref.h"
#include "xdg/geometry_data.h"

namespace xdg
{
Expand Down
2 changes: 0 additions & 2 deletions include/xdg/xdg.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,6 @@ Direction surface_normal(MeshID surface,
}
// Private methods
private:
double _triangle_volume_contribution(const PrimitiveRef& triangle) const;
double _triangle_area_contribution(const PrimitiveRef& triangle) const;

// Data members
std::shared_ptr<RayTracer> ray_tracing_interface_ {nullptr};
Expand Down
6 changes: 3 additions & 3 deletions src/embree/ray_tracer.cpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#include "xdg/embree/ray_tracer.h"
#include "xdg/error.h"
#include "xdg/geometry_data.h"
#include "xdg/ray.h"
#include "xdg/tetrahedron_contain.h"
#include "xdg/embree/geometry_data.h"
#include "xdg/embree/ray.h"
#include "xdg/embree/tetrahedron_contain.h"


namespace xdg {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#include "xdg/constants.h"
#include "xdg/ray_tracing_interface.h"
#include "xdg/ray.h"
#include "xdg/embree/geometry_data.h"
#include "xdg/embree/ray.h"
#include "xdg/vec3da.h"

#include "xdg/util/linalg.h"

namespace xdg
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
#include <algorithm> // for find

#include "xdg/geometry/closest.h"
#include "xdg/primitive_ref.h"
#include "xdg/geometry_data.h"
#include "xdg/embree/primitive_ref.h"
#include "xdg/embree/geometry_data.h"
#include "xdg/geometry/plucker.h"
#include "xdg/ray.h"
#include "xdg/embree/ray.h"

namespace xdg
{
Expand Down
11 changes: 8 additions & 3 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,19 @@ test_point_in_volume
test_normal
test_measure
test_no_geom
test_ray_duals
test_xdg_interface
test_tet_containment
test_tracks
test_tet_intersection
test_tally_segments
)

if (XDG_ENABLE_EMBREE)
list (APPEND TEST_NAMES
test_ray_duals
test_tet_containment
test_tet_intersection
)
endif()

if (XDG_ENABLE_MOAB)
list(APPEND TEST_NAMES test_moab)
endif()
Expand Down
54 changes: 27 additions & 27 deletions tests/test_bvh.cpp
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
// for testing
#include <catch2/catch_test_macros.hpp>
#include <catch2/generators/catch_generators.hpp>

// xdg includes
#include "xdg/constants.h"
#include "xdg/mesh_manager_interface.h"
#include "xdg/embree/ray_tracer.h"

#include "util.h"
#include "mesh_mock.h"

using namespace xdg;
Expand All @@ -19,30 +19,30 @@ TEST_CASE("Test Mesh BVH")
REQUIRE(mm->num_surfaces() == 6);
REQUIRE(mm->num_volume_faces(1) == 12);

std::shared_ptr<RayTracer> rti = std::make_shared<EmbreeRayTracer>();

std::unordered_map<MeshID, TreeID> volume_to_scene_map;
for (auto volume: mm->volumes()) {
auto [volume_tree, element_tree] = rti->register_volume(mm, volume);
volume_to_scene_map[volume]= volume_tree;
}

REQUIRE(rti->num_registered_trees() == 2);
REQUIRE(rti->num_registered_surface_trees() == 1);
REQUIRE(rti->num_registered_element_trees() == 1);

mm = std::make_shared<MeshMock>();
mm->init(); // this should do nothing

REQUIRE(mm->num_volumes() == 1);
REQUIRE(mm->num_surfaces() == 6);
REQUIRE(mm->num_volume_faces(1) == 12);

rti = std::make_shared<EmbreeRayTracer>();

volume_to_scene_map.clear();
for (auto volume: mm->volumes()) {
auto [volume_tree, element_tree] = rti->register_volume(mm, volume);
volume_to_scene_map[volume] = volume_tree;
// Generate one test run per enabled backend
auto rt_backend = GENERATE(RTLibrary::EMBREE, RTLibrary::GPRT);

DYNAMIC_SECTION(fmt::format("Backend = {}", rt_backend)) {
check_ray_tracer_supported(rt_backend); // skip if backend not enabled at configuration time
auto rti = create_raytracer(rt_backend);
REQUIRE(rti);

std::unordered_map<MeshID, TreeID> volume_to_scene_map;
for (auto volume: mm->volumes()) {
auto [volume_tree, element_tree] = rti->register_volume(mm, volume);
volume_to_scene_map[volume]= volume_tree;
}

// Different expectations for number of registered trees based on backend
// until GPRT supports volumetric element trees
if (rt_backend == RTLibrary::EMBREE) {
REQUIRE(rti->num_registered_trees() == 2);
REQUIRE(rti->num_registered_surface_trees() == 1);
REQUIRE(rti->num_registered_element_trees() == 1);
}
else if (rt_backend == RTLibrary::GPRT) {
REQUIRE(rti->num_registered_trees() == 1);
REQUIRE(rti->num_registered_surface_trees() == 1);
}
}
}
6 changes: 2 additions & 4 deletions tests/test_closest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@
// xdg test includes
#include "mesh_mock.h"
#include "util.h"
#include "xdg/embree/ray_tracer.h"

using namespace xdg;

TEST_CASE("Test Mesh Mock")
{
// skip this test if Embree is not enabled
check_ray_tracer_supported(RTLibrary::EMBREE);
std::shared_ptr<MeshManager> mm = std::make_shared<MeshMock>();
mm->init(); // this should do nothing, but its good practice to call it
std::shared_ptr<XDG> xdg = std::make_shared<XDG>(mm);
Expand Down Expand Up @@ -178,7 +179,4 @@ TEST_CASE("Closest Point Unit Test")
closest = closest_location_on_triangle(triangle, p);
REQUIRE(closest.approx_eq(midpoint));
REQUIRE_THAT((closest - p).length(), Catch::Matchers::WithinAbs(dist, 1e-6));



}
Loading
Loading