Cranberry renderer

1 minute read

Cranberry world renderer

Attention 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[] }

Updated:

Comments