Procedural content generation (preview)

Dawn Engine PCG (procedural content generation) covers two related tracks: a PolyTerrain-bound PCG pipeline already shipping inside the PolyTerrain Gem, and a planned general-purpose PCG Gem that will plug into the same buses for broader procedural workflows.

Maturity:

TrackStatus
PolyTerrain PCG (query / write / spawn, .polypcggraph, graph editor, optional runtime execute)Shipped (opt-in) — see PolyTerrain optional features
Standalone Gems/PCG (engine-wide graph framework beyond mesh terrain)Planned

What problem it solves

Hand-sculpting every cliff, weight mask, and prop cluster does not scale to open worlds. PCG is intended to automate:

  • Surface query → transform / filter → write-back for erosion-like and sculpt layers;
  • Weight-channel driven material and vegetation masks;
  • Deterministic instance placement (Patch and Mesh Projection modifiers);
  • Reusable graph assets (.polypcggraph) that stay level-agnostic until run against a partition.

The long-term Gem keeps that workflow while adding a shared node/runtime substrate other systems (foliage, clutter, mission props) can extend without forking PolyTerrain.

Already available (PolyTerrain PCG)

If you only need mesh-terrain procedural edits today, enable PolyTerrain and its PCG subsystem (see PolyTerrain optional features). Capabilities already landable:

CapabilityNotes
PolyPartitionPcgRequestBusQuery surface point clouds; write positions; spawn Patch / Mesh Projection instances
Graph DSL + editorView pane Poly Terrain PCG Graph Editor; assets .polypcggraph
Node setQuery, OffsetAlongNormal, NoiseDisplace, SlopeFilter, WeightFilter, Write, SpawnPatch, SpawnMeshProjection
TransactionsMulti-output ExecuteGraph commit-or-rollback
Runtime executeOpt-in /O3DE/PolyTerrain/PcgRuntimeExecutionEnabled (session state; default off)
Session snapshotSerialize / deserialize runtime PCG state (MPPS) for project-owned persistence

With PCG runtime execution off (default), editor authoring and bake behavior stay unchanged for projects that never touch graphs.

Planned: general-purpose PCG Gem

The open long-term item is an independent O3DE-style PCG Gem. Target integration rules already written down:

  1. Same entry points — future Gem talks to PolyTerrain only through PolyPartitionPcgRequestBus and .polypcggraph data; no parallel write path into section meshes.
  2. Determinism — seeds and outputs that affect bake must land in modifier parameters (hence ContentHash), not a hidden side channel.
  3. Optional build / load — projects that never enable PCG must not pay runtime cost (Registry / subsystem gating, matching today’s PolyTerrain pattern).

Candidate expansions after the shared Gem lands (not committed dates):

  • Broader node libraries (scattering, spline sampling, biome filters) beyond the PolyTerrain eight-node set;
  • Cross-system outputs (Vegetation descriptors, World Streaming cell stamps, mission Prefab variants);
  • Stronger editor interoperability with other GraphModel canvases where semantics allow.

How the PolyTerrain loop works today

.polypcggraph ──► Validate / topological execute
 ├─ QuerySurface(ToSubPriority) ──► point cloud (+ weights)
 ├─ Offset / Noise / Slope / Weight filters
 └─ Write / SpawnPatch / SpawnMeshProjection
 Modifier params → Preview rebuild / Bake → Atom + PhysX

Best practice: Query and Write share the same Priority Layer / Sub-Priority, and Query must not be inclusive of the layer it writes to (avoids feedback loops).

TopicRelationship
PolyTerrain / Optional featuresHost Gem for current PCG buses, modifiers, and graph editor
World StreamingBaked sections and future cell-oriented stamps
WaterSurfaceData / vegetation bridges can consume water tags in scatter graphs
Vegetation / SurfaceDataWeight → surface tag → Area Spawner path without forking Vegetation

Status and next steps

  • Use now: PolyTerrain optional features — PCG graph editor and buses for mesh-terrain procedural edits.
  • Watch next: standalone PCG Gem announcement in a future release; this preview page will then grow into a full Quick start for engine-wide graphs.

Copyright © 2026 DawnEngine. All rights reserved.

DawnEngine is a commercial 3D engine distributed under the DawnEngine end-user license agreement. Engine binaries and source are proprietary and are not covered by the licenses below.

Documentation only: the prose and templates on this site are a derivative work of Open 3D Engine (O3DE) documentation by the O3DE Contributors, used under CC BY 4.0 (documentation content), Apache 2.0 (site code), and the MIT license (inline code samples).

The open-source 3D engine that DawnEngine is built on top of is Open 3D Engine . DawnEngine is not affiliated with, endorsed by, or sponsored by The Linux Foundation or the O3DE project. “O3DE” and “Open 3D Engine” are trademarks of The Linux Foundation.