diff options
Diffstat (limited to 'assets/shaders')
| -rw-r--r-- | assets/shaders/2d.fsh | 14 | ||||
| -rw-r--r-- | assets/shaders/2d.vsh | 15 | ||||
| -rw-r--r-- | assets/shaders/2d_texcoord.fsh | 19 | ||||
| -rw-r--r-- | assets/shaders/2d_texcoord.vsh | 28 |
4 files changed, 22 insertions, 54 deletions
diff --git a/assets/shaders/2d.fsh b/assets/shaders/2d.fsh index 15465af..ba1fa59 100644 --- a/assets/shaders/2d.fsh +++ b/assets/shaders/2d.fsh @@ -1,7 +1,19 @@ #version 150 +uniform sampler2D g_samplers[255]; + +const uint SAMPLER_ID_NONE = 255u; + +in vec2 g_texcoord; in vec4 g_color; +flat in uint g_sampler; void main() { - gl_FragColor = g_color; + vec4 color = g_color; + if( g_sampler != SAMPLER_ID_NONE ) { + vec4 tex_color = texture2D( g_samplers[g_sampler], g_texcoord ); + color *= tex_color; + if (color.a < 0.01) discard; + } + gl_FragColor = color; } diff --git a/assets/shaders/2d.vsh b/assets/shaders/2d.vsh index 7701087..96370fc 100644 --- a/assets/shaders/2d.vsh +++ b/assets/shaders/2d.vsh @@ -1,11 +1,13 @@ #version 150 -in vec2 in_pos; -in vec2 in_texcoord; -in vec4 in_col; +in vec2 in_pos; +in vec4 in_clr; +in vec2 in_texcoord; +in float in_sampler; out vec2 g_texcoord; out vec4 g_color; +flat out uint g_sampler; uniform vec4 g_screenratio; @@ -17,7 +19,8 @@ void main() { pos[1] -= halfscreen[1]; pos[1] *= -1.0; - gl_Position = ( pos ) * g_screenratio; - g_texcoord = in_texcoord; - g_color = in_col; + g_texcoord = in_texcoord; + g_color = in_clr; + g_sampler = uint(in_sampler * 255.0 + 0.5); + gl_Position = ( pos ) * g_screenratio; } diff --git a/assets/shaders/2d_texcoord.fsh b/assets/shaders/2d_texcoord.fsh deleted file mode 100644 index 38dc69c..0000000 --- a/assets/shaders/2d_texcoord.fsh +++ /dev/null @@ -1,19 +0,0 @@ -#version 150 - -uniform sampler2D g_samplers[255]; - -const int SAMPLER_ID_NONE = 255; - -in vec2 g_texcoord; -in vec4 g_color; -flat in int g_sampler; - -void main() { - vec4 color = g_color; - if( g_sampler != SAMPLER_ID_NONE ) { - vec4 tex_color = texture2D( g_samplers[g_sampler], g_texcoord ); - color *= tex_color; - if (color.a < 0.01) discard; - } - gl_FragColor = color; -} diff --git a/assets/shaders/2d_texcoord.vsh b/assets/shaders/2d_texcoord.vsh deleted file mode 100644 index 80c7597..0000000 --- a/assets/shaders/2d_texcoord.vsh +++ /dev/null @@ -1,28 +0,0 @@ -#version 150 - -uniform sampler2D g_samplers[255]; - -in vec2 in_pos; -in vec4 in_clr; -in vec2 in_texcoord; -in float in_sampler; - -out vec2 g_texcoord; -out vec4 g_color; -flat out int g_sampler; - -uniform vec4 g_screenratio; - -void main() { - vec2 halfscreen = vec2( 1.0 / g_screenratio[0], 1.0 / g_screenratio[1] ); - - vec4 pos = vec4( in_pos.x, in_pos.y, 1, 1 ); - pos[0] -= halfscreen[0]; - pos[1] -= halfscreen[1]; - pos[1] *= -1.0; - - g_texcoord = in_texcoord; - g_color = in_clr; - g_sampler = int(in_sampler * 255.0 + 0.5); - gl_Position = ( pos ) * g_screenratio; -} |
