refitting acceleration on animation (morphing and transform)


in my application (using OptiX 6.5 on CUDA 10.0 GTX 1050 2GB on Win10PRO 64bit v1809; driver 436.15) I use some animation for my geometry.
Running morphing (vertex-based motion blur) gives good results. Also combined with a transform node (additionally modifying the matrix) also runs fine.

On a very large geometry I encounter very slow updates, so I considered to use “refit”.
After adding the “refit” capability on the acceleration structure it works fine when either only a transform node (using a matrix) is applied or when morphing is applied. (I test it currently with a small geometry) But it fails (wrong rotation and/or missing intersection), when both (morphing and transform) are applied together and when then refit is used. Both together work fine without refit.
And also both together work fine, when the I simply destroy and rebuilt the acceleration struture (without changing anything else) on each frame; but that makes no sense for refit.
I ensured, that all the acceleration structures of the geometry groups are marked dirty on every frame…

As described here I also checked the acceleration times; and indeed its faster when “refit” is used.
I also set “compact” to 0, cause the docs say, that using compact “1” cannot be used with “refit”.

What could be wrong ?

Thank you.

You did a great job of trying to rule out the causes, so I’m not sure what could be wrong. It’s possible there is a bug in refit when trying to use both transforms and motion blur features at the same time.

Are you able to send a minimal reproducer using OptiX API Capture and/or via source code?
Please see this thread for instructions on how to use OptiX API Capture:

Ideally, repro would use a very small model and reproduce in a single frame. It would also help a lot to include one of success cases, like when using rebuild instead of refit.


1 Like

I’m currently updating the driver and VS and then I try to create a small reproducer. it may take some time.

UPDATE: After updating my system to CUDA 10.1.243, device driver: 436.48 and VS 2019 Community to 16.3.2 the issue is still there, so I’m now starting to create the reproducer using a SDK sample.

I was able to create a simple reproducer for an issue which also occured on my system before, and for which I already found a work-around. That same work-around also solved this current issue (at least on my system).

I simply again set the child of the transform. That’s it. I don’t know why, but it works. However, this solves the problem in my main application.
I sent the reproducer as private message.