#pragma once

#include "managedObject.hpp"

#include "gpuBuffer.hpp"
#include "gpuFragmentUsseBuffer.hpp"
#include "gpuVertexUsseBuffer.hpp"
#include <psp2/gxm.h>

namespace render::kernel
{

class ShaderPatcher : public ManagedObject
{
private:
    SceGxmShaderPatcher *patcher;
    GpuBuffer *buffer;
    GpuFragmentUsseBuffer *fBuffer;
    GpuVertexUsseBuffer *vBuffer;
public:
    ShaderPatcher();
    virtual ~ShaderPatcher();

    SceGxmShaderPatcher *GetPatcher() const;
};

} // namespace render::kernel