@@ -150,14 +150,14 @@ __device__ void saveReturnAsHit(const RaytraceRequestContext* ctx, int beamIdx,
150
150
}
151
151
}
152
152
153
- __device__ void saveReturnAsNonHit (const RaytraceRequestContext* ctx, int beamIdx, int returnPointIdx,
153
+ __device__ void saveReturnAsNonHit (const RaytraceRequestContext* ctx, int firstSampleInBeamIdx, int beamIdx, int returnPointIdx,
154
154
rgl_return_type_t returnType)
155
155
{
156
156
// Arbitrary decision - if all samples are non hits, I just take the distance from center ray. This distance will be either
157
157
// ctx.nearNonHitDistance or ctx.farNonHitDistance, based on optix kernel processing - check optixPrograms.cu. This provides
158
- // being able to set below minRange, above maxRange and non hit results with the same code. Moreover, results for sample
159
- // at idx 0 are always present with current implementation.
160
- const auto nonHitDistance = ctx->mrSamples .distance [0 ];
158
+ // being able to set below minRange, above maxRange and non hit results with the same code. Moreover, results for
159
+ // first sample in beam are always present with current implementation.
160
+ const auto nonHitDistance = ctx->mrSamples .distance [firstSampleInBeamIdx ];
161
161
162
162
if (ctx->xyz != nullptr ) {
163
163
const Mat3x4f ray = ctx->raysWorld [beamIdx];
@@ -358,7 +358,7 @@ __global__ void kReduceDivergentBeams(size_t beamCount, int samplesPerBeam, rgl_
358
358
for (int returnIdx = 0 ; returnIdx < returnCount; ++returnIdx) {
359
359
const auto returnPointIdx = beamIdx * returnCount + returnIdx;
360
360
const auto returnType = getReturnType (returnMode, returnIdx);
361
- saveReturnAsNonHit (ctx, beamIdx, returnPointIdx, returnType);
361
+ saveReturnAsNonHit (ctx, firstSampleInBeamIdx, beamIdx, returnPointIdx, returnType);
362
362
}
363
363
return ;
364
364
}
0 commit comments