Update shader to use new render resource system

This commit is contained in:
Georg Hagen
2024-08-21 13:33:15 +02:00
parent 3940a72084
commit b13c1c54ae
6 changed files with 26 additions and 38 deletions

View File

@@ -8,6 +8,7 @@
#include "Base/ICloseable.hpp"
#include "Base/Utils.hpp"
#include "Base/Render/RenderResource.hpp"
#include "VertexInputDescription.hpp"
#include "ShaderProgramType.hpp"
#include "DescriptorInputDescription.hpp"
@@ -79,7 +80,7 @@ namespace OpenVulkano::Scene
class Shader final : public ICloseable
class Shader final : public RenderResourceHolder<Shader>, public ICloseable
{
public:
std::vector<ShaderProgram> shaderPrograms{};
@@ -88,7 +89,6 @@ namespace OpenVulkano::Scene
std::vector<PushConstantRange> pushConstantRanges;
Topology topology = Topology::TRIANGLE_LIST;
CullMode cullMode = CullMode::BACK;
ICloseable* renderShader = nullptr;
CompareOp depthCompareOp = CompareOp::LESS;
bool alphaBlend = false; // TODO allow fine control over blending
bool depthTest = true;
@@ -96,7 +96,7 @@ namespace OpenVulkano::Scene
bool dynamicViewport = true; // If disabled the swapchains fullscreen viewport will always be used, regardless of framebuffer or viewport
Shader() = default;
~Shader() override { if (renderShader) Shader::Close(); }
~Shader() override { Shader::Close(); }
Shader& AddShaderProgram(const ShaderProgram& shaderProgram)
{
@@ -163,14 +163,14 @@ namespace OpenVulkano::Scene
void Close() override
{
renderShader->Close();
renderShader = nullptr;
if (HasRenderResource())
GetRenderResource().Release();
}
private:
void CheckShaderInitState() const
{
if (renderShader) throw std::runtime_error("Shader already initialized!");
if (HasRenderResource()) throw std::runtime_error("Shader already initialized!");
}
};
}