40 lines
1.6 KiB
C++
40 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include "GlobalParamsBuffer.h"
|
|
#include "OpenGLRenderer.h"
|
|
#include "RuntimeHost.h"
|
|
#include "ShaderBuildQueue.h"
|
|
#include "ShaderTypes.h"
|
|
#include "ShaderProgramCompiler.h"
|
|
#include "ShaderTextureBindings.h"
|
|
|
|
#include <string>
|
|
|
|
class OpenGLShaderPrograms
|
|
{
|
|
public:
|
|
using LayerProgram = OpenGLRenderer::LayerProgram;
|
|
|
|
OpenGLShaderPrograms(OpenGLRenderer& renderer, RuntimeHost& runtimeHost);
|
|
|
|
bool CompileLayerPrograms(unsigned inputFrameWidth, unsigned inputFrameHeight, int errorMessageSize, char* errorMessage);
|
|
bool CommitPreparedLayerPrograms(const PreparedShaderBuild& preparedBuild, unsigned inputFrameWidth, unsigned inputFrameHeight, int errorMessageSize, char* errorMessage);
|
|
bool CompileDecodeShader(int errorMessageSize, char* errorMessage);
|
|
bool CompileOutputPackShader(int errorMessageSize, char* errorMessage);
|
|
void DestroyLayerPrograms();
|
|
void DestroySingleLayerProgram(LayerProgram& layerProgram);
|
|
void DestroyDecodeShaderProgram();
|
|
void ResetTemporalHistoryState();
|
|
const std::vector<RuntimeRenderState>& CommittedLayerStates() const { return mCommittedLayerStates; }
|
|
bool UpdateTextBindingTexture(const RuntimeRenderState& state, LayerProgram::TextBinding& textBinding, std::string& error);
|
|
bool UpdateGlobalParamsBuffer(const RuntimeRenderState& state, unsigned availableSourceHistoryLength, unsigned availableTemporalHistoryLength);
|
|
|
|
private:
|
|
OpenGLRenderer& mRenderer;
|
|
RuntimeHost& mRuntimeHost;
|
|
ShaderTextureBindings mTextureBindings;
|
|
GlobalParamsBuffer mGlobalParamsBuffer;
|
|
ShaderProgramCompiler mCompiler;
|
|
std::vector<RuntimeRenderState> mCommittedLayerStates;
|
|
};
|