slm: OpenCL code base  0.1
Macros | Functions
label.cl File Reference

Kernel to map channel confluences and identify their major & minor upstream pixels. More...

Go to the source code of this file.

Macros

#define CHECK_INFLOWS(here_idx, nbr_vec)
 
#define CHECK_E_INFLOWS(idx, vec)   CHECK_INFLOWS(idx,(float2)(vec[0]+1.0f, vec[1] ))
 
#define CHECK_NE_INFLOWS(idx, vec)   CHECK_INFLOWS(idx,(float2)(vec[0]+1.0f, vec[1]+1.0f ))
 
#define CHECK_N_INFLOWS(idx, vec)   CHECK_INFLOWS(idx,(float2)(vec[0], vec[1]+1.0f ))
 
#define CHECK_NW_INFLOWS(idx, vec)   CHECK_INFLOWS(idx,(float2)(vec[0]-1.0f, vec[1]+1.0f ))
 
#define CHECK_W_INFLOWS(idx, vec)   CHECK_INFLOWS(idx,(float2)(vec[0]-1.0f, vec[1] ))
 
#define CHECK_SW_INFLOWS(idx, vec)   CHECK_INFLOWS(idx,(float2)(vec[0]-1.0f, vec[1]-1.0f ))
 
#define CHECK_S_INFLOWS(idx, vec)   CHECK_INFLOWS(idx,(float2)(vec[0], vec[1]-1.0f ))
 
#define CHECK_SE_INFLOWS(idx, vec)   CHECK_INFLOWS(idx,(float2)(vec[0]+1.0f, vec[1]-1.0f ))
 

Functions

__kernel void label_confluences (__global const float2 *seed_point_array, __global const bool *mask_array, __global const float2 *uv_array, __global const float *slt_array, __global uint *mapping_array, __global const uint *count_array, __global const uint *link_array)
 Flag if a pixel IS_MAJORCONFLUENCE and if so flag which upstream pixel IS_MAJORINFLOW or IS_MINORINFLOW. More...
 

Detailed Description

Kernel to map channel confluences and identify their major & minor upstream pixels.

Author
CPS
Bug:
No known bugs

Definition in file label.cl.

Macro Definition Documentation

◆ CHECK_E_INFLOWS

#define CHECK_E_INFLOWS (   idx,
  vec 
)    CHECK_INFLOWS(idx,(float2)(vec[0]+1.0f, vec[1] ))

Definition at line 22 of file label.cl.

◆ CHECK_INFLOWS

#define CHECK_INFLOWS (   here_idx,
  nbr_vec 
)
Value:
{ \
nbr_idx = get_array_idx(nbr_vec); \
if ( !mask_array[nbr_idx] && (mapping_array[nbr_idx]&IS_THINCHANNEL) ) { \
if ( link_array[nbr_idx]==here_idx ) { \
/* The nbr pixel flows into here */ \
inflows_list[n_inflows++] = nbr_idx; \
} \
} \
}
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 ...
Definition: essentials.cl:62
#define IS_THINCHANNEL
Definition: info.h:97

Definition at line 12 of file label.cl.

◆ CHECK_N_INFLOWS

#define CHECK_N_INFLOWS (   idx,
  vec 
)    CHECK_INFLOWS(idx,(float2)(vec[0], vec[1]+1.0f ))

Definition at line 24 of file label.cl.

◆ CHECK_NE_INFLOWS

#define CHECK_NE_INFLOWS (   idx,
  vec 
)    CHECK_INFLOWS(idx,(float2)(vec[0]+1.0f, vec[1]+1.0f ))

Definition at line 23 of file label.cl.

◆ CHECK_NW_INFLOWS

#define CHECK_NW_INFLOWS (   idx,
  vec 
)    CHECK_INFLOWS(idx,(float2)(vec[0]-1.0f, vec[1]+1.0f ))

Definition at line 25 of file label.cl.

◆ CHECK_S_INFLOWS

#define CHECK_S_INFLOWS (   idx,
  vec 
)    CHECK_INFLOWS(idx,(float2)(vec[0], vec[1]-1.0f ))

Definition at line 28 of file label.cl.

◆ CHECK_SE_INFLOWS

#define CHECK_SE_INFLOWS (   idx,
  vec 
)    CHECK_INFLOWS(idx,(float2)(vec[0]+1.0f, vec[1]-1.0f ))

Definition at line 29 of file label.cl.

◆ CHECK_SW_INFLOWS

#define CHECK_SW_INFLOWS (   idx,
  vec 
)    CHECK_INFLOWS(idx,(float2)(vec[0]-1.0f, vec[1]-1.0f ))

Definition at line 27 of file label.cl.

◆ CHECK_W_INFLOWS

#define CHECK_W_INFLOWS (   idx,
  vec 
)    CHECK_INFLOWS(idx,(float2)(vec[0]-1.0f, vec[1] ))

Definition at line 26 of file label.cl.