// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. #pragma once #include "RendererPass.h" #include "Engine/Graphics/GPUPipelineStatePermutations.h" /// /// Color Grading and Tone Mapping rendering service. Generates HDR LUT for PostFx pass. /// class ColorGradingPass : public RendererPass { private: bool _useVolumeTexture; PixelFormat _lutFormat; AssetReference _shader; GPUPipelineStatePermutationsPs<3> _psLut; public: /// /// Init /// ColorGradingPass(); public: /// /// Performs Look Up Table rendering for the input task. /// /// The rendering context. /// Allocated temp render target with a rendered LUT. Can be 2d or 3d based on current graphics hardware caps. Release after usage. GPUTexture* RenderLUT(RenderContext& renderContext); private: #if COMPILE_WITH_DEV_ENV void OnShaderReloading(Asset* obj) { _psLut.Release(); invalidateResources(); } #endif public: // [RendererPass] String ToString() const override; bool Init() override; void Dispose() override; protected: // [RendererPass] bool setupResources() override; };