From 81a6f92f8d43fdcc344346111fc1ccdf8a534d5d Mon Sep 17 00:00:00 2001 From: goeiecool9999 <7033575+goeiecool9999@users.noreply.github.com> Date: Thu, 22 Jan 2026 20:05:07 +0100 Subject: [PATCH] C++-ify GL default shader code --- .../HW/Latte/Core/LatteDefaultShaders.cpp | 47 +++++++++---------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/src/Cafe/HW/Latte/Core/LatteDefaultShaders.cpp b/src/Cafe/HW/Latte/Core/LatteDefaultShaders.cpp index 1fc76ebf..8ec3fcef 100644 --- a/src/Cafe/HW/Latte/Core/LatteDefaultShaders.cpp +++ b/src/Cafe/HW/Latte/Core/LatteDefaultShaders.cpp @@ -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(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(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(g_renderer->shader_create(RendererShader::ShaderType::kFragment, 0, 0, std::string{fCStr_defaultFragShader.c_str()}, false, false)); + RendererShaderGL* fragShader = static_cast(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");