Add docs/NOTES_renderer_v3.md
This commit is contained in:
parent
07efd27209
commit
6b830f3ff2
43
docs/NOTES_renderer_v3.md
Normal file
43
docs/NOTES_renderer_v3.md
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# GFX/Renderer v3
|
||||||
|
|
||||||
|
- Build around draw indirect
|
||||||
|
- Keep many meshlets together in one large buffer
|
||||||
|
- Meshlet: 128 triangles
|
||||||
|
- Mesh: List of meshlets
|
||||||
|
- Do compute based culling per VIEW
|
||||||
|
- Each View gets a list of mesh-refs (expanded to meshlet refs), and associated transforms
|
||||||
|
- **Optional:**
|
||||||
|
- These are, by default, permanent, allowing us to build a efficient bvh.
|
||||||
|
- Mark nodes as deleted, only collapse once the entire subtree is deleted.
|
||||||
|
|
||||||
|
Draw/Materials:
|
||||||
|
- Culling outputs tri-idx, meshlet for every pixel (For hardware that supports it, this could use raytracing)
|
||||||
|
- Meshlet refers to a (sub)material (via index)
|
||||||
|
- Per tile, create a list of draw indirect commands and a read-back buffer containing the (sub-)material index for each draw (+ total nr of draws)
|
||||||
|
- CPU loops over materials, issueing draw indirect calls upon material changes
|
||||||
|
- The ref to a sub-material may be made via meshlet -> material and view type -> sub-material
|
||||||
|
|
||||||
|
Some (most) sub-materials could draw into a gbuffer.
|
||||||
|
|
||||||
|
SubMaterialData is baked into structs containing constants and/or bindless ids.
|
||||||
|
Kept in one huge buffer
|
||||||
|
SubMaterial:
|
||||||
|
- Data
|
||||||
|
- PSO
|
||||||
|
Material:
|
||||||
|
- View Type -> SubMaterial
|
||||||
|
|
||||||
|
Frame Graph - Each view is a pass. Can re-use existing?
|
||||||
|
|
||||||
|
Renderer API:
|
||||||
|
- CreateMesh(data) -> MeshRef
|
||||||
|
- InstantiateMesh(MeshRef) -> MeshRef
|
||||||
|
- CreateView(type) -> View
|
||||||
|
- AddToView(MeshRef, Transform, Material) -> InstanceRef
|
||||||
|
- RemoveFromView(InstanceRef)
|
||||||
|
- UpdateInView(InstanceRef, Transform, Material)
|
||||||
|
- SetViewCamera(View, Camera)
|
||||||
|
- RenderView(View)
|
||||||
|
- CreateMaterial(NumSubMaterials, SubMaterialInfo*) -> Material
|
||||||
|
- CreateTexture(Format, W, H, NumMipLevels, Optional<InitialData*>) -> Texture
|
||||||
|
- EnqueueTextureUpdate(Texture, MipLevel, NewData)
|
Loading…
Reference in New Issue
Block a user