Nice work. Any plans for a double precision version? The GPU's are doing it!
Seriously, I would love to test a double precision version against our renderer.
not sure about the answer, I hope Embree developers check this forum more often and reply to users questions.
With that aside, I'm curious to know what type of applications require double precision? I'd like to know if it's worth it to exchange some speed for extra precision?
New features for Embree are mainly motivated by the feedback we get from users.We will definitely consider double a precision version if asked for by multiple sources.
Unfortunately, each rendering application has different demands. One idea behind having Embree Open Source, is that developers have optimized algorithms and data structures that theycan adjust to the specific demands of their application.
It would be helpful if you precise where your application needs double precision, e.g. often using double precisionsolely during ray/triangle intersection is sufficient.
We have found that with very large scenes the ray and the triangle data need to be maintained as doubles, although it is often, but not always, possible to move the action to the origin.
The BVH could remain floats as you suggest if the floats of the leaf bounding boxes are properly rounded. Some special handling might be needed to ensure that a double precision ray / float bounding box intersection is done properly. Also one would need to consider the size increase of a float bounding box at large distances from the origin compared to a double precision bounding box.
We are doing technical ray-tracing, with for instance some thin glass sheets which are not perfectly flat but modeled with realistic glass processing deformations. The average distance between interfaces is as small as 1-2mm, and this is in building-scale models.
Floating-point is causing artifacts in some conditions. The worst being interfaces intersected in the wrong order, but as the glass medium is absorbing slight tint banding appears even in good conditions, as the calculated crossed distance is incorrect.
Double precision would definitely be a plus here
I'm a graduate student at the University of Wisconsin - Madison in the Nuclear Engineering department. We've recently been trying Embree as the ray tracer for our Monte Carlo simulation code, DagMC (http://svalinn.github.io/DAGMC/), and are very pleased with the results we've gotten thus far.
While we haven't run into limitations due to float precision as of yet, we predict there may be problems in the future as the production analysis we do in our research group involves large, high detail/complexity models. As a result, we would be interested in seeing a double version of Embree as well
One recommendation for problematic scenes that cause issues with floating point accuracy is to use the robust mode by enabling the RTC_SCENE_ROBUST flag when creating the scene. This will resolve most accuracy issues.
If a double precision version is created, will it still be able to take advantage of AVX2? My current understanding is that the allowed vector registers probably aren't yet large enough for box/triangle representations w/ double precision.