Files
Seele/src/Engine/Graphics/RenderPass/ToneMappingPass.h
T

53 lines
1.6 KiB
C++
Raw Normal View History

2025-03-10 18:35:35 +01:00
#pragma once
#include "RenderPass.h"
#include "Graphics/Shader.h"
namespace Seele
{
class ToneMappingPass : public RenderPass {
public:
ToneMappingPass(Gfx::PGraphics graphics);
ToneMappingPass(ToneMappingPass&&) = default;
ToneMappingPass& operator=(ToneMappingPass&&) = default;
virtual ~ToneMappingPass();
2025-04-11 23:13:19 +02:00
virtual void beginFrame(const Component::Camera& cam, const Component::Transform& transform) override;
2025-03-10 18:35:35 +01:00
virtual void render() override;
virtual void endFrame() override;
virtual void publishOutputs() override;
virtual void createRenderPass() override;
private:
// non-hdr swapchain output
Gfx::RenderTargetAttachment colorAttachment;
2025-03-11 22:08:23 +01:00
Gfx::OShaderBuffer histogramBuffer;
Gfx::OShaderBuffer luminanceBuffer;
float minLogLum = 1;
float inverseLogLumRange = 1;
float timeCoeff = 1;
uint32 numPixels;
UVector2 threadGroups;
Gfx::ODescriptorLayout histogramLayout;
Gfx::PDescriptorSet histogramSet;
Gfx::OPipelineLayout histogramPipelineLayout;
Gfx::OComputeShader histogramShader;
Gfx::PComputePipeline histogramPipeline;
Gfx::OComputeShader exposureShader;
Gfx::PComputePipeline exposurePipeline;
2025-03-10 18:35:35 +01:00
Gfx::RenderTargetAttachment hdrInputTexture;
Gfx::OSampler sampler;
2025-03-11 22:08:23 +01:00
Vector4 offset = Vector4(0.0);
Vector4 slope = Vector4(1.0);
Vector4 power = Vector4(1.0);
float sat = 1.0;
Gfx::ODescriptorLayout tonemappingLayout;
Gfx::OPipelineLayout tonemappingPipelineLayout;
2025-03-10 18:35:35 +01:00
Gfx::OVertexShader vert;
Gfx::OFragmentShader frag;
Gfx::PGraphicsPipeline pipeline;
2025-05-06 19:36:43 +02:00
Gfx::PDescriptorSet viewParamsSet;
2025-03-10 18:35:35 +01:00
};
}