29 lines
686 B
GLSL
29 lines
686 B
GLSL
#version 430
|
|
|
|
layout (binding = 0) uniform sampler2D sprite;
|
|
|
|
layout (location = 0) in vec4 color;
|
|
layout (location = 1) in vec2 uv;
|
|
|
|
layout (location = 0) out vec4 texel;
|
|
|
|
layout (binding = 0) readonly buffer Camera {
|
|
mat4 projection_matrix;
|
|
};
|
|
|
|
layout (binding = 1) readonly buffer Material {
|
|
float effect_magnitude;
|
|
};
|
|
|
|
void main() {
|
|
const vec2 red_channel_uv = uv + vec2(effect_magnitude, 0.0);
|
|
const vec2 blue_channel_uv = uv + vec2(-effect_magnitude, 0.0);
|
|
const vec4 original_texel = texture(sprite, uv);
|
|
|
|
texel = vec4(texture(sprite, red_channel_uv).r, original_texel.g, texture(sprite, blue_channel_uv).b, original_texel.a) * color;
|
|
|
|
if (texel.a == 0) {
|
|
discard;
|
|
}
|
|
}
|