Sync wiki with main e93f2b194: prepared linear UASTC pairs, hardware-preferred device selection, telemetry scratch arena, input router split, descriptor reservations
- Texture-Conversion/Asset-Types/Asset-Pipeline/Asset-Flow: resolution+alpha_mode contract, implicit same-basename sidecar, linear-only runtime, TEX1 v4, prepared_textures test
- New Graphics-Device-Selection page (linked from Sidebar/Home): discrete-first preference, windowed CPU fallback, driver-sized descriptor reservations, VK_DRIVER_FILES verification
- Platform-and-GPU-Support: windowed CPU devices now admitted with hardware preference
- Bindless-Descriptor-Heap: pre-allocation driver-layout reservation pointer
- Diagnostics-and-Telemetry: BuildTelemetryReport(arena, events, scratchArena)
- Build-and-Verification: drop stale 262-count wording (no DISABLED_* retained)
- Runtime-and-ECS: router_pointer_queue/sources split
Describe current design without performance history
Align graphics verification with selected public backend contracts
Align test documentation with concrete edge-case coverage
Document the unit-test pruning policy, preserve integration/smoke and disabled benchmark scope, and replace retired source-contract references with active executable boundary checks.
Document descriptor retirement, material probes, and UI root sorting
Document source-owned TLAS transport and current bindless ABI
Reserve fixed TLAS transport switches from authored shader defines and retain only meaningful reflection variant keys. Correct descriptor sets to 0/1/2 and document sampled cube binding 8.
docs: sync wiki with current main (c7bd6f108bdd0ab546bcd798bafbbbe61c6e3b8d)
Main c7bd6f10 on top of 65 commits since last sync (76f1f5c96):
custom UI migration merged to main (custom_ui branch work through
dfd7d514f): Dear ImGui vendoring (3rd_parties/imgui) and the legacy
ImGui ECS path deleted; Testbed and ECS now use UiLayerSystem with
UiPaintComponent paint callbacks fed by impl/ui CPU paint/layout/text
plus OS clipboard/text-input services; new impl/assets/graphics/ui
raster/output shaders, font_builder and ui_skin utilities.
Updated 9 wiki pages to match HEAD (verified against tree):
UiSystem->UiLayerSystem, UiComponent->UiPaintComponent,
UiDrawContext->UiPaintContext (fields incl. clipboard/textInput/paint/
text/display/ui), Testbed UI wiring (fonts/skin/presentation, galleries),
UI ctor args, bindless UI bindings, 203-nit HDR10 UI encode, float4 UI
raster color (no half4), UI shader asset list.
docs: sync wiki with current main (91e869244deb963c5cd19a7c7f5b65181391126d)
Main 91e869244 on top of 46 commits since last sync (368d5e93b):
- Shadow quality knobs: FittedVolume coverage, CompactCross5 blocker
penumbra estimation, EveryFrame/ReuseOneFrame capture cadence with
ticket-owned accepted-capture history; TemporalOne transparent
sampling after accepted filtered history; caustic photon-grid
divisors 1/2/4 with opaque-instance prefilter before resource
resolution.
- Removed unreachable uniform transparent fallback and dormant shadow
diagnostics/edge-stat plumbing; adaptive transparent fallback fold
remains (coarse transmittance / full-resolution adaptive).
- Shadow sampling stays finite float (R2 indices, hash offsets,
jitter-cone blends); BVH miss outputs initialized for Slang
definite assignment; inner-node traversal shared via
nwbBvhPickNearChild.
- Skinning: frame-owned accepted-state buffer reuse, accepted-snapshot
self-filtering, removed unused cache lookup/helpers.
- Vulkan: descriptor readiness/bind scans bounded to nextFresh
high-water mark; indexed light-space capture with shared
interpolation helper.
- Stress record docs/stress_rendering_performance.md: >60 FPS both
routes (70.8933 HW / 62.3919 no-RT), --minimum-fps 60 enforcement,
no-RT five-marker qualification, caustic/CPU timing harnesses.
- Split translation units: rt_swbvh_* scene/mesh infra, caustic
quality/settings, shadow quality/capture-history/transparent-sampling
histories, backend_forward.h.
docs: sync wiki with current main (c2012a2f78ee567e04c84c45f66ca73448864307)
Main c2012a2f7 Fix remaining standard section 5 include-grouping violations across whole sources.
- GPU task graph: scheduleGraph is the single execution-admission
entry (scheduler_compilation.cpp, FrontierSafe + shadow-prepare to
frame-timing-end envelope from graph_schedule.cpp); source maps
name scheduler_compilation.cpp, compiler_internal.h,
packet_runtime_internal.h, graph/ per-domain task bodies,
execute/frame_execute_lifecycle.* with merge validators, and the
graph_schedule/packet_metrics split units.
- Shadows: light-space depth path on no-RT frames
(setSoftwareShadowSettings Automatic/SoftwareTrace/LightSpace,
BuildLightSpacePlan directional+point admission, D32 view array,
snapshot on graph plan/payloads); combined HalfA/HalfB resolve
preparation shared by hardware and software preflights.
- Refraction: interface-hit admission before material reconstruction
(interface_hit.slangi entry/exit).
- No-RT qualification: --disable-hardware-ray-tracing policy, Vulkan
disabled-route report line, ctest -L software_raytracing matrix.
- fin diagnostics: smoke-contract logs are ESSENTIAL_INFO, --gpudbg
accepted-but-inert in fin, resize log ESSENTIAL; window capture
--resize-client replacement coverage.
- Tests: native kernel ingress suites retired with the headless
smoke-test surface (results stay as decision evidence in
RENDERER_OPTIMIZATION_STEPS.md); unit tree pruned to mandatory
edge cases; optical-upload reuse now in nwb_ecs_graphics_tests;
descriptor coverage via task_graph_descriptor_contract_tests;
cpu arena identity reduced to core/task/cpu/scheduler.
docs: rewrite wiki for current engine
docs: document GPU task graph
docs: sync wiki with current main contracts
Sync wiki with current main
Update wiki for current main
Update wiki for current main
Document async shadow scheduling
Document command-list state handoff
Document required descriptor-buffer renderer path
Update wiki for bindless descriptor migration
Document descriptor-buffer rollout
Update wiki for current main branch
Document per-dispatch heap bind for reused heap-layout pipelines
The soft transparent shadow trace (m_swShadowTransparentSoftPipeline)
reuses a Phase 2 step 4a pipeline whose layout pins the global descriptor
heap at sets 8/9, so it must bind the heap right after setComputeState
and before dispatch — the heap merely being present in the layout is not
enough; the descriptor tables must actually be bound. It initially
dispatched without that bind, leaving set 8 unbound and triggering
VUID-vkCmdDispatch-None-08600 / device-lost on every transparent/caustic
smoke.
Record this as an implementation gotcha on the Bindless Descriptor Heap
page alongside the other Phase 2 migration subtleties, mirroring the
source comments in rt_softshadow.cpp.
Document the live bindless descriptor heap and RT per-mesh migration
The bindless descriptor heap is now live in the production frame loop and is
the shared per-mesh geometry source for the ray tracing, shadow, caustic, and
surfel-GI passes. Add a dedicated page covering the RHI primitive (descriptor
indexing floor, optional heap accelerator, GpuDescriptorHandle contract, self-
test), the Phase 2 migration that deleted the classic bounded per-mesh arrays
and retired the 32/64-mesh scene caps, the host-index/shader-layout split, and
the frozen shader/host binding contract (sets 8/9, per-class bindings).
Cross-link from Architecture (graphics layer owns a live heap), Renderer Frame
Flow (per-frame advanceFrame next to device GC), Renderer Feature Paths (slot-7
gap context, per-pass geometry fetch, intro pointer), Glossary, Home, and the
sidebar.