Files
UnrealEngine/Engine/Plugins/Interchange/Runtime/Source/Common/Public/MaterialX/InterchangeMaterialXDefinitions.h
2025-05-18 13:04:45 +08:00

950 lines
42 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Math/Color.h"
#include "Math/MathFwd.h"
#include "Math/Vector.h"
// Interchange currently only brings in MaterialX when in the editor, so we
// define its namespace macros ourselves otherwise.
#if WITH_EDITOR
THIRD_PARTY_INCLUDES_START
#include "MaterialXCore/Library.h"
THIRD_PARTY_INCLUDES_END
#else
#define MATERIALX_NAMESPACE_BEGIN namespace MaterialX {
#define MATERIALX_NAMESPACE_END }
#endif
#include "InterchangeMaterialXDefinitions.generated.h"
UENUM(BlueprintType)
enum class EInterchangeMaterialXShaders : uint8
{
/** Default settings for Open PBR Surface shader. */
OpenPBRSurface,
/** Open PBR Surface shader used for translucency. */
OpenPBRSurfaceTransmission,
/** Default settings for Autodesk's Standard Surface shader. */
StandardSurface,
/** Standard Surface shader used for translucency. */
StandardSurfaceTransmission,
/** Shader used for unlit surfaces. */
SurfaceUnlit,
/** Default settings for USD's Surface shader. */
UsdPreviewSurface,
/** A surface shader constructed from scattering and emission distribution functions. */
Surface,
/** Shader used for displacement. */
Displacement,
MaxShaderCount UMETA(hidden)
};
UENUM(BlueprintType)
/** Data type representing a Bidirectional Scattering Distribution Function. */
enum class EInterchangeMaterialXBSDF : uint8
{
/** A BSDF node for diffuse reflections. */
OrenNayarDiffuse,
/** A BSDF node for Burley diffuse reflections. */
BurleyDiffuse,
/** A BSDF node for pure diffuse transmission. */
Translucent,
/** A reflection/transmission BSDF node based on a microfacet model and a Fresnel curve for dielectrics. */
Dielectric,
/** A reflection BSDF node based on a microfacet model and a Fresnel curve for conductors/metals. */
Conductor,
/** A reflection/transmission BSDF node based on a microfacet model and a generalized Schlick Fresnel curve. */
GeneralizedSchlick,
/** A subsurface scattering BSDF for true subsurface scattering. */
Subsurface,
/** A microfacet BSDF for the back-scattering properties of cloth-like materials. */
Sheen,
/** Adds an iridescent thin film layer over a microfacet base BSDF. */
ThinFilm,
MaxBSDFCount UMETA(hidden)
};
UENUM(BlueprintType)
/** Data type representing an Emission Distribution Function. */
enum class EInterchangeMaterialXEDF : uint8
{
/** An EDF node for uniform emission. */
Uniform,
/** Constructs an EDF emitting light inside a cone around the normal direction. */
Conical,
/** Constructs an EDF emitting light according to a measured IES light profile. */
Measured,
MaxEDFCount UMETA(hidden)
};
UENUM(BlueprintType)
/** Data type representing a Volume Distribution Function. */
enum class EInterchangeMaterialXVDF : uint8
{
/** Constructs a VDF for pure light absorption. */
Absorption,
/** Constructs a VDF scattering light for a participating medium, based on the Henyey-Greenstein phase function. */
Anisotropic,
MaxVDFCount UMETA(hidden)
};
namespace UE
{
namespace Interchange
{
namespace MaterialX
{
static constexpr uint8 IndexSurfaceShaders = 0;
static constexpr uint8 IndexBSDF = 1;
static constexpr uint8 IndexEDF = 2;
static constexpr uint8 IndexVDF = 3;
namespace Attributes
{
constexpr const TCHAR* EnumType = TEXT("MaterialXEnumType");
constexpr const TCHAR* EnumValue = TEXT("MaterialXEnumValue");
}
}
}
namespace Expressions
{
namespace Names
{
static constexpr const TCHAR* Abs = TEXT("Abs");
static constexpr const TCHAR* Add = TEXT("Add");
static constexpr const TCHAR* AppendVector = TEXT("AppendVector");
static constexpr const TCHAR* Arccosine = TEXT("Arccosine");
static constexpr const TCHAR* Arcsine = TEXT("Arcsine");
static constexpr const TCHAR* Arctangent2 = TEXT("Arctangent2");
static constexpr const TCHAR* BlackBody = TEXT("BlackBody");
static constexpr const TCHAR* CameraVectorWS = TEXT("CameraVectorWS");
static constexpr const TCHAR* Ceil = TEXT("Ceil");
static constexpr const TCHAR* Clamp = TEXT("Clamp");
static constexpr const TCHAR* Contrast = TEXT("MaterialXContrast");
static constexpr const TCHAR* Cosine = TEXT("Cosine");
static constexpr const TCHAR* Crossproduct = TEXT("Crossproduct");
static constexpr const TCHAR* Desaturation = TEXT("Desaturation");
static constexpr const TCHAR* Divide = TEXT("Divide");
static constexpr const TCHAR* Distance = TEXT("Distance");
static constexpr const TCHAR* Dotproduct = TEXT("Dotproduct");
static constexpr const TCHAR* Exponential = TEXT("Exponential");
static constexpr const TCHAR* Floor = TEXT("Floor");
static constexpr const TCHAR* HsvToRgb = TEXT("HsvToRgb");
static constexpr const TCHAR* If = TEXT("If");
static constexpr const TCHAR* Logarithm = TEXT("Logarithm");
static constexpr const TCHAR* Length = TEXT("Length");
static constexpr const TCHAR* Lerp = TEXT("Lerp");
static constexpr const TCHAR* LocalPosition = TEXT("LocalPosition");
static constexpr const TCHAR* MaterialXAppend3Vector = TEXT("MaterialXAppend3Vector");
static constexpr const TCHAR* MaterialXAppend4Vector = TEXT("MaterialXAppend4Vector");
static constexpr const TCHAR* MaterialXBurn = TEXT("MaterialXBurn");
static constexpr const TCHAR* MaterialXDifference = TEXT("MaterialXDifference");
static constexpr const TCHAR* MaterialXDisjointover = TEXT("MaterialXDisjointover");
static constexpr const TCHAR* MaterialXDodge = TEXT("MaterialXDodge");
static constexpr const TCHAR* MaterialXFractal3D = TEXT("MaterialXFractal3D");
static constexpr const TCHAR* MaterialXIn = TEXT("MaterialXIn");
static constexpr const TCHAR* MaterialXLuminance = TEXT("MaterialXLuminance");
static constexpr const TCHAR* MaterialXMask = TEXT("MaterialXMask");
static constexpr const TCHAR* MaterialXMatte = TEXT("MaterialXMatte");
static constexpr const TCHAR* MaterialXMinus = TEXT("MaterialXMinus");
static constexpr const TCHAR* MaterialXMod = TEXT("MaterialXMod");
static constexpr const TCHAR* MaterialXOut = TEXT("MaterialXOut");
static constexpr const TCHAR* MaterialXOver = TEXT("MaterialXOver");
static constexpr const TCHAR* MaterialXOverlay = TEXT("MaterialXOverlay");
static constexpr const TCHAR* MaterialXPlus = TEXT("MaterialXPlus");
static constexpr const TCHAR* MaterialXPremult = TEXT("MaterialXPremult");
static constexpr const TCHAR* MaterialXRamp4 = TEXT("MaterialXRamp4");
static constexpr const TCHAR* MaterialXRampLeftRight = TEXT("MaterialXRampLeftRight");
static constexpr const TCHAR* MaterialXRampTopBottom = TEXT("MaterialXRampTopBottom");
static constexpr const TCHAR* MaterialXRange = TEXT("MaterialXRange");
static constexpr const TCHAR* MaterialXRemap = TEXT("MaterialXRemap");
static constexpr const TCHAR* MaterialXScreen = TEXT("MaterialXScreen");
static constexpr const TCHAR* MaterialXSplitLeftRight = TEXT("MaterialXSplitLeftRight");
static constexpr const TCHAR* MaterialXSplitTopBottom = TEXT("MaterialXSplitTopBottom");
static constexpr const TCHAR* MaterialXUnpremult = TEXT("MaterialXUnpremult");
static constexpr const TCHAR* Max = TEXT("Max");
static constexpr const TCHAR* Min = TEXT("Min");
static constexpr const TCHAR* Multiply = TEXT("Multiply");
static constexpr const TCHAR* Normalize = TEXT("Normalize");
static constexpr const TCHAR* Power = TEXT("Power");
static constexpr const TCHAR* RgbToHsv = TEXT("RgbToHsv");
static constexpr const TCHAR* RotateAboutAxis = TEXT("RotateAboutAxis");
static constexpr const TCHAR* Round = TEXT("Round");
static constexpr const TCHAR* Sign = TEXT("Sign");
static constexpr const TCHAR* Sine = TEXT("Sine");
static constexpr const TCHAR* SmoothStep = TEXT("SmoothStep");
static constexpr const TCHAR* SquareRoot = TEXT("SquareRoot");
static constexpr const TCHAR* SubstrateAdd = TEXT("SubstrateAdd");
static constexpr const TCHAR* SubstrateHorizontalMixing = TEXT("SubstrateHorizontalMixing");
static constexpr const TCHAR* SubstrateVerticalLayering = TEXT("SubstrateVerticalLayering");
static constexpr const TCHAR* SubstrateWeight = TEXT("SubstrateWeight");
static constexpr const TCHAR* Subtract = TEXT("Subtract");
static constexpr const TCHAR* Tangent = TEXT("Tangent");
static constexpr const TCHAR* Time = TEXT("Time");
static constexpr const TCHAR* Transform = TEXT("Transform");
static constexpr const TCHAR* TransformPosition = TEXT("TransformPosition");
static constexpr const TCHAR* VertexColor = TEXT("VertexColor");
static constexpr const TCHAR* VertexNormalWS = TEXT("VertexNormalWS");
static constexpr const TCHAR* VertexTangentWS = TEXT("VertexTangentWS");
static constexpr const TCHAR* WorldPosition = TEXT("WorldPosition");
}
namespace Inputs
{
static constexpr const TCHAR* A = TEXT("A");
static constexpr const TCHAR* AbsoluteWorldPosition = TEXT("Absolute World Position");
static constexpr const TCHAR* AEqualsB = TEXT("AEqualsB");
static constexpr const TCHAR* AGreaterThanB = TEXT("AGreaterThanB");
static constexpr const TCHAR* Alpha = TEXT("Alpha");
static constexpr const TCHAR* ALessThanB = TEXT("ALessThanB");
static constexpr const TCHAR* Amount= TEXT("Amount");
static constexpr const TCHAR* Amplitude = TEXT("Amplitude");
static constexpr const TCHAR* B = TEXT("B");
static constexpr const TCHAR* Background = TEXT("Background");
static constexpr const TCHAR* Base = TEXT("Base");
static constexpr const TCHAR* Bottom = TEXT("Bottom");
static constexpr const TCHAR* C = TEXT("C");
static constexpr const TCHAR* Clamp = TEXT("Clamp");
static constexpr const TCHAR* Center = TEXT("Center");
static constexpr const TCHAR* Coordinate = TEXT("Coordinate");
static constexpr const TCHAR* Coordinates = TEXT("Coordinates");
static constexpr const TCHAR* D = TEXT("D");
static constexpr const TCHAR* Default = TEXT("Default");
static constexpr const TCHAR* Diminish = TEXT("Diminish");
static constexpr const TCHAR* Exponent = TEXT("Exponent");
static constexpr const TCHAR* Factor = TEXT("Factor");
static constexpr const TCHAR* Flatness = TEXT("Flatness");
static constexpr const TCHAR* Foreground = TEXT("Foreground");
static constexpr const TCHAR* Fraction = TEXT("Fraction");
static constexpr const TCHAR* Gamma = TEXT("Gamma");
static constexpr const TCHAR* in1 = TEXT("in1");
static constexpr const TCHAR* in2 = TEXT("in2");
static constexpr const TCHAR* in3 = TEXT("in3");
static constexpr const TCHAR* in4 = TEXT("in4");
static constexpr const TCHAR* in5 = TEXT("in5");
static constexpr const TCHAR* Input = TEXT("Input");
static constexpr const TCHAR* InputLow = TEXT("InputLow");
static constexpr const TCHAR* InputHigh = TEXT("InputHigh");
static constexpr const TCHAR* Lacunarity = TEXT("Lacunarity");
static constexpr const TCHAR* LuminanceFactors = TEXT("LuminanceFactors");
static constexpr const TCHAR* Max = TEXT("Max");
static constexpr const TCHAR* Min = TEXT("Min");
static constexpr const TCHAR* Mix = TEXT("Mix");
static constexpr const TCHAR* Normal = TEXT("Normal");
static constexpr const TCHAR* NormalizedRotationAxis = TEXT("NormalizedRotationAxis");
static constexpr const TCHAR* Octaves = TEXT("Octaves");
static constexpr const TCHAR* Offset = TEXT("Offset");
static constexpr const TCHAR* Pivot = TEXT("Pivot");
static constexpr const TCHAR* Position = TEXT("Position");
static constexpr const TCHAR* RayDirection = TEXT("Ray Direction");
static constexpr const TCHAR* RefractiveIndexOrigin = TEXT("Refractive Index Origin");
static constexpr const TCHAR* RefractiveIndexTarget = TEXT("Refractive Index Target");
static constexpr const TCHAR* RotationAngle = TEXT("RotationAngle");
static constexpr const TCHAR* Scale = TEXT("Scale");
static constexpr const TCHAR* SurfaceNormal = TEXT("Surface Normal");
static constexpr const TCHAR* SwitchValue = TEXT("SwitchValue");
static constexpr const TCHAR* TargetLow = TEXT("TargetLow");
static constexpr const TCHAR* TargetHigh = TEXT("TargetHigh");
static constexpr const TCHAR* Temp = TEXT("Temp");
static constexpr const TCHAR* Time = TEXT("Time");
static constexpr const TCHAR* Top = TEXT("Top");
static constexpr const TCHAR* Value = TEXT("Value");
static constexpr const TCHAR* VectorInput = TEXT("VectorInput");
static constexpr const TCHAR* Weight = TEXT("Weight");
static constexpr const TCHAR* X = TEXT("X");
static constexpr const TCHAR* Y = TEXT("Y");
}
}
namespace MaterialFunctions
{
namespace Path
{
constexpr const TCHAR* HeightToNormalSmooth = TEXT("/Engine/Functions/Engine_MaterialFunctions03/Procedurals/HeightToNormalSmooth.HeightToNormalSmooth");
constexpr const TCHAR* MxACEScgToRec709 = TEXT("/InterchangeAssets/Functions/MX_ACEScgToRec709.MX_ACEScgToRec709");
constexpr const TCHAR* MxAdobeRGBToRec709 = TEXT("/InterchangeAssets/Functions/MX_AdobeRGBToRec709.MX_AdobeRGBToRec709");
constexpr const TCHAR* MxArtisticIOR = TEXT("/InterchangeAssets/Functions/MX_Artistic_IOR.MX_Artistic_IOR");
constexpr const TCHAR* MxCircle = TEXT("/InterchangeAssets/Functions/MX_Circle.MX_Circle");
constexpr const TCHAR* MxCheckerboard = TEXT("/InterchangeAssets/Functions/MX_Checkerboard.MX_Checkerboard");
constexpr const TCHAR* MxColorCorrect = TEXT("/InterchangeAssets/Functions/MX_ColorCorrect.MX_ColorCorrect");
constexpr const TCHAR* MxGoochShade = TEXT("/InterchangeAssets/Functions/MX_GoochShade.MX_GoochShade");
constexpr const TCHAR* MxHsvAdjust = TEXT("/InterchangeAssets/Functions/MX_HSVAdjust.MX_HSVAdjust");
constexpr const TCHAR* MxLine = TEXT("/InterchangeAssets/Functions/MX_Line.MX_Line");
constexpr const TCHAR* MxLinearAdobeRGBToRec709 = TEXT("/InterchangeAssets/Functions/MX_LinearAdobeRGBToRec709.MX_LinearAdobeRGBToRec709");
constexpr const TCHAR* MxLinearDisplayP3ToRec709 = TEXT("/InterchangeAssets/Functions/MX_LinearDisplayP3ToRec709.MX_LinearDisplayP3ToRec709");
constexpr const TCHAR* MxPlace2D = TEXT("/InterchangeAssets/Functions/MX_Place2D.MX_Place2D");
constexpr const TCHAR* MxRandomFloat = TEXT("/InterchangeAssets/Functions/MX_RandomFloat.MX_RandomFloat");
constexpr const TCHAR* MxRandomColor = TEXT("/InterchangeAssets/Functions/MX_RandomColor.MX_RandomColor");
constexpr const TCHAR* MxRoughnesAnisotropy = TEXT("/InterchangeAssets/Functions/MX_Roughness_Anisotropy.MX_Roughness_Anisotropy");
constexpr const TCHAR* MxRoughnessDual = TEXT("/InterchangeAssets/Functions/MX_Roughness_Dual.MX_Roughness_Dual");
constexpr const TCHAR* MxSrgbDisplayP3ToRec709 = TEXT("/InterchangeAssets/Functions/MX_SrgbDisplayP3ToRec709.MX_SrgbDisplayP3ToRec709");
constexpr const TCHAR* MxSrgbToRec709 = TEXT("/InterchangeAssets/Functions/MX_SrgbToRec709.MX_SrgbToRec709");
constexpr const TCHAR* MxUnifiedNoise3D = TEXT("/InterchangeAssets/Functions/MX_UnifiedNoise3d.MX_UnifiedNoise3d");
constexpr const TCHAR* MxTiledCircles = TEXT("/InterchangeAssets/Functions/MX_TiledCircles.MX_TiledCircles");
constexpr const TCHAR* NormalFromHeightMap = TEXT("/Engine/Functions/Engine_MaterialFunctions03/Procedurals/NormalFromHeightmap.NormalFromHeightmap");
constexpr const TCHAR* Refract = TEXT("/Engine/Functions/Engine_MaterialFunctions01/Vectors/Refract.Refract");
}
}
}
MATERIALX_NAMESPACE_BEGIN
namespace OpenPBRSurface
{
namespace Input
{
static constexpr const char* BaseWeight = "base_weight";
static constexpr const char* BaseColor = "base_color";
static constexpr const char* BaseDiffuseRoughness = "base_diffuse_roughness";
static constexpr const char* BaseMetalness = "base_metalness";
static constexpr const char* SpecularWeight = "specular_weight";
static constexpr const char* SpecularColor = "specular_color";
static constexpr const char* SpecularRoughness = "specular_roughness";
static constexpr const char* SpecularIOR = "specular_ior";
static constexpr const char* SpecularRoughnessAnisotropy = "specular_roughness_anisotropy";
static constexpr const char* TransmissionWeight = "transmission_weight";
static constexpr const char* TransmissionColor = "transmission_color";
static constexpr const char* TransmissionDepth = "transmission_depth";
static constexpr const char* TransmissionScatter = "transmission_scatter";
static constexpr const char* TransmissionScatterAnisotropy= "transmission_scatter_anisotropy";
static constexpr const char* TransmissionDispersionScale = "transmission_dispersion_scale";
static constexpr const char* TransmissionDispersionAbbeNumber= "transmission_dispersion_abbe_number";
static constexpr const char* SubsurfaceWeight = "subsurface_weight";
static constexpr const char* SubsurfaceColor = "subsurface_color";
static constexpr const char* SubsurfaceRadius = "subsurface_radius";
static constexpr const char* SubsurfaceRadiusScale = "subsurface_radius_scale";
static constexpr const char* SubsurfaceScatterAnisotropy = "subsurface_scatter_anisotropy";
static constexpr const char* FuzzWeight = "fuzz_weight";
static constexpr const char* FuzzColor = "fuzz_color";
static constexpr const char* FuzzRoughness = "fuzz_roughness";
static constexpr const char* CoatWeight = "coat_weight";
static constexpr const char* CoatColor = "coat_color";
static constexpr const char* CoatRoughness = "coat_roughness";
static constexpr const char* CoatRoughnessAnisotropy = "coat_roughness_anisotropy";
static constexpr const char* CoatRotation = "coat_rotation";
static constexpr const char* CoatIOR = "coat_ior";
static constexpr const char* CoatDarkening = "coat_darkening";
static constexpr const char* ThinFilmWeight= "thin_film_weight";
static constexpr const char* ThinFilmThickness = "thin_film_thickness";
static constexpr const char* ThinFilmIOR = "thin_film_ior";
static constexpr const char* EmissionLuminance = "emission_luminance";
static constexpr const char* EmissionColor = "emission_color";
static constexpr const char* GeometryOpacity = "geometry_opacity";
static constexpr const char* GeometryThinWalled = "geometry_thin_walled";
static constexpr const char* GeometryNormal = "geometry_normal";
static constexpr const char* GeometryCoatNormal = "geometry_coat_normal";
static constexpr const char* GeometryTangent = "geometry_tangent";
}
namespace DefaultValue
{
static constexpr float BaseWeight = 1.f;
static constexpr FLinearColor BaseColor{ 0.8, 0.8, 0.8 };
static constexpr float BaseDiffuseRoughness = 0.f;
static constexpr float BaseMetalness = 0.f;
static constexpr float SpecularWeight = 1.f;
static constexpr FLinearColor SpecularColor{ 1, 1, 1 };
static constexpr float SpecularRoughness = 0.3f;
static constexpr float SpecularIOR = 1.5f;
static constexpr float SpecularRoughnessAnisotropy = 0.f;
static constexpr float TransmissionWeight = 0.f;
static constexpr FLinearColor TransmissionColor{ 1, 1, 1 };
static constexpr float TransmissionDepth = 0.f;
static constexpr FLinearColor TransmissionScatter{ 0, 0, 0 };
static constexpr float TransmissionScatterAnisotropy = 0.f;
static constexpr float TransmissionDispersionScale = 0.f;
static constexpr float TransmissionDispersionAbbeNumber = 20.f;
static constexpr float SubsurfaceWeight = 0.f;
static constexpr FLinearColor SubsurfaceColor{ 0.8, 0.8, 0.8 };
static constexpr float SubsurfaceRadius = 1.f;
static constexpr FLinearColor SubsurfaceRadiusScale{1, 0.5, 0.25};
static constexpr float SubsurfaceScatterAnisotropy = 0.f;
static constexpr float FuzzWeight = 0.f;
static constexpr FLinearColor FuzzColor{ 1, 1, 1 };
static constexpr float FuzzRoughness = 0.5f;
static constexpr float CoatWeight = 0.f;
static constexpr FLinearColor CoatColor{ 1, 1, 1 };
static constexpr float CoatRoughness = 0.f;
static constexpr float CoatRoughnessAnisotropy = 0.f;
static constexpr float CoatIOR = 1.6f;
static constexpr float CoatDarkening = 1.f;
static constexpr float ThinFilmWeight = 0.f;
static constexpr float ThinFilmThickness = 0.5f;
static constexpr float ThinFilmIOR = 1.4f;
static constexpr float EmissionLuminance = 0.f;
static constexpr FLinearColor EmissionColor{ 1, 1, 1 };
static constexpr float GeometryOpacity = 1.f;
static constexpr bool GeometryThinWalled = false;
static const FVector GeometryNormal{ 0, 0, 1 };
static const FVector GeometryCoatNormal{ 0, 0, 1 };
static const FVector GeometryTangent{ 0, 1, 0 };
}
}
namespace StandardSurface
{
namespace Input
{
static constexpr const char* Base = "base";
static constexpr const char* BaseColor = "base_color";
static constexpr const char* DiffuseRoughness = "diffuse_roughness";
static constexpr const char* Metalness = "metalness";
static constexpr const char* Specular = "specular";
static constexpr const char* SpecularColor = "specular_color";
static constexpr const char* SpecularRoughness = "specular_roughness";
static constexpr const char* SpecularIOR = "specular_IOR";
static constexpr const char* SpecularAnisotropy = "specular_anisotropy";
static constexpr const char* SpecularRotation = "specular_rotation";
static constexpr const char* Transmission = "transmission";
static constexpr const char* TransmissionColor = "transmission_color";
static constexpr const char* TransmissionDepth = "transmission_depth";
static constexpr const char* TransmissionScatter = "transmission_scatter";
static constexpr const char* TransmissionScatterAnisotropy = "transmission_scatter_anisotropy";
static constexpr const char* TransmissionDispersion = "transmission_dispersion";
static constexpr const char* TransmissionExtraRoughness = "transmission_extra_roughness";
static constexpr const char* Subsurface = "subsurface";
static constexpr const char* SubsurfaceColor = "subsurface_color";
static constexpr const char* SubsurfaceRadius = "subsurface_radius";
static constexpr const char* SubsurfaceScale = "subsurface_scale";
static constexpr const char* SubsurfaceAnisotropy = "subsurface_anisotropy";
static constexpr const char* Sheen = "sheen";
static constexpr const char* SheenColor = "sheen_color";
static constexpr const char* SheenRoughness = "sheen_roughness";
static constexpr const char* Coat = "coat";
static constexpr const char* CoatColor = "coat_color";
static constexpr const char* CoatRoughness = "coat_roughness";
static constexpr const char* CoatAnisotropy = "coat_anisotropy";
static constexpr const char* CoatRotation = "coat_rotation";
static constexpr const char* CoatIOR = "coat_IOR";
static constexpr const char* CoatNormal = "coat_normal";
static constexpr const char* CoatAffectColor = "coat_affect_color";
static constexpr const char* CoatAffectRoughness = "coat_affect_roughness";
static constexpr const char* ThinFilmThickness = "thin_film_thickness";
static constexpr const char* ThinFilmIOR = "thin_film_IOR";
static constexpr const char* Emission = "emission";
static constexpr const char* EmissionColor = "emission_color";
static constexpr const char* Opacity = "opacity";
static constexpr const char* ThinWalled = "thin_walled";
static constexpr const char* Normal = "normal";
static constexpr const char* Tangent = "tangent";
}
namespace DefaultValue
{
static constexpr float Base = 1.f;
constexpr FLinearColor BaseColor{ 0.8, 0.8, 0.8 };
static constexpr float DiffuseRoughness = 0.f;
static constexpr float Metalness = 0.f;
static constexpr float Specular = 1.f;
constexpr FLinearColor SpecularColor{ 1, 1, 1 };
static constexpr float SpecularRoughness = 0.2f;
static constexpr float SpecularIOR = 1.5f;
static constexpr float SpecularAnisotropy = 0.f;
static constexpr float SpecularRotation = 0.f;
static constexpr float Transmission = 0.f;
static constexpr float TransmissionDepth = 0.f;
static constexpr float TransmissionScatterAnisotropy = 0.f;
static constexpr float TransmissionDispersion = 0.f;
static constexpr float TransmissionExtraRoughness = 0.f;
static constexpr float Subsurface = 0.f;
constexpr FLinearColor SubsurfaceColor{ 1, 1, 1 };
constexpr FLinearColor SubsurfaceRadius{ 1, 1, 1 };
static constexpr float SubsurfaceScale = 1.f;
static constexpr float SubsurfaceAnisotropy = 0.f;
static constexpr float Sheen = 0.f;
constexpr FLinearColor SheenColor{ 1, 1, 1 };
static constexpr float SheenRoughness = 0.3f;
static constexpr float Coat = 0.f;
constexpr FLinearColor CoatColor{ 1, 1, 1 };
static constexpr float CoatRoughness = 0.1f;
static constexpr float CoatAnisotropy = 0.f;
static constexpr float CoatRotation = 0.f;
static constexpr float CoatIOR = 1.5f;
static constexpr float CoatAffectColor = 0.f;
static constexpr float CoatAffectRoughness = 0.f;
static constexpr float ThinFilmThickness = 0.f;
static constexpr float ThinFilmIOR = 1.5f;
constexpr FLinearColor TransmissionColor{ 1, 1, 1 };
constexpr FLinearColor TransmissionScatter{ 0, 0, 0 };
static constexpr float Emission = 0.f;
constexpr FLinearColor EmissionColor{ 1, 1, 1 };
constexpr FLinearColor Opacity{ 1, 1, 1 };
constexpr bool ThinWalled = false;
}
}
namespace SurfaceUnlit
{
namespace Input
{
static constexpr const char* Emission = "emission";
static constexpr const char* EmissionColor = "emission_color";
static constexpr const char* Transmission = "transmission";
static constexpr const char* TransmissionColor = "transmission_color";
static constexpr const char* Opacity = "opacity";
}
namespace DefaultValue
{
namespace Float
{
constexpr float Emission = 1.f;
constexpr float Transmission = 0.f;
constexpr float Opacity = 1.f;
}
namespace Color3
{
constexpr FLinearColor EmissionColor{ 1, 1, 1 };
constexpr FLinearColor TransmissionColor{ 1, 1, 1 };
}
}
}
namespace Surface
{
namespace Input
{
static constexpr const char* Bsdf = "bsdf";
static constexpr const char* Edf = "edf";
static constexpr const char* Opacity = "opacity";
}
namespace DefaultValue
{
namespace Float
{
constexpr float Opacity = 1.f;
}
}
}
namespace UsdPreviewSurface
{
namespace Input
{
static constexpr const char* DiffuseColor = "diffuseColor";
static constexpr const char* EmissiveColor = "emissiveColor";
static constexpr const char* SpecularColor = "specularColor";
static constexpr const char* Metallic = "metallic";
static constexpr const char* Roughness = "roughness";
static constexpr const char* Clearcoat = "clearcoat";
static constexpr const char* ClearcoatRoughness = "clearcoatRoughness";
static constexpr const char* Opacity = "opacity";
static constexpr const char* OpacityThreshold = "opacityThreshold";
static constexpr const char* IOR = "ior";
static constexpr const char* Normal = "normal";
static constexpr const char* Displacement = "displacement";
static constexpr const char* Occlusion = "occlusion";
}
namespace DefaultValue
{
namespace Float
{
constexpr float Metallic = 0.f;
constexpr float Roughness = 0.5f;
constexpr float Clearcoat = 0.f;
constexpr float ClearcoatRoughness = 0.01f;
constexpr float Opacity = 1.f;
constexpr float OpacityThreshold = 0.f;
constexpr float IOR = 1.5f;
constexpr float Displacement = 0.f;
constexpr float Occlusion = 1.f;
}
namespace Color3
{
constexpr FLinearColor DiffuseColor{ 0.18f, 0.18f, 0.18f };
constexpr FLinearColor EmissiveColor{ 0, 0, 0 };
constexpr FLinearColor SpecularColor{ 0, 0, 0 };
}
namespace Vector3
{
static const FVector3f Normal{ 0.f, 0.f, 1.f };
}
}
}
namespace Lights
{
//There's no input per se in a Light, but we can find some common inputs among those lights
namespace Input
{
static constexpr const char* Color = "color";
static constexpr const char* Intensity = "intensity";
}
namespace PointLight
{
namespace Input
{
using namespace Lights::Input;
static constexpr const char* Position = "position";
static constexpr const char* DecayRate = "decay_rate";
}
}
namespace DirectionalLight
{
namespace Input
{
using namespace Lights::Input;
static constexpr const char* Direction = "direction";
}
}
namespace SpotLight
{
namespace Input
{
using namespace PointLight::Input;
using namespace DirectionalLight::Input;
static constexpr const char* InnerAngle = "inner_angle";
static constexpr const char* OuterAngle = "outer_angle";
}
}
}
namespace Attributes
{
static constexpr const char* IsVisited = "UE:IsVisited";
static constexpr const char* NewName = "UE:NewName";
static constexpr const char* ParentName = "UE:ParentName";
static constexpr const char* UniqueName = "UE:UniqueName";
static constexpr const char* GeomPropImage = "UE:GeomPropImage";
}
namespace Category
{
// Math nodes
static constexpr const char* Absval = "absval";
static constexpr const char* Acos = "acos";
static constexpr const char* Add = "add";
static constexpr const char* ArrayAppend = "arrayappend";
static constexpr const char* Asin = "asin";
static constexpr const char* Atan2 = "atan2";
static constexpr const char* Ceil = "ceil";
static constexpr const char* Clamp = "clamp";
static constexpr const char* Cos = "cos";
static constexpr const char* CrossProduct = "crossproduct";
static constexpr const char* Determinant = "determinant";
static constexpr const char* Divide = "divide";
static constexpr const char* Distance = "distance";
static constexpr const char* DotProduct = "dotproduct";
static constexpr const char* Exp = "exp";
static constexpr const char* Floor = "floor";
static constexpr const char* Invert = "invert";
static constexpr const char* InvertMatrix = "invertmatrix";
static constexpr const char* Ln = "ln";
static constexpr const char* Magnitude = "magnitude";
static constexpr const char* Max = "max";
static constexpr const char* Min = "min";
static constexpr const char* Modulo = "modulo";
static constexpr const char* Multiply = "multiply";
static constexpr const char* Normalize = "normalize";
static constexpr const char* NormalMap = "normalmap";
static constexpr const char* Place2D = "place2d";
static constexpr const char* Power = "power";
static constexpr const char* Reflect = "reflect";
static constexpr const char* Refract = "refract";
static constexpr const char* Rotate2D = "rotate2d";
static constexpr const char* Rotate3D = "rotate3d";
static constexpr const char* Round = "round";
static constexpr const char* SafePower = "safepower";
static constexpr const char* Sign = "sign";
static constexpr const char* Sin = "sin";
static constexpr const char* Sqrt = "sqrt";
static constexpr const char* Sub = "subtract";
static constexpr const char* Tan = "tan";
static constexpr const char* TransformMatrix = "transformmatrix";
static constexpr const char* TransformNormal = "transformnormal";
static constexpr const char* TransformPoint = "transformpoint";
static constexpr const char* TransformVector = "transformvector";
static constexpr const char* Transpose = "transpose";
static constexpr const char* TriangleWave = "trianglewave";
// Compositing nodes
static constexpr const char* Burn = "burn";
static constexpr const char* Difference = "difference";
static constexpr const char* Disjointover = "disjointover";
static constexpr const char* Dodge = "dodge";
static constexpr const char* In = "in";
static constexpr const char* Inside = "inside";
static constexpr const char* Mask = "mask";
static constexpr const char* Matte = "matte";
static constexpr const char* Minus = "minus";
static constexpr const char* Mix = "mix";
static constexpr const char* Out = "out";
static constexpr const char* Outside = "outside";
static constexpr const char* Over = "over";
static constexpr const char* Overlay = "overlay";
static constexpr const char* Plus = "plus";
static constexpr const char* Premult = "premult";
static constexpr const char* Screen = "screen";
static constexpr const char* Unpremult = "unpremult";
// Conditional nodes
static constexpr const char* IfGreater = "ifgreater";
static constexpr const char* IfGreaterEq = "ifgreatereq";
static constexpr const char* IfEqual = "ifequal";
static constexpr const char* Switch = "switch";
// Channel nodes
static constexpr const char* Convert = "convert";
static constexpr const char* Combine2 = "combine2";
static constexpr const char* Combine3 = "combine3";
static constexpr const char* Combine4 = "combine4";
static constexpr const char* Extract = "extract";
static constexpr const char* Separate2 = "separate2";
static constexpr const char* Separate3 = "separate3";
static constexpr const char* Separate4 = "separate4";
#if MATERIALX_MINOR_VERSION < 39
static constexpr const char* Swizzle = "swizzle";
#endif // MATERIALX_MINOR_VERSION < 39
// Procedural nodes
static constexpr const char* Constant = "constant";
// Procedural2D nodes
static constexpr const char* CellNoise2D = "cellnoise2d";
static constexpr const char* Checkerboard = "checkerboard";
static constexpr const char* Circle = "circle";
static constexpr const char* Line = "line";
static constexpr const char* Noise2D = "noise2d";
static constexpr const char* Ramp4 = "ramp4";
static constexpr const char* RampLR = "ramplr";
static constexpr const char* RampTB = "ramptb";
static constexpr const char* RandomFloat = "randomfloat";
static constexpr const char* SplitLR = "splitlr";
static constexpr const char* SplitTB = "splittb";
static constexpr const char* TiledCircles = "tiledcircles";
static constexpr const char* WorleyNoise2D = "worleynoise2d";
// Procedural3D nodes
static constexpr const char* CellNoise3D = "cellnoise3d";
static constexpr const char* Fractal3D = "fractal3d";
static constexpr const char* Noise3D = "noise3d";
static constexpr const char* RandomColor = "randomcolor";
static constexpr const char* UnifiedNoise3D = "unifiednoise3d";
static constexpr const char* WorleyNoise3D = "worleynoise3d";
// Organization nodes
static constexpr const char* Dot = "dot";
// Texture nodes
static constexpr const char* Image = "image";
static constexpr const char* TiledImage = "tiledimage";
// Geometric nodes
static constexpr const char* Bitangent = "bitangent";
static constexpr const char* GeomColor = "geomcolor";
static constexpr const char* Normal = "normal";
static constexpr const char* Position = "position";
static constexpr const char* Tangent = "tangent";
static constexpr const char* TexCoord = "texcoord";
// Light nodes
static constexpr const char* DirectionalLight = "directional_light";
static constexpr const char* PointLight = "point_light";
static constexpr const char* SpotLight = "spot_light";
// Adjustment nodes
static constexpr const char* ColorCorrect = "colorcorrect";
static constexpr const char* Contrast = "contrast";
static constexpr const char* HsvAdjust = "hsvadjust";
static constexpr const char* HsvToRgb = "hsvtorgb";
static constexpr const char* Luminance = "luminance";
static constexpr const char* Range = "range";
static constexpr const char* Remap = "remap";
static constexpr const char* RgbToHsv = "rgbtohsv";
static constexpr const char* Saturate = "saturate";
static constexpr const char* Smoothstep = "smoothstep";
// Application
static constexpr const char* Time= "time";
// PBR
// BSDF
static constexpr const char* BurleyDiffuseBSDF= "burley_diffuse_bsdf";
static constexpr const char* ConductorBSDF = "conductor_bsdf";
static constexpr const char* DielectricBSDF = "dielectric_bsdf";
static constexpr const char* GeneralizedSchlickBSDF= "generalized_schlick_bsdf";
static constexpr const char* OrenNayarDiffuseBSDF = "oren_nayar_diffuse_bsdf";
static constexpr const char* SheenBSDF = "sheen_bsdf";
static constexpr const char* SubsurfaceBSDF= "subsurface_bsdf";
static constexpr const char* ThinFilmBSDF= "thin_film_bsdf";
static constexpr const char* TranslucentBSDF = "translucent_bsdf";
// EDF
static constexpr const char* ConicalEDF = "conical_edf";
static constexpr const char* MeasuredEDF = "measured_edf";
static constexpr const char* UniformEDF = "uniform_edf";
// VDF
static constexpr const char* AbsorptionVDF = "absorption_vdf";
static constexpr const char* AnisotropicVDF = "anisotropic_vdf";
// PBR Utility Nodes
static constexpr const char* ArtisticIOR = "artistic_ior";
static constexpr const char* Blackbody = "blackbody";
static constexpr const char* Layer = "layer";
static constexpr const char* RoughnessAnisotropy = "roughness_anisotropy";
static constexpr const char* RoughnessDual = "roughness_dual";
//Surface Shaders
static constexpr const char* GltfPbr = "gltf_pbr";
static constexpr const char* DisneyBSDF2012 = "disney_brdf_2012";
static constexpr const char* DisneyBSDF2015 = "disney_bsdf_2015";
static constexpr const char* OpenPBRSurface = "open_pbr_surface";
static constexpr const char* StandardSurface = "standard_surface";
static constexpr const char* Surface = "surface";
static constexpr const char* UsdPreviewSurface = "UsdPreviewSurface";
// Shader
static constexpr const char* SurfaceUnlit = "surface_unlit";
// Displacement Shader
static constexpr const char* Displacement = "displacement";
// Convolution
static constexpr const char* Blur = "blur";
static constexpr const char* HeightToNormal = "heighttonormal";
// ColorTransform
static constexpr const char* ACEScgToLinRec709 = "acescg_to_lin_rec709";
static constexpr const char* AdobeRgbToLinRec709 = "adobergb_to_lin_rec709";
static constexpr const char* G18Rec709ToLinRec709 = "g18_rec709_to_lin_rec709";
static constexpr const char* G22ApP1ToLinRec709 = "g22_ap1_to_lin_rec709";
static constexpr const char* LinAdobeRgbToLinRec709 = "lin_adobergb_to_lin_rec709";
static constexpr const char* LinDisplayP3ToLinRec709 = "lin_displayp3_to_lin_rec709";
static constexpr const char* Rec709DisplayToLinRec709 = "rec709_display_to_lin_rec709";
static constexpr const char* SrgbDisplayP3ToLinRec709 = "srgb_displayp3_to_lin_rec709";
static constexpr const char* SrgbTextureToLinRec709 = "srgb_texture_to_lin_rec709";
// NPR
static constexpr const char* FacingRatio = "facingratio";
static constexpr const char* GoochShade = "gooch_shade";
static constexpr const char* ViewDirection = "viewdirection";
}
namespace NodeDefinition
{
static constexpr const char* OpenPBRSurface = "ND_open_pbr_surface_surfaceshader";
static constexpr const char* StandardSurface = "ND_standard_surface_surfaceshader";
static constexpr const char* SurfaceUnlit = "ND_surface_unlit";
static constexpr const char* UsdPreviewSurface = "ND_UsdPreviewSurface_surfaceshader";
static constexpr const char* PointLight = "ND_point_light";
static constexpr const char* DirectionalLight = "ND_directional_light";
static constexpr const char* SpotLight = "ND_spot_light";
static constexpr const char* Surface = "ND_surface";
static constexpr const char* DisplacementFloat = "ND_displacement_float";
static constexpr const char* DisplacementVector3 = "ND_displacement_vector3";
static constexpr const char* MixSurfaceShader = "ND_mix_surfaceshader";
}
namespace Library
{
static constexpr const char* Libraries = "libraries";
}
namespace Type
{
static constexpr const char* Boolean = "boolean";
static constexpr const char* Integer = "integer";
static constexpr const char* Float = "float";
static constexpr const char* Color3 = "color3";
static constexpr const char* Color4 = "color4";
static constexpr const char* Vector2 = "vector2";
static constexpr const char* Vector3 = "vector3";
static constexpr const char* Vector4 = "vector4";
static constexpr const char* Matrix33 = "matrix33";
static constexpr const char* Matrix44 = "matrix44";
static constexpr const char* String = "string";
static constexpr const char* Filename = "filename";
static constexpr const char* GeomName = "geomname";
static constexpr const char* SurfaceShader = "surfaceshader";
static constexpr const char* DisplacementShader = "displacementshader";
static constexpr const char* VolumeShader = "volumeshader";
static constexpr const char* LightShader = "lightshader";
static constexpr const char* Material = "material";
static constexpr const char* None = "none";
static constexpr const char* IntegerArray = "integerarray";
static constexpr const char* FloatArray = "floatarray";
static constexpr const char* Color3Array = "color3array";
static constexpr const char* Color4Array = "color4array";
static constexpr const char* Vector2Array = "vector2array";
static constexpr const char* Vector3Array = "vector3array";
static constexpr const char* Vector4Array = "vector4array";
static constexpr const char* StringArray = "stringarray";
static constexpr const char* GeomNameArray = "geomnamearray";
static constexpr const char* BSDF = "BSDF";
static constexpr const char* EDF = "EDF";
static constexpr const char* VDF = "VDF";
}
namespace NodeGroup
{
namespace Texture2D
{
namespace Inputs
{
static constexpr const char* File = "file";
static constexpr const char* Default = "default";
static constexpr const char* TexCoord = "texcoord";
static constexpr const char* FilterType = "filtertype";
static constexpr const char* FrameRange = "framerange";
static constexpr const char* FrameOffset = "frameoffset";
static constexpr const char* FrameEndAction = "frameendaction";
}
}
namespace Math
{
template<typename T>
static const T NeutralZero = T{ 0 };
template<typename T>
static const T NeutralOne = T{ 1 };
}
static constexpr const char* Compositing = "compositing";
static constexpr const char* PBR = "pbr";
}
namespace Image
{
namespace Inputs
{
using namespace NodeGroup::Texture2D::Inputs;
static constexpr const char* Layer = "layer";
static constexpr const char* UAddressMode = "uaddressmode";
static constexpr const char* VAddressMode = "vaddressmode";
}
}
namespace TiledImage
{
namespace Inputs
{
using namespace NodeGroup::Texture2D::Inputs;
static constexpr const char* UVTiling = "uvtiling";
static constexpr const char* UVOffset = "uvoffset";
static constexpr const char* RealWorldImageSize = "realworldimagesize";
static constexpr const char* RealWorldTileSize = "realworldtilesize";
}
}
MATERIALX_NAMESPACE_END