mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-12-13 04:36:59 +00:00
42 lines
1.2 KiB
C++
42 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include "Cafe/HW/Latte/Renderer/RendererShader.h"
|
|
#include "Common/GLInclude/GLInclude.h"
|
|
|
|
class RendererShaderGL : public RendererShader
|
|
{
|
|
public:
|
|
RendererShaderGL(ShaderType type, uint64 baseHash, uint64 auxHash, bool isGameShader, bool isGfxPackShader, const std::string& glslSource);
|
|
|
|
virtual ~RendererShaderGL();
|
|
|
|
void PreponeCompilation(bool isRenderThread) override;
|
|
bool IsCompiled() override;
|
|
bool WaitForCompiled() override;
|
|
|
|
GLuint GetProgram() const { cemu_assert_debug(m_isCompiled); return m_program; }
|
|
GLuint GetShaderObject() const { cemu_assert_debug(m_isCompiled); return m_shader_object; }
|
|
|
|
sint32 GetUniformLocation(const char* name) override;
|
|
void SetUniform2fv(sint32 location, void* data, sint32 count) override;
|
|
void SetUniform4iv(sint32 location, void* data, sint32 count) override;
|
|
|
|
static void ShaderCacheLoading_begin(uint64 cacheTitleId);
|
|
static void ShaderCacheLoading_end();
|
|
static void ShaderCacheLoading_Close();
|
|
|
|
private:
|
|
GLuint m_program;
|
|
GLuint m_shader_object;
|
|
|
|
bool loadBinary();
|
|
void storeBinary();
|
|
|
|
std::string m_glslSource;
|
|
|
|
bool m_shader_attached{ false };
|
|
bool m_isCompiled{ false };
|
|
|
|
static class FileCache* s_programBinaryCache;
|
|
};
|
|
|