13#include "galaxy/core/ServiceLocator.hpp"
22 layout (location = 0) in vec2 l_pos;
23 layout (location = 1) in vec2 l_texels;
27 gl_Position = vec4(l_pos, 0.0, 1.0);
67 out vec4 io_frag_colour;
69 uniform float u_amount;
70 uniform sampler2D u_texture;
74 vec2 tex_size = textureSize(u_texture, 0).xy;
75 vec2 frag_coord = gl_FragCoord.xy;
76 vec2 tex_coord = frag_coord / tex_size;
78 float neighbour = u_amount * -1.0;
79 float center = u_amount * 4.0 + 1.0;
82 texture(u_texture, (frag_coord + vec2( 0, 1)) / tex_size).rgb * neighbour
83 + texture(u_texture, (frag_coord + vec2(-1, 0)) / tex_size).rgb * neighbour
84 + texture(u_texture, (frag_coord + vec2( 0, 0)) / tex_size).rgb * center
85 + texture(u_texture, (frag_coord + vec2( 1, 0)) / tex_size).rgb * neighbour
86 + texture(u_texture, (frag_coord + vec2( 0, -1)) / tex_size).rgb * neighbour;
88 io_frag_colour = vec4(sharpen, texture(u_texture, tex_coord).a);
119 glActiveTexture(GL_TEXTURE0);
120 glBindTexture(GL_TEXTURE_2D, input);
121 glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
128 m_amount = std::clamp(amount, 0.0f, 10.0f);
139 return core::ServiceLocator<core::Config>::ref().get<
bool>(
"sharpen",
"graphics.effects");
constexpr const char *const sharpen_frag
Sharpen fragment shader.
constexpr const char *const sharpen_vert
Sharpen.cpp galaxy.
void compile()
Compiles shader into GPU mem.
void set_uniform(const std::string &name, const Uniforms &... args)
Specialized variadic template for setting shader uniforms.
bool parse(const std::string &src) noexcept
Loads a combined raw shader.
void bind() const
Make active shader.
void create(const int width, const int height)
Create framebuffer and texture.
unsigned int texture() const
Gets framebuffer texture.
void recreate(const int width=-1, const int height=-1)
Destroy and re-create framebuffer.
void bind(bool clear=true)
Activate context.
Shader m_shader
Shader for post processing effect.
void set_amount(const float amount)
Set sharpening amount.
unsigned int render(const unsigned int input) override
Render effect to input texture.
Sharpen()=delete
Constructor.
float m_amount
Sharpening amount.
void resize(const int width, const int height) override
Resize framebuffers.
RenderTexture m_fb
Framebuffer to render effect to.
bool is_enabled() override
Is this effect enabled?
float get_amount() const
Get sharpening amount.