Difference between ray types in Optix Prime

Hi, I have started to use Optix Prime for just some weeks, and I have no problems compiling it and using it, but I have some optimization concerns, and the Optix Programming Guide does not go into many details regarding Optix Prime. First of all, I’m using it to further improve my raytracer, and what I need over all is speed (that’s why I chose to use Prime).

My question is, how exactly is the ray type RTP_BUFFER_FORMAT_RAY_ORIGIN_DIRECTION different from RTP_BUFFER_FORMAT_RAY_ORIGIN_TMIN_DIRECTION_TMAX?

-I understand that the main difference is the size and that transferring a huge amount of rays would be slightly slower using the “t_min_t_max”, just because there are 8 more bytes per ray to be transferred. But is the “just-origin_direction” version test rays from t_min = 0 to t_max = HUGE_VALUE?

-The simplePrime sample uses RTP_BUFFER_FORMAT_RAY_ORIGIN_TMIN_DIRECTION_TMAX with t_min=0, t_max=1e34f fixed values, so wouldn’t it be better to just use ray type RTP_BUFFER_FORMAT_RAY_ORIGIN_DIRECTION instead?

-In what kind of scenario would it be useful to specify the t_min, t_max values?

Thanks!

You got that right.

First two questions:
Yes, the OptiX API Reference Guide also outlines the exact structure in the enum RTPbufferformat section.
Yes, it’s just that the Ray::format defined in simplePrimeCommon.h is used in more than one example

For example:
t_min to avoid self intersections.
t_max when sampling shadow rays to positional light sources or ambient occlusion rays with limited range.