Monograph · Full sitemap
∑
Codebase coverage
Sitemap
Scope
Every design unit maps to real paths under ohao/ and shaders/. Non-product research trees are omitted from the public face. Each leaf documents what, how, and why.
01 · Architecture
- Hub — architecture.html
- Request path — CLI/example → Scene → VulkanRenderer::initialize → setScene → render → pixels.
- Cross-module invariants — Contracts that break pixels silently if violated.
- Module ownership map — Which directory owns which concern; forbidden dependencies.
01b · Core
- Hub
- Types & concepts — GpuPod, common_types, C++20 concepts used across modules.
- EventBus — Thread-safe pub/sub with typed subscribe helpers.
- Command history & Result — Undo/redo command pattern and fallible Result type.
- Console widget — In-engine console / log surface for debug tooling.
02 · Scene
- Hub — scene.html
- Actors & hierarchy — Actor as SceneObject with parent/children and lifecycle.
- Components — Mesh, Material, Light, Transform, factory packs.
- Asset loaders — GLTF (tinygltf), FBX (Assimp), OBJ custom, primitives.
- Scene API — createActor, lookup, tags, physics world ownership, serialize hooks.
- Transform math — TRS composition and world matrix used by upload/TLAS.
03 · GPU / Vulkan
- Hub — gpu.html
- VulkanRenderer facade — Public API: modes, setScene, ensureRT, denoise, pixels, present.
- Device init — createInstance → pickPhysicalDevice → createLogicalDevice feature chain.
- Bindless textures — BindlessTextureManager: variable count array, update-after-bind.
- Buffers & allocator — VMA-style allocation, staging, UBOs, GPU allocator helpers.
- Scene upload — Meshes → VB/IB map; materials; lights; env.
- RT build (BLAS/TLAS) — buildBLASTLAS order, instance transforms, material lockstep.
- Render dispatch — renderDeferred vs RT path, staging readback ring.
- Layout contracts — OHAO_ASSERT_GPU_LAYOUT, MaterialGpuPack, push-constant sizes.
- Legacy pipeline & framebuffer — Forward pipeline creation, offscreen FB, shadow resources.
04 · Materials
- Hub — materials.html
- PBR metallic-roughness — F0, ORM convention, roughness floors.
- GGX implementation — D/F/G terms, Smith correlated, energy helpers.
- GPU material pack — 3×vec4 matColors, texture bit-cast indices.
- Advanced material includes — advanced_brdf, material_sampling, material_types.
- Lights dual packing — GPULight SSBO (64) vs deferred LightData UBO (8).
05 · Deferred
- Hub — deferred.html
- DeferredRenderer orchestrator — Pass ownership, resize, setScene, graph execute.
- RenderPassBase — Shared init/cleanup/shader path helpers for passes.
- GBuffer pass — MRT packing, bindless, velocity, push constants.
- CSM shadows — Cascade split, depth array, unjittered camera.
- Deferred lighting — Light loop, IBL, SSAO bind, BRDF eval.
- SSAO — Screen-space AO pass + compute path.
- SSR & SSS — Experimental reflections and subsurface blur.
- Sky pass — HDR sky / atmosphere composite into lighting output.
- Post stack — Bloom, TAA, tonemap orchestration.
- Gizmo pass — Debug/editor overlay meshes.
06 · Path tracer
- Hub — path-tracer.html
- Host lifecycle — ensureRTRenderer, images, pipeline, SBT, descriptors.
- Profiles & meta — RTRenderSettings, Realtime vs Offline traits.
- Acceleration structures — BLAS/TLAS API, rebuild vs update.
- Raygen integrator — Stages A/B/C, NEE, dual-lobe, AOV writes.
- Hit & miss shaders — closesthit materials, anyhit alpha, miss env.
- Descriptor map 0–35 — Full set-0 layout including ReSTIR 29–34 and DLSS hit-dist 35.
- ReSTIR GI reservoirs — Ping-pong reservoir planes on bindings 29–34.
07 · Sampling
- Hub — sampling.html
- Sampler API — sampler_api.glsl dispatch, specialization constant.
- Sobol + Owen — Offline low-discrepancy stream.
- PCG realtime — Hash-based sampler for interactive path.
- MIS heuristics — Balance and power in mis.glsl.
- Environment CDF — CPU build + GPU sampleEnvMap/pdfEnvMap.
08 · Hybrid RT
- Hub — hybrid.html
- RT shadow technique — init → SBT → render visibility from GBuffer.
- RT GI technique — 1-bounce GI inject, material albedos.
- Visibility helpers — Shared RT visibility utilities.
09 · Denoise
- Hub — denoise.html
- Denoise modes & traits — DenoiseMode enum + DenoiseModeTraits resource needs.
- OIDN — Offline guided denoise path.
- NRD REBLUR + compose — Pack YCoCg, dispatch, unpack compose, cinematic post.
- DLSS Ray Reconstruction — NGX dlssd init, guides, binding 35 hit-dist.
- À-trous / SVGF-style — Internal spatial/temporal denoise compute.
- Cinematic RT post — Bloom extract/blur, DoF, composite after NRD.
Shaders
- Hub
- Shader tree layout — core / rt / postprocess / compute / includes / shadow / particles.
- Common includes — math, color, encoding, reconstruction, constants, types.
- Lighting includes — IBL, attenuation, light types, phase, blinn_phong.
- Shadow includes — CSM sampling, PCF, shadow types.
- Atmosphere & water includes — Gerstner waves, cloud density fields.
- Postprocess shader chain — Fullscreen, bloom, TAA, tonemap, sky, SSR, SSS.
- RT shader includes — pbr_unpack, rt_masks, NRD frontend used by raygen.
- Compute shaders — BRDF LUT, env prefilter, HiZ, light cull, skinning, composite, DoF.
- Core GBuffer & lighting shaders — gbuffer.vert/frag, deferred_lighting.frag MRT contract.
- Forward shaders — Legacy forward.vert/frag path.
- Particle shaders — Emit, update, render.
- Overlay gizmo shaders — Editor/debug gizmo vert+frag.
- RT program family — pt_*, rt_shadow_*, rt_gi_*, NRD compose, SVGF, cinematic.
- Disabled shader archive — shaders/_disabled holds retired experiments — not in active build.
Camera
- Hub
- Camera — View/proj, FPS/orbit style controls used by examples.
- Scene framer — Auto-frame bounds for turntable/model viewer.
Render graph
- Hub
- RenderGraph — Declare passes, barriers, compile order.
- Frame resources ring — MAX_FRAMES_IN_FLIGHT=3, fences, staging, per-frame UBOs.
- Async compute queue — Optional async compute path.
- IBL processor — Env map processing (cubemap/prefilter) helpers.
- Particle system — CPU/GPU particle orchestration.
- Picking — Ray pick helpers for selection.
- Culling — CPU/GPU cull helpers (HiZ / light cull compute).
11 · Physics
- Hub — physics.html
- Backend plugin — IPhysicsBackend, factory, null fallback, Jolt.
- PhysicsWorld — Config, state machine, step, body registry.
- Bodies & shapes — RigidBody, all shape types, factory, PhysicsComponent.
- Force generators — Registry, gravity, spring, drag, volumes, fields, presets.
- Physics materials — Friction/restitution style materials.
- Physics math & constants — Shared scalars, clamp helpers, math utils.
- Force debugger — Debug visualization hooks.
10 · Audio
- Hub — audio.html
- AudioSystem facade — Init, categories, handles, 3D, volumes.
Build & status
- Hub
- Build system — CMake options, targets, shaders target, examples.
- Examples map — cornell_box, model_viewer, env_demo, interactive, turntable.
- Tests & goldens — Unit suites and golden image gate.
- Status discipline — Evidence-based feature matrix protocol.
- Public scope note — What the monograph deliberately omits.
93 design units generated.