You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
173 lines
5.3 KiB
C++
173 lines
5.3 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "ShaderParameters.h"
|
|
#include "Shader.h"
|
|
#include "GlobalShader.h"
|
|
|
|
struct FDummyResolveParameter {};
|
|
|
|
class FResolveDepthPS : public FGlobalShader
|
|
{
|
|
DECLARE_EXPORTED_SHADER_TYPE(FResolveDepthPS, Global, RENDERCORE_API);
|
|
public:
|
|
|
|
typedef FDummyResolveParameter FParameter;
|
|
|
|
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)
|
|
{
|
|
FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment);
|
|
}
|
|
|
|
FResolveDepthPS(const ShaderMetaType::CompiledShaderInitializerType& Initializer):
|
|
FGlobalShader(Initializer)
|
|
{
|
|
UnresolvedSurface.Bind(Initializer.ParameterMap,TEXT("UnresolvedSurface"), SPF_Mandatory);
|
|
}
|
|
FResolveDepthPS() {}
|
|
|
|
void SetParameters(FRHICommandList& RHICmdList, FParameter)
|
|
{
|
|
}
|
|
|
|
LAYOUT_FIELD(FShaderResourceParameter, UnresolvedSurface);
|
|
};
|
|
|
|
class FResolveDepth2XPS : public FGlobalShader
|
|
{
|
|
DECLARE_EXPORTED_SHADER_TYPE(FResolveDepth2XPS, Global, RENDERCORE_API);
|
|
public:
|
|
|
|
typedef FDummyResolveParameter FParameter;
|
|
|
|
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)
|
|
{
|
|
FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment);
|
|
OutEnvironment.SetDefine(TEXT("DEPTH_RESOLVE_NUM_SAMPLES"), 2);
|
|
}
|
|
|
|
FResolveDepth2XPS(const ShaderMetaType::CompiledShaderInitializerType& Initializer) :
|
|
FGlobalShader(Initializer)
|
|
{
|
|
UnresolvedSurface.Bind(Initializer.ParameterMap, TEXT("UnresolvedSurface"), SPF_Mandatory);
|
|
}
|
|
FResolveDepth2XPS() {}
|
|
|
|
void SetParameters(FRHICommandList& RHICmdList, FParameter)
|
|
{
|
|
}
|
|
|
|
LAYOUT_FIELD(FShaderResourceParameter, UnresolvedSurface);
|
|
};
|
|
|
|
|
|
class FResolveDepth4XPS : public FGlobalShader
|
|
{
|
|
DECLARE_EXPORTED_SHADER_TYPE(FResolveDepth4XPS, Global, RENDERCORE_API);
|
|
public:
|
|
|
|
typedef FDummyResolveParameter FParameter;
|
|
|
|
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)
|
|
{
|
|
FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment);
|
|
OutEnvironment.SetDefine(TEXT("DEPTH_RESOLVE_NUM_SAMPLES"), 4);
|
|
}
|
|
|
|
FResolveDepth4XPS(const ShaderMetaType::CompiledShaderInitializerType& Initializer) :
|
|
FGlobalShader(Initializer)
|
|
{
|
|
UnresolvedSurface.Bind(Initializer.ParameterMap, TEXT("UnresolvedSurface"), SPF_Mandatory);
|
|
}
|
|
FResolveDepth4XPS() {}
|
|
|
|
void SetParameters(FRHICommandList& RHICmdList, FParameter)
|
|
{
|
|
}
|
|
|
|
LAYOUT_FIELD(FShaderResourceParameter, UnresolvedSurface);
|
|
};
|
|
|
|
|
|
class FResolveDepth8XPS : public FGlobalShader
|
|
{
|
|
DECLARE_EXPORTED_SHADER_TYPE(FResolveDepth8XPS, Global, RENDERCORE_API);
|
|
public:
|
|
|
|
typedef FDummyResolveParameter FParameter;
|
|
|
|
static bool ShouldCache(EShaderPlatform Platform) { return GetMaxSupportedFeatureLevel(Platform) >= ERHIFeatureLevel::SM5; }
|
|
|
|
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)
|
|
{
|
|
FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment);
|
|
OutEnvironment.SetDefine(TEXT("DEPTH_RESOLVE_NUM_SAMPLES"), 8);
|
|
}
|
|
|
|
FResolveDepth8XPS(const ShaderMetaType::CompiledShaderInitializerType& Initializer) :
|
|
FGlobalShader(Initializer)
|
|
{
|
|
UnresolvedSurface.Bind(Initializer.ParameterMap, TEXT("UnresolvedSurface"), SPF_Mandatory);
|
|
}
|
|
FResolveDepth8XPS() {}
|
|
|
|
void SetParameters(FRHICommandList& RHICmdList, FParameter)
|
|
{
|
|
}
|
|
|
|
LAYOUT_FIELD(FShaderResourceParameter, UnresolvedSurface);
|
|
};
|
|
|
|
class FResolveSingleSamplePS : public FGlobalShader
|
|
{
|
|
DECLARE_EXPORTED_SHADER_TYPE(FResolveSingleSamplePS, Global, RENDERCORE_API);
|
|
public:
|
|
|
|
typedef uint32 FParameter;
|
|
|
|
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters)
|
|
{
|
|
return FDataDrivenShaderPlatformInfo::GetIsLanguageD3D(Parameters.Platform);
|
|
}
|
|
|
|
FResolveSingleSamplePS(const ShaderMetaType::CompiledShaderInitializerType& Initializer):
|
|
FGlobalShader(Initializer)
|
|
{
|
|
UnresolvedSurface.Bind(Initializer.ParameterMap,TEXT("UnresolvedSurface"), SPF_Mandatory);
|
|
SingleSampleIndex.Bind(Initializer.ParameterMap,TEXT("SingleSampleIndex"), SPF_Mandatory);
|
|
}
|
|
FResolveSingleSamplePS() {}
|
|
|
|
RENDERCORE_API void SetParameters(FRHICommandList& RHICmdList, 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_SHADER_TYPE(FResolveVS, Global, RENDERCORE_API);
|
|
public:
|
|
|
|
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters) { return true; }
|
|
|
|
FResolveVS(const ShaderMetaType::CompiledShaderInitializerType& Initializer)
|
|
: FGlobalShader(Initializer)
|
|
{
|
|
PositionMinMax.Bind(Initializer.ParameterMap, TEXT("PositionMinMax"), SPF_Mandatory);
|
|
UVMinMax.Bind(Initializer.ParameterMap, TEXT("UVMinMax"), SPF_Mandatory);
|
|
}
|
|
FResolveVS() {}
|
|
|
|
RENDERCORE_API void SetParameters(FRHICommandList& RHICmdList, const FResolveRect& SrcBounds, const FResolveRect& DstBounds, uint32 DstSurfaceWidth, uint32 DstSurfaceHeight);
|
|
|
|
LAYOUT_FIELD(FShaderParameter, PositionMinMax);
|
|
LAYOUT_FIELD(FShaderParameter, UVMinMax);
|
|
};
|