1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-21 19:57:44 +00:00
novus/renderer/include/baserenderer.h
Joshua Goins 729dce011a Fix specular not showing correctly, and more
The specular for lights now show up correctly. The offscreen buffers
use more accurate formats. And a new Scene struct is added for future
usage.
2024-04-27 21:11:53 -04:00

36 lines
No EOL
1,020 B
C++

// 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;
struct Scene;
/// 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.
virtual void render(VkCommandBuffer commandBuffer, uint32_t currentFrame, Camera &camera, Scene &scene, const std::vector<DrawObject> &models) = 0;
/// The final composite texture that is drawn into with render()
virtual Texture &getCompositeTexture() = 0;
};