You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
91 lines
3.4 KiB
C++
91 lines
3.4 KiB
C++
// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
|
|
|
|
/*=============================================================================
|
|
RequiredTextureResolutionRendering.h: Declarations used for the viewmode.
|
|
=============================================================================*/
|
|
|
|
#pragma once
|
|
|
|
#include "MeshMaterialShader.h"
|
|
#include "DebugViewModeRendering.h"
|
|
#include "Engine/TextureStreamingTypes.h"
|
|
#include "DebugViewModeInterface.h"
|
|
|
|
#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
|
|
|
|
/**
|
|
* Pixel shader that renders texcoord scales.
|
|
* The shader is only compiled with the local vertex factory to prevent multiple compilation.
|
|
* Nothing from the factory is actually used, but the shader must still derive from FMeshMaterialShader.
|
|
*/
|
|
class FRequiredTextureResolutionPS : public FDebugViewModePS
|
|
{
|
|
DECLARE_SHADER_TYPE(FRequiredTextureResolutionPS,MeshMaterial);
|
|
|
|
public:
|
|
|
|
static bool ShouldCompilePermutation(EShaderPlatform Platform, const FMaterial* Material, const FVertexFactoryType* VertexFactoryType)
|
|
{
|
|
// See FDebugViewModeMaterialProxy::GetFriendlyName()
|
|
return AllowDebugViewShaderMode(DVSM_RequiredTextureResolution, Platform, GetMaxSupportedFeatureLevel(Platform)) && Material->GetFriendlyName().Contains(TEXT("RequiredTextureResolution"));
|
|
}
|
|
|
|
FRequiredTextureResolutionPS(const ShaderMetaType::CompiledShaderInitializerType& Initializer):
|
|
FDebugViewModePS(Initializer)
|
|
{
|
|
AnalysisParamsParameter.Bind(Initializer.ParameterMap,TEXT("AnalysisParams"));
|
|
PrimitiveAlphaParameter.Bind(Initializer.ParameterMap, TEXT("PrimitiveAlpha"));
|
|
}
|
|
|
|
FRequiredTextureResolutionPS() {}
|
|
|
|
virtual bool Serialize(FArchive& Ar) override
|
|
{
|
|
bool bShaderHasOutdatedParameters = FMeshMaterialShader::Serialize(Ar);
|
|
Ar << AnalysisParamsParameter;
|
|
Ar << PrimitiveAlphaParameter;
|
|
return bShaderHasOutdatedParameters;
|
|
}
|
|
|
|
static void ModifyCompilationEnvironment(EShaderPlatform Platform, const FMaterial* Material, FShaderCompilerEnvironment& OutEnvironment)
|
|
{
|
|
OutEnvironment.SetDefine(TEXT("UNDEFINED_ACCURACY"), UndefinedStreamingAccuracyIntensity);
|
|
OutEnvironment.SetDefine(TEXT("MAX_NUM_TEX_COORD"), (uint32)TEXSTREAM_MAX_NUM_UVCHANNELS);
|
|
OutEnvironment.SetDefine(TEXT("MAX_NUM_TEXTURE_REGISTER"), (uint32)TEXSTREAM_MAX_NUM_TEXTURES_PER_MATERIAL);
|
|
FMeshMaterialShader::ModifyCompilationEnvironment(Platform, OutEnvironment);
|
|
}
|
|
|
|
virtual void GetDebugViewModeShaderBindings(
|
|
const FPrimitiveSceneProxy* RESTRICT PrimitiveSceneProxy,
|
|
const FMaterialRenderProxy& RESTRICT MaterialRenderProxy,
|
|
const FMaterial& RESTRICT Material,
|
|
EDebugViewShaderMode DebugViewMode,
|
|
const FVector& ViewOrigin,
|
|
int32 VisualizeLODIndex,
|
|
int32 VisualizeElementIndex,
|
|
int32 NumVSInstructions,
|
|
int32 NumPSInstructions,
|
|
int32 ViewModeParam,
|
|
FName ViewModeParamName,
|
|
FMeshDrawSingleShaderBindings& ShaderBindings
|
|
) const override;
|
|
|
|
private:
|
|
|
|
FShaderParameter AnalysisParamsParameter;
|
|
FShaderParameter PrimitiveAlphaParameter;
|
|
};
|
|
|
|
class FRequiredTextureResolutionInterface: public FDebugViewModeInterface
|
|
{
|
|
public:
|
|
|
|
FRequiredTextureResolutionInterface() : FDebugViewModeInterface(TEXT("RequiredTextureResolution"), false, true, false) {}
|
|
virtual FDebugViewModePS* GetPixelShader(const FMaterial* InMaterial, FVertexFactoryType* VertexFactoryType) const override
|
|
{
|
|
return InMaterial->GetShader<FRequiredTextureResolutionPS>(VertexFactoryType);
|
|
}
|
|
};
|
|
|
|
#endif // !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
|