Files
UnrealEngineUWP/Engine/Source/Programs/UnrealLightmass/Private/ImportExport/Material.h
yujiang wang d30fed9551 Fix CPU Lightmass by coverting LWC types to single precision
#rb juan.canada
#preflight 619c5386fa0b360c407f9573

#ROBOMERGE-AUTHOR: yujiang.wang
#ROBOMERGE-SOURCE: CL 18266488 in //UE5/Release-5.0/... via CL 18266508
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18266515 by yujiang wang in ue5-release-engine-test branch]
2021-11-22 22:06:39 -05:00

69 lines
2.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
// @todo UE4: This seems wrong to me to be needed (scene uses mesh, not the other way around), and is only needed for the MAX_TEXCOORDS
#include "MaterialExport.h"
#include "SceneExport.h"
#include "Texture.h"
namespace Lightmass
{
//----------------------------------------------------------------------------
// Material base class
//----------------------------------------------------------------------------
class FBaseMaterial : public FBaseMaterialData
{
public:
virtual ~FBaseMaterial() { }
virtual void Import( class FLightmassImporter& Importer );
};
//----------------------------------------------------------------------------
// Material class
//----------------------------------------------------------------------------
class FMaterial : public FBaseMaterial, public FMaterialData
{
public:
virtual void Import( class FLightmassImporter& Importer );
/** Sample the various properties of this material at the given UV */
inline void SampleEmissive(const FVector2f& UV, FLinearColor& Emissive, float& OutEmissiveBoost) const
{
Emissive = MaterialEmissive.Sample(UV);
OutEmissiveBoost = EmissiveBoost;
}
inline void SampleDiffuse(const FVector2f& UV, FLinearColor& Diffuse, float& OutDiffuseBoost) const
{
Diffuse = MaterialDiffuse.Sample(UV);
OutDiffuseBoost = DiffuseBoost;
}
inline FLinearColor SampleTransmission(const FVector2f& UV) const
{
return MaterialTransmission.Sample(UV);
}
inline void SampleNormal(const FVector2f& UV, FVector4f& Normal) const
{
Normal = MaterialNormal.SampleNormal(UV);
Normal.W = 0.0f;
Normal = Normal.GetSafeNormal();
if( Normal.SizeSquared3() < KINDA_SMALL_NUMBER )
{
Normal.Set( 0.0f, 0.0f, 1.0f, 0.0f );
}
}
protected:
FTexture2D MaterialEmissive;
FTexture2D MaterialDiffuse;
FTexture2D MaterialTransmission;
FTexture2D MaterialNormal;
};
} // namespace Lightmass