Skip to content

Commit 4411255

Browse files
nebraszkamsz-rai
andauthored
Refactor raytrace node configurations and introduce non-hit distance handling (#257)
* Add prototype of rgl_node_raytrace_configure_velocity * Add prototype of tape_node_raytrace_configure_velocity * Add invalid_node_object test * Add prototype of rgl_node_raytrace_configure_distortion * Add documentation * Refactor usage of raytrace in motion & with distortion * Changes in the api documentation * Add prototype of raytrace_configure_non_hit_distance_values * Add prototype of raytrace_configure_non_hit_distance_values * Finish implementation and tests * Apply suggestions from code review Co-authored-by: Mateusz Szczygielski <[email protected]> * Review fixes * Re-review fixes --------- Co-authored-by: Mateusz Szczygielski <[email protected]>
1 parent 0db92eb commit 4411255

File tree

13 files changed

+415
-114
lines changed

13 files changed

+415
-114
lines changed

include/rgl/api/core.h

Lines changed: 32 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -563,53 +563,42 @@ RGL_API rgl_status_t rgl_node_points_transform(rgl_node_t* node, const rgl_mat3x
563563
*/
564564
RGL_API rgl_status_t rgl_node_raytrace(rgl_node_t* node, rgl_scene_t scene);
565565

566-
// TODO: Remove this API call on a new release. It is replaced by `rgl_node_raytrace_in_motion`.
567566
/**
568-
* Creates or modifies RaytraceNode.
569-
* The same as rgl_node_raytrace, but it applies velocity distortion additionally.
570-
* To perform raytrace with velocity distortion the time offsets must be set to the rays (using rgl_node_rays_set_time_offsets).
571-
* The velocities passed to that node must be in the local coordinate frame in which rays are described.
572-
* NOTE:
573-
* The distortion takes into account only sensor velocity. The velocity of the objects being scanned by the sensor is not considered.
574-
* Graph input: rays
575-
* Graph output: point cloud (sparse)
576-
* @param node If (*node) == nullptr, a new node will be created. Otherwise, (*node) will be modified.
577-
* @param scene Handle to a scene to perform raytracing on. Pass null to use the default scene
578-
* @param linear_velocity Pointer to a single 3D vector describing the linear velocity of the sensor.
579-
* The velocity is in units per second.
580-
* @param angular_velocity Pointer to a single 3D vector describing the delta angular velocity of the sensor in euler angles (roll, pitch, yaw).
581-
* The velocity is in radians per second.
567+
* Modifies RaytraceNode to apply sensor velocity.
568+
* Necessary for velocity distortion or calculating fields: RGL_FIELD_RELATIVE_VELOCITY_VEC3_F32 and RGL_FIELD_RADIAL_SPEED_F32.
569+
* Relative velocity calculation:
570+
* To calculate relative velocity the pipeline must allow to compute absolute velocities. For more details refer to API calls documentation:
571+
* `rgl_scene_set_time`, `rgl_entity_set_pose`, and `rgl_mesh_update_vertices`
572+
* @param node RaytraceNode to modify
573+
* @param linear_velocity 3D vector for linear velocity in units per second.
574+
* @param angular_velocity 3D vector for angular velocity in radians per second (roll, pitch, yaw).
582575
*/
583-
RGL_API rgl_status_t rgl_node_raytrace_with_distortion(rgl_node_t* node, rgl_scene_t scene, const rgl_vec3f* linear_velocity,
584-
const rgl_vec3f* angular_velocity);
576+
RGL_API rgl_status_t rgl_node_raytrace_configure_velocity(rgl_node_t node, const rgl_vec3f* linear_velocity,
577+
const rgl_vec3f* angular_velocity);
585578

586579
/**
587-
* Creates or modifies RaytraceNode.
588-
* The same as rgl_node_raytrace, but it provides sensor's velocity to the pipeline.
589-
* It is required to perform velocity distortion or calculate fields: RGL_FIELD_RELATIVE_VELOCITY_VEC3_F32 and RGL_FIELD_RADIAL_SPEED_F32
590-
*
591-
* Velocity distortion:
592-
* To perform raytrace with velocity distortion the time offsets must be set to the rays (using rgl_node_rays_set_time_offsets).
593-
* The velocities passed to that node must be in the local coordinate frame in which rays are described.
580+
* Modifies RaytraceNode to apply sensor distortion.
581+
* Requires time offsets set to rays using rgl_node_rays_set_time_offsets.
594582
* NOTE:
595583
* The distortion takes into account only sensor velocity. The velocity of the objects being scanned by the sensor is not considered.
596-
*
597-
* Relative velocity calculation:
598-
* To calculate relative velocity the pipeline must allow to compute absolute velocities. For more details refer to API calls documentation:
599-
* `rgl_scene_set_time`, `rgl_entity_set_pose`, and `rgl_mesh_update_vertices`
600-
*
601-
* Graph input: rays
602-
* Graph output: point cloud (sparse)
603-
* @param node If (*node) == nullptr, a new node will be created. Otherwise, (*node) will be modified.
604-
* @param scene Handle to a scene to perform raytracing on. Pass null to use the default scene
605-
* @param linear_velocity Pointer to a single 3D vector describing the linear velocity of the sensor.
606-
* The velocity is in units per second.
607-
* @param angular_velocity Pointer to a single 3D vector describing the delta angular velocity of the sensor in euler angles (roll, pitch, yaw).
608-
* The velocity is in radians per second.
609-
* @param apply_ray_distortion If true, velocity distortion feature will be enabled.
584+
* Use rgl_node_raytrace_configure_velocity to set sensor velocity.
585+
* @param node RaytraceNode to modify
586+
* @param enable If true, velocity distortion feature will be enabled.
587+
*/
588+
RGL_API rgl_status_t rgl_node_raytrace_configure_distortion(rgl_node_t node, bool enable);
589+
590+
/**
591+
* Modifies RaytraceNode to set non-hit values for distance.
592+
* Default non-hit value for the RGL_FIELD_DISTANCE_F32 field is set to infinity.
593+
* This function allows to set custom values:
594+
* - for non-hits closer than a minimum range (`near`),
595+
* - for non-hits beyond a maximum range (`far`).
596+
* Concurrently, it computes the RGL_FIELD_XYZ_VEC3_F32 field for these non-hit scenarios based on these distances, along with ray origin and direction.
597+
* @param node RaytraceNode to modify.
598+
* @param near Distance value for non-hits closer than minimum range.
599+
* @param far Distance value for non-hits beyond maximum range.
610600
*/
611-
RGL_API rgl_status_t rgl_node_raytrace_in_motion(rgl_node_t* node, rgl_scene_t scene, const rgl_vec3f* linear_velocity,
612-
const rgl_vec3f* angular_velocity, bool apply_ray_distortion);
601+
RGL_API rgl_status_t rgl_node_raytrace_configure_non_hits(rgl_node_t node, float near, float far);
613602

614603
/**
615604
* Creates or modifies FormatPointsNode.
@@ -641,7 +630,7 @@ RGL_API rgl_status_t rgl_node_points_yield(rgl_node_t* node, const rgl_field_t*
641630
* Graph output: point cloud (compacted)
642631
* @param node If (*node) == nullptr, a new Node will be created. Otherwise, (*node) will be modified.
643632
*/
644-
RGL_API [[ deprecated("Use rgl_node_points_compact_by_field(rgl_node_t* node, rgl_field_t field) instead.") ]] rgl_status_t
633+
RGL_API [[deprecated("Use rgl_node_points_compact_by_field(rgl_node_t* node, rgl_field_t field) instead.")]] rgl_status_t
645634
rgl_node_points_compact(rgl_node_t* node);
646635

647636
/**
@@ -734,7 +723,8 @@ RGL_API rgl_status_t rgl_node_points_radar_postprocess(rgl_node_t* node, float d
734723
* @param sensor_up_vector Pointer to single Vec3 describing up vector of depended frame.
735724
* @param ground_angle_threshold The maximum angle between the sensor's ray and the normal vector of the hit point in radians.
736725
*/
737-
RGL_API rgl_status_t rgl_node_points_filter_ground(rgl_node_t* node, const rgl_vec3f* sensor_up_vector, float ground_angle_threshold);
726+
RGL_API rgl_status_t rgl_node_points_filter_ground(rgl_node_t* node, const rgl_vec3f* sensor_up_vector,
727+
float ground_angle_threshold);
738728

739729
/**
740730
* Creates or modifies GaussianNoiseAngularRaysNode.

src/RGLFields.hpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@
3131
* - test/include/helpers/testPointCloud.hpp: add/delete fieldGenerator inside fieldGenerators
3232
*/
3333

34-
#define NON_HIT_VALUE FLT_MAX
35-
3634
typedef unsigned char TextureTexelFormat;
3735

3836
// Shorter versions to avoid long type names
@@ -117,7 +115,7 @@ FIELD(XYZ_VEC3_F32, Vec3f);
117115
FIELD(RAY_IDX_U32, uint32_t); // PCL uses uint32_t
118116
FIELD(ENTITY_ID_I32, int32_t);
119117
FIELD(INTENSITY_F32, float);
120-
FIELD(IS_HIT_I32, int32_t); // Signed may be faster
118+
FIELD(IS_HIT_I32, int32_t); // Signed may be faster
121119
FIELD(IS_GROUND_I32, int32_t); // Signed may be faster
122120
FIELD(DISTANCE_F32, float);
123121
FIELD(AZIMUTH_F32, float);

src/api/apiCore.cpp

Lines changed: 45 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -812,10 +812,6 @@ RGL_API rgl_status_t rgl_node_raytrace(rgl_node_t* node, rgl_scene_t scene)
812812

813813
createOrUpdateNode<RaytraceNode>(node);
814814
auto raytraceNode = Node::validatePtr<RaytraceNode>(*node);
815-
// Clear velocity that could be set by rgl_node_raytrace_in_motion
816-
raytraceNode->setVelocity(Vec3f{0, 0, 0}, Vec3f{0, 0, 0});
817-
// Disable ray distortion that could be set by rgl_node_raytrace_in_motion
818-
raytraceNode->enableRayDistortion(false);
819815
});
820816
TAPE_HOOK(node, scene);
821817
return status;
@@ -829,46 +825,67 @@ void TapeCore::tape_node_raytrace(const YAML::Node& yamlNode, PlaybackState& sta
829825
state.nodes.insert({nodeId, node});
830826
}
831827

832-
RGL_API rgl_status_t rgl_node_raytrace_with_distortion(rgl_node_t* node, rgl_scene_t scene, const rgl_vec3f* linear_velocity,
833-
const rgl_vec3f* angular_velocity)
828+
RGL_API rgl_status_t rgl_node_raytrace_configure_velocity(rgl_node_t node, const rgl_vec3f* linear_velocity,
829+
const rgl_vec3f* angular_velocity)
834830
{
835-
return rgl_node_raytrace_in_motion(node, scene, linear_velocity, angular_velocity, true);
831+
auto status = rglSafeCall([&]() {
832+
RGL_API_LOG("rgl_node_raytrace_configure_velocity(node={}, linear_velocity={}, angular_velocity={})", repr(node),
833+
repr(linear_velocity), repr(angular_velocity));
834+
CHECK_ARG(node != nullptr);
835+
CHECK_ARG(linear_velocity != nullptr);
836+
CHECK_ARG(angular_velocity != nullptr);
837+
RaytraceNode::Ptr raytraceNode = Node::validatePtr<RaytraceNode>(node);
838+
raytraceNode->setVelocity(*reinterpret_cast<const Vec3f*>(linear_velocity),
839+
*reinterpret_cast<const Vec3f*>(angular_velocity));
840+
});
841+
TAPE_HOOK(node, linear_velocity, angular_velocity);
842+
return status;
836843
}
837844

838-
void TapeCore::tape_node_raytrace_with_distortion(const YAML::Node& yamlNode, PlaybackState& state)
845+
void TapeCore::tape_node_raytrace_configure_velocity(const YAML::Node& yamlNode, PlaybackState& state)
839846
{
840-
return tape_node_raytrace_in_motion(yamlNode, state);
847+
auto nodeId = yamlNode[0].as<TapeAPIObjectID>();
848+
rgl_node_t node = state.nodes.at(nodeId);
849+
rgl_node_raytrace_configure_velocity(state.nodes.at(nodeId), state.getPtr<const rgl_vec3f>(yamlNode[1]),
850+
state.getPtr<const rgl_vec3f>(yamlNode[2]));
841851
}
842852

843-
RGL_API rgl_status_t rgl_node_raytrace_in_motion(rgl_node_t* node, rgl_scene_t scene, const rgl_vec3f* linear_velocity,
844-
const rgl_vec3f* angular_velocity, bool apply_ray_distortion)
853+
RGL_API rgl_status_t rgl_node_raytrace_configure_distortion(rgl_node_t node, bool enable)
845854
{
846855
auto status = rglSafeCall([&]() {
847-
RGL_API_LOG(
848-
"rgl_node_raytrace_in_motion(node={}, scene={}, linear_velocity={}, angular_velocity={}, apply_ray_distortion={})",
849-
repr(node), (void*) scene, repr(linear_velocity), repr(angular_velocity), apply_ray_distortion);
856+
RGL_API_LOG("rgl_node_raytrace_configure_distortion(node={}, enable={})", repr(node), enable);
850857
CHECK_ARG(node != nullptr);
851-
CHECK_ARG(linear_velocity != nullptr);
852-
CHECK_ARG(angular_velocity != nullptr);
853-
CHECK_ARG(scene == nullptr);
858+
RaytraceNode::Ptr raytraceNode = Node::validatePtr<RaytraceNode>(node);
859+
raytraceNode->enableRayDistortion(enable);
860+
});
861+
TAPE_HOOK(node, enable);
862+
return status;
863+
}
854864

855-
createOrUpdateNode<RaytraceNode>(node);
856-
auto raytraceNode = Node::validatePtr<RaytraceNode>(*node);
857-
raytraceNode->setVelocity(*reinterpret_cast<const Vec3f*>(linear_velocity),
858-
*reinterpret_cast<const Vec3f*>(angular_velocity));
859-
raytraceNode->enableRayDistortion(apply_ray_distortion);
865+
void TapeCore::tape_node_raytrace_configure_distortion(const YAML::Node& yamlNode, PlaybackState& state)
866+
{
867+
auto nodeId = yamlNode[0].as<TapeAPIObjectID>();
868+
rgl_node_t node = state.nodes.at(nodeId);
869+
rgl_node_raytrace_configure_distortion(node, yamlNode[1].as<bool>());
870+
}
871+
872+
RGL_API rgl_status_t rgl_node_raytrace_configure_non_hits(rgl_node_t node, float near, float far)
873+
{
874+
auto status = rglSafeCall([&]() {
875+
RGL_API_LOG("rgl_node_raytrace_configure_non_hits(node={}, near={}, far={})", repr(node), near, far);
876+
CHECK_ARG(node != nullptr);
877+
RaytraceNode::Ptr raytraceNode = Node::validatePtr<RaytraceNode>(node);
878+
raytraceNode->setNonHitDistanceValues(near, far);
860879
});
861-
TAPE_HOOK(node, scene, linear_velocity, angular_velocity);
880+
TAPE_HOOK(node, near, far);
862881
return status;
863882
}
864883

865-
void TapeCore::tape_node_raytrace_in_motion(const YAML::Node& yamlNode, PlaybackState& state)
884+
void TapeCore::tape_node_raytrace_configure_non_hits(const YAML::Node& yamlNode, PlaybackState& state)
866885
{
867886
auto nodeId = yamlNode[0].as<TapeAPIObjectID>();
868-
rgl_node_t node = state.nodes.contains(nodeId) ? state.nodes.at(nodeId) : nullptr;
869-
rgl_node_raytrace_with_distortion(&node, nullptr, state.getPtr<const rgl_vec3f>(yamlNode[2]),
870-
state.getPtr<const rgl_vec3f>(yamlNode[3]));
871-
state.nodes.insert({nodeId, node});
887+
rgl_node_t node = state.nodes.at(nodeId);
888+
rgl_node_raytrace_configure_non_hits(node, yamlNode[1].as<float>(), yamlNode[2].as<float>());
872889
}
873890

874891
RGL_API rgl_status_t rgl_node_points_format(rgl_node_t* node, const rgl_field_t* fields, int32_t field_count)

src/gpu/RaytraceRequestContext.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ struct RaytraceRequestContext
2424
Vec3f sensorAngularVelocityRPY;
2525
bool doApplyDistortion;
2626

27+
float nearNonHitDistance;
28+
float farNonHitDistance;
29+
2730
const Mat3x4f* rays;
2831
size_t rayCount;
2932

src/gpu/optixPrograms.cu

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,9 @@ __forceinline__ __device__ Vec3f decodePayloadVec3f(const Vec3fPayload& src)
5656
}
5757

5858
template<bool isFinite>
59-
__forceinline__ __device__ void saveRayResult(const Vec3f& xyz = Vec3f{NON_HIT_VALUE, NON_HIT_VALUE, NON_HIT_VALUE},
60-
float distance = NON_HIT_VALUE, float intensity = 0,
61-
const int objectID = RGL_ENTITY_INVALID_ID, const Vec3f& absVelocity = Vec3f{NAN},
62-
const Vec3f& relVelocity = Vec3f{NAN}, float radialSpeed = NAN,
63-
const Vec3f& normal = Vec3f{NAN}, float incidentAngle = NAN)
59+
__forceinline__ __device__ void saveRayResult(const Vec3f& xyz, float distance, float intensity, const int objectID,
60+
const Vec3f& absVelocity, const Vec3f& relVelocity, float radialSpeed,
61+
const Vec3f& normal, float incidentAngle)
6462
{
6563
const int rayIdx = optixGetLaunchIndex().x;
6664
if (ctx.xyz != nullptr) {
@@ -105,10 +103,22 @@ __forceinline__ __device__ void saveRayResult(const Vec3f& xyz = Vec3f{NON_HIT_V
105103
}
106104
}
107105

106+
__forceinline__ __device__ void saveNonHitRayResult(float nonHitDistance)
107+
{
108+
Mat3x4f ray = ctx.rays[optixGetLaunchIndex().x];
109+
Vec3f origin = ray * Vec3f{0, 0, 0};
110+
Vec3f dir = ray * Vec3f{0, 0, 1} - origin;
111+
Vec3f displacement = dir.normalized() * nonHitDistance;
112+
displacement = {isnan(displacement.x()) ? 0 : displacement.x(), isnan(displacement.y()) ? 0 : displacement.y(),
113+
isnan(displacement.z()) ? 0 : displacement.z()};
114+
Vec3f xyz = origin + displacement;
115+
saveRayResult<false>(xyz, nonHitDistance, 0, RGL_ENTITY_INVALID_ID, Vec3f{NAN}, Vec3f{NAN}, NAN, Vec3f{NAN}, NAN);
116+
}
117+
108118
extern "C" __global__ void __raygen__()
109119
{
110120
if (ctx.scene == 0) {
111-
saveRayResult<false>();
121+
saveNonHitRayResult(ctx.farNonHitDistance);
112122
return;
113123
}
114124

@@ -177,7 +187,7 @@ extern "C" __global__ void __closesthit__()
177187

178188
float minRange = ctx.rayRangesCount == 1 ? ctx.rayRanges[0].x() : ctx.rayRanges[optixGetLaunchIndex().x].x();
179189
if (distance < minRange) {
180-
saveRayResult<false>();
190+
saveNonHitRayResult(ctx.nearNonHitDistance);
181191
return;
182192
}
183193

@@ -266,6 +276,6 @@ extern "C" __global__ void __closesthit__()
266276
incidentAngle);
267277
}
268278

269-
extern "C" __global__ void __miss__() { saveRayResult<false>(); }
279+
extern "C" __global__ void __miss__() { saveNonHitRayResult(ctx.farNonHitDistance); }
270280

271281
extern "C" __global__ void __anyhit__() {}

src/graph/NodesCore.hpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ struct RaytraceNode : IPointsNode
125125
// RaytraceNode specific
126126
void setVelocity(const Vec3f& linearVelocity, const Vec3f& angularVelocity);
127127
void enableRayDistortion(bool enabled) { doApplyDistortion = enabled; }
128+
void setNonHitDistanceValues(float near, float far);
128129

129130
private:
130131
IRaysNode::Ptr raysNode;
@@ -134,6 +135,9 @@ struct RaytraceNode : IPointsNode
134135
Vec3f sensorLinearVelocityXYZ{0, 0, 0};
135136
Vec3f sensorAngularVelocityRPY{0, 0, 0};
136137

138+
float nearNonHitDistance{std::numeric_limits<float>::infinity()};
139+
float farNonHitDistance{std::numeric_limits<float>::infinity()};
140+
137141
HostPinnedArray<RaytraceRequestContext>::Ptr requestCtxHst = HostPinnedArray<RaytraceRequestContext>::create();
138142
DeviceAsyncArray<RaytraceRequestContext>::Ptr requestCtxDev = DeviceAsyncArray<RaytraceRequestContext>::create(arrayMgr);
139143

@@ -546,5 +550,6 @@ struct FilterGroundPointsNode : IPointsNodeSingleInput
546550
private:
547551
Vec3f sensor_up_vector;
548552
float ground_angle_threshold;
549-
DeviceAsyncArray<Field<IS_GROUND_I32>::type>::Ptr outNonGround = DeviceAsyncArray<Field<IS_GROUND_I32>::type>::create(arrayMgr);
553+
DeviceAsyncArray<Field<IS_GROUND_I32>::type>::Ptr outNonGround = DeviceAsyncArray<Field<IS_GROUND_I32>::type>::create(
554+
arrayMgr);
550555
};

src/graph/RaytraceNode.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ void RaytraceNode::enqueueExecImpl()
8282
.sensorLinearVelocityXYZ = sensorLinearVelocityXYZ,
8383
.sensorAngularVelocityRPY = sensorAngularVelocityRPY,
8484
.doApplyDistortion = doApplyDistortion,
85+
.nearNonHitDistance = nearNonHitDistance,
86+
.farNonHitDistance = farNonHitDistance,
8587
.rays = raysPtr,
8688
.rayCount = raysNode->getRayCount(),
8789
.rayOriginToWorld = raysNode->getCumulativeRayTransfrom(),
@@ -169,3 +171,9 @@ void RaytraceNode::setVelocity(const Vec3f& linearVelocity, const Vec3f& angular
169171
sensorLinearVelocityXYZ = linearVelocity;
170172
sensorAngularVelocityRPY = angularVelocity;
171173
}
174+
175+
void RaytraceNode::setNonHitDistanceValues(float near, float far)
176+
{
177+
nearNonHitDistance = near;
178+
farNonHitDistance = far;
179+
}

src/tape/TapeCore.hpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,9 @@ class TapeCore
5050
static void tape_node_rays_transform(const YAML::Node& yamlNode, PlaybackState& state);
5151
static void tape_node_points_transform(const YAML::Node& yamlNode, PlaybackState& state);
5252
static void tape_node_raytrace(const YAML::Node& yamlNode, PlaybackState& state);
53-
static void tape_node_raytrace_with_distortion(const YAML::Node& yamlNode, PlaybackState& state);
54-
static void tape_node_raytrace_in_motion(const YAML::Node& yamlNode, PlaybackState& state);
53+
static void tape_node_raytrace_configure_velocity(const YAML::Node& yamlNode, PlaybackState& state);
54+
static void tape_node_raytrace_configure_distortion(const YAML::Node& yamlNode, PlaybackState& state);
55+
static void tape_node_raytrace_configure_non_hits(const YAML::Node& yamlNode, PlaybackState& state);
5556
static void tape_node_points_format(const YAML::Node& yamlNode, PlaybackState& state);
5657
static void tape_node_points_yield(const YAML::Node& yamlNode, PlaybackState& state);
5758
static void tape_node_points_compact(const YAML::Node& yamlNode, PlaybackState& state);
@@ -100,8 +101,9 @@ class TapeCore
100101
TAPE_CALL_MAPPING("rgl_node_rays_transform", TapeCore::tape_node_rays_transform),
101102
TAPE_CALL_MAPPING("rgl_node_points_transform", TapeCore::tape_node_points_transform),
102103
TAPE_CALL_MAPPING("rgl_node_raytrace", TapeCore::tape_node_raytrace),
103-
TAPE_CALL_MAPPING("rgl_node_raytrace_with_distortion", TapeCore::tape_node_raytrace_with_distortion),
104-
TAPE_CALL_MAPPING("rgl_node_raytrace_in_motion", TapeCore::tape_node_raytrace_in_motion),
104+
TAPE_CALL_MAPPING("rgl_node_raytrace_configure_velocity", TapeCore::tape_node_raytrace_configure_velocity),
105+
TAPE_CALL_MAPPING("rgl_node_raytrace_configure_distortion", TapeCore::tape_node_raytrace_configure_distortion),
106+
TAPE_CALL_MAPPING("rgl_node_raytrace_configure_non_hits", TapeCore::tape_node_raytrace_configure_non_hits),
105107
TAPE_CALL_MAPPING("rgl_node_points_format", TapeCore::tape_node_points_format),
106108
TAPE_CALL_MAPPING("rgl_node_points_yield", TapeCore::tape_node_points_yield),
107109
TAPE_CALL_MAPPING("rgl_node_points_compact", TapeCore::tape_node_points_compact),

0 commit comments

Comments
 (0)