Files
UnrealEngine/Engine/Source/Runtime/Renderer/Private/GPUFeedbackCompaction.cpp
2025-05-18 13:04:45 +08:00

51 lines
2.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "GPUFeedbackCompaction.h"
#include "RenderUtils.h"
static bool PlatformSupportsFeedbackCompaction(EShaderPlatform Platform)
{
// Enable for supported features that use feedback compaction.
return DoesPlatformSupportLumenGI(Platform) || UseVirtualTexturing(Platform);
}
bool FBuildFeedbackHashTableIndirectArgsCS::ShouldCompilePermutation(const FGlobalShaderPermutationParameters & Parameters)
{
return PlatformSupportsFeedbackCompaction(Parameters.Platform);
}
void FBuildFeedbackHashTableIndirectArgsCS::ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)
{
FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment);
OutEnvironment.SetDefine(TEXT("THREADGROUP_SIZE"), 1);
}
IMPLEMENT_GLOBAL_SHADER(FBuildFeedbackHashTableIndirectArgsCS, "/Engine/Private/GPUFeedbackCompaction.usf", "BuildFeedbackHashTableIndirectArgsCS", SF_Compute);
bool FBuildFeedbackHashTableCS::ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters)
{
return PlatformSupportsFeedbackCompaction(Parameters.Platform);
}
void FBuildFeedbackHashTableCS::ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)
{
FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment);
OutEnvironment.SetDefine(TEXT("THREADGROUP_SIZE"), GetGroupSize());
}
IMPLEMENT_GLOBAL_SHADER(FBuildFeedbackHashTableCS, "/Engine/Private/GPUFeedbackCompaction.usf", "BuildFeedbackHashTableCS", SF_Compute);
bool FCompactFeedbackHashTableCS::ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters)
{
return PlatformSupportsFeedbackCompaction(Parameters.Platform);
}
void FCompactFeedbackHashTableCS::ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)
{
FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment);
OutEnvironment.SetDefine(TEXT("THREADGROUP_SIZE"), GetGroupSize());
}
IMPLEMENT_GLOBAL_SHADER(FCompactFeedbackHashTableCS, "/Engine/Private/GPUFeedbackCompaction.usf", "CompactFeedbackHashTableCS", SF_Compute);