InfinityRenderPipeline is a graphics research SRP for Unity (InfinityRP).
- AGENTS.md — coding conventions and agent collaboration rules
- DESIGN.md — Mesh Drawing Pipeline + full rendering order (as implemented)
- Docs/MeshPipeline-Baseline.md — MeshDraw migration baseline
- Docs/MeshPipeline-Delivery-Report.md — Closure D (D1–D6)
- Docs/FullRendering-Delivery-Report.md — S0–S9 full-rendering delivery
- PLAN.md — stage table (S0–S9)
Completed (record path; image quality stays TODO(UNVERIFIED) unless a capture is listed in PLAN):
- ThinGBuffer (Crytek A/B + GBufferC flags/SSS)
- TemporalAA (jitter-free motion, direct-texel history)
- RenderGraph (custom RGBuilder + async compute hooks)
- Screen-space GI / reflection (RayMarch → Spatial → Temporal → Bilateral + Composite)
- Ground-truth ambient occlusion (Trace → SpatialX/Y → Temporal → Upsample)
- Atmosphere LUT + IBL (Profile-only; Shared / View / IBL caches)
- Z-Binning tile / z-bin light lists
- Volumetric fog and cloud (after T0 depth) + FogComposite
- Translucent T0 / T1 refraction / T2
- Exposure / Bloom / CombineLUT / Vignette / FilmGrain / OutputTransform
- Instanced terrain / runtime virtual texture / foliage systems (separate from MeshScene)
- Mesh Drawing Pipeline —
MeshSceneSoA + RDGRGDrawListRef+ CPU/GPU backends (per-payload indirect, Auto fallback); Motion / CascadeShadow / LocalShadow (Spot + Point 6-face) MeshDraw; instance-indexed GPU cull (compact → transform); exclusive TransformId 1:1 ownership; sharedrenderingLayer(ERenderingLayer : byteflags); shadow MeshDraw useslight.cullingMask+shadowLayer; no HZB / GPU radix sort / full GPU LOD in this closed slice
Out of this delivery:
- Hardware RT (RTAO/RTGI files stay; no RG pass)
- Baked GI
- Depth of field
- Super-resolution expansion
- XR
- MSAA
- Dynamic resolution
- Add
Mesh Componentto renderable objects (Infinity path). SetrenderingLayeras flags (ERenderingLayer : byte, defaultLightLayerDefault) — not an int layer index. Each instance owns exactly oneTransformId(no shared transforms). - On the pipeline asset, assign Mesh Draw Pipeline CS (
Compute_MeshDrawPipeline.compute) to enable Auto GPU-indirect when supported. - Materials should provide Infinity pass tags and, for the instanced path, bind
transformBuffer/previousTransformBuffer/instanceIndexBuffer/instanceIndexOffset(seeInfinityLit-Instanced.shader). - LocalShadow / CascadeShadow MeshDraw uses the light’s Unity
cullingMaskplusLightComponent.shadowLayerfor Infinity casters; Unity MeshRenderers still go through RendererList. Spot or Point lights with shadows enabled are required for LocalShadow. - Run EditMode tests under
Tests/Editor.
Invariant: one logical instance → one exclusive transform record (MatrixDuplicateRatio == 1).
