Files
UnrealEngine/Engine/Plugins/NNE/NNEDenoiser/Source/NNEDenoiserShaders/Private/NNEDenoiserShadersMappedCopyCS.cpp
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

64 lines
2.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "NNEDenoiserShadersMappedCopyCS.h"
namespace UE::NNEDenoiserShaders::Internal
{
void CommonModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& InParameters, FShaderCompilerEnvironment& OutEnvironment)
{
FGlobalShader::ModifyCompilationEnvironment(InParameters, OutEnvironment);
OutEnvironment.SetDefine(TEXT("THREAD_GROUP_SIZE"), FMappedCopyConstants::THREAD_GROUP_SIZE);
OutEnvironment.SetDefine(TEXT("MAX_NUM_MAPPED_CHANNELS"), FMappedCopyConstants::MAX_NUM_MAPPED_CHANNELS);
}
template<class GlobalShaderType>
bool CommonShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters)
{
if (!ShouldCompileRayTracingShadersForProject(Parameters.Platform))
{
return false;
}
typename GlobalShaderType::FPermutationDomain PermutationVector(Parameters.PermutationId);
if (PermutationVector.template Get<typename GlobalShaderType::FInputDataType>() != EDataType::Half &&
PermutationVector.template Get<typename GlobalShaderType::FInputDataType>() != EDataType::Float)
{
return false;
}
if (PermutationVector.template Get<typename GlobalShaderType::FOutputDataType>() != EDataType::Half &&
PermutationVector.template Get<typename GlobalShaderType::FOutputDataType>() != EDataType::Float)
{
return false;
}
return true;
}
void FTextureBufferMappedCopyCS::ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& InParameters, FShaderCompilerEnvironment& OutEnvironment)
{
CommonModifyCompilationEnvironment(InParameters, OutEnvironment);
OutEnvironment.SetDefine(TEXT("INTRINSIC_INPUT_TYPE"), 0);
OutEnvironment.SetDefine(TEXT("INTRINSIC_OUTPUT_TYPE"), 1);
}
void FBufferTextureMappedCopyCS::ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& InParameters, FShaderCompilerEnvironment& OutEnvironment)
{
CommonModifyCompilationEnvironment(InParameters, OutEnvironment);
OutEnvironment.SetDefine(TEXT("INTRINSIC_INPUT_TYPE"), 1);
OutEnvironment.SetDefine(TEXT("INTRINSIC_OUTPUT_TYPE"), 0);
}
bool FTextureBufferMappedCopyCS::ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters)
{
return CommonShouldCompilePermutation<FTextureBufferMappedCopyCS>(Parameters);
}
bool FBufferTextureMappedCopyCS::ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters)
{
return CommonShouldCompilePermutation<FBufferTextureMappedCopyCS>(Parameters);
}
IMPLEMENT_GLOBAL_SHADER(FTextureBufferMappedCopyCS, "/NNEDenoiserShaders/NNEDenoiserShadersMappedCopy.usf", "MappedCopy", SF_Compute);
IMPLEMENT_GLOBAL_SHADER(FBufferTextureMappedCopyCS, "/NNEDenoiserShaders/NNEDenoiserShadersMappedCopy.usf", "MappedCopy", SF_Compute);
} // UE::NNEDenoiser::Private