World Streaming HLOD

HLOD provides distant proxy cells so the world stays readable when content cells are Unloaded. Proxies hide when child content activates and reappear before content unloads.

Declare an HLOD layer

Add WorldStreamingHlodLayerDesc entries on WorldConfig (m_hlodLayers).

FieldDefaultDescription
m_hlodLayerId / m_nameIdentity
m_sourceGridLevelm_targetGridLevel0 → 1Which grid’s content to aggregate, and which coarser grid hosts proxies
m_loadingRange2048 mProxy streaming range; resolved independently only when Runtime/EnforceHlodLoadingRange is on
m_generationPolicyId0 (Merge)Policies 0–4 below
m_requiresRegionMasktruefalse = indivisible whole-block proxy (hides only when all child cells activate)
m_mergeAcrossContentLayers + m_mergedContentLayerIdoffMerge across layers into one proxy layer id
m_alwaysLoadedfalseProxy stays resident; never unloaded by distance
m_fallbackPolicyIdnone (0xFFFFFFFF)Retry once with fallback when primary produces nothing

Exclude individual entities from proxy geometry with ExcludeFromHlod on WorldStreamingMemberComponent (doors, destructibles, and so on).

Five generation policies

IdPolicyProductFit
0MergePer-material merged Atom ModelNear / mid distance
1SimplifyWeld-decimate reduced meshMid distance
2ImpostorCPU atlas + three orthogonal billboardsCheap far distance
3OctahedralImpostorCPU N×N octahedral atlas + single cardFar, view-correct
4GpuOctahedralImpostorGPU capture albedo+normal(+depth); relightableHighest quality; missing atlas falls back to 3

Runtime knobs: HlodWarmupFrames (default 0), EnforceHlodLoadingRange (default false), EnableHlodDowngradeUnderBudget (default false).

Material switches for octahedral materials (when present): octahedral.tileInset / blendTiles / useParallax / parallaxScale.

Show / hide at runtime

  1. Distant unloaded content shows proxy cells.
  2. When child content reaches Activated, matching proxy regions hide (m_requiresRegionMask) or the whole block waits until all children activate.
  3. On unload, proxies appear before content unloads to avoid holes.

Fragment visibility must reach Atom:

  • Set Bridge/AtomMode to Bridge (recommended for rendering projects), or
  • Handle OnHlodFragmentVisibilityChanged yourself.

With default AtomMode = Off, decisions still resolve but mesh visibility is not driven automatically. See Bridges.

Authoring and bake notes

  • Declare HLOD layers before bake; rebake after policy or source/target grid changes.
  • HLOD bake failure leaves a hole and does not block content streaming; optional m_fallbackPolicyId retries once.
  • Deterministic parallel HLOD: /Dawn Engine/WorldStreaming/Bake/HlodWorkerThreads (see Baking).

GPU octahedral workflow

  1. Partition view → Bake GPU Octahedral Impostors (BakeGpuOctahedralImpostors; optionally IsGpuCaptureAvailable).
  2. Bake World Streaming (missing atlas → policy 3).
  3. Optional CaptureOctahedralImpostorScreenshots(outputDir).

Next steps


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.