Intel® Embree Ray Tracing Kernels
Discussion forum on the open source ray tracing kernels for fast photo-realistic rendering on Intel® CPU(s)

Motion blur with subdivision surfaces?

Pierre_L_5
Beginner
457 Views

Hi everyone!

This is my first time posting here and I would first like to congratulate the devs for their astonishing work on Embree.

I still have a small question though: is linear motion blur currently supported for subdivision surfaces (by Embree 2.7)?

The documentation does not state that it is supported (while it explicitly does for triangle meshes and hair geometries).
However, the rtcNewSubdivisionMesh function's last parameter corresponds to the number of time samples for the declared geometry, and the embree::SubdivMesh class does hold up to 2 vertex buffers.
The embree::Scene class also appears to track the number subdivision surfaces with motion blur (numSubdivPatches2 member).
But at the end of the day, embree::Scene::getNumPrimitives<SubdivMesh,2>() does not seem to get called at all.
And I did not find any builder in bvh4.cpp that handles the case of subdivision surfaces with motion blur.

I confess I am a bit confused.
This would seem such an important feature that I doubt it has been left unhandled.
I must have missed something, so any help would be greatly appreciated.

Thanks in advance,
    Pierre.

0 Kudos
4 Replies
SvenW_Intel
Moderator
457 Views

We do currently not support motion blur for subdivision surfaces yet in Embree v2.7.1. However, this feature is on our to do list and will come into some future release.

0 Kudos
Pierre_L_5
Beginner
457 Views

Hi Swen!

Thank you for your quick answer.
That is a shame, but I naturally understand that everything cannot be available at once.

I must ask for some additional advice though, because it also means displacement mapping is not available for motion blurred surfaces either then (since DM seems to be supported for Catmull-Clarck surfaces only at the moment).
And I just need motion blur with displacement mapping asap.

In your opinion, what would be the safest route to take in order to get those until your official future release? (I don't mind if I have to get rid of my own code after your release).

1)
I can use OpenSubdiv to compute smoothed triangle meshes and get motion blur at the cost of weaker performance.
But then, I would have to come up with my own implementation for displacement mapping.
Would it be that different from the one directly available for smoothed surfaces or quite similar? (I still have to take a more careful look at the code)

2)
Or on the contrary, should I try to mimic other available motion blur dedicated BVH builders in order to come up with one that would work for subdivision surfaces?

Again, any insight is greatly appreciated.
And keep up with the fantastic work!
    Pierre.

0 Kudos
SvenW_Intel
Moderator
457 Views

I would recommend using OpenSubdiv for now and pass the displaced geometry as a motion blurred triangle mesh to Embree. This will give you good performance, but much higher memory consumption as if we would have implemented the feature directly.

0 Kudos
Pierre_L_5
Beginner
457 Views

 

Hi Sven,

Again, thank you very much for your feedback.
I will follow your advice and precompute subdivided surfaces with OpenSubDiv in the meantime then.

Cheers,
    Pierre.

0 Kudos
Reply