Cranberry renderer
1 minute read
Cranberry world renderer
Work in progress
---
title: Static Mesh GPU Data relations
---
erDiagram
SmVertIdxBuf ||--|{ SmVertS0 : "contains"
SmVertIdxBuf ||--|{ SmVertS1 : "contains"
SmVertIdxBuf ||--|{ Indices : "contains"
GpBindlessData ||--|{ MID : "contains"
GpBindlessData ||--|{ SmBatch : "contains"
GpBindlessData ||--|{ BatchMaterialIndex : "contains"
SmBuf ||--|{ Sm : "contains"
SmInstBuf ||--|{ SmInst : "contains"
MIBuf || -- |{ MI : "contains"
SmBatch || -- || SmVertIdxBuf : "points to"
MI || -- || MID : "points to"
BatchMaterialIndex || -- || MI : "points to"
Sm || -- |{ SmBatch : "points to"
SmInst || -- || Sm : "points to"
SmInst }| -- |{ BatchMaterialIndex : "points to"
MID }| -- |{ RoTextures : "points to"
GpBindlessData[GeneralPurposeBindlessData] {
AnyType1 Data1
AnyType2 Data2
AnyType1 Data3
AnyTypesN DataN "And continues"
}
MID[MaterialInstanceData] {
uint MaterialIdx
FieldTypes Fields "One or more of material fields"
uint TextureIdx "One or more of texture indices, Sampler types are hardcoded into shader"
}
MI[MaterialInstance] {
uint MaterialIdx
uint bufferIdx
uint bufferOffset
}
RoTextures[ReadOnlyBindlessTextures]{
Texture textures[]
}
SmBatch[StaticMeshBatch]{
uint startIdx
uint idxCount
}
Sm[StaticMesh]{
uint vertS0Offset
uint vertS1Offset
uint vertCount
uint idxOffset
uint idxCount
uint batchBufferIdx "Buffer index in GP descriptor"
uint batchBufferOffset "Bytes offset in GP Buffer"
uint batchCount
}
SmInst[StaticMeshInstance]{
AABB bound
float4x3 m2w
float4x3 w2m
uint meshIdx
uint batchMatIdx "Buffer index in GP descriptor"
uint batchMatOffset "Bytes offset in GP Buffer"
uint batchCount
}
SmVertS0[StaticMeshVertStream0]{
float3 position
}
SmVertS1[StaticMeshVertStream1]{
float3 normal
float3 tangent
float2 uv
}
%% Buffers
SmVertIdxBuf[StaticMeshVertIdxBuffer]{
StaticMeshVertStream0 vertsS0Mesh1[]
StaticMeshVertStream1 vertsS1Mesh2[]
uint idxsMesh1[]
StaticMeshVertStream0 vertsS0MeshN[]
StaticMeshVertStream1 vertsS1MeshN[]
uint idxsMeshN[]
}
SmBuf[StaticMeshesBuffer]{
StaticMesh meshes[]
}
SmInstBuf[StaticMeshInstanceBuffer]{
StaticMeshInstance insts[]
}
MIBuf[MaterialInstanceBuffer]{
MaterialInstance insts[]
}
Comments