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:
| Track | Status |
|---|---|
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:
| Capability | Notes |
|---|---|
PolyPartitionPcgRequestBus | Query surface point clouds; write positions; spawn Patch / Mesh Projection instances |
| Graph DSL + editor | View pane Poly Terrain PCG Graph Editor; assets .polypcggraph |
| Node set | Query, OffsetAlongNormal, NoiseDisplace, SlopeFilter, WeightFilter, Write, SpawnPatch, SpawnMeshProjection |
| Transactions | Multi-output ExecuteGraph commit-or-rollback |
| Runtime execute | Opt-in /O3DE/PolyTerrain/PcgRuntimeExecutionEnabled (session state; default off) |
| Session snapshot | Serialize / 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:
- Same entry points — future Gem talks to PolyTerrain only through
PolyPartitionPcgRequestBusand.polypcggraphdata; no parallel write path into section meshes. - Determinism — seeds and outputs that affect bake must land in modifier parameters (hence ContentHash), not a hidden side channel.
- 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).
Related systems
| Topic | Relationship |
|---|---|
| PolyTerrain / Optional features | Host Gem for current PCG buses, modifiers, and graph editor |
| World Streaming | Baked sections and future cell-oriented stamps |
| Water | SurfaceData / vegetation bridges can consume water tags in scatter graphs |
| Vegetation / SurfaceData | Weight → 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.