171 lines
5.9 KiB
C++
171 lines
5.9 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "GlobalShader.h"
|
|
#include "HAL/Platform.h"
|
|
#include "RHIDefinitions.h"
|
|
#include "Serialization/MemoryLayout.h"
|
|
#include "Shader.h"
|
|
#include "ShaderCore.h"
|
|
#include "ShaderParameters.h"
|
|
|
|
class FPointerTableBase;
|
|
class FRHICommandList;
|
|
struct FResolveRect;
|
|
|
|
struct FDummyResolveParameter {};
|
|
|
|
class FResolveDepthPS : public FGlobalShader
|
|
{
|
|
DECLARE_EXPORTED_GLOBAL_SHADER(FResolveDepthPS, RENDERCORE_API);
|
|
public:
|
|
typedef FDummyResolveParameter FParameter;
|
|
|
|
FResolveDepthPS();
|
|
FResolveDepthPS(const ShaderMetaType::CompiledShaderInitializerType& Initializer);
|
|
|
|
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment);
|
|
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters);
|
|
|
|
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters& BatchedParameters, FParameter);
|
|
|
|
LAYOUT_FIELD(FShaderResourceParameter, UnresolvedSurface);
|
|
};
|
|
|
|
class FResolveDepth2XPS : public FResolveDepthPS
|
|
{
|
|
DECLARE_EXPORTED_GLOBAL_SHADER(FResolveDepth2XPS, RENDERCORE_API);
|
|
public:
|
|
|
|
typedef FDummyResolveParameter FParameter;
|
|
|
|
FResolveDepth2XPS();
|
|
FResolveDepth2XPS(const ShaderMetaType::CompiledShaderInitializerType& Initializer);
|
|
|
|
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment);
|
|
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters)
|
|
{
|
|
return true;
|
|
}
|
|
};
|
|
|
|
class FResolveDepth4XPS : public FResolveDepthPS
|
|
{
|
|
DECLARE_EXPORTED_GLOBAL_SHADER(FResolveDepth4XPS, RENDERCORE_API);
|
|
public:
|
|
typedef FDummyResolveParameter FParameter;
|
|
|
|
FResolveDepth4XPS();
|
|
FResolveDepth4XPS(const ShaderMetaType::CompiledShaderInitializerType& Initializer);
|
|
|
|
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment);
|
|
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters)
|
|
{
|
|
return true;
|
|
}
|
|
};
|
|
|
|
class FResolveDepth8XPS : public FResolveDepthPS
|
|
{
|
|
DECLARE_EXPORTED_GLOBAL_SHADER(FResolveDepth8XPS, RENDERCORE_API);
|
|
public:
|
|
typedef FDummyResolveParameter FParameter;
|
|
|
|
FResolveDepth8XPS();
|
|
FResolveDepth8XPS(const ShaderMetaType::CompiledShaderInitializerType& Initializer);
|
|
|
|
static bool ShouldCache(EShaderPlatform Platform);
|
|
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment);
|
|
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters)
|
|
{
|
|
return true;
|
|
}
|
|
};
|
|
|
|
class FResolveDepthArray2XPS : public FResolveDepthPS
|
|
{
|
|
DECLARE_EXPORTED_GLOBAL_SHADER(FResolveDepthArray2XPS, RENDERCORE_API);
|
|
public:
|
|
typedef FDummyResolveParameter FParameter;
|
|
|
|
FResolveDepthArray2XPS();
|
|
FResolveDepthArray2XPS(const ShaderMetaType::CompiledShaderInitializerType& Initializer);
|
|
|
|
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters);
|
|
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment);
|
|
};
|
|
|
|
class FResolveDepthArray4XPS : public FResolveDepthPS
|
|
{
|
|
DECLARE_EXPORTED_GLOBAL_SHADER(FResolveDepthArray4XPS, RENDERCORE_API);
|
|
public:
|
|
typedef FDummyResolveParameter FParameter;
|
|
|
|
FResolveDepthArray4XPS();
|
|
FResolveDepthArray4XPS(const ShaderMetaType::CompiledShaderInitializerType& Initializer);
|
|
|
|
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters);
|
|
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment);
|
|
};
|
|
|
|
class FResolveDepthArray8XPS : public FResolveDepthPS
|
|
{
|
|
DECLARE_EXPORTED_GLOBAL_SHADER(FResolveDepthArray8XPS, RENDERCORE_API);
|
|
public:
|
|
typedef FDummyResolveParameter FParameter;
|
|
|
|
FResolveDepthArray8XPS();
|
|
FResolveDepthArray8XPS(const ShaderMetaType::CompiledShaderInitializerType& Initializer);
|
|
|
|
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters);
|
|
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment);
|
|
};
|
|
|
|
class FResolveSingleSamplePS : public FGlobalShader
|
|
{
|
|
DECLARE_EXPORTED_GLOBAL_SHADER(FResolveSingleSamplePS, RENDERCORE_API);
|
|
public:
|
|
typedef uint32 FParameter;
|
|
|
|
FResolveSingleSamplePS();
|
|
FResolveSingleSamplePS(const ShaderMetaType::CompiledShaderInitializerType& Initializer);
|
|
|
|
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters);
|
|
|
|
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters& BatchedParameters, uint32 SingleSampleIndexValue);
|
|
|
|
LAYOUT_FIELD(FShaderResourceParameter, UnresolvedSurface);
|
|
LAYOUT_FIELD(FShaderParameter, SingleSampleIndex);
|
|
};
|
|
|
|
/**
|
|
* A vertex shader for rendering a textured screen element.
|
|
*/
|
|
class FResolveVS : public FGlobalShader
|
|
{
|
|
DECLARE_EXPORTED_GLOBAL_SHADER(FResolveVS, RENDERCORE_API);
|
|
public:
|
|
FResolveVS();
|
|
FResolveVS(const ShaderMetaType::CompiledShaderInitializerType& Initializer);
|
|
|
|
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters);
|
|
|
|
RENDERCORE_API void SetParameters(FRHIBatchedShaderParameters& BatchedParameters, const FResolveRect& SrcBounds, const FResolveRect& DstBounds, uint32 DstSurfaceWidth, uint32 DstSurfaceHeight);
|
|
|
|
LAYOUT_FIELD(FShaderParameter, PositionMinMax);
|
|
LAYOUT_FIELD(FShaderParameter, UVMinMax);
|
|
};
|
|
|
|
class FResolveArrayVS : public FResolveVS
|
|
{
|
|
DECLARE_EXPORTED_GLOBAL_SHADER(FResolveArrayVS, RENDERCORE_API);
|
|
public:
|
|
FResolveArrayVS();
|
|
FResolveArrayVS(const ShaderMetaType::CompiledShaderInitializerType& Initializer);
|
|
|
|
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters);
|
|
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment);
|
|
};
|