ForgedThoughts is a Rust workspace for terrain-first node graphs:
- FT node definitions (
node ... { fn eval(ctx) { ... } }) - TOML graph instancing/wiring (
[Type.alias]) - Height/field rendering and Whitted terrain raymarching
The current primary authoring path is TOML graphs + FT nodes.
crates/forgedthoughts: language, graph loader, evaluator, render backendscrates/ftc: CLI frontendexamples/: graph examples and rendered outputs
Build:
cargo buildRender a graph:
ftc examples/simple_noise.tomlRender terrain with erosion:
ftc examples/terrain_erosion.tomlRender to custom output/resolution:
ftc examples/terrain_erosion.toml --output out/terrain.png --width 1280 --height 720Watch and rerender:
ftc examples/terrain_erosion.toml --watch- FT defines reusable node behavior.
- TOML graph files instantiate and connect nodes.
[render]selects an exact graph source and target.- Terrain raymarch uses graph-driven height/field outputs.
Current render targets:
height/grayscalescene/raytrace
- Point nodes: JIT-specialized scalar sampling
- Field nodes: pass-style execution (CPU path +
wgpufield backend) - Terrain path: Whitted raymarch over graph-provided height source
Material nodes are the main detail layer on top of macro terrain.
The intended pipeline:
- Heightfield hit + normal (macro geometry)
- Material evaluation at hit context
- Shell/displacement detail phase
- Whitted shading lanes (
albedo,roughness,metallic,coat,transparency, etc.)
See:
The CLI is intentionally minimal today, but expected convenience features include:
- list available built-in nodes
- inspect node input/output ports
- validate graph connections/types without rendering
- render-source introspection for graph debugging
Older SDF-scene-centric docs/examples are legacy context.
The active direction is terrain/node graph workflows, not expanding the old scene authoring architecture.