Skip to content

Commit

Permalink
gles2: Split shaders into separate files
Browse files Browse the repository at this point in the history
  • Loading branch information
Drakulix committed Feb 23, 2023
1 parent 50d9d67 commit 596c4d0
Show file tree
Hide file tree
Showing 6 changed files with 99 additions and 103 deletions.
103 changes: 0 additions & 103 deletions src/backend/renderer/gles2/shaders.rs

This file was deleted.

14 changes: 14 additions & 0 deletions src/backend/renderer/gles2/shaders/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/*
* OpenGL Shaders
*/

// define constants
pub const XBGR: &str = "XBGR";
pub const EXTERNAL: &str = "EXTERNAL";
pub const DEBUG_FLAGS: &str = "DEBUG_FLAGS";

pub const VERTEX_SHADER: &str = include_str!("./texture.vert");
pub const FRAGMENT_SHADER: &str = include_str!("./texture.frag");

pub const VERTEX_SHADER_SOLID: &str = include_str!("./solid.vert");
pub const FRAGMENT_SHADER_SOLID: &str = include_str!("./solid.frag");
8 changes: 8 additions & 0 deletions src/backend/renderer/gles2/shaders/solid.frag
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#version 100

precision mediump float;
uniform vec4 color;

void main() {
gl_FragColor = color;
}
19 changes: 19 additions & 0 deletions src/backend/renderer/gles2/shaders/solid.vert
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#version 100

uniform mat3 matrix;
attribute vec2 vert;
attribute vec4 position;

mat2 scale(vec2 scale_vec){
return mat2(
scale_vec.x, 0.0,
0.0, scale_vec.y
);
}

void main() {
vec2 transform_translation = position.xy;
vec2 transform_scale = position.zw;
vec3 position = vec3(vert * scale(transform_scale) + transform_translation, 1.0);
gl_Position = vec4(matrix * position, 1.0);
}
35 changes: 35 additions & 0 deletions src/backend/renderer/gles2/shaders/texture.frag
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#version 100
#if defined(EXTERNAL)
#extension GL_OES_EGL_image_external : require
#endif

precision mediump float;
#if defined(EXTERNAL)
uniform samplerExternalOES tex;
#else
uniform sampler2D tex;
#endif

uniform float alpha;
varying vec2 v_coords;

#if defined(DEBUG_FLAGS)
uniform float tint;
#endif

void main() {
vec4 color;

#if defined(XBGR)
color = vec4(texture2D(tex, v_coords).rgb, 1.0) * alpha;
#else
color = texture2D(tex, v_coords) * alpha;
#endif

#if defined(DEBUG_FLAGS)
if (tint == 1.0)
color = vec4(0.0, 0.3, 0.0, 0.2) + color * 0.8;
#endif

gl_FragColor = color;
}
23 changes: 23 additions & 0 deletions src/backend/renderer/gles2/shaders/texture.vert
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#version 100
uniform mat3 matrix;
uniform mat3 tex_matrix;

attribute vec2 vert;
attribute vec4 vert_position;

varying vec2 v_coords;

mat2 scale(vec2 scale_vec){
return mat2(
scale_vec.x, 0.0,
0.0, scale_vec.y
);
}

void main() {
vec2 vert_transform_translation = vert_position.xy;
vec2 vert_transform_scale = vert_position.zw;
vec3 position = vec3(vert * scale(vert_transform_scale) + vert_transform_translation, 1.0);
v_tex_coords = (tex_matrix * position).xy;
gl_Position = vec4(matrix * position, 1.0);
}

0 comments on commit 596c4d0

Please sign in to comment.