32 lines
1.2 KiB
C++
32 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include "OpenGLRenderer.h"
|
|
#include "RuntimeHost.h"
|
|
#include "ShaderTypes.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 CompileDecodeShader(int errorMessageSize, char* errorMessage);
|
|
void DestroyLayerPrograms();
|
|
void DestroySingleLayerProgram(LayerProgram& layerProgram);
|
|
void DestroyDecodeShaderProgram();
|
|
void ResetTemporalHistoryState();
|
|
bool UpdateTextBindingTexture(const RuntimeRenderState& state, LayerProgram::TextBinding& textBinding, std::string& error);
|
|
bool UpdateGlobalParamsBuffer(const RuntimeRenderState& state, unsigned availableSourceHistoryLength, unsigned availableTemporalHistoryLength);
|
|
|
|
private:
|
|
bool CompileSingleLayerProgram(const RuntimeRenderState& state, LayerProgram& layerProgram, int errorMessageSize, char* errorMessage);
|
|
bool LoadTextureAsset(const ShaderTextureAsset& textureAsset, GLuint& textureId, std::string& error);
|
|
|
|
OpenGLRenderer& mRenderer;
|
|
RuntimeHost& mRuntimeHost;
|
|
};
|