7 struct ImguiShaderCache;
68 std::shared_ptr<RenderSource>
source;
69 std::shared_ptr<FrameBuffer>
fbo;
92 std::vector<std::shared_ptr<RenderTextureWithShader>>
targets;
134 bool is_enabled =
false;
A (inclusive) range between two values.
Arguments for when building a effect stack.
The current perspective camera representation.
A compiled full-screen-effect.
std::vector< std::shared_ptr< RenderTextureWithShader > > targets
std::shared_ptr< RenderSource > last_source
start with a simple world, but depending on the current effect list, could be more....
The facade of the post-proc framework.
void render(const PostProcArg &arg)
rebuilds stack if dirty, update all targets, then render the last_source
void gui(imgui::ImguiShaderCache *cache)
void update(float dt) const
std::shared_ptr< RenderWorld > render_world
std::vector< std::shared_ptr< Effect > > effects
std::optional< Size > window_size
A effect that can be toggled.
virtual void update(float dt)=0
void operator=(const Effect &)=delete
virtual void build(const BuildArg &arg)=0
void operator=(Effect &&)=delete
virtual ~Effect()=default
Effect(const Effect &)=delete
A special effect where the effect can be eased into existence.
"render to texture" feature
Arguments for rendering a post-processing effect.
A source that can be rendered to a framebuffer or a screen.
void operator=(const RenderSource &)=delete
void operator=(RenderSource &&)=delete
RenderSource(RenderSource &&)=delete
virtual ~RenderSource()=default
RenderSource(const RenderSource &)=delete
virtual void render(const PostProcArg &arg)=0
Applies a shader to the output of another source.
ShaderPropertyProvider * effect
std::shared_ptr< FrameBuffer > fbo
void render(const PostProcArg &arg) override
render internal fbo to a quad with a shader
void update(const PostProcArg &arg)
call render on linked source and render to fbo
RenderTextureWithShader(std::string n, std::shared_ptr< RenderSource > s, std::shared_ptr< FrameBuffer > f, ShaderPropertyProvider *e)
std::shared_ptr< RenderSource > source
A functor that sends properties/uniforms to the shader.
virtual void use_shader(const PostProcArg &a, const FrameBuffer &t)=0
void operator=(ShaderPropertyProvider &&)=delete
void operator=(const ShaderPropertyProvider &)=delete
ShaderPropertyProvider()=default
ShaderPropertyProvider(ShaderPropertyProvider &&)=delete
ShaderPropertyProvider(const ShaderPropertyProvider &)=delete
virtual ~ShaderPropertyProvider()=default
A list of objects to render.