engine/engine/inc/uf/ext/vulkan/graphics/rendertarget.h
2020-08-13 00:00:00 -05:00

48 lines
1.3 KiB
C++

#pragma once
#include <uf/ext/vulkan/device.h>
#include <uf/ext/vulkan/swapchain.h>
#include <uf/ext/vulkan/initializers.h>
#include <uf/ext/vulkan/graphic.old.h>
#include <uf/ext/vulkan/texture.h>
#include <uf/ext/vulkan/rendertarget.h>
#include <uf/utils/math/matrix.h>
namespace ext {
namespace vulkan {
struct UF_API RenderTargetGraphic : public GraphicOld {
struct Vertex {
alignas(8) pod::Vector2f position;
alignas(8) pod::Vector2f uv;
};
struct {
struct {
alignas(16) pod::Matrix4f models[2];
} matrices;
struct {
alignas(8) pod::Vector2f position = { 0.5f, 0.5f };
alignas(8) pod::Vector2f radius = { 0.1f, 0.1f };
alignas(16) pod::Vector4f color = { 1, 1, 1, 1 };
} cursor;
alignas(4) float alpha;
} uniforms;
struct {
uint32_t pass = 0;
} pushConstants;
uint32_t indices = 0;
VkSampler sampler;
ext::vulkan::RenderTarget* renderTarget;
virtual void createCommandBuffer( VkCommandBuffer );
virtual bool autoAssignable() const;
virtual std::string name() const;
// RAII
virtual void initialize( const std::string& = "" );
virtual void initialize( Device& device, RenderMode& renderMode );
virtual void destroy();
};
}
}