renaming dir
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
#pragma once
|
||||
|
||||
#include <sophia/scene_registry.hpp>
|
||||
#include <sophia/scene_view.hpp>
|
||||
#include <vector>
|
||||
|
||||
#include "renderer/sprite_render_system.hpp"
|
||||
#include "resources/resource_registry.hpp"
|
||||
|
||||
namespace sophia {
|
||||
|
||||
/**
|
||||
* !TEMP to be decoupled once scene batching and rendering impl
|
||||
*
|
||||
* Turns a scene's components into draw calls for a SceneView.
|
||||
*/
|
||||
class SceneRenderer {
|
||||
public:
|
||||
SceneRenderer(const SceneRenderer&) = delete;
|
||||
SceneRenderer& operator=(const SceneRenderer&) = delete;
|
||||
|
||||
SceneRenderer(const SceneRegistry& sceneRegistry, ResourceRegistry& resources,
|
||||
Device& device, vk::Format colorFormat);
|
||||
|
||||
// Call once per frame, before any render().
|
||||
void beginFrame(u32 frameIndex);
|
||||
|
||||
// Records `sceneView` as seen through `camera` (an entity of the view's
|
||||
// scene with a CameraComponent) into `commandBuffer`. Rendering into the
|
||||
// view's target must already have begun.
|
||||
void render(vk::CommandBuffer commandBuffer, const SceneView& sceneView,
|
||||
Entity camera);
|
||||
|
||||
private:
|
||||
struct SpriteDrawItem {
|
||||
s32 sortOrder;
|
||||
float depth;
|
||||
TextureHandle texture;
|
||||
SpriteRenderSystem::Instance instance;
|
||||
};
|
||||
|
||||
void renderSprites(vk::CommandBuffer commandBuffer, const Scene& scene,
|
||||
const glm::mat4& viewProjection);
|
||||
|
||||
const SceneRegistry& sceneRegistry;
|
||||
ResourceRegistry& resources;
|
||||
|
||||
SpriteRenderSystem spriteRenderSystem;
|
||||
|
||||
// Reused across frames to avoid reallocating.
|
||||
std::vector<SpriteDrawItem> spriteDrawItems;
|
||||
std::vector<SpriteRenderSystem::Instance> spriteInstances;
|
||||
std::vector<SpriteRenderSystem::Batch> spriteBatches;
|
||||
};
|
||||
|
||||
} // namespace sophia
|
||||
Reference in New Issue
Block a user