Support UE 5.7

This commit is contained in:
Eragon-Brisingr
2026-07-07 13:07:53 +08:00
parent 2bf500bd98
commit 49b04addb4
8 changed files with 198 additions and 13 deletions

View File

@@ -4,13 +4,16 @@
#include "ShaderLabIntrinsics.h"
#include "Misc/EngineVersionComparison.h"
#include "Materials/MaterialExpressionCameraPositionWS.h"
#include "Materials/MaterialExpressionCameraVectorWS.h"
#include "Materials/MaterialExpressionEyeAdaptation.h"
#include "Materials/MaterialExpressionIsFirstPerson.h"
#include "Materials/MaterialExpressionIsOrthographic.h"
#include "Materials/MaterialExpressionLightVector.h"
#include "Materials/MaterialExpressionMainDirectionalLight.h"
#if !UE_VERSION_OLDER_THAN(5, 8, 0)
#include "Materials/MaterialExpressionMainDirectionalLight.h" // 5.8+ only
#endif
#include "Materials/MaterialExpressionPixelDepth.h"
#include "Materials/MaterialExpressionReflectionVectorWS.h"
#include "Materials/MaterialExpressionSceneTexelSize.h"
@@ -38,8 +41,12 @@ void RegisterViewIntrinsics(FShaderLabIntrinsicRegistry& Registry)
AddSimple(Registry, TEXT("IsFirstPerson"), EFreq::Any, TEXT("float"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionIsFirstPerson>(M); });
// MainDirectionalLight is multi-output (Illuminance, Direction) — one intrinsic per output pin.
// UMaterialExpressionMainDirectionalLight is 5.8+; the intrinsics are simply not registered on 5.7
// (a .usl using them fails the build with "unknown UE_ intrinsic", which is the correct contract).
#if !UE_VERSION_OLDER_THAN(5, 8, 0)
AddSimple(Registry, TEXT("MainDirectionalLightIlluminance"), EFreq::PixelOnly, TEXT("float3"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionMainDirectionalLight>(M); }, 0);
AddSimple(Registry, TEXT("MainDirectionalLightDirection"), EFreq::PixelOnly, TEXT("float3"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionMainDirectionalLight>(M); }, 1);
#endif
// ViewProperty(Property) — Property is an EMaterialExposedViewProperty token.
{