In #57 it became apparent that we may want to move to an instance based system for creating our embree BVHs for shared surfaces. This issue (and subsequent linked PR) should make this change. From my comment in #57 (comment):
I did some reading on the embree API and came across this page on instancing - https://manpages.debian.org/experimental/libembree-dev/RTC_GEOMETRY_TYPE_INSTANCE.3.en.html which suggests that making use of RTCGeometries of RTC_GEOMETRY_TYPE_INSTANCE could be a way to reduce memory overhead because the instanced scene is "only stored one time". It seems like these are designed for situations where you have shared geometry.
This sounds like it would be similar (not entirely sure if its the exact same system) to what I have been doing with GPRT where I create a BLAS and associated gprt::instance for each surface and my volume tree is a TLAS of those instances.
In #57 it became apparent that we may want to move to an instance based system for creating our embree BVHs for shared surfaces. This issue (and subsequent linked PR) should make this change. From my comment in #57 (comment):