-
Notifications
You must be signed in to change notification settings - Fork 0
Node Reference
← Home
Every node type in Solarxy Web, with its ports, parameters and defaults.
This page is generated from the node registry itself (cargo run -p solarxy-graph --example gen_registry -- markdown), so it cannot drift from the application. Do not edit it by hand: change the node's descriptor in crates/solarxy-graph/src/nodes/ and regenerate.
33 node types across 6 categories.
Container
Geo
Import
Import Image · Import OBJ · Import PLY · Import STL · Import glTF
Lights
Ambient Light · Directional Light · Hemisphere Light · Point Light · Rect Area Light · Spot Light
Modifiers
Array · Compute Normals · Delete · Material · Merge · Mirror · Subdivide · Transform · UV Project · Validate
Primitives
Box · Cone · Cylinder · Plane · Sphere · Torus · Torus Knot
Utility
Bounds · Note · Null · Switch
geo · v3 · Container · placed scene
A container node hosting a subflow; renders its subflow's active display object with this node's transform applied.
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
translate |
vec3 | [0.0,0.0,0.0] |
meters | |
rotate |
vec3 | [0.0,0.0,0.0] |
degrees | |
rotate_order |
enum (xyz / xzy / yxz / yzx / zxy / zyx) | xyz |
||
scale |
vec3 | [1.0,1.0,1.0] |
0.001 to 10000 | |
uniform_scale |
float | 1.0 |
0.001 to 10000 | |
visible |
bool | true |
Whether this object is displayed. Hidden objects stay cooked, so re-show is instant. | |
cast_shadow |
bool | true |
Whether this object is drawn into the shadow map. |
Bypassed: emits nothing.
import_image · v1 · Import · placed inside a geo
Loads an image file as a texture value for material map inputs.
| Port | Direction | Type | Notes |
|---|---|---|---|
image |
out | Image |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
file |
assetRef | `` |
Bypassed: emits nothing.
import_obj · v3 · Import · placed inside a geo
Loads a Wavefront OBJ (MTL and textures via the asset resolver).
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
file |
assetRef | `` | ||
scale |
float | 1.0 |
0 to 10000 | |
center_to_origin |
bool | false |
||
preserve_materials |
bool | true |
Bypassed: emits nothing.
import_ply · v2 · Import · placed inside a geo
Loads a binary or ASCII PLY mesh.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
file |
assetRef | `` | ||
scale |
float | 1.0 |
0 to 10000 | |
center_to_origin |
bool | false |
Bypassed: emits nothing.
import_stl · v2 · Import · placed inside a geo
Loads a binary or ASCII STL mesh.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
file |
assetRef | `` | ||
scale |
float | 1.0 |
0 to 10000 | |
center_to_origin |
bool | false |
||
recompute_normals |
bool | true |
Bypassed: emits nothing.
import_gltf · v2 · Import · placed inside a geo
Loads a glTF or GLB model.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
file |
assetRef | `` | ||
scale |
float | 1.0 |
0 to 10000 | |
center_to_origin |
bool | false |
||
preserve_materials |
bool | true |
Bypassed: emits nothing.
ambient_light · v1 · Lights · placed scene
A uniform fill light with no position or shadow; modulates the scene ambient/IBL term.
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
color |
color | [1.0,1.0,1.0,1.0] |
||
intensity |
float | 0.5 |
0 to 1000 | |
visible |
bool | true |
||
show_helper |
bool | false |
||
helper_size |
float | 1.0 |
0.1 to 10 |
Bypassed: emits nothing.
directional_light · v1 · Lights · placed scene
A parallel light (like the sun); its shadow frustum auto-fits the scene bounds.
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
position |
vec3 | [10.0,10.0,5.0] |
meters | |
target |
vec3 | [0.0,0.0,0.0] |
meters | |
color |
color | [1.0,1.0,1.0,1.0] |
||
intensity |
float | 1.5 |
0 to 1000 | |
cast_shadow |
bool | true |
||
map_size |
enum (512 / 1024 / 2048) | 2048 |
||
bias |
float | 0.0001 |
-0.01 to 0.01 | |
visible |
bool | true |
||
show_helper |
bool | false |
||
helper_size |
float | 1.0 |
0.1 to 10 |
Bypassed: emits nothing.
hemisphere_light · v1 · Lights · placed scene
A two-color sky/ground ambient light.
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
sky_color |
color | [1.0,1.0,1.0,1.0] |
||
ground_color |
color | [0.2669999897480011,0.2669999897480011,0.2669999897480011,1.0] |
||
intensity |
float | 1.0 |
0 to 1000 | |
visible |
bool | true |
||
show_helper |
bool | false |
||
helper_size |
float | 1.0 |
0.1 to 10 |
Bypassed: emits nothing.
point_light · v1 · Lights · placed scene
An omnidirectional light with distance falloff.
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
position |
vec3 | [10.0,10.0,5.0] |
meters | |
color |
color | [1.0,1.0,1.0,1.0] |
||
intensity |
float | 1.5 |
0 to 1000 | |
range |
float | 0.0 |
0 to 100000 | meters |
decay |
float | 2.0 |
0 to 10 | |
cast_shadow |
bool | true |
||
map_size |
enum (512 / 1024 / 2048) | 1024 |
||
bias |
float | -0.0001 |
-0.01 to 0.01 | |
visible |
bool | true |
||
show_helper |
bool | false |
||
helper_size |
float | 1.0 |
0.1 to 10 |
Bypassed: emits nothing.
rect_area_light · v2 · Lights · placed scene
A rectangular area light (rendered as a soft point-light approximation in v1).
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
translate |
vec3 | [0.0,0.0,0.0] |
meters | |
color |
color | [1.0,1.0,1.0,1.0] |
||
intensity |
float | 1.5 |
0 to 1000 | |
width |
float | 10.0 |
0.1 to 1000 | meters |
height |
float | 10.0 |
0.1 to 1000 | meters |
visible |
bool | true |
||
show_helper |
bool | false |
||
helper_size |
float | 1.0 |
0.1 to 10 |
Bypassed: emits nothing.
spot_light · v1 · Lights · placed scene
A cone light with an angle and soft-edge penumbra.
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
position |
vec3 | [10.0,10.0,5.0] |
meters | |
target |
vec3 | [0.0,0.0,0.0] |
meters | |
color |
color | [1.0,1.0,1.0,1.0] |
||
intensity |
float | 1.5 |
0 to 1000 | |
range |
float | 0.0 |
0 to 100000 | meters |
decay |
float | 2.0 |
0 to 10 | |
angle |
float | 45.0 |
1 to 89 | degrees |
penumbra |
float | 0.0 |
0 to 1 | normalized |
cast_shadow |
bool | true |
||
map_size |
enum (512 / 1024 / 2048) | 1024 |
||
bias |
float | -0.0001 |
-0.01 to 0.01 | |
visible |
bool | true |
||
show_helper |
bool | false |
||
helper_size |
float | 1.0 |
0.1 to 10 |
Bypassed: emits nothing.
array · v1 · Modifiers · placed inside a geo
Duplicates the input geometry, either in a line or around a circle. Materials are preserved and shared across the copies.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
in | Geometry | required; The geometry to duplicate. |
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
mode |
enum (linear / radial) | linear |
||
count |
int | 3 |
1 to 512 | How many copies in total, counting the original. 1 is a no-op. |
offset |
vec3 | [1.0,0.0,0.0] |
meters; The step between copies: copy i is offset by i times this. | |
axis |
enum (x / y / z) | y |
The axis the copies revolve about. | |
radius |
float | 0.0 |
0 to 10000 | meters; How far each copy sits from the axis before it revolves. |
sweep |
float | 360.0 |
-360 to 360 | degrees; The total angle the copies span. Each copy steps by sweep/count, so a full 360 tiles evenly without doubling up at the seam. |
Bypassed: passes geometry straight through.
compute_normals · v2 · Modifiers · placed inside a geo
Recomputes per-vertex normals from the triangle topology.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
in | Geometry | required; The geometry whose normals to recompute. |
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
flip_orientation |
bool | false |
Reverses triangle winding and negates normals (fixes inside-out meshes). |
Bypassed: passes geometry straight through.
delete · v1 · Modifiers · placed inside a geo
Removes triangles by region or by facing. Vertices left orphaned by the removal are compacted away. Deleting everything is allowed and produces empty geometry, not an error.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
in | Geometry | required; The geometry to cull triangles from. |
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
mode |
enum (bbox / normal) | bbox |
Select triangles by where they are, or by which way they face. | |
invert |
bool | false |
Delete everything the selection does NOT cover. | |
center |
vec3 | [0.0,0.0,0.0] |
meters; The center of the region box. | |
size |
vec3 | [1.0,1.0,1.0] |
meters; The size of the region box. A triangle goes when its centroid is inside. | |
direction |
vec3 | [0.0,1.0,0.0] |
The facing to match against. | |
angle |
float | 45.0 |
0 to 180 | degrees; How far off the direction a face can point and still be selected. |
Bypassed: passes geometry straight through.
material · v1 · Modifiers · placed inside a geo
Assigns a PBR material to every mesh of the input; connected maps drive their channels, factors drive the rest.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
in | Geometry | required |
base_color_map |
in | Image | |
normal_map |
in | Image | |
metallic_roughness_map |
in | Image | |
occlusion_map |
in | Image | |
emissive_map |
in | Image | |
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
base_color |
color | [0.800000011920929,0.800000011920929,0.800000011920929,1.0] |
overridden when base_color_map is connected |
|
metallic |
float | 0.0 |
0 to 1 | overridden when metallic_roughness_map is connected |
roughness |
float | 0.5 |
0 to 1 | overridden when metallic_roughness_map is connected |
emissive |
color | [0.0,0.0,0.0,1.0] |
overridden when emissive_map is connected |
|
material_name |
text | `` |
Bypassed: passes geometry straight through.
merge · v2 · Modifiers · placed inside a geo
Concatenates its inputs into one geometry set, in port order, deduplicating identical materials.
| Port | Direction | Type | Notes |
|---|---|---|---|
inputs |
in | Geometry | accepts many; The geometry sets to concatenate, in order. |
geometry |
out | Geometry |
Bypassed: passes inputs straight through.
mirror · v1 · Modifiers · placed inside a geo
Reflects the input across an axis-aligned plane, flipping the winding so the reflected surface faces outward. Keep Original merges both halves, which is the usual way to build a symmetric model from one side.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
in | Geometry | required; The geometry to reflect. |
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
axis |
enum (x / y / z) | x |
The axis the mirror plane is perpendicular to. | |
offset |
float | 0.0 |
-10000 to 10000 | meters; Where the mirror plane sits along the axis. |
keep_original |
bool | true |
Merge the reflection with the original instead of replacing it. |
Bypassed: passes geometry straight through.
subdivide · v2 · Modifiers · placed inside a geo
Splits every triangle into four at its edge midpoints, interpolating normals, UVs, and attributes.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
in | Geometry | required |
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
iterations |
int | 1 |
1 to 5 |
Bypassed: passes geometry straight through.
transform · v2 · Modifiers · placed inside a geo
Translates, rotates, and scales the input geometry, baking the transform into point positions.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
in | Geometry | required; The geometry to transform. |
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
translate |
vec3 | [0.0,0.0,0.0] |
meters | |
rotate |
vec3 | [0.0,0.0,0.0] |
degrees | |
rotate_order |
enum (xyz / xzy / yxz / yzx / zxy / zyx) | xyz |
||
scale |
vec3 | [1.0,1.0,1.0] |
0.0001 to 10000 | |
uniform_scale |
float | 1.0 |
0.0001 to 10000 | |
pivot |
vec3 | [0.0,0.0,0.0] |
meters |
Bypassed: passes geometry straight through.
uv_project · v1 · Modifiers · placed inside a geo
Projects UVs onto the input (planar, box, cylindrical, or spherical), normalized over its bounds.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
in | Geometry | required |
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
mode |
enum (planar / box / cylindrical / spherical) | planar |
||
axis |
enum (x / y / z) | y |
||
scale |
vec2 | [1.0,1.0] |
||
offset |
vec2 | [0.0,0.0] |
Bypassed: passes geometry straight through.
validate · v2 · Modifiers · placed inside a geo
Runs the Solarxy validation checks over the input geometry, passing the geometry through and emitting a report.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
in | Geometry | required; The geometry to validate (passed through unchanged). |
geometry |
out | Geometry | |
report |
out | Report | The validation report. |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
normals |
bool | true |
||
uvs |
bool | true |
||
topology |
bool | true |
||
materials |
bool | true |
||
budget |
bool | true |
||
triangle_budget |
int | 0 |
0 to 2000000000 |
Bypassed: passes geometry straight through.
box · v2 · Primitives · placed inside a geo
A rectangular box, subdivided per axis.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
width |
float | 1.0 |
0.001 to 10000 | meters |
height |
float | 1.0 |
0.001 to 10000 | meters |
depth |
float | 1.0 |
0.001 to 10000 | meters |
width_segments |
int | 1 |
1 to 512 | |
height_segments |
int | 1 |
1 to 512 | |
depth_segments |
int | 1 |
1 to 512 |
Bypassed: emits nothing.
cone · v2 · Primitives · placed inside a geo
A cone with an apex along +Y.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
radius |
float | 0.5 |
0.001 to 10000 | meters |
height |
float | 1.0 |
0.001 to 10000 | meters |
radial_segments |
int | 32 |
3 to 512 | |
height_segments |
int | 1 |
1 to 512 |
Bypassed: emits nothing.
cylinder · v2 · Primitives · placed inside a geo
A cylinder (or capped cone when a radius is zero).
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
radius_top |
float | 0.5 |
0 to 10000 | meters |
radius_bottom |
float | 0.5 |
0 to 10000 | meters |
height |
float | 1.0 |
0.001 to 10000 | meters |
radial_segments |
int | 32 |
3 to 512 | |
height_segments |
int | 1 |
1 to 512 |
Bypassed: emits nothing.
plane · v2 · Primitives · placed inside a geo
A flat subdivided rectangle in the XY plane facing +Z.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
width |
float | 1.0 |
0.001 to 10000 | meters |
height |
float | 1.0 |
0.001 to 10000 | meters |
width_segments |
int | 1 |
1 to 1024 | |
height_segments |
int | 1 |
1 to 1024 |
Bypassed: emits nothing.
sphere · v2 · Primitives · placed inside a geo
A UV sphere with poles along Y.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
radius |
float | 0.5 |
0.001 to 10000 | meters |
width_segments |
int | 32 |
3 to 512 | |
height_segments |
int | 16 |
2 to 512 |
Bypassed: emits nothing.
torus · v2 · Primitives · placed inside a geo
A torus (donut) in the XY plane.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
radius |
float | 0.5 |
0.001 to 10000 | meters |
tube |
float | 0.2 |
0.001 to 10000 | meters |
radial_segments |
int | 16 |
3 to 1024 | |
tubular_segments |
int | 32 |
3 to 1024 |
Bypassed: emits nothing.
torus_knot · v2 · Primitives · placed inside a geo
A (p, q) torus knot swept as a tube.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
radius |
float | 0.5 |
0.001 to 10000 | meters |
tube |
float | 0.2 |
0.001 to 10000 | meters |
p |
int | 2 |
1 to 10 | |
q |
int | 3 |
1 to 10 | |
tubular_segments |
int | 128 |
3 to 2048 | |
radial_segments |
int | 32 |
3 to 2048 |
Bypassed: emits nothing.
bounds · v1 · Utility · placed inside a geo
Emits the input's axis-aligned bounding box as geometry, or a small marker cube at its center. Useful for measuring a model and for sanity-checking where a piece of geometry actually sits.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
in | Geometry | required; The geometry to measure. |
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
mode |
enum (box / center) | box |
Box emits the bounding box itself; Center emits a marker at its center. | |
marker_size |
float | 0.1 |
0.001 to 100 | meters; The size of the center marker cube. |
Bypassed: passes geometry straight through.
note · v1 · Utility · placed scene or inside a geo
A canvas annotation. Double-click to edit; resizable.
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
text |
text | `` | ||
color |
color | [0.9919999837875366,0.9020000100135803,0.5410000085830688,1.0] |
||
width |
float | 160.0 |
120 to 800 | |
height |
float | 80.0 |
60 to 600 |
Bypassed: cannot be bypassed.
null · v1 · Utility · placed inside a geo
Passes geometry through unchanged. Use it as a stable output anchor for a subflow: point the display flag at the null and it stays put while you rework the graph feeding it.
| Port | Direction | Type | Notes |
|---|---|---|---|
geometry |
in | Geometry | required; The geometry to pass through unchanged. |
geometry |
out | Geometry |
Bypassed: passes geometry straight through.
switch · v1 · Utility · placed inside a geo
Passes exactly one of its inputs through, chosen by index. The index counts wires in the order they are connected, so an input that fails to cook does not shift the selection.
| Port | Direction | Type | Notes |
|---|---|---|---|
inputs |
in | Geometry | accepts many; The candidate geometries, in wire order. The index selects among them. |
geometry |
out | Geometry |
| Parameter | Type | Default | Range | Notes |
|---|---|---|---|---|
index |
int | 0 |
0 to 255 | Which input wire to pass through, counting from 0 in wire order. Clamped to the number of connected wires. |
Bypassed: passes inputs straight through.
Solarxy - A cross-platform 3D model viewer, validator and browser-based node modeler built with Rust and wgpu.
GitHub Repository · Releases & Downloads
© 2026 Marko Koljancic · MIT License
Getting Started
Solarxy Web
- Solarxy Web
- Your first scene
- Expressions
- Attribute Wrangle
- Runtime and playback
- Publishing a scene
- Node Reference
Tutorials
Using Solarxy
Reference
Help
Project