GPU compute shader that performs viewport-space point smoothing and filtering.
More...
|
|
void | buildShader () |
| | Compile and link the compute shader program.
|
|
void | createUBOBuffer () |
| | Create the GPU uniform buffer object for shader parameters.
|
| template<class t_point_type> |
| void | getInput (PointContainer< t_point_type > &active, PointContainer< t_point_type > &inactive, uint04 record_weight) |
| | Read back smoothed points from the GPU, partitioning into active and inactive sets.
|
| void | runAll (uint04 count) |
| | Dispatch the compute shader over the given number of points.
|
| void | setQtGL (QOpenGLFunctions_4_3_Core *gl) |
| | Set the OpenGL function pointer table used by this shader.
|
| void | setUBO (const UBO &u) |
| | Upload uniform buffer data to the GPU.
|
| template<class t_point_type> |
| void | uploadInputs (const PointContainer< t_point_type > &active, uint04 pix_count) |
| | Upload point cloud data to GPU storage buffers for the smooth pass.
|
|
|
Buffer< RGBColor > | m_colors |
| | CPU-side color buffer for GPU upload/download.
|
|
GLuint | m_csA = 0 |
| | Compute shader handle.
|
|
uint04 | m_last_size = 0 |
| | Number of points in the last upload.
|
|
uint04 | m_out_size = 0 |
| | Allocated size of the output index buffer.
|
|
uint04 | m_px_key_size = 0 |
| | Allocated size of the per-pixel key buffer.
|
|
QOpenGLShaderProgram * | m_shader |
| | Compiled compute shader program.
|
|
GLuint | m_ssboInColor = 0 |
| | Input color storage buffer.
|
|
GLuint | m_ssboInPos = 0 |
| | Input position storage buffer.
|
|
GLuint | m_ssboInW = 0 |
| | Input weight storage buffer.
|
|
GLuint | m_ssboOutIdx = 0 |
| | Output index buffer indicating kept points.
|
|
GLuint | m_ssboPxKey = 0 |
| | Per-pixel key buffer for duplicate detection.
|
|
Buffer< uint04 > | m_temp_idx |
| | CPU-side copy of the output index buffer.
|
|
GLuint | m_uboU = 0 |
| | Uniform buffer object handle.
|
GPU compute shader that performs viewport-space point smoothing and filtering.
Projects existing point cloud data into the current camera viewport, identifies duplicate and overlapping points, and produces a filtered set of active points along with newly-matured inactive points that exceed a recording weight threshold.
Definition at line 15 of file ViewPortSmoothShaderLogic.h.
template<class t_point_type>
Read back smoothed points from the GPU, partitioning into active and inactive sets.
- Parameters
-
| [in,out] | active | Points that remain in the live display. |
| [in,out] | inactive | Points that have matured past the recording weight threshold. |
| [in] | record_weight | Weight threshold above which points are moved to inactive. |
Definition at line 71 of file ViewPortSmoothShaderLogic.h.
References Buffer< t_type, t_memory_manager >::add(), PointContainer< t_point_type >::data, PointContainer< t_point_type >::locations, m_colors, m_last_size, m_ssboInColor, m_ssboInPos, m_ssboInW, m_ssboOutIdx, m_temp_idx, PointContainer< t_point_type >::setSize(), PointContainer< t_point_type >::size(), and PointContainer< t_point_type >::weights.