Bistro sample: load and navigate the Amazon Lumberyard Bistro scene

Goal

Load and freely navigate the Amazon Lumberyard Bistro demo scene as its own sample project, in its own repository (https://gitlab.com/mass4org/mega4/sample-bistro) — a strong showcase for the engine's rendering capabilities.

Source asset

Bistro_v5_2 (ORCA release): BistroExterior.fbx (2.8M tris) + BistroInterior.fbx (1.0M tris), 633 DDS textures (~1.4GB, ORM-packed + DirectX normals), san_giuseppe_bridge_4k.hdr environment map.

Status (2026-07-20 re-evaluation)

Import works, but the exterior barely renders — only ~32 of the cooked mesh's 1,591 submeshes / 132 materials reach the GPU. Root cause is a runtime MAX_SUBMESH_MATERIALS = 32 cap, not the importer. Full diagnosis + fix plan in docs/plans/bistro.md. See the follow-up issues below.

Completed foundation

  • #45 (closed) Multi-mesh/multi-primitive import (submeshes + per-primitive materials)
  • #133 (closed) FBX mesh & material import — geometry + materials only; hierarchy not delivered (completed in #142 (closed))
  • #134 (closed) DDS texture import (ORM packing, DirectX normals)
  • #27 (closed) sRGB/linear color management + ACES tonemap
  • #26 (closed) Materials: transparency blend modes (foliage alpha, glass)
  • #8 (closed) glTF/GLB mesh & scene-hierarchy import
  • #140 (closed) Render full multi-material meshes — lift the 32-submesh/material cap — the direct blocker; makes the exterior actually visible. (breaking: scene-format migration)
  • #141 (closed) Weld vertices / index-dedup imported meshes — cut the 272 MB VBO + import time.
  • #142 (closed) FBX node hierarchy + dynamic MAX_OBJECTS/MAX_MESHES — completes #133 (closed); enables per-object culling & interior scenes.
  • #143 (closed) Frustum culling + material-sorted batching — interactive framerate on Bistro-scale scenes.
  • #135 (closed) IBL/environment/skybox lighting from the HDRI (primary exterior light).
  • #136 (closed) Camera post-processing (vignette / color grading / bloom).
  • #17 Software-renderer PBR parity — built-game CPU fallback only; parallel/optional.

Acceptance

  • Scaffold the sample project + own git repository
  • FBX importer lands, scene imports without crashing/dropping geometry
  • DDS textures import correctly (ORM packing, DirectX normal convention)
  • Exterior renders all geometry with correct per-slot PBR materials (#140 (closed))
  • Transparency (foliage/glass, #26 (closed)) + IBL lighting from the HDRI (#135 (closed))
  • Free-fly navigation through the scene in Studio at interactive framerate (#143 (closed))

Out of scope

CPU-fallback KTX2 decode (#46) is a stretch goal only if the CPU path becomes a real problem.

Edited by Bruno Massa