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_white/flat_white.qrc
resources/documents/documents.qrc
resources/shaders/shaders.qrc
../${Launcher_Branding_LogoQRC}
# Icons
@ -1252,6 +1253,7 @@ qt_add_resources(LAUNCHER_RESOURCES
resources/iOS/iOS.qrc
resources/flat/flat.qrc
resources/documents/documents.qrc
resources/shaders/shaders.qrc
../${Launcher_Branding_LogoQRC}
)

View File

@ -84,6 +84,8 @@ int main(int argc, char* argv[])
Q_INIT_RESOURCE(iOS);
Q_INIT_RESOURCE(flat);
Q_INIT_RESOURCE(flat_white);
Q_INIT_RESOURCE(shaders);
return app.exec();
}
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()
{
// Compile vertex shader
if (!m_program.addCacheableShaderFromSourceCode(QOpenGLShader::Vertex, R"(// Copyright (C) 2024 The Qt Company Ltd.
// 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;
}
)"))
if (!m_program.addCacheableShaderFromSourceFile(QOpenGLShader::Vertex, ":/shaders/vshader.glsl"))
close();
// Compile fragment shader
if (!m_program.addCacheableShaderFromSourceCode(QOpenGLShader::Fragment, R"(// Copyright (C) 2024 The Qt Company Ltd.
// 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;
}
)"))
if (!m_program.addCacheableShaderFromSourceFile(QOpenGLShader::Fragment, ":/shaders/fshader.glsl"))
close();
// Link shader pipeline