12#include "NaniteDefinitions.h"
14#include "SceneDefinitions.h"
26 bCastContactShadow =
true;
27 bEvaluateWorldPositionOffset =
true;
28 bVisibleInGame =
true;
29 bVisibleInEditor =
true;
30 bVisibleInMainPass =
true;
31 bVisibleInReflectionCaptures =
true;
32 bVisibleInRealTimeSkyCaptures =
true;
33 bVisibleInRayTracing =
true;
34 bVisibleInLumenScene =
true;
37 bReceivesDecals =
false;
38 bUseSingleSampleShadowFromStationaryLights =
false;
39 bUseVolumetricLightmap =
false;
40 bOutputVelocity =
false;
41 bHasRayTracingRepresentation =
false;
42 bHasCapsuleRepresentation =
false;
43 bHasPreSkinnedLocalBounds =
false;
44 bHasPreviousLocalToWorld =
false;
45 bHasInstanceLocalBounds =
false;
46 bCastHiddenShadow =
false;
47 bVisibleInSceneCaptureOnly =
false;
48 bHiddenInSceneCapture =
false;
50 bHasNaniteImposter =
false;
51 bHasInstanceDrawDistanceCull =
false;
52 bHasWPODisableDistance =
false;
53 bHasAlwaysEvaluateWPOMaterials =
false;
54 bReverseCulling =
false;
56 bDisableMaterialInvalidations =
false;
59 bAllowInstanceCullingOcclusionQueries =
false;
60 bHasPixelAnimation =
false;
61 bRayTracingFarField =
false;
62 bRayTracingHasGroupId =
false;
63 bHasPerClusterDisplacementFallbackRaster =
false;
64 bIsFirstPerson =
false;
66 Parameters.MaxWPOExtent = 0.0f;
67 Parameters.MinMaterialDisplacement = 0.0f;
68 Parameters.MaxMaterialDisplacement = 0.0f;
71 Parameters.WireframeAndPrimitiveColor =
FVector2f(FMath::AsFloat(0xFFFFFF00), FMath::AsFloat(0xFFFFFF00));
74 Parameters.LightmapDataIndex = 0;
77 Parameters.PersistentPrimitiveIndex =
INDEX_NONE;
78 Parameters.PrimitiveComponentId =
~uint32(0u);
83 Parameters.NaniteAssemblyTransformOffset =
INDEX_NONE;
85 Parameters.NaniteRayTracingDataOffset =
INDEX_NONE;
88 Parameters.InstanceSceneDataOffset =
INDEX_NONE;
89 Parameters.NumInstanceSceneDataEntries = 0;
90 Parameters.InstancePayloadDataOffset =
INDEX_NONE;
91 Parameters.InstancePayloadDataStride = 0;
92 Parameters.InstancePayloadExtensionSize = 0;
94 Parameters.MeshPaintTextureDescriptor =
FUintVector2(0, 0);
95 Parameters.MaterialCacheDescriptor = 0;
102#define PRIMITIVE_UNIFORM_BUILDER_METHOD(INPUT_TYPE, VARIABLE_NAME) \
103 inline FPrimitiveUniformShaderParametersBuilder& VARIABLE_NAME(INPUT_TYPE In##VARIABLE_NAME) { Parameters.VARIABLE_NAME = In##VARIABLE_NAME; return *this; }
105#define PRIMITIVE_UNIFORM_BUILDER_FLAG_METHOD(INPUT_TYPE, VARIABLE_NAME) \
106 inline FPrimitiveUniformShaderParametersBuilder& VARIABLE_NAME(INPUT_TYPE In##VARIABLE_NAME) { b##VARIABLE_NAME = In##VARIABLE_NAME; return *this; }
160#undef PRIMITIVE_UNIFORM_BUILDER_FLAG_METHOD
161#undef PRIMITIVE_UNIFORM_BUILDER_METHOD
193 ObjectRadius =
static_cast<float>(
InWorldBounds.SphereRadius);
194 Parameters.ObjectBoundsX =
static_cast<float>(
InWorldBounds.BoxExtent.X);
195 Parameters.ObjectBoundsY =
static_cast<float>(
InWorldBounds.BoxExtent.Y);
196 Parameters.ObjectBoundsZ =
static_cast<float>(
InWorldBounds.BoxExtent.Z);
209 bHasPreSkinnedLocalBounds =
true;
229 bHasInstanceLocalBounds =
true;
237 bHasPreviousLocalToWorld =
true;
257 &Parameters.CustomPrimitiveData,
263 bHasCustomData =
true;
269 bHasCustomData =
false;
277 bHasNaniteImposter = ImposterIndex !=
INDEX_NONE;
297 switch (StencilWriteMask)
338 Parameters.LocalToRelativeWorld =
FMatrix44f(LocalToRelativeWorld);
342 if (bHasPreviousLocalToWorld)
349 Parameters.PreviousLocalToRelativeWorld = Parameters.LocalToRelativeWorld;
350 Parameters.PreviousRelativeWorldToLocal = Parameters.RelativeWorldToLocal;
371 const FDFVector3 ObjectWorldPosition { AbsoluteObjectWorldPosition };
372 Parameters.ObjectWorldPositionHighAndRadius =
FVector4f(ObjectWorldPosition.High, ObjectRadius);
373 Parameters.ObjectWorldPositionLow = ObjectWorldPosition.Low;
376 if (!bHasInstanceLocalBounds)
383 if (!bHasPreSkinnedLocalBounds)
385 Parameters.PreSkinnedLocalBoundsMin = Parameters.LocalObjectBoundsMin;
386 Parameters.PreSkinnedLocalBoundsMax = Parameters.LocalObjectBoundsMax;
389 Parameters.ObjectOrientation = Parameters.LocalToRelativeWorld.GetUnitAxis(
EAxis::Z);
393 FVector4f WorldX =
FVector4f(Parameters.LocalToRelativeWorld.M[0][0], Parameters.LocalToRelativeWorld.M[0][1], Parameters.LocalToRelativeWorld.M[0][2], 0);
394 FVector4f WorldY =
FVector4f(Parameters.LocalToRelativeWorld.M[1][0], Parameters.LocalToRelativeWorld.M[1][1], Parameters.LocalToRelativeWorld.M[1][2], 0);
395 FVector4f WorldZ =
FVector4f(Parameters.LocalToRelativeWorld.M[2][0], Parameters.LocalToRelativeWorld.M[2][1], Parameters.LocalToRelativeWorld.M[2][2], 0);
400 Parameters.InvNonUniformScale =
FVector3f(
407 Parameters.SingleCaptureIndex = FMath::Max(Parameters.SingleCaptureIndex, 0);
409 Parameters.Flags = 0;
429#if SUPPORT_REVERSE_CULLING_IN_NANITE
443 Parameters.VisibilityFlags = 0;
465 FMatrix AbsolutePreviousLocalToWorld;
466 FVector AbsoluteObjectWorldPosition;
467 FVector AbsoluteActorWorldPosition;
471 uint32 LightingChannels : 3;
472 uint32 bReceivesDecals : 1;
473 uint32 bUseSingleSampleShadowFromStationaryLights : 1;
474 uint32 bUseVolumetricLightmap : 1;
475 uint32 bOutputVelocity : 1;
476 uint32 bEvaluateWorldPositionOffset : 1;
478 uint32 bCastContactShadow : 1;
479 uint32 bCastHiddenShadow : 1;
480 uint32 bHasRayTracingRepresentation : 1;
481 uint32 bHasCapsuleRepresentation : 1;
482 uint32 bHasPreSkinnedLocalBounds : 1;
483 uint32 bHasInstanceLocalBounds : 1;
484 uint32 bHasCustomData : 1;
485 uint32 bHasPreviousLocalToWorld : 1;
486 uint32 bVisibleInGame : 1;
487 uint32 bVisibleInEditor : 1;
488 uint32 bVisibleInMainPass : 1;
489 uint32 bVisibleInReflectionCaptures : 1;
490 uint32 bVisibleInRealTimeSkyCaptures : 1;
491 uint32 bVisibleInRayTracing : 1;
492 uint32 bVisibleInLumenScene : 1;
493 uint32 bVisibleInSceneCaptureOnly : 1;
494 uint32 bHiddenInSceneCapture : 1;
496 uint32 bHasNaniteImposter : 1;
497 uint32 bHasInstanceDrawDistanceCull : 1;
498 uint32 bHasWPODisableDistance : 1;
499 uint32 bHasAlwaysEvaluateWPOMaterials : 1;
500 uint32 bReverseCulling: 1;
502 uint32 bDisableMaterialInvalidations : 1;
505 uint32 bAllowInstanceCullingOcclusionQueries : 1;
506 uint32 bHasPixelAnimation : 1;
507 uint32 bRayTracingFarField : 1;
508 uint32 bRayTracingHasGroupId : 1;
509 uint32 bHasPerClusterDisplacementFallbackRaster : 1;
510 uint32 bIsFirstPerson : 1;
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint8 GetDefaultLightingChannelMask()
Definition EngineTypes.h:592
UE::Math::TIntVector2< uint32 > FUintVector2
Definition MathFwd.h:103
UE::Math::TVector2< float > FVector2f
Definition MathFwd.h:74
UE::Math::TVector< float > FVector3f
Definition MathFwd.h:73
UE::Math::TVector4< float > FVector4f
Definition MathFwd.h:75
UE::Math::TMatrix< float > FMatrix44f
Definition MathFwd.h:77
EStencilMask
Definition RHIDefinitions.h:428
@ SM_255
Definition RHIDefinitions.h:430
@ SM_1
Definition RHIDefinitions.h:431
@ SM_Default
Definition RHIDefinitions.h:429
#define UE_KINDA_SMALL_NUMBER
Definition UnrealMathUtility.h:131
Definition IConsoleManager.h:1721
T GetValueOnAnyThread(bool bForceGameThread=false) const
Definition IConsoleManager.h:1753
Definition SplineMeshSceneResources.cpp:56
UE_FORCEINLINE_HINT uint32 ToPackedRGBA() const
Definition Color.h:735
Definition SceneTypes.h:30
static constexpr int32 NumCustomPrimitiveDataFloats
Definition SceneTypes.h:39
static CORE_API FMatrix MakeToRelativeWorldMatrixDouble(const FVector Origin, const FMatrix &ToWorld)
Definition DoubleFloat.cpp:32
static CORE_API FMatrix MakeClampedToRelativeWorldMatrixDouble(const FVector Origin, const FMatrix &ToWorld)
Definition DoubleFloat.cpp:42
Definition DoubleFloat.h:75
static constexpr UE_FORCEINLINE_HINT T Max3(const T A, const T B, const T C)
Definition UnrealMathUtility.h:551
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
Definition RenderTransform.h:272
TConsoleVariableData< int32 > * FindTConsoleVariableDataInt(const TCHAR *Name) const
Definition IConsoleManager.h:1203
static IConsoleManager & Get()
Definition IConsoleManager.h:1270
Definition LargeWorldRenderPosition.h:95
Definition BoxSphereBounds.h:25
TMatrix< T > Inverse() const
Definition Matrix.inl:384
TVector< T > GetOrigin() const
Definition Matrix.inl:641
T Size() const
Definition Vector.h:1716