55 const glm::mat4& Transform,
59 const uint32_t SubmeshIndex,
61 const glm::mat4& Transform,
66 uint32_t DrawCalls = 0;
68 uint32_t Instances = 0;
69 float TotalGpuTime = 0.0f;
77 FOnDrawListFlush OnDrawListFlush;
79 enum class EMeshRigged
92 uint32_t SubmeshIndex = 0;
93 bool bIsSelected =
false;
97 const uint32_t InSubmeshIndex,
98 const bool IsSelected)
99 : MeshHandle(InMeshHandle)
100 , MaterialHandle(InMaterialHandle)
101 , SubmeshIndex(InSubmeshIndex)
102 , bIsSelected(IsSelected)
106 FORCEINLINE
bool operator<(
const FMeshKey& Other)
const
108 if (MeshHandle < Other.MeshHandle)
return true;
109 if (MeshHandle > Other.MeshHandle)
return false;
110 if (SubmeshIndex < Other.SubmeshIndex)
return true;
111 if (SubmeshIndex > Other.SubmeshIndex)
return false;
112 if (MaterialHandle < Other.MaterialHandle)
return true;
113 if (MaterialHandle > Other.MaterialHandle)
return false;
114 return (bIsSelected < Other.bIsSelected);
121 template<
typename MeshType = LMesh>
124 TObjectPtr<MeshType> Mesh{};
125 uint32_t SubmeshIndex{};
126 TObjectPtr<LMaterialTable> MaterialTable{};
127 TObjectPtr<LMaterial> OverrideMaterial{};
129 uint32_t InstanceCount = 0;
130 uint32_t InstanceOffset = 0;
131 bool bIsRigged =
false;
134 struct FTransformVertexData
139 struct FTransformBuffer
141 TObjectPtr<LVertexBuffer> Buffer{};
142 FTransformVertexData* Data =
nullptr;
145 struct FTransformMapData
147 std::vector<FTransformVertexData> Transforms{};
148 uint32_t TransformOffset = 0;
152 FSceneRendererSpecification Specification{};
153 TObjectPtr<LScene> Scene;
156 TObjectPtr<LRenderCommandBuffer> CommandBuffer;
157 TObjectPtr<LRenderer2D> Renderer2D;
161 glm::mat4 ViewProjectionMatrix;
165 TObjectPtr<LPipeline> GeometryPipeline;
166 TObjectPtr<LRenderPass> GeometryPass;
167 TObjectPtr<LUniformBufferSet> UBSCamera;
169 std::map<FMeshKey, FDrawCommand<LMesh>> MeshDrawList{};
170 std::map<FMeshKey, FTransformMapData> MeshTransformMap;
172 std::map<FMeshKey, FDrawCommand<LStaticMesh>> StaticMeshDrawList{};
173 std::map<FMeshKey, FTransformMapData> StaticMeshTransformMap;
175 friend class LSceneManagerPanel;
void SubmitStaticMesh(TObjectPtr< LStaticMesh > StaticMesh, TObjectPtr< LMaterialTable > MaterialTable, const glm::mat4 &Transform, TObjectPtr< LMaterialAsset > MaterialOverride=nullptr)
Definition SceneRenderer.cpp:60
void SubmitMesh(TObjectPtr< LMesh > Mesh, const uint32_t SubmeshIndex, TObjectPtr< LMaterialTable > MaterialTable, const glm::mat4 &Transform, TObjectPtr< LMaterialAsset > MaterialOverride=nullptr)
Definition SceneRenderer.cpp:121