Files
UnrealEngine/Engine/Plugins/NNE/NNEDenoiser/Source/NNEDenoiserShaders/Internal/NNEDenoiserShadersAutoExposureCS.h
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

89 lines
2.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "GlobalShader.h"
#include "RenderGraphUtils.h"
#include "ShaderParameterUtils.h"
#define UE_API NNEDENOISERSHADERS_API
namespace UE::NNEDenoiserShaders::Internal
{
class FAutoExposureDownsampleConstants
{
public:
static constexpr int32 MAX_BIN_SIZE{16};
static constexpr int32 THREAD_GROUP_SIZE{MAX_BIN_SIZE};
};
class FAutoExposureDownsampleCS : public FGlobalShader
{
DECLARE_EXPORTED_GLOBAL_SHADER(FAutoExposureDownsampleCS, UE_API);
SHADER_USE_PARAMETER_STRUCT(FAutoExposureDownsampleCS, FGlobalShader)
public:
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
SHADER_PARAMETER(int32, InputTextureWidth)
SHADER_PARAMETER(int32, InputTextureHeight)
SHADER_PARAMETER_RDG_TEXTURE(Texture2D, InputTexture)
SHADER_PARAMETER(int32, NumBinsW)
SHADER_PARAMETER(int32, NumBinsH)
SHADER_PARAMETER_RDG_BUFFER_UAV(RWBuffer, OutputBins)
END_SHADER_PARAMETER_STRUCT()
static UE_API void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& InParameters, FShaderCompilerEnvironment& OutEnvironment);
static UE_API bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters);
};
class FAutoExposureReduceConstants
{
public:
static constexpr int32 THREAD_GROUP_SIZE{32};
static constexpr float EPS{1e-8f};
static constexpr float KEY{0.18f};
};
class FAutoExposureReduceCS : public FGlobalShader
{
DECLARE_EXPORTED_GLOBAL_SHADER(FAutoExposureReduceCS, UE_API);
SHADER_USE_PARAMETER_STRUCT(FAutoExposureReduceCS, FGlobalShader)
public:
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
SHADER_PARAMETER(int32, InputSize)
SHADER_PARAMETER_RDG_BUFFER_SRV(Buffer, InputBins)
SHADER_PARAMETER_RDG_BUFFER_UAV(RWBuffer, OutputSums)
SHADER_PARAMETER_RDG_BUFFER_UAV(RWBuffer, OutputCounts)
SHADER_PARAMETER(int32, NumThreads)
END_SHADER_PARAMETER_STRUCT()
static UE_API void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& InParameters, FShaderCompilerEnvironment& OutEnvironment);
static UE_API bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters);
};
class FAutoExposureReduceFinalCS : public FGlobalShader
{
DECLARE_EXPORTED_GLOBAL_SHADER(FAutoExposureReduceFinalCS, UE_API);
SHADER_USE_PARAMETER_STRUCT(FAutoExposureReduceFinalCS, FGlobalShader)
public:
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
SHADER_PARAMETER(int32, InputSize)
SHADER_PARAMETER_RDG_BUFFER_SRV(Buffer, InputSums)
SHADER_PARAMETER_RDG_BUFFER_SRV(Buffer, InputCounts)
SHADER_PARAMETER_RDG_BUFFER_UAV(RWBuffer, OutputBuffer)
END_SHADER_PARAMETER_STRUCT()
static UE_API void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& InParameters, FShaderCompilerEnvironment& OutEnvironment);
static UE_API bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters);
};
} // namespace UE::NNEDenoiser::Private
#undef UE_API