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.
EnvironmentSettingson the scene/camera (env map asset reference, intensity — matching the scene's ownEnvMap.intensityconvention).- 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.