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