12 struct ImguiShaderCache;
68 virtual void gui() = 0;
111 std::shared_ptr<LoadedPostProcShader>
shader;
156 std::shared_ptr<LoadedPostProcShader>
vert;
157 std::shared_ptr<LoadedPostProcShader>
hori;
162#if FF_HAS(BLUR_USE_GAUSS)
168#if FF_HAS(BLUR_USE_GAUSS)
172 BlurEffect(std::string
n, std::shared_ptr<LoadedPostProcShader>
v, std::shared_ptr<LoadedPostProcShader> h);
constexpr float min(float lhs, float rhs)
constexpr float max(float lhs, float rhs)
A (inclusive) range between two values.
ExtractShader * extract_shader
std::shared_ptr< FrameBuffer > bloom_buffer
std::array< std::shared_ptr< FrameBuffer >, 2 > ping_pong_buffer
PingPongBlurShader * ping_pong_shader
A blur effect split into a vertical and horizontal blur step.
void build(const BuildArg &arg) override
BlurEffect(std::string n, std::shared_ptr< LoadedPostProcShader > v, std::shared_ptr< LoadedPostProcShader > h)
void use_hori_shader(const PostProcArg &a, const FrameBuffer &t)
void update(float) override
BurHorizontalProvider hori_p
std::shared_ptr< LoadedPostProcShader > vert
void use_vert_shader(const PostProcArg &a, const FrameBuffer &t) const
BlurVerticalProvider vert_p
std::shared_ptr< LoadedPostProcShader > hori
A shader property for the vertical blur step.
BlurVerticalProvider(BlurEffect *b)
void use_shader(const PostProcArg &a, const FrameBuffer &t) override
Arguments for when building a effect stack.
A shader property for the horizontal blur step.
void use_shader(const PostProcArg &a, const FrameBuffer &t) override
BurHorizontalProvider(BlurEffect *b)
A special effect where the effect can be eased into existence.
A float shader property that is dragged with the mouse.
void use(const PostProcArg &, ShaderProgram &shader) override
FloatDragShaderProp(const LoadedPostProcShader &shader, const std::string &n, float v, float s)
A float shader property that is a slider.
void use(const PostProcArg &, ShaderProgram &shader) override
FloatSliderShaderProp(const LoadedPostProcShader &shader, const std::string &n, float v, float mi, float ma)
"render to texture" feature
The "base class" for a loaded postproc shader.
Arguments for rendering a post-processing effect.
The shader data for composing a rendered image.
A source that can be rendered to a framebuffer or a screen.
A source that "just" renders the world.
std::shared_ptr< FrameBuffer > msaa_buffer
void gui(imgui::ImguiShaderCache *cache)
std::size_t last_bloom_blur_index
std::shared_ptr< FrameBuffer > shadow_buffer
RenderWorld(const Size size, RealizeShader *re_sh, ExtractShader *ex_sh, PingPongBlurShader *ping_sh, int msaa_samples, bool *h, float *e)
std::shared_ptr< FrameBuffer > realized_buffer
std::optional< BloomRender > bloom_render
void update(const PostProcArg &arg)
void render(const PostProcArg &arg) override
RealizeShader * realize_shader
RAII representation of a open gl shader program.
A tweakable shader property.
virtual ~ShaderProp()=default
ShaderProp(const ShaderProp &)=delete
ShaderProp(ShaderProp &&)=delete
void operator=(ShaderProp &&)=delete
virtual void use(const PostProcArg &a, ShaderProgram &shader)=0
void operator=(const ShaderProp &)=delete
A functor that sends properties/uniforms to the shader.
A effect that only performs a single step.
std::vector< std::shared_ptr< ShaderProp > > properties
std::shared_ptr< LoadedPostProcShader > shader
void add_float_slider_prop(const std::string &prop_name, float value, float min, float max)
void add_float_drag_prop(const std::string &prop_name, float value, float speed)
SimpleEffect(std::string n, std::shared_ptr< LoadedPostProcShader > s)
void build(const BuildArg &arg) override
void update(float dt) override
void use_shader(const PostProcArg &a, const FrameBuffer &t) override