vkdoom_m/src/hwrenderer/postprocessing/hw_blurshader.h

39 lines
1.1 KiB
C++

#pragma once
#include "hwrenderer/postprocessing/hw_shaderprogram.h"
class FGLRenderer;
class PPFrameBuffer;
class PPTexture;
class FBlurShader
{
public:
void Bind(IRenderQueue *q, bool vertical);
struct UniformBlock
{
float SampleWeights[8];
static std::vector<UniformFieldDesc> Desc()
{
return
{
{ "SampleWeights0", UniformType::Float, offsetof(UniformBlock, SampleWeights[0]) },
{ "SampleWeights1", UniformType::Float, offsetof(UniformBlock, SampleWeights[1]) },
{ "SampleWeights2", UniformType::Float, offsetof(UniformBlock, SampleWeights[2]) },
{ "SampleWeights3", UniformType::Float, offsetof(UniformBlock, SampleWeights[3]) },
{ "SampleWeights4", UniformType::Float, offsetof(UniformBlock, SampleWeights[4]) },
{ "SampleWeights5", UniformType::Float, offsetof(UniformBlock, SampleWeights[5]) },
{ "SampleWeights6", UniformType::Float, offsetof(UniformBlock, SampleWeights[6]) },
{ "SampleWeights7", UniformType::Float, offsetof(UniformBlock, SampleWeights[7]) },
};
}
};
ShaderUniforms<UniformBlock, POSTPROCESS_BINDINGPOINT> Uniforms[2];
private:
std::unique_ptr<IShaderProgram> mShader[2];
};