Issue with inline raytracing CommittedTriangleFrontFace

Hi, im having an issue when i use the call to RayQuery::CommittedTriangleFrontFace in a inline raytracing context all the other calls to RayQuery::Committed*** functions return 0.
The same code executes fine and calls to RayQuery::Committed*** return the right values when RayQuery::CommittedTriangleFrontFace is not called.
Is anybody having this same issue or knows what could be wrong?

Im running on:

  • Windows 10
  • DirectX 12 Ultimate
  • RTX 2070 Super
  • 461.72 Studio Drivers

Here goes a sample code snippet:
RayDesc ray;
ray.Origin = origin;
ray.Direction = direction;
ray.TMin = 0.01;
ray.TMax = 1000.0;

RayQuery<RAY_FLAG_NONE> query;
query.TraceRayInline(bvh, 0, 0xFF, ray);
query.Proceed();

if (query.CommittedStatus() == COMMITTED_TRIANGLE_HIT)
{
//const bool isFrontFace = query.CommittedTriangleFrontFace(); // uncomment this makes all the other calls to return zero
const uint primitiveIdx = query.CommittedPrimitiveIndex();
const uint geometryIdx = query.CommittedGeometryIndex();
const float2 barycentrics = query.CommittedTriangleBarycentrics();
… code …
}

Thanks
Nuno

2 Likes

Looks like the underlying issue has recently been detected and picked up.

The issue results from not using the Proceed call return value.
Possible workaround:

while (q.Proceed()) {}

instead of

q.Proceed()