Graphics / QUBICENGINE HANDBOOK

Global illumination & ray tracing

Understand bounced light, probes, screen-space limits, acceleration structures, denoising, and a hybrid lighting design.

Direct light is only part of a room#

A lamp illuminates a wall; that wall sends some light toward another surface. Global illumination approximates these indirect paths. Solving every path exactly for every real-time frame is too expensive for ordinary hardware, so an engine chooses representations and sampling budgets. QubicEngine’s reference design uses a probe-based indirect-light cache for broad diffuse response, screen-space samples for nearby visible detail, and an optional hardware ray-query path to update visibility/lighting samples when supported. It combines a stable cache with dynamic updates rather than claiming one infinite-resolution solution.

What each representation can see#

Screen-space methods read current depth/color and cannot discover geometry outside that image. Probes store lighting samples in world space and can cover unseen surfaces, but interpolation may leak light across thin walls. Distance or visibility representations improve filtering at added storage and update cost. Static baked data offers low runtime cost but does not automatically respond to changed geometry or lights. Dynamic caches update a bounded amount of work per frame and need an explicit policy for movement, invalidation, and stale samples.

TechniqueStrengthCommon limitation
Screen-space samplingUses existing visible dataMissing offscreen/hidden information
Probe cacheBroad spatial coverageInterpolation and update lag
Hardware ray queriesTests actual acceleration geometryTrace/build cost and sparse sampling noise
Baked lightingPredictable runtime costAuthoring cost and limited dynamic response

Acceleration structures#

Ray tracing tests a ray against geometry through an acceleration hierarchy. A bottom-level structure groups mesh geometry; a top-level structure instances those meshes in the scene. Static meshes can retain structures; moving/deforming geometry needs a chosen update or rebuild policy. Those structures own GPU memory and scratch requirements. Build input buffers must remain valid during execution. A barrier and queue dependency make completed builds visible to tracing. Retirement includes the structure’s last trace use, not only its last build call.

Reference ray-query integration

The backend queries ray-tracing or ray-query feature support before creating this path. RenderGraph adds an acceleration-update pass, a bounded probe-sampling pass, and a cache-filtering pass. The non-ray path remains the chosen compatible probe/screen-space method. A lighting sample contains direction, radiance estimate, confidence, and update age. The filter uses visibility and surface relationships to avoid blindly averaging unrelated samples. A changed door can invalidate nearby visibility without rebuilding the entire world’s lighting cache.

Noise and temporal accumulation#

A few rays produce noisy estimates. Spatial filters and temporal accumulation reuse samples, but they can blur detail or trail changes. Reprojection needs surface identity and depth/normal confidence. Newly visible geometry and moving light sources should reduce reliance on stale history. A denoiser does not recover information that was never sampled. More rays improve sampling at a measurable cost; a better cache policy may improve visible stability without simply multiplying the ray count. Measure build, trace, filter, and cache bandwidth separately.

Lumen is an Epic Games technology. Its public descriptions can motivate discussion of general indirect-light techniques; they do not reveal or license a proprietary implementation to this reference engine. QubicEngine’s design here uses the algorithms and contracts stated above, without claiming equivalence to a branded system.

Diagnose illumination artifacts#

Light leaking suggests missing visibility information or poor probe placement. Lagging lighting suggests an update budget/invalidation issue. Noisy reflections suggest insufficient sampling or unstable accumulation. Geometry missing from traces suggests stale instances or acceleration-build dependencies. Read temporal rendering and GPU memory ownership. The website contains no native ray-tracing benchmarks or claimed engine captures.

Search titles and full article text.