ShaderPointCloud¶
Renders ShaderPointClouds in the format of an RGB-D image, where the image is split into the rgb information and the depth encoded information. Works best with Space-Stream, a python based app that takes live feed from the most common 3d cameras and transfers it into the rgb-d format. Space-Stream can stream the video directly via SpoutReceiver or SyphonReceiver to a SPARCK project.


Live 3D Camera Integration
ShaderPointCloud renders real-time point clouds from depth cameras (Intel RealSense, Azure Kinect, etc.) directly in SPARCK. Combined with Space-Stream, you can capture live 3D environments and integrate them into your projection mapping or Spatial Augmented Reality installations.
Reference¶
The following properties can be configured for this node:
| Property | Type | Description |
|---|---|---|
drawto |
- | set the render group. Capture/Beamer/3DViewer have an equivalent in which you can choose which group to render. |
resolution |
[px] | resolution of the rgb-image (half the width of the received stream) |
encoded |
- | recomended format is 'uniform hue'. choose from 'linear 8bit', 'linear 16bit', 'uniform hue', 'inverse hue', 'hsv' |
point size |
[px] | size of a point in the cloud |
hole detect |
- | tries to fix holes in the point cloud |
principal point |
- | intrinsic lense setting |
focal point |
- | intrinsic lense setting |
distance min |
- | min distance from where the depth encoding starts |
distance max |
- | max distance to where the depth encoding stops |
cull near |
- | min distance from where the points are rendered |
cull far |
- | max distance to where the points are rendered |
frontface |
draw.. | |
backface |
draw.. | |
cullface |
- | choose cullface: |
parent |
- | parent transformation node |
position |
(local transformation) | position x y z |
rotation |
(local transformation) | rotation x y z |
scale |
(local transformation) | scale x y z |
| Inlet | Type | Description |
|---|---|---|
| properties | properties | properties | use message [set <propertyPath> <value(s)>] (without node/<nodeName> at the beginning) to set internal properties |
| texture | texture | texture one (also used for shader) |
| Outlet | Type | Description |
|---|---|---|
RGB-D Format¶
Understanding the Input Format
The RGB-D format combines color and depth information in a single texture:
- Right half: RGB color image
- Left half: Depth encoded as color values
The resolution property should be set to half the width of the incoming stream (the width of just the RGB portion).
Depth Encoding Modes¶
Choosing an Encoding Format
The encoded property determines how depth values are decoded from the color data:
| Mode | Description | Best For |
|---|---|---|
| uniform hue | Recommended default — depth encoded as hue values with uniform distribution | Most use cases |
| linear 8bit | Simple linear mapping, 8-bit precision | Low depth range |
| linear 16bit | Linear mapping with 16-bit precision | High precision needs |
| inverse hue | Inverted hue encoding | Special cases |
| hsv | Full HSV color space encoding | Maximum precision |
The encoding must match what your depth camera or Space-Stream is outputting.
Space-Stream Setup¶
Complete Workflow
To stream point clouds from a depth camera to SPARCK:
- Install Space-Stream (Python-based application)
- Connect your depth camera (RealSense, Azure Kinect, etc.)
- In Space-Stream, select uniform hue encoding
- Disable 'normalized intrinsics' in Space-Stream UI to get absolute values
- Start streaming via Spout (Windows) or Syphon (macOS)
- In SPARCK, create a SpoutReceiver or SyphonReceiver
- Connect the receiver output to ShaderPointCloud's texture inlet
- Match all intrinsic parameters (see Parameter Matching below)
Depth Culling¶
Controlling Visible Range
Two sets of distance controls allow fine-tuning:
Encoding Range (must match source):
distance min: Where depth encoding starts (near plane of encoding)distance max: Where depth encoding ends (far plane of encoding)
Render Culling (can be adjusted freely):
cull near: Minimum distance to render points (hides close objects)cull far: Maximum distance to render points (hides distant objects)
Use culling to remove unwanted parts of the point cloud (floors, ceilings, background walls).
Point Rendering¶
Visual Quality Settings
- point size: Larger values fill gaps but reduce detail; smaller values show more detail but may have visible gaps
- hole detect: Attempts to fill holes in the point cloud — enable for cleaner surfaces
- frontface/backface: Control how points are rendered (polygons, lines, or points)
- cullface: Hide front or back faces to improve performance or visual clarity
Important Notes¶
Parameter Matching
To have the best results receiving point clouds encoded in the RGB-D format, you must ensure these properties match between Space-Stream and ShaderPointCloud:
- Resolution
- Principal Point
- Focal Point
- Min Distance
- Max Distance
Space-Stream stores some properties normalized, while this shader takes them absolute. Get absolute values by disabling 'normalized intrinsics' in the Space-Stream UI.
Reference
The algorithm of this shader is based on this Intel whitepaper. A bug was detected in their math during implementation — this has been corrected in SPARCK's implementation.
-
Quick Start
Get started with ShaderPointCloud in minutes
-
Complementing ShaderPointCloud
-
Tutorials
-
Community
Need help or want to suggest improvements?
Last updated: 2025-12-01 | Edit this page on GitHub