C++-ify GL default shader code

This commit is contained in:
goeiecool9999 2026-01-22 20:05:07 +01:00
parent 657d9f6f43
commit 81a6f92f8d

View File

@ -3,7 +3,6 @@
#include "Cafe/HW/Latte/Core/LatteDefaultShaders.h"
#include "Cafe/HW/Latte/Renderer/Renderer.h"
#include "Cafe/HW/Latte/Renderer/OpenGL/RendererShaderGL.h"
#include "util/helpers/StringBuf.h"
LatteDefaultShader_t* _copyShader_depthToColor;
LatteDefaultShader_t* _copyShader_colorToDepth;
@ -13,20 +12,20 @@ LatteDefaultShader_t* LatteDefaultShader_getPixelCopyShader_depthToColor()
if (_copyShader_depthToColor != 0)
return _copyShader_depthToColor;
catchOpenGLError();
LatteDefaultShader_t* defaultShader = (LatteDefaultShader_t*)malloc(sizeof(LatteDefaultShader_t));
memset(defaultShader, 0, sizeof(LatteDefaultShader_t));
LatteDefaultShader_t* defaultShader = new LatteDefaultShader_t{};
StringBuf fCStr_defaultFragShader(1024 * 16);
fCStr_defaultFragShader.add("#version 420\r\n");
fCStr_defaultFragShader.add("in vec2 passUV;\r\n");
fCStr_defaultFragShader.add("uniform sampler2D textureSrc;\r\n");
fCStr_defaultFragShader.add("layout(location = 0) out vec4 colorOut0;\r\n");
fCStr_defaultFragShader.add("\r\n");
fCStr_defaultFragShader.add("void main(){\r\n");
fCStr_defaultFragShader.add("colorOut0 = vec4(texture(textureSrc, passUV).r,0.0,0.0,1.0);\r\n");
fCStr_defaultFragShader.add("}\r\n");
std::string defaultFragmentShader =
R"glsl(#version 420
in vec2 passUV;
uniform sampler2D textureSrc;
layout(location = 0) out vec4 colorOut0;
RendererShaderGL* fragShader = static_cast<RendererShaderGL*>(g_renderer->shader_create(RendererShader::ShaderType::kFragment, 0, 0, std::string{fCStr_defaultFragShader.c_str()}, false, false));
void main(){
colorOut0 = vec4(texture(textureSrc, passUV).r,0.0,0.0,1.0);
}
)glsl";
RendererShaderGL* fragShader = static_cast<RendererShaderGL*>(g_renderer->shader_create(RendererShader::ShaderType::kFragment, 0, 0, std::move(defaultFragmentShader), false, false));
fragShader->PreponeCompilation();
defaultShader->glProgamId = fragShader->GetProgram();
@ -45,21 +44,19 @@ LatteDefaultShader_t* LatteDefaultShader_getPixelCopyShader_colorToDepth()
if (_copyShader_colorToDepth != 0)
return _copyShader_colorToDepth;
catchOpenGLError();
LatteDefaultShader_t* defaultShader = (LatteDefaultShader_t*)malloc(sizeof(LatteDefaultShader_t));
memset(defaultShader, 0, sizeof(LatteDefaultShader_t));
LatteDefaultShader_t* defaultShader = new LatteDefaultShader_t{};
StringBuf fCStr_defaultFragShader(1024 * 16);
fCStr_defaultFragShader.add("#version 420\r\n");
fCStr_defaultFragShader.add("in vec2 passUV;\r\n");
fCStr_defaultFragShader.add("uniform sampler2D textureSrc;\r\n");
fCStr_defaultFragShader.add("layout(location = 0) out vec4 colorOut0;\r\n");
fCStr_defaultFragShader.add("\r\n");
fCStr_defaultFragShader.add("void main(){\r\n");
fCStr_defaultFragShader.add("gl_FragDepth = texture(textureSrc, passUV).r;\r\n");
fCStr_defaultFragShader.add("}\r\n");
std::string defaultFragShader = R"glsl(#version 420
in vec2 passUV;
uniform sampler2D textureSrc;
layout(location = 0) out vec4 colorOut0;
void main() {
gl_FragDepth = texture(textureSrc, passUV).r;
}
)glsl";
RendererShaderGL* fragShader = static_cast<RendererShaderGL*>(g_renderer->shader_create(RendererShader::ShaderType::kFragment, 0, 0, std::string{fCStr_defaultFragShader.c_str()}, false, false));
RendererShaderGL* fragShader = static_cast<RendererShaderGL*>(g_renderer->shader_create(RendererShader::ShaderType::kFragment, 0, 0, std::move(defaultFragShader), false, false));
fragShader->PreponeCompilation();
defaultShader->glProgamId = fragShader->GetProgram();
defaultShader->copyShaderUniforms.uniformLoc_textureSrc = fragShader->GetUniformLocation("textureSrc");