51 lines
2.2 KiB
C++
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);
|