IncludeVertexProcessingCheck

IncludeVertexProcessingCheck

#Overview

name: IncludeVertexProcessingCheck

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 5 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of IncludeVertexProcessingCheck is to control whether vertex processing should be included in the SpeedTree material import process for Unreal Engine 5. This setting is specifically related to the SpeedTree importer, which is used for importing and processing tree and vegetation assets.

This setting variable is primarily used within the SpeedTree Importer plugin, which is part of the Unreal Engine editor tools. It’s utilized in the material creation process for SpeedTree assets.

The value of this variable is set through the Unreal Engine editor interface, specifically in the import settings for SpeedTree assets. It’s defined as a UPROPERTY in the USpeedTreeImportData class, which means it can be edited in the editor and saved in configuration files.

IncludeVertexProcessingCheck interacts with other variables in the SpeedTree import process, such as:

  1. IncludeWindCheck: This is enabled only if IncludeVertexProcessingCheck is true.
  2. IncludeSmoothLODCheck: This affects how the LOD (Level of Detail) type is set when vertex processing is included.

Developers should be aware that:

  1. This setting significantly affects the material creation process for SpeedTree assets.
  2. It’s only applicable when importing SpeedTree version 8 assets, as indicated by the SpeedTreeVersion meta tag.
  3. Enabling this option may increase the complexity of the generated materials, which could impact performance.

Best practices when using this variable include:

  1. Only enable it when necessary, as it can increase material complexity.
  2. Consider the performance implications, especially for mobile or lower-end platforms.
  3. Use it in conjunction with other SpeedTree import settings to achieve the desired balance between visual quality and performance.
  4. Test the imported assets thoroughly in different scenarios to ensure the setting provides the desired results without undue performance cost.

#Setting Variables

#References In INI files

Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:951, section: [/Script/SpeedTreeImporter.SpeedTreeImportData]

#References in C++ code

#Callsites

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

#Loc: <Workspace>/Engine/Plugins/Editor/SpeedTreeImporter/Source/SpeedTreeImporter/Classes/SpeedTreeImportData.h:97

Scope (from outer to inner):

file
class        class USpeedTreeImportData : public UAssetImportData

Source code excerpt:

	/**  */
	UPROPERTY(EditAnywhere, config, Category = Materials, meta = (EditCondition = "MakeMaterialsCheck", DisplayName = "Include Vertex Processing", SpeedTreeVersion = "8"))
	uint32 IncludeVertexProcessingCheck : 1;

	/**  */
	UPROPERTY(EditAnywhere, config, Category = Materials, meta = (EditCondition = "IncludeVertexProcessingCheck", DisplayName = "Include Wind"))
	uint32 IncludeWindCheck : 1;
	
	/**  */

#Loc: <Workspace>/Engine/Plugins/Editor/SpeedTreeImporter/Source/SpeedTreeImporter/Private/SpeedTreeImportData.cpp:48

Scope (from outer to inner):

file
function     void USpeedTreeImportData::CopyFrom

Source code excerpt:

	IncludeColorAdjustment = Other->IncludeColorAdjustment;
	IncludeSubsurface = Other->IncludeSubsurface;
	IncludeVertexProcessingCheck = Other->IncludeVertexProcessingCheck;
	IncludeWindCheck = Other->IncludeWindCheck;
	IncludeSmoothLODCheck = Other->IncludeSmoothLODCheck;
}

FSpeedTreeImportDataDetails::FSpeedTreeImportDataDetails()
{

#Loc: <Workspace>/Engine/Plugins/Editor/SpeedTreeImporter/Source/SpeedTreeImporter/Private/SpeedTreeImportData.cpp:102

Scope (from outer to inner):

file
function     void FSpeedTreeImportDataDetails::CustomizeDetails

Source code excerpt:

	MakeMaterialsCheckProp->SetOnPropertyValueChanged(FSimpleDelegate::CreateSP(this, &FSpeedTreeImportDataDetails::OnForceRefresh));

	TSharedRef<IPropertyHandle> IncludeVertexProcessingCheckProp = DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(USpeedTreeImportData, IncludeVertexProcessingCheck));
	IncludeVertexProcessingCheckProp->SetOnPropertyValueChanged(FSimpleDelegate::CreateSP(this, &FSpeedTreeImportDataDetails::OnForceRefresh));

	//Hide all properties, we will show them in the correct order with the correct grouping
	for (TSharedRef<IPropertyHandle> Handle : MaterialCategoryDefaultProperties)
	{
		DetailLayout.HideProperty(Handle);

#Loc: <Workspace>/Engine/Plugins/Editor/SpeedTreeImporter/Source/SpeedTreeImporter/Private/SpeedTreeImportFactory.cpp:897

Scope (from outer to inner):

file
function     UMaterialInterface* CreateSpeedTreeMaterial7

Source code excerpt:

	}

	if (SpeedTreeImportData->IncludeVertexProcessingCheck && !RenderState->m_bRigidMeshesPresent)
	{
		UMaterialExpressionSpeedTree* SpeedTreeExpression = NewObject<UMaterialExpressionSpeedTree>(UnrealMaterial);
	
		SpeedTreeExpression->LODType = (SpeedTreeImportData->IncludeSmoothLODCheck ? STLOD_Smooth : STLOD_Pop);
		SpeedTreeExpression->WindType = WindType;

#Loc: <Workspace>/Engine/Plugins/Editor/SpeedTreeImporter/Source/SpeedTreeImporter/Private/SpeedTreeImportFactory.cpp:1270

Scope (from outer to inner):

file
function     UMaterialInterface* CreateSpeedTreeMaterial8

Source code excerpt:


	// SpeedTree node
	if (SpeedTreeImportData->IncludeVertexProcessingCheck)
	{
		UMaterialExpressionSpeedTree* SpeedTreeExpression = NewObject<UMaterialExpressionSpeedTree>(UnrealMaterial);
		SpeedTreeExpression->LODType = (bCrossfadeLOD ? STLOD_Pop : STLOD_Smooth);
		SpeedTreeExpression->WindType = WindType;
		SpeedTreeExpression->BillboardThreshold = 1.0f; // billboards use crossfade technique now in v8
		SpeedTreeExpression->GeometryType = GeomType;