Description
Changelog
Reviews

SimpleXTerrain

SimpleXTerrain is an open-source procedural terrain generation addon for Godot 4 .NET (C#). It uses a visual node graph editor to define terrain generation rules and streams chunks dynamically around a camera target in real time, uploading generated data directly into Terrain3D regions.

Features

Height Generators

  • Perlin Noise (single-octave gradient noise with quintic interpolation)
  • Fractal Noise (multi-octave summation with turbulence blending)
  • Voronoi Cellular Noise (five blend types: Flat, Closest, SecondClosest, Cellular, Organic)
  • Radial Spot (circular brush stamps with hardness-controlled falloff)
  • Primitive Form (gradient, pyramid, and cone generators with tiling modes)
  • Texture Input and Spline Input generators

Terrain Modifiers

  • Levels and Contrast (symmetrical gamma remapping)
  • LUT Curve (uniform lookup table deformation)
  • Blend Combiner (multi-input mask-weighted blending)
  • Slope Selector (discrete neighbor delta slope masks)
  • Hydraulic Erosion (Moore flow accumulation cellular automaton with O(N) radix sort drainage)
  • Moore Soil Erosion (Von Neumann soil lifting and mass-conserving sediment pouring)
  • Smooth Terrace (Hermite-quantized step transitions)
  • Hermite Ledge (contour cliff generation with top/bottom shoulder blending)
  • Shoreline Beach (multi-sweep shore relaxation and underwater sand distribution)
  • Parallax Displacement (directional pixel-shift with per-axis intensity masks)
  • Aspect Shading (topographic shade and highlight dot-products)
  • Binomial Blur (separable multi-pass kernel smoothing)
  • Discrete Laplacian Cavity (finite difference curvature detection)
  • Island Mask, Ocean Level, River Generator, Lake Excavator

Biome System

  • Whittaker Biome Diagram lookup (temperature and precipitation axes to biome type)
  • Unified Biome Blending (partition-of-unity weight normalization across multiple biome presets)
  • Biome Reference nodes for modular graph composition

Texture Splatting

  • Height-based and slope-based texture weight generation
  • Unified Splatmap output directly into Terrain3D control maps
  • Multi-layer mask normalization ensuring weights sum to 1.0 at every texel

Object and Foliage Scatter

  • Stochastic rejection sampling with mask-weighted density control
  • Mitchell's Best-Candidate blue noise point distributions
  • Object and foliage placement nodes (implemented but not fully stress-tested)

GPU Acceleration

  • Vulkan compute shaders dispatched through Godot's RenderingDevice API
  • GPU-accelerated nodes: Perlin Noise, Fractal Noise, Blend, Blur
  • Chained multi-stage dispatch with ping-pong VRAM buffers and pipeline barriers
  • CPU remains idle during GPU generation, preventing frame drops

Chunk Streaming

  • Asynchronous generation on background .NET threads
  • Dynamic Terrain3D region allocation and deallocation around the camera
  • Chunk edge welding to prevent visual seams between generated regions
  • Direct memory injection into Terrain3D (no disk I/O during streaming)

Spline and Path Systems

  • Dijkstra pathfinding with topographic cost functions
  • Gabriel Graph network generation
  • Spline Conform and Stroke nodes for roads and rivers
  • De Casteljau subdivision and Legendre-Gauss arc length integration

Included Demo

The addon ships with a complete self-contained demo:

  • 10 biome presets: Alpine Peaks, Badlands Oasis, Desert, Eldritch Canyonlands, Everest Range, Glacial Valley, Mountain Valleys, Mountains, Plains, Terraced Hills
  • world.tres: A combined graph blending all 10 biomes into a single Whittaker-classified procedural world
  • infinite_demo.tscn: Ready-to-run demo scene with a fly camera
  • Terrain3D: Bundled in the repository under addons/terrain_3d

Requirements

  • Godot 4.6.3 .NET Edition
  • .NET 8.0 SDK
  • Terrain3D (included in the repository)

Documentation

Full technical documentation is available at: https://github.com/prajwal-mx/simplex-terrain-docs

Known Limitations

  • The foliage and object scattering system is implemented but not fully stress-tested due to hardware constraints during development. Community testing and contributions are welcome.
  • The GPU path currently covers Perlin noise, fractal noise, blend, and blur nodes. Remaining nodes use the CPU async path.

Changelog for version v1.0.0-alpha

No changelog provided for this version.

Reviews (0)

SimpleXTerrain has no reviews yet.

Login to write a review.