Update to OptiX 5.1 - all rays enter only the miss program

Recently, I’ve updated the OptiX version from 5.0.1 to 5.1.

The programs compile and run, but the problem is that all rays land in the “miss” program. I didn’t change anything in the old code which was working before. So my question is if anyone has any intel on breaking changes that happened during the transition of the OptiX versions. I have read the release notes and didn’t find anything that would cause such a behavior.

I’ve checked then launch_index in the camera program, also implemented the new setUsageReportCallback function to get all the info from OptiX and everything looks fine - no warnings or errors. Geometry is present and rays are being shot.

Also, might be interesting:
OS: OpenSuse 42.3 Linux
GPU: Nvidia M5000M (8GB)
Driver: 396.24

Edit: Messages printed with rtPrintf are reaching only from the ray_generation program. The rtPrintf calls inside mesh_bounds and mesh_intersect never show up! I renamed only the functions in the Cuda file and OptiX crashed accordingly, then I’ve set the new name in the Program creation and it was found again - so I suppose they are called but rtPrintf doesn’t work :/…
The setUsageReportCallback reports:
Level: 2, Tag: INFO, Message: Program cache HIT : mesh_intersect
Level: 2, Tag: INFO, Message: Program cache HIT : mesh_bounds

So if anyone has an idea what might cause this problem I would be grateful for such information.

  • deleted and moved to post #1

First, can you build the set of SDK samples that ship with OptiX and check that optixMeshViewer and other samples work on the same system? Just to rule out any compatibility issues with the driver.

Then try loading geometry in your application that you know works, e.g., the cow mesh from the SDK, or a single triangle, or a unit sphere. Often a disappearing mesh is caused by nan/inf vertices that break the BVH builder.

I should have mentioned that I’ve built all the 5.1 samples and they were all working perfectly.

I will try the cow as you mentioned but isn’t there a way to get info on a broken BVH from OptiX? I would expect some errors/exceptions from OptiX if nan/inf happens. Possible I missed to check a return value on an OptiX function - maybe you can point me to function names I could check? I’ve set setUsageReportCallback to 3 but it’s probably not the right place to look at.

Any luck with the cow?

A nan/inf vertex position could possibly mess up the bounding boxes for the acceleration structure, but it would still be “valid” as far as memory accesses, etc. This would not be caught as an exception or error. I’m shooting in the dark a little bit here – this could turn out to be something else entirely that is making geometry disappear.

I will have some time by the end of this week to test the cow. Thanks a lot for your help!