Move shaders to separate files

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97 2025-01-10 11:40:38 +02:00
parent cd0895b237
commit 6fc386cfe9
No known key found for this signature in database
GPG Key ID: 55EF5DA53DB36318
6 changed files with 59 additions and 47 deletions

View File

@ -810,6 +810,7 @@ SET(LAUNCHER_SOURCES
resources/flat/flat.qrc resources/flat/flat.qrc
resources/flat_white/flat_white.qrc resources/flat_white/flat_white.qrc
resources/documents/documents.qrc resources/documents/documents.qrc
resources/shaders/shaders.qrc
../${Launcher_Branding_LogoQRC} ../${Launcher_Branding_LogoQRC}
# Icons # Icons
@ -1252,6 +1253,7 @@ qt_add_resources(LAUNCHER_RESOURCES
resources/iOS/iOS.qrc resources/iOS/iOS.qrc
resources/flat/flat.qrc resources/flat/flat.qrc
resources/documents/documents.qrc resources/documents/documents.qrc
resources/shaders/shaders.qrc
../${Launcher_Branding_LogoQRC} ../${Launcher_Branding_LogoQRC}
) )

View File

@ -84,6 +84,8 @@ int main(int argc, char* argv[])
Q_INIT_RESOURCE(iOS); Q_INIT_RESOURCE(iOS);
Q_INIT_RESOURCE(flat); Q_INIT_RESOURCE(flat);
Q_INIT_RESOURCE(flat_white); Q_INIT_RESOURCE(flat_white);
Q_INIT_RESOURCE(shaders);
return app.exec(); return app.exec();
} }
case Application::Failed: case Application::Failed:

View File

@ -0,0 +1,21 @@
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
// https://code.qt.io/cgit/qt/qtbase.git/tree/examples/opengl/cube/fshader.glsl
#ifdef GL_ES
// Set default precision to medium
precision mediump int;
precision mediump float;
#endif
uniform sampler2D texture;
varying vec2 v_texcoord;
void main()
{
// Set fragment color from texture
// gl_FragColor = texture2D(texture, v_texcoord);
vec4 texColor = texture2D(texture, v_texcoord);
if (texColor.a < 0.1) discard; // Optional: Discard fully transparent pixels
gl_FragColor = texColor;
}

View File

@ -0,0 +1,6 @@
<RCC>
<qresource prefix="/shaders">
<file>vshader.glsl</file>
<file>fshader.glsl</file>
</qresource>
</RCC>

View File

@ -0,0 +1,26 @@
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
// https://code.qt.io/cgit/qt/qtbase.git/tree/examples/opengl/cube/vshader.glsl
#ifdef GL_ES
// Set default precision to medium
precision mediump int;
precision mediump float;
#endif
uniform mat4 mvp_matrix;
uniform mat4 model_matrix;
attribute vec4 a_position;
attribute vec2 a_texcoord;
varying vec2 v_texcoord;
void main()
{
// Calculate vertex position in screen space
gl_Position = mvp_matrix * model_matrix * a_position;
// Pass texture coordinate to fragment shader
// Value will be automatically interpolated to fragments inside polygon faces
v_texcoord = a_texcoord;
}

View File

@ -70,56 +70,11 @@ void SkinOpenGLWidget::initializeGL()
void SkinOpenGLWidget::initShaders() void SkinOpenGLWidget::initShaders()
{ {
// Compile vertex shader // Compile vertex shader
if (!m_program.addCacheableShaderFromSourceCode(QOpenGLShader::Vertex, R"(// Copyright (C) 2024 The Qt Company Ltd. if (!m_program.addCacheableShaderFromSourceFile(QOpenGLShader::Vertex, ":/shaders/vshader.glsl"))
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifdef GL_ES
// Set default precision to medium
precision mediump int;
precision mediump float;
#endif
uniform mat4 mvp_matrix;
uniform mat4 model_matrix;
attribute vec4 a_position;
attribute vec2 a_texcoord;
varying vec2 v_texcoord;
void main()
{
// Calculate vertex position in screen space
gl_Position = mvp_matrix * model_matrix * a_position;
// Pass texture coordinate to fragment shader
// Value will be automatically interpolated to fragments inside polygon faces
v_texcoord = a_texcoord;
}
)"))
close(); close();
// Compile fragment shader // Compile fragment shader
if (!m_program.addCacheableShaderFromSourceCode(QOpenGLShader::Fragment, R"(// Copyright (C) 2024 The Qt Company Ltd. if (!m_program.addCacheableShaderFromSourceFile(QOpenGLShader::Fragment, ":/shaders/fshader.glsl"))
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifdef GL_ES
// Set default precision to medium
precision mediump int;
precision mediump float;
#endif
uniform sampler2D texture;
varying vec2 v_texcoord;
void main()
{
// Set fragment color from texture
// gl_FragColor = texture2D(texture, v_texcoord);
vec4 texColor = texture2D(texture, v_texcoord);
if (texColor.a < 0.1) discard; // Optional: Discard fully transparent pixels
gl_FragColor = texColor;
}
)"))
close(); close();
// Link shader pipeline // Link shader pipeline