16 #ifdef KERNEL_INTEGRATE_TRAJECTORY 45 const float dl,
float *l_trajectory,
const float2 vec,
const float2 prev_vec,
46 uint *n_steps, uint *idx, uint *prev_idx,
47 __global char2 *trajectory_vec, __global
const bool *mask_array,
48 __global uint *slt_array, __global uint *slc_array) {
54 trajectory_vec[*n_steps] =
compress(vec-prev_vec);
58 check_atomic_write_sl_data(*idx, prev_idx, mask_array[*idx],
59 &slt_array[*idx], &slc_array[*idx], *l_trajectory);
63 #ifdef KERNEL_INTEGRATE_TRAJECTORY 89 float dl,
float *l_trajectory, float2 vec, float2 prev_vec,
90 uint *n_steps, uint *idx, uint *prev_idx,
91 __global
const bool *mask_array,
92 __global uint *slt_array, __global uint *slc_array) {
102 &slt_array[*idx], &slc_array[*idx], *l_trajectory);
106 #ifdef KERNEL_INTEGRATE_TRAJECTORY 126 float dl,
float *l_trajectory, float2 vec, float2 prev_vec,
127 uint *n_steps, __global char2 *trajectory_vec) {
132 trajectory_vec[*n_steps] =
compress(vec-prev_vec);
137 #ifdef KERNEL_CONNECT_CHANNELS 157 float dl,
float *l_trajectory, float2 vec, float2 prev_vec,
158 uint *n_steps, __private char2 *trajectory_vec) {
163 trajectory_vec[*n_steps] =
compress(vec-prev_vec);
168 #ifdef KERNEL_HILLSLOPE_LENGTHS 183 float dl,
float *l_trajectory, uint *n_steps) {
192 #ifdef KERNEL_INTEGRATE_TRAJECTORY 215 __global ushort *traj_nsteps_array,
216 __global
float *traj_length_array) {
218 traj_nsteps_array[global_id] = n_steps;
219 traj_length_array[global_id] = l_trajectory;
static void update_trajectory(float dl, float *l_trajectory, uint *n_steps)
Update variables tracking trajectory length and integration step counter.
static void update_trajectory_write_sl_data(float dl, float *l_trajectory, float2 vec, float2 prev_vec, uint *n_steps, uint *idx, uint *prev_idx, __global const bool *mask_array, __global uint *slt_array, __global uint *slc_array)
Update variables tracking trajectory length and integration step counter.
static void update_record_private_trajectory(float dl, float *l_trajectory, float2 vec, float2 prev_vec, uint *n_steps, __private char2 *trajectory_vec)
Update variables tracking trajectory length and integration step counter.
static char2 compress(float2 raw_vector)
Squish a float vector into a byte vector for O(<1 pixel) trajectory steps Achieved through scaling by...
static void finalize_trajectory(const uint global_id, uint n_steps, float l_trajectory, __global ushort *traj_nsteps_array, __global float *traj_length_array)
Record the (final) trajectory length and count of integration steps to global arrays traj_length_arra...
static uint get_array_idx(float2 vec)
Compute the array index of the padded grid pixel pointed to by a float2 grid position vector (choice ...
static void check_atomic_write_sl_data(const uint idx, uint *prev_idx, const bool mask_flag, __global uint *slt, __global uint *slc, const float l_trajectory)
Extended version of atomic_write_sl_data() to include testing whether the current pixel is masked...
static void update_record_trajectory(float dl, float *l_trajectory, float2 vec, float2 prev_vec, uint *n_steps, __global char2 *trajectory_vec)
Update variables tracking trajectory length and integration step counter.
static void update_record_trajectory_write_sl_data(const float dl, float *l_trajectory, const float2 vec, const float2 prev_vec, uint *n_steps, uint *idx, uint *prev_idx, __global char2 *trajectory_vec, __global const bool *mask_array, __global uint *slt_array, __global uint *slc_array)
Update variables tracking trajectory length and integration step counter.