2024-04-21 17:35:48 -04:00
|
|
|
// SPDX-FileCopyrightText: 2024 Joshua Goins <josh@redstrate.com>
|
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <QDebug>
|
|
|
|
#include <string_view>
|
|
|
|
|
|
|
|
#include <glm/glm.hpp>
|
|
|
|
#include <physis.hpp>
|
|
|
|
#include <spirv.hpp>
|
|
|
|
#include <spirv_cross.hpp>
|
|
|
|
#include <spirv_glsl.hpp>
|
|
|
|
#include <vulkan/vulkan.h>
|
|
|
|
|
|
|
|
class Renderer;
|
|
|
|
struct DrawObject;
|
|
|
|
struct Camera;
|
|
|
|
struct Texture;
|
2024-04-27 21:11:53 -04:00
|
|
|
struct Scene;
|
2024-04-21 17:35:48 -04:00
|
|
|
|
|
|
|
/// Base class for all rendering implementations
|
|
|
|
class BaseRenderer
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual ~BaseRenderer() = default;
|
|
|
|
|
|
|
|
/// Perform any operations required on resize, such as recreating images.
|
|
|
|
virtual void resize() = 0;
|
|
|
|
|
|
|
|
/// Render a frame into @p commandBuffer. @p currentFrame is the same value as SwapChain::currentFrame for convenience.
|
2024-05-10 16:37:10 -04:00
|
|
|
virtual void render(VkCommandBuffer commandBuffer, Camera &camera, Scene &scene, const std::vector<DrawObject> &models) = 0;
|
2024-04-21 17:35:48 -04:00
|
|
|
|
|
|
|
/// The final composite texture that is drawn into with render()
|
|
|
|
virtual Texture &getCompositeTexture() = 0;
|
|
|
|
};
|