Rendering: image-based lighting (IBL) + skybox from HDRI

Current State

Lighting is fully analytic (directional/point/spot, see #52) — no image-based lighting, environment map, or skybox. Documented as a deferred gap in the lighting design.

Goal

Environment lighting from an HDRI: a visible skybox and diffuse/specular IBL contribution added to the PBR shading, so exterior/outdoor scenes are lit believably without needing dozens of manual lights. Directly needed by the Bistro milestone — the exterior scene ships an HDRI (san_giuseppe_bridge_4k.hdr) as its primary light source and looks flat/wrong without it.

Scope

  • HDR (.hdr/Radiance) import as a cubemap or equirect environment texture.
  • Skybox render pass (sample environment directly for background pixels).
  • Precompute diffuse irradiance (small SH or convolved cubemap) and a prefiltered specular environment (mip chain by roughness) + BRDF LUT, sampled in the PBR shader alongside the existing analytic lights.
  • EnvironmentSettings on the scene/camera (env map asset reference, intensity — matching the scene's own EnvMap.intensity convention).
  • GPU-only initially, matching the shadow-mapping precedent (software renderer keeps ambient-only).

Acceptance

  • A scene with only an HDRI (no analytic lights) renders plausible ambient + specular reflections; the skybox is visible in the background.