// Copyright (C) 2009-present, Panagiotis Christopoulos Charitos and contributors. // All rights reserved. // Code licensed under the BSD License. // http://www.anki3d.org/LICENSE #pragma once #include #include namespace anki { /// @addtogroup renderer /// @{ ANKI_CVAR(NumericCVar, Render, FilmGrain, 16.0f, 0.0f, 250.0f, "Film grain strength") ANKI_CVAR(NumericCVar, Render, Sharpness, (ANKI_PLATFORM_MOBILE) ? 0.0f : 1.0f, 0.0f, 1.0f, "Sharpen the image. It's a factor") /// Post-processing stage. class FinalComposite : public RendererObject { public: FinalComposite() = default; ~FinalComposite() = default; Error init(); /// Populate the rendergraph. void populateRenderGraph(RenderingContext& ctx); RenderTargetHandle getRenderTarget() const { return m_runCtx.m_rt; } private: ShaderProgramResourcePtr m_prog; Array m_grProgs; ///< [Debug on or off] ShaderProgramResourcePtr m_visualizeRenderTargetProg; ShaderProgramPtr m_visualizeRenderTargetGrProg; RenderTargetDesc m_rtDesc; class { public: RenderTargetHandle m_rt; } m_runCtx; Error initInternal(); void run(RenderPassWorkContext& rgraphCtx); }; /// @} } // end namespace anki