Generator node

Points Visualize

Renders any point structure as an image on the GPU — hundreds of thousands of points in a single instanced draw call. Feed it a point cloud from the Points node family, Vision landmarks, or any structure containing coordinates, and it draws every point as a crisp analytic shape (circle, ring, square, diamond, triangle, cross, star) or a custom image sprite. Gradient coloring, additive glow, and seeded per-point variance turn raw coordinates into starfields, bokeh clouds, and scatter art.

Inputs

PortTypeDefault
PointsThe cloud to draw — cable any point structure, Vision landmarks, JSON or nested x/y/z values. Only the first 200000 points are rendered.structure—
EnableTurns the cloud off and clears its image.booltrue
ShapeThe sprite stamped at every point: circle, ring, square, diamond, triangle, cross, star, arrow or a custom image. The arrow points UP at rotation 0 — cable Direction to Rotation's output into Rotation and it aims along any direction. Values outside the list fall back to a circle.int0
ImageCable a generator or an Image node to use as the sprite; only read when Shape is Custom Image. An Image node's original pixels are sampled, so proportions stay correct.image—
SizeRadius of one sprite in Grafit units. At least 0.0005, no upper limit; past about 0.3 the sprites overlap into a solid field. ALSO accepts an ARRAY: cable per-point sizes and each index drives its own instance (short arrays clamp to their last value).float0.03
RotationTurns every sprite, in degrees, clockwise. Any value works; the shapes just keep spinning. ALSO accepts an ARRAY of per-point degrees — pair with Direction to Rotation for aimed arrows.float0
Fill ModeWhether the shape is solid or drawn as an outline. Rings and image sprites ignore it.int0
Outline WidthThickness of the outline as a fraction of the sprite, and the ring's wall thickness. Clamped to 0.02…1, where 1 fills the shape completely.float0.25
SoftnessFeathers the sprite edge into a bokeh-like falloff. Clamped to 0…1.float0
ColorFlat colour of every point, used when Color Mode is Single Color.color—
GradientCable a Gradient node here; it is read whenever Color Mode is not Single Color. Without it the gradient modes fall back to the flat colour.structure—
Color ModeWhat the gradient is sampled by — index, depth, a screen direction, radius or a per-point random value. Values outside the list are coloured randomly.int0
Size ModeLets depth, index or distance from centre scale each sprite instead of one constant size. Values outside the list keep every sprite the same size.int0
OpacityOverall transparency of the cloud. Clamped to 0…1. ALSO accepts an ARRAY of per-point opacities (0–1 each).float1
AdditiveOverlapping sprites add up instead of covering each other — the dense-glow look. Best with dark backgrounds.boolfalse
Star PointsHow many arms the star has; only used with the Star shape. Clamped to 3…16.int5
Size VarianceHow much sprite sizes scatter around the base size, from a fixed per-point hash. Clamped to 0…1.float0
Rotation VarianceHow much each sprite's angle scatters from the base rotation. Clamped to 0…1.float0
Opacity VarianceHow much each sprite's transparency scatters, so the cloud gets natural depth. Clamped to 0…1.float0
Color VarianceHow far each sprite's hue drifts from its assigned colour. Clamped to 0…1.float0
JitterRandomly nudges each point off its true position, in Grafit units. Negative values are treated as 0; keep it small, around the sprite size, or the structure dissolves.float0
SeedFixes every per-point random value — size, rotation, opacity, hue and jitter. Any whole number works, and the same seed always draws the same cloud.int0

Outputs

PortType
ImageCable a generator or an Image node to use as the sprite; only read when Shape is Custom Image. An Image node's original pixels are sampled, so proportions stay correct.image
Widthfloat
Heightfloat
Countint

Live Preview

Interactive — One cloud, cycling shape modes and variance

How It Works

Each frame the node resolves its Points input and flattens it into a flat list of 3D positions. The extractor is universal: it accepts live point arrays, arrays of [x, y] or [x, y, z] number tuples, and nested structures or JSON where any dictionary with numeric x and y keys (z optional) counts as one point. Up to 200,000 points are accepted; anything beyond that hard ceiling is truncated.

The entire cloud renders in one instanced GPU draw call — one quad per point, expanded in the vertex shader. There is no CPU loop over points at draw time; the CPU only uploads positions into a per-node double-buffered MTLBuffer and computes cloud statistics (bounding box, centroid, maximum radius) that the color and size modes need. All per-point math — size, rotation, jitter, color, opacity — runs in the vertex shader.

Positions are in Grafit units: origin (0,0) at the viewport center, shorter viewport edge mapped to [-1, 1]. Shapes are drawn as signed-distance fields in the fragment shader, edge-feathered by the global AA multiplier (or by Softness when it is above zero, which replaces AA feathering with a wide artistic falloff). The output texture is premultiplied alpha, ready for a Canvas node. Width/Height report the full viewport-fit size, Count reports how many points were actually drawn. When Enable is false or the cloud is empty, the texture is cleared — Canvas shows nothing, never a stale frame.

Shape selects the sprite drawn at every point:

ValueShapeNotes
0CircleFilled disc (default)
1RingAnnulus; Outline Width sets ring thickness
2SquareArea-matched to the circle
3Diamond45° rotated square
4TriangleEquilateral
5CrossPlus sign
6StarStar Points arms (3–16)
7Custom ImageSamples the Image input; proportions preserved

For Custom Image, an Image node source is sampled from its raw pixels so the sprite keeps its true proportions; any other generator's texture is used as-is. The sprite quad's geometry is stretched by the source aspect ratio while the tint (Color × Opacity) still applies.

Color Mode maps each point to a color. Mode 0 uses the flat Color; every other mode samples the connected Gradient (up to 16 stops) at a parameter t derived from the cloud's own statistics:

ValueModeGradient parameter t
0Single Color— (uses Color)
1Gradient: IndexPoint index 0…N−1 normalized
2Gradient: DepthZ position across the cloud's Z range
3Gradient: Left → RightX across the cloud's bounding box
4Gradient: Right → LeftInverted X
5Gradient: Top → BottomY from top of the bounding box down
6Gradient: Bottom → TopInverted Y
7Gradient: RadialDistance from cloud centroid / max radius
8Gradient: RandomDeterministic per-point hash

Size Mode scales each point's size on top of the base Size (all variable modes span ×0.35 at the low end to ×1.65 at the high end via 0.35 + 1.3·t):

ValueModeBehavior
0ConstantEvery point uses Size
1By Depth+Z (closer) points larger, −Z smaller
2By IndexLater points larger
3Radial FalloffLarge at the centroid, small at the rim

All variance parameters (Size Variance, Rotation Variance, Opacity Variance, Color Variance, Jitter) are computed on the GPU from deterministic PCG hashes of (point index, Seed). The same Seed always produces the exact same cloud — no per-frame flicker, no CPU random state, fully reproducible patches.

Parameters in Depth

PortDefaultMeaning
Points—Point structure to visualize (structure input; arrays, {x,y,z} dicts, JSON)
EnabletrueOff clears the output texture
Shape0Sprite shape, 0–7 (see table above)
Image—Sprite source for Custom Image shape (shown only when Shape = Custom Image)
Size0.03Point radius in Grafit units (floored at 0.0005)
Rotation0Sprite rotation in degrees, positive = clockwise
Fill Mode00 = Fill, 1 = Outline (hidden for Ring and Custom Image)
Outline Width0.25Stroke thickness in shape space (0.02–1); also the Ring thickness
Softness00–1; feathers the edge into bokeh-like discs, overriding AA feathering
Color(1, 1, 1, 1)Flat tint; also tints gradient results' alpha and custom sprites
Gradient—Gradient stops (connect a Gradient node); used by Color Modes 1–8
Color Mode00–8 (see table above)
Size Mode00–3 (see table above)
Opacity1Global opacity 0–1, multiplied per point
AdditivefalseAdditive blending — overlapping points sum toward white glow
Star Points5Arms of the Star shape, clamped 3–16 (shown only for Star)
Size Variance00–1; per-point random size ±variance (clamped ×0.05–×3)
Rotation Variance00–1; per-point random rotation up to ±180°
Opacity Variance00–1; per-point random dimming
Color Variance00–1; per-point random hue rotation up to ±360°
Jitter0Random positional offset radius in Grafit units, random direction per point
Seed0Reseeds every variance hash; same seed = same cloud, forever

Interactions worth knowing: Softness > 0 replaces the AA edge entirely, so it also dominates Outline Width visually at high values. Fill Mode = Outline converts any shape to a stroked version of thickness Outline Width — except Ring (which is inherently a stroke) and Custom Image. Gradient color modes fall back to plain white if no Gradient is connected while a gradient mode is selected.

Use Cases

  • Point-cloud portrait: Image node → Geometry to Points → Points Visualize (Additive on, small Size) → Canvas — an image rebuilt from glowing dots.
  • Animated particle constellations: Geometry to Points → Point Animation → Points Visualize → Canvas, with Color Mode = Gradient: Depth so points shift color as they move in Z.
  • Bokeh backdrops: any sparse cloud → Points Visualize with Softness ≈ 0.8, high Size Variance, Opacity Variance, and Additive — layer behind the main scene on a lower Canvas layer.
  • Hand/body tracking dots: Camera Input → Vision tracking node → Points Visualize (Shape = Ring) → Canvas — live landmark overlays.
  • Custom sprite scatter: Image node (a snowflake PNG) → Points Visualize Image input, Shape = Custom Image, Rotation Variance and Jitter up → falling-snow fields when the cloud is animated.
  • Star field: Point Density or a random cloud → Points Visualize, Shape = Star, Color Mode = Gradient: Random, tiny Size with high Size Variance.

Tips

  • Like every generator, the output only appears on screen through a Canvas node; the Image port carries an offscreen texture.
  • Additive blending plus a dark background is the cheapest "glow" there is — overlaps brighten naturally without any post-processing.
  • Variance is deterministic: animating Seed with a Counter or stepped Time value re-rolls the whole cloud in discrete jumps, which reads as intentional shuffling rather than noise.
  • Directional and radial color modes are computed from the cloud's own bounding box and centroid each frame — a moving cloud renormalizes its gradient continuously.
  • Performance: 200,000 points is the hard cap and one draw call handles all of them; the per-frame CPU cost is only the O(n) upload and statistics pass. Prefer trimming the cloud upstream (Point Density) over pushing the cap.
  • For connecting the same cloud with lines instead of dots, use Lines Visualize; for proximity meshes use the Plexus family.

Open Points Visualize in the interactive catalog →

Points Visualize is one of 381 nodes in Grafit Pro.

Free download. Every feature for 7 days, no card. Then €99.99 once — or keep playing your projects as a Player.

More Generator nodes