You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Comprehensive backlog of rendering improvements, surfaced through cross-engine apples-to-apples comparisons this week (Bloom vs Unity HDRP vs Cycles path-traced, on Intel Sponza and Amazon Lumberyard Bistro). Parking this while I focus on non-rendering work; picking items off this list when I return to rendering.
Already-shipped session wins are in commits 80d2553, 1bf0fdb, 79ecb85, 65667f2, 805dd2c, 9346a6f, 3b1b955, 3de2bb7, febc257, cc77ee2 (Lagarde spec occlusion, dielectric luma cap, roughness floor, Reinhard soft cap, SSR metals-only, contact-shadow tightening, normal-LOD bias, LEADR-lite with per-mip variance in normal-map alpha, warm ambient grade, sharpen + SSAO radius).
Known remaining gaps vs Cycles (directly observed)
Column faint highlight residue — even after spec-occ + luma cap + roughness floor + universal damp, a subtle line traces down smooth dielectric cylinders where the HDR sky reflects at grazing. Cycles kills this via ray-traced visibility. Fix requires visibility-aware IBL (see below).
Mortar depth — Cycles shows deep shadows inside brick mortar that the normal map's self-occlusion produces naturally. Our normal-mapped BRDF doesn't self-shadow. Fix: POM or per-material height-map support.
Shadow richness under arches — Cycles under-arch shadows are deeper and fall off more naturally. Our 0.15 indirect-shadow floor is a global compromise; a per-pose / per-volume probe would solve it.
Last ~5% warmth — Cycles atmosphere still reads a hair warmer; our ambient/fill grade is close but not matched.
Feature categories
A. Visibility-aware IBL (highest impact — closes the column/corner artifacts)
Light probe volumes with local visibility (Filament / Unity LPV / DDGI). Per-probe visibility mask so probes don't leak sky radiance into shadowed interiors.
Bent normals baked per-mesh or computed at runtime. IBL diffuse samples at the bent normal instead of the shading normal; kills envmap-in-crevice artifacts.
Specular occlusion from SSAO — apply the screen-space AO term to IBL specular, not just diffuse. Combine with the existing Lagarde approximation.
Screen-space directional occlusion (SSDO) — directional variant of SSAO that tints occluded indirect with the blocked ray's missed radiance.
Light probe interpolation via tetrahedral mesh or 3D grid for smooth indirect transitions.
B. Full LEADR / LEAN anisotropic normal filtering
We shipped the scalar variant (σ in alpha). Full LEADR stores 2D covariance.
2D covariance LEADR — bake σ_xx, σ_xy, σ_yy per texel in auxiliary channels/textures. Brushed-metal, cloth, hair, and any directionally-varying material gets proper anisotropic GGX widening.
Toksvig-per-light pipeline — run the variance math inside each per-light loop using normal-space covariance.
LTC area lights (Heitz 2016) — linearly transformed cosines. Physically-correct rectangular/spherical/disk lights that match path-tracer results at a fraction of the cost.
Linear lights (tube lights, fluorescent bars).
Emissive mesh lights — mesh materials with high emission contribute as area lights.
Comprehensive backlog of rendering improvements, surfaced through cross-engine apples-to-apples comparisons this week (Bloom vs Unity HDRP vs Cycles path-traced, on Intel Sponza and Amazon Lumberyard Bistro). Parking this while I focus on non-rendering work; picking items off this list when I return to rendering.
Reference images (local):
/tmp/sponza_bloom.png,/tmp/sponza_unity.png,/tmp/sponza_cycles.png,/tmp/sponza_leadr_3way.png.Already-shipped session wins are in commits
80d2553,1bf0fdb,79ecb85,65667f2,805dd2c,9346a6f,3b1b955,3de2bb7,febc257,cc77ee2(Lagarde spec occlusion, dielectric luma cap, roughness floor, Reinhard soft cap, SSR metals-only, contact-shadow tightening, normal-LOD bias, LEADR-lite with per-mip variance in normal-map alpha, warm ambient grade, sharpen + SSAO radius).Known remaining gaps vs Cycles (directly observed)
Feature categories
A. Visibility-aware IBL (highest impact — closes the column/corner artifacts)
B. Full LEADR / LEAN anisotropic normal filtering
We shipped the scalar variant (σ in alpha). Full LEADR stores 2D covariance.
C. Material / BRDF expansions
KHR_materials_anisotropy).KHR_materials_clearcoat) — lacquered wood, car paint, skin cornea.KHR_materials_sheen) — fabric, velvet, cloth.KHR_materials_iridescence) — thin-film reflection (soap bubbles, oil slicks, peacock feathers).KHR_materials_transmission) with refraction, absorption, and thickness (we have a metallic-mirror hack).KHR_materials_volume) — for glass with colored absorption, gemstones.KHR_materials_dispersion) — wavelength-dependent refraction (jewelry).D. Shadows (biggest perceptual impact after visibility)
E. Global illumination upgrades
F. Area lights
G. Post-processing
H. Anti-aliasing improvements
I. Atmospherics / volumes
J. Detail / parallax
K. Texture pipeline
L. Hair / skin / eyes (character quality)
M. Many-light rendering
N. Geometry / LOD
O. HW ray tracing (future)
P. Bug / correctness fixes
Q. Developer / tooling improvements
Reference materials surfaced during this session
examples/intel-sponza/— the cross-engine comparison workhorse.examples/bistro/— exterior street scene, harder loader compatibility, less consistent cross-engine.tools/cycles_reference/— path-traced ground truth;./render.sh --scene sponza --view AgX --samples 256.tools/unity_reference/— real-time peer;SCENE=sponza ./render.sh.tools/unreal_reference/— scaffolded but Mac-headless is brittle; owner plans to run on Windows.