FastUniversalTiling

FastUniversalTiling

#Overview

name: FastUniversalTiling

The value of this variable can be defined or overridden in .ini config files. 1 .ini config file referencing this setting variable.

It is referenced in 8 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of FastUniversalTiling is to control the universal tiling settings for fast texture encoding in Unreal Engine 5. It is primarily used in the texture encoding and rendering systems.

This setting variable is utilized by the Texture Editor and Engine modules of Unreal Engine 5. It’s specifically referenced in the TextureEditor and Engine source files.

The value of this variable is set in the UTextureEncodingProjectSettings class, which is a part of the developer settings. It’s initialized in the constructor of this class and can be configured through the project settings.

FastUniversalTiling interacts with other encoding-related variables such as FastEffortLevel, FastRDOLambda, and FinalUniversalTiling. It’s often compared with FinalUniversalTiling to determine if there are differences between fast and final encoding settings.

Developers should be aware that this variable affects the performance and quality trade-off in texture encoding. It’s part of the “fast” encoding settings, which are typically used for quick previews or when performance is prioritized over quality.

Best practices when using this variable include:

  1. Carefully consider the balance between encoding speed and quality for your project’s needs.
  2. Be consistent in using either fast or final settings across your project to maintain visual consistency.
  3. Test the impact of different FastUniversalTiling settings on your project’s performance and visual quality.
  4. Remember that this setting may affect the size and appearance of textures, especially on platforms with opaque tiling.

#Setting Variables

#References In INI files

Location: <Workspace>/Engine/Config/BaseEngine.ini:3461, section: [/Script/Engine.TextureEncodingProjectSettings]

#References in C++ code

#Callsites

This variable is referenced in the following C++ source code:

#Loc: <Workspace>/Engine/Source/Editor/TextureEditor/Private/Models/TextureEditorViewportClient.cpp:390

Scope (from outer to inner):

file
function     void FTextureEditorViewportClient::Draw

Source code excerpt:

				EncodeSettings.Project.FastEffortLevel != EncodeSettings.Project.FinalEffortLevel ||
				EncodeSettings.Project.FastRDOLambda != EncodeSettings.Project.FinalRDOLambda ||
				EncodeSettings.Project.FastUniversalTiling != EncodeSettings.Project.FinalUniversalTiling);

			if (PlatformDataPtr[0]->ResultMetadata.bWasEditorCustomEncoding)
			{
				const FText LeadInText = NSLOCTEXT("TextureEditor", "ViewingCustom", "Viewing custom encoding");
				Canvas->DrawShadowedText(ReportingLineX, ReportingLineY, LeadInText, ReportingFont, FLinearColor::Yellow);
				ReportingLineY += ReportingLineHeight;

#Loc: <Workspace>/Engine/Source/Editor/TextureEditor/Private/Models/TextureEditorViewportClient.cpp:442

Scope (from outer to inner):

file
function     void FTextureEditorViewportClient::Draw

Source code excerpt:

						bNeedComma = true;
					}
					if (EncodeSettings.Project.FastUniversalTiling != EncodeSettings.Project.FinalUniversalTiling)
					{
						if (bNeedComma)
						{
							DrawComma();
						}
						const FText EffortText = NSLOCTEXT("TextureEditor", "UTDifference", "RDO Universal Tiling");

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/TextureDerivedData.cpp:602

Scope (from outer to inner):

file
function     static void GetEncodeSpeedOptions

Source code excerpt:

		OutOptions->bUsesRDO = EncodeSettings.Project.bFastUsesRDO;
		OutOptions->Effort = EncodeSettings.Project.FastEffortLevel;
		OutOptions->Tiling = EncodeSettings.Project.FastUniversalTiling;
		OutOptions->RDOLambda = EncodeSettings.Project.FastRDOLambda;
	}
}


// Convert the baseline build settings for all layers to one for the given layer.

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/TextureEncodingSettings.cpp:19

Scope (from outer to inner):

file
function     UTextureEncodingProjectSettings::UTextureEncodingProjectSettings

Source code excerpt:

	FastRDOLambda(30), /* OodleTex_RDOLagrangeLambda_Default */
	FastEffortLevel(ETextureEncodeEffort::Normal),
	FastUniversalTiling(ETextureUniversalTiling::Disabled),
	CookUsesSpeed(ETextureEncodeSpeed::Final),
	EditorUsesSpeed(ETextureEncodeSpeed::FinalIfAvailable)
{
}

UTextureEncodingUserSettings::UTextureEncodingUserSettings(const FObjectInitializer& ObjectInitializer)

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/TextureEncodingSettings.cpp:83

Scope (from outer to inner):

file
function     static void ConstructResolvedSettings

Source code excerpt:

	OutResolvedSettings->Project.FinalUniversalTiling = ProjectSettings->FinalUniversalTiling;
	OutResolvedSettings->Project.FastEffortLevel = ProjectSettings->FastEffortLevel;
	OutResolvedSettings->Project.FastUniversalTiling = ProjectSettings->FastUniversalTiling;
	OutResolvedSettings->Project.CookUsesSpeed = ProjectSettings->CookUsesSpeed;
	OutResolvedSettings->Project.EditorUsesSpeed = ProjectSettings->EditorUsesSpeed;

	// Determine what encode speed to use
	{
		const UEnum* EncodeSpeedEnum = StaticEnum<ETextureEncodeSpeed>();

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/TextureEncodingSettings.cpp:141

Scope (from outer to inner):

file
function     static void ConstructResolvedSettings

Source code excerpt:

		{
			FastRDOString = FString(TEXT("On"));
			if (OutResolvedSettings->Project.FastUniversalTiling != ETextureUniversalTiling::Disabled)
			{
				FastRDOString += TEXT(" UT=");
				FastRDOString += UniversalTilingEnum->GetNameStringByValue((int64)OutResolvedSettings->Project.FastUniversalTiling);
			}
		}
		else
		{
			FastRDOString = FString(TEXT("Off"));
		}

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/TextureEncodingSettingsPrivate.h:111

Scope (from outer to inner):

file
class        class UTextureEncodingProjectSettings : public UDeveloperSettings

Source code excerpt:

	// sizes of textures for platforms with opaque tiling (i.e. desktop).
	UPROPERTY(config, EditAnywhere, Category = EncodeSpeedSettings, meta = (ConfigRestartRequired = true))
	ETextureUniversalTiling FastUniversalTiling;

	// Which encode speed non interactive editor sessions will use (i.e. commandlets)
	UPROPERTY(config, EditAnywhere, Category = EncodeSpeeds, meta = (ConfigRestartRequired = true))
	ETextureEncodeSpeed CookUsesSpeed;

	// Which encode speed everything else uses.

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/TextureEncodingSettings.h:66

Scope: file

Source code excerpt:

		ETextureUniversalTiling FinalUniversalTiling;
		ETextureEncodeEffort FastEffortLevel;
		ETextureUniversalTiling FastUniversalTiling;
		ETextureEncodeSpeed CookUsesSpeed;
		ETextureEncodeSpeed EditorUsesSpeed;
	} Project;

	// The resolved EncodeSpeed to use for this instance, taking in to account overrides.
	ETextureEncodeSpeed EncodeSpeed;