@@ -94,7 +94,7 @@ void RaytraceNode::enqueueExecImpl()
94
94
.doApplyDistortion = doApplyDistortion,
95
95
.nearNonHitDistance = nearNonHitDistance,
96
96
.farNonHitDistance = farNonHitDistance,
97
- .rays = raysPtr,
97
+ .raysWorld = raysPtr,
98
98
.rayCount = raysNode->getRayCount (),
99
99
.rayOriginToWorld = raysNode->getCumulativeRayTransfrom (),
100
100
.rayRanges = rayRanges.has_value () ? (*rayRanges)->asSubclass <DeviceAsyncArray>()->getReadPtr () :
@@ -134,8 +134,10 @@ void RaytraceNode::enqueueExecImpl()
134
134
CHECK_OPTIX (optixLaunch (Optix::getOrCreate ().pipeline , getStreamHandle (), pipelineArgsPtr, pipelineArgsSize, &sceneSBT,
135
135
launchDims.x , launchDims.y , launchDims.y ));
136
136
137
- gpuProcessBeamSamplesFirstLast (getStreamHandle (), raysNode->getRayCount (), MULTI_RETURN_BEAM_SAMPLES,
138
- mrSamples.getPointers (), mrFirst.getPointers (), mrLast.getPointers ());
137
+ if (beamHalfDivergence > 0 .0f ) {
138
+ gpuProcessBeamSamplesFirstLast (getStreamHandle (), raysNode->getRayCount (), MULTI_RETURN_BEAM_SAMPLES,
139
+ mrSamples.getPointers (), mrFirst.getPointers (), mrLast.getPointers (), raysPtr);
140
+ }
139
141
}
140
142
141
143
IAnyArray::ConstPtr RaytraceNode::getFieldDataMultiReturn (rgl_field_t field, rgl_return_type_t type)
@@ -145,15 +147,15 @@ IAnyArray::ConstPtr RaytraceNode::getFieldDataMultiReturn(rgl_field_t field, rgl
145
147
case XYZ_VEC3_F32: return mrFirst.xyz ;
146
148
case DISTANCE_F32: return mrFirst.distance ;
147
149
case IS_HIT_I32: return mrFirst.isHit ;
148
- default : throw InvalidPipeline ( fmt::format ( " Multi-Return not supported for this field ({}) " , toString (field)) );
150
+ default : return getFieldData ( field);
149
151
}
150
152
}
151
153
if (type == RGL_RETURN_TYPE_LAST) {
152
154
switch (field) {
153
155
case XYZ_VEC3_F32: return mrLast.xyz ;
154
156
case DISTANCE_F32: return mrLast.distance ;
155
157
case IS_HIT_I32: return mrLast.isHit ;
156
- default : throw InvalidPipeline ( fmt::format ( " Multi-Return not supported for this field ({}) " , toString (field)) );
158
+ default : return getFieldData ( field);
157
159
}
158
160
}
159
161
throw InvalidPipeline (fmt::format (" Unknown multi-return type ({})" , type));
0 commit comments