module re.gfx.postprocessor; import re.gfx; import re.math; static import raylib; /// applies an effect to a rendertarget class PostProcessor { /// the effect to apply to the input buffer public Effect effect; /// the render target buffer of this postprocessor public RenderTarget buffer; /// whether to enable this postprocessor public bool enabled = true; this(Vector2 resolution, Effect effect) { this.effect = effect; // create render target buffer = raylib.LoadRenderTexture(cast(int) resolution.x, cast(int) resolution.y); } /// process the source and render to internal buffer public void process(RenderTarget source) { RenderExt.draw_render_target_from(source, buffer, effect); } /// release resources public void destroy() { raylib.UnloadRenderTexture(buffer); } }