Grindstone Game Engine v0.2.0
An open source game engine and toolkit.
Loading...
Searching...
No Matches
BaseAssetRenderer.hpp
1#pragma once
2
3#include <string>
4#include <vector>
5#include <map>
6#include <entt/fwd.hpp>
7#include <glm/vec3.hpp>
8
9#include "EngineCore/Assets/AssetManager.hpp"
10
11using RenderQueueIndex = uint8_t;
12const RenderQueueIndex INVALID_RENDER_QUEUE = UINT8_MAX;
13
14namespace Grindstone {
15 namespace GraphicsAPI {
16 class CommandBuffer;
17 class DescriptorSet;
18 }
19
20 enum class DrawSortMode {
21 DistanceFrontToBack,
22 DistanceBackToFront
23 };
24
26 public:
27 virtual void AddQueue(const char* name, DrawSortMode sortType) = 0;
28 virtual void RenderShadowMap(GraphicsAPI::CommandBuffer* commandBuffer, GraphicsAPI::DescriptorSet* lightingDescriptorSet, entt::registry& registry, glm::vec3 lightSourcePosition) = 0;
29 virtual void CacheRenderTasksAndFrustumCull(glm::vec3 eyePosition, entt::registry& registry) = 0;
30 virtual void SortQueues() = 0;
31
32 virtual std::string GetName() const = 0;
33 virtual void SetEngineDescriptorSet(GraphicsAPI::DescriptorSet* descriptorSet) = 0;
34 virtual void RenderQueue(GraphicsAPI::CommandBuffer* commandBuffer, const char* queueName) = 0;
35 };
36}
Definition BaseAssetRenderer.hpp:25
Definition CommandBuffer.hpp:21
Definition DescriptorSet.hpp:11