@@ -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 () :
@@ -133,8 +133,10 @@ void RaytraceNode::enqueueExecImpl()
133
133
CHECK_OPTIX (optixLaunch (Optix::getOrCreate ().pipeline , getStreamHandle (), pipelineArgsPtr, pipelineArgsSize, &sceneSBT,
134
134
launchDims.x , launchDims.y , launchDims.y ));
135
135
136
- gpuProcessBeamSamplesFirstLast (getStreamHandle (), raysNode->getRayCount (), MULTI_RETURN_BEAM_SAMPLES,
137
- mrSamples.getPointers (), mrFirst.getPointers (), mrLast.getPointers ());
136
+ if (beamHalfDivergence > 0 .0f ) {
137
+ gpuProcessBeamSamplesFirstLast (getStreamHandle (), raysNode->getRayCount (), MULTI_RETURN_BEAM_SAMPLES,
138
+ mrSamples.getPointers (), mrFirst.getPointers (), mrLast.getPointers (), raysPtr);
139
+ }
138
140
}
139
141
140
142
IAnyArray::ConstPtr RaytraceNode::getFieldDataMultiReturn (rgl_field_t field, rgl_return_type_t type)
@@ -144,15 +146,15 @@ IAnyArray::ConstPtr RaytraceNode::getFieldDataMultiReturn(rgl_field_t field, rgl
144
146
case XYZ_VEC3_F32: return mrFirst.xyz ;
145
147
case DISTANCE_F32: return mrFirst.distance ;
146
148
case IS_HIT_I32: return mrFirst.isHit ;
147
- default : throw InvalidPipeline ( fmt::format ( " Multi-Return not supported for this field ({}) " , toString (field)) );
149
+ default : return getFieldData ( field);
148
150
}
149
151
}
150
152
if (type == RGL_RETURN_TYPE_LAST) {
151
153
switch (field) {
152
154
case XYZ_VEC3_F32: return mrLast.xyz ;
153
155
case DISTANCE_F32: return mrLast.distance ;
154
156
case IS_HIT_I32: return mrLast.isHit ;
155
- default : throw InvalidPipeline ( fmt::format ( " Multi-Return not supported for this field ({}) " , toString (field)) );
157
+ default : return getFieldData ( field);
156
158
}
157
159
}
158
160
throw InvalidPipeline (fmt::format (" Unknown multi-return type ({})" , type));
0 commit comments