Files
UnrealEngineUWP/Engine/Source/Developer/FunctionalTesting/Public/AutomationScreenshotOptions.h
Nick Darnell 22de597494 Copying //UE4/Dev-Automation to //UE4/Dev-Main (Source: //UE4/Dev-Automation @ 3502919)
#lockdown Nick.Penwarden
#rb none

=====================================
 MAJOR FEATURES + CHANGES
=====================================

Change 3487931 by Adric.Worley

	Add Negative test filter

	Filter out tests that test negative cases and are expected to fail

	#jira UE-45641
	#tests ran affected tests in editor, confirmed UI changes

Change 3491768 by Adric.Worley

	Add FieldOfView to Screenshot FTest options

	#tests used in WIP test map

Change 3492809 by Nick.Darnell

	Automation - Fixing some delay screenshot code in the Screenshot Functional Test Actor.

Change 3493557 by Adric.Worley

	Add automated postprocessing test map
	#jira QAENG-1153

Change 3494836 by Adric.Worley

	Fix CurvePlayTest timing out

	Time-out tolerances were set too tightly. Extended preparation time limit to 7 seconds.

	#tests PIE

Change 3494962 by Adric.Worley

	Fix CurveStopTest failure

	Added OnTestPrepare event for FTests using LevelBP for logic.
	Removed CurveStopTest dependency on CurveStartTest.
	Updated ground truth screenshot.

	#tests PIE

Change 3495166 by Adric.Worley

	Fix empty engine version content warnings

	#tests none

Change 3495412 by Adric.Worley

	Add Shield asset from ContentExamples project

Change 3495747 by Adric.Worley

	Automate static light tests
	#jira QAENG-1154

Change 3495914 by Adric.Worley

	Adding HDR environment asset

Change 3496341 by Adric.Worley

	Fix NotifyTest timing failures

	Rewrote tests to use blueprint events to verify notifications instead of fragile screenshots.

	#tests UFE

Change 3496613 by Adric.Worley

	Add TranslucencyLightingModes test map

	Automates test cases from QAGame's TM-TranslucencyLightingModes.
	Also resave shield assets to fix empty engine version warnings.

	#jira QAENG-1191
	#tests UFE

Change 3496703 by Adric.Worley

	Fix occasional ClothBallTest failures

	Extend screenshot delay to let cloth to fully settle.
	Consolidated screenshot delay values and removed redundant Delays.

	#jira UE-46066
	#tests UFE, 20+ iterations

Change 3498413 by Adric.Worley

	Fix occasional CurveTest failures

	Merged tests and set to use specific anim positions instead of relying on fragile test timing.

	#tests UFE

Change 3498976 by Adric.Worley

	Add automated ShaderModels test map

Change 3499079 by Adric.Worley

	Delete unused test and related assets

	#tests UFE

Change 3500869 by Adric.Worley

	Add horizontal scrollbar to automation results view

	#tests UFE

[CL 3511418 by Nick Darnell in Main branch]
2017-06-27 10:18:29 -04:00

197 lines
5.6 KiB
C++

// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/ObjectMacros.h"
#include "AutomationScreenshotOptions.generated.h"
UENUM(BlueprintType)
enum class EComparisonTolerance : uint8
{
Zero,
Low,
Medium,
High,
Custom
};
USTRUCT(BlueprintType)
struct FComparisonToleranceAmount
{
GENERATED_BODY()
public:
FComparisonToleranceAmount()
: Red(0)
, Green(0)
, Blue(0)
, Alpha(0)
, MinBrightness(0)
, MaxBrightness(255)
{
}
FComparisonToleranceAmount(uint8 R, uint8 G, uint8 B, uint8 A, uint8 InMinBrightness, uint8 InMaxBrightness)
: Red(R)
, Green(G)
, Blue(B)
, Alpha(A)
, MinBrightness(InMinBrightness)
, MaxBrightness(InMaxBrightness)
{
}
public:
UPROPERTY(EditAnywhere, Category="Tolerance")
uint8 Red;
UPROPERTY(EditAnywhere, Category="Tolerance")
uint8 Green;
UPROPERTY(EditAnywhere, Category="Tolerance")
uint8 Blue;
UPROPERTY(EditAnywhere, Category="Tolerance")
uint8 Alpha;
UPROPERTY(EditAnywhere, Category="Tolerance")
uint8 MinBrightness;
UPROPERTY(EditAnywhere, Category="Tolerance")
uint8 MaxBrightness;
};
USTRUCT(BlueprintType)
struct FAutomationScreenshotOptions
{
GENERATED_BODY()
public:
FAutomationScreenshotOptions()
: Resolution(ForceInit)
, Delay(0.2f)
, bDisableNoisyRenderingFeatures(true)
, VisualizeBuffer(NAME_None)
, Tolerance(EComparisonTolerance::Zero)
, ToleranceAmount()
, MaximumLocalError(0.10f)
, MaximumGlobalError(0.02f)
, bIgnoreAntiAliasing(true)
, bIgnoreColors(false)
{
}
FAutomationScreenshotOptions(EComparisonTolerance InTolerance)
: Resolution(ForceInit)
, Delay(0.2f)
, bDisableNoisyRenderingFeatures(true)
, VisualizeBuffer(NAME_None)
, Tolerance(InTolerance)
, ToleranceAmount()
, MaximumLocalError(0.10f)
, MaximumGlobalError(0.02f)
, bIgnoreAntiAliasing(true)
, bIgnoreColors(false)
{
SetToleranceAmounts(InTolerance);
}
/**
* The desired resolution of the screenshot, if none is provided, it will use the default for the
* platform setup in the automation settings.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Screenshot")
FVector2D Resolution;
/**
* The delay before we take the screenshot.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Screenshot")
float Delay;
/**
* Disables Anti-Aliasing, Motion Blur, Screen Space Reflections, Eye Adaptation and Contact Shadows,
* because those features contribute a lot to the noise in the final rendered image. If you're explicitly
* looking for changes
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Screenshot")
bool bDisableNoisyRenderingFeatures;
/**
* Allows you to screenshot a buffer other than the default final lit scene image. Useful if you're
* trying to build a test for a specific GBuffer, that may be harder to tell if errors are introduced
* in it.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Screenshot")
FName VisualizeBuffer;
/**
* These are quick defaults for tolerance levels, we default to low, because generally there's some
* constant variability in every pixel's color introduced by TxAA.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Comparison")
EComparisonTolerance Tolerance;
/**
* For each channel and brightness levels you can control a region where the colors are found to be
* essentially the same. Generally this is necessary as modern rendering techniques tend to introduce
* noise constantly to hide aliasing.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Comparison")
FComparisonToleranceAmount ToleranceAmount;
/**
* After you've accounted for color tolerance changes, you now need to control for local acceptable error.
* Which depending on how pixels were colored on triangle edges may be a few percent of the image being
* outside the tolerance levels. Unlike the MaximumGlobalError, the MaximumLocalError works by focusing
* on a smaller subset of the image. These chunks will have be compared to the local error, in an attempt
* to locate hot spots of change that are important, that would be ignored by the global error.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Comparison", meta=( ClampMin = 0, ClampMax = 1, UIMin = 0, UIMax = 1 ))
float MaximumLocalError;
/**
* After you've accounted for color tolerance changes, you now need to control for total acceptable error.
* Which depending on how pixels were colored on triangle edges may be a few percent of the image being
* outside the tolerance levels.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Comparison", meta=( ClampMin = 0, ClampMax = 1, UIMin = 0, UIMax = 1 ))
float MaximumGlobalError;
/**
* If this is true, we search neighboring pixels looking for the expected pixel as what may have happened, is
* that the pixel shifted a little.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Comparison")
bool bIgnoreAntiAliasing;
/**
* If this is true, all we compare is luminance of the scene.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Comparison", AdvancedDisplay)
bool bIgnoreColors;
public:
void SetToleranceAmounts(EComparisonTolerance InTolerance)
{
switch ( InTolerance )
{
case EComparisonTolerance::Zero:
ToleranceAmount = FComparisonToleranceAmount(0, 0, 0, 0, 0, 255);
break;
case EComparisonTolerance::Low:
ToleranceAmount = FComparisonToleranceAmount(16, 16, 16, 16, 16, 240);
break;
case EComparisonTolerance::Medium:
ToleranceAmount = FComparisonToleranceAmount(24, 24, 24, 24, 24, 220);
break;
case EComparisonTolerance::High:
ToleranceAmount = FComparisonToleranceAmount(32, 32, 32, 32, 64, 96);
break;
}
}
};