11#include "Containers/Set.h"
42#if WITH_EDITORONLY_DATA
59#define MAX_STATIC_MESH_LODS 8
72 , DefaultMaxNumStreamedLODs(0)
73 , DefaultMaxNumOptionalLODs(0)
74 , DefaultLightMapResolution(64)
75 , BasePercentTrianglesMult(1.0f)
76 , BasePercentVerticesMult(1.0f)
77 , bSupportLODStreaming(
false)
78 , DisplayName(
NSLOCTEXT(
"UnrealEd",
"None",
"None" ) )
88 return DefaultNumLODs;
94 return DefaultMaxNumStreamedLODs;
100 return DefaultMaxNumOptionalLODs;
106 return DefaultLightMapResolution;
112 return bSupportLODStreaming;
119 return DefaultSettings[LODIndex];
129 int32 DefaultNumLODs;
131 int32 DefaultMaxNumStreamedLODs;
133 int32 DefaultMaxNumOptionalLODs;
135 int32 DefaultLightMapResolution;
137 float BasePercentTrianglesMult;
139 float BasePercentVerticesMult;
141 bool bSupportLODStreaming;
178 const int32*
IdxPtr = GroupName2Index.Find(GroupName);
223#if WITH_EDITORONLY_DATA
244#if WITH_EDITORONLY_DATA
297 virtual FString
GetFriendlyName()
const override {
return TEXT(
"FStaticMeshSectionAreaWeightedTriangleSamplerBuffer"); }
303 struct SectionTriangleInfo
370 InitModelVF(
nullptr, RenderCommandPipe, VertexFactory);
380#if RHI_ENABLE_RESOURCE_INFO
480 FString DerivedDataKey;
508 template <
typename TBatcher>
553 enum EClassDataStripFlag :
uint8
555 CDSF_AdjacencyData_DEPRECATED = 1,
557 CDSF_ReversedIndexBuffer = 4,
558 CDSF_RayTracingResources = 8
566 struct FStaticMeshBuffersSize
568 uint32 SerializedBuffersSize = 0;
569 uint32 DepthOnlyIBSize = 0;
570 uint32 ReversedIBsSize = 0;
574 SerializedBuffersSize = 0;
579 uint32 CalcBuffersSize()
const;
583 Ar <<
Info.SerializedBuffersSize;
584 Ar <<
Info.DepthOnlyIBSize;
585 Ar <<
Info.ReversedIBsSize;
619 void SerializeAvailabilityInfo(
FArchive& Ar);
621 void ClearAvailabilityInfo();
623 template <
bool bIncrement>
624 void UpdateIndexMemoryStats();
626 template <
bool bIncrement>
627 void UpdateVertexMemoryStats()
const;
629 void IncrementMemoryStats();
631 void DecrementMemoryStats();
634 void DiscardCPUData();
675 UE_DEPRECATED(5.5,
"Provide FStaticMeshVertexBuffers instead of FStaticMeshLODResources")
684 UE_DEPRECATED(5.5,
"Provide FStaticMeshVertexBuffers instead of FStaticMeshLODResources")
758#if WITH_EDITORONLY_DATA
805 return bIsInitialized;
826#if WITH_EDITORONLY_DATA
829 FString DerivedDataKey;
939#if WITH_EDITORONLY_DATA
943 bool bIsInitialized =
false;
979 bool bUnbuildLighting;
1032 template<
typename F>
1033 struct FInstanceTransformMatrix
1035 F InstanceTransform1[4];
1036 F InstanceTransform2[4];
1037 F InstanceTransform3[4];
1042 << V.InstanceTransform1[0]
1043 << V.InstanceTransform1[1]
1044 << V.InstanceTransform1[2]
1045 << V.InstanceTransform1[3]
1047 << V.InstanceTransform2[0]
1048 << V.InstanceTransform2[1]
1049 << V.InstanceTransform2[2]
1050 << V.InstanceTransform2[3]
1052 << V.InstanceTransform3[0]
1053 << V.InstanceTransform3[1]
1054 << V.InstanceTransform3[2]
1055 << V.InstanceTransform3[3];
1060 struct FInstanceLightMapVector
1062 int16 InstanceLightmapAndShadowMapUVBias[4];
1067 << V.InstanceLightmapAndShadowMapUVBias[0]
1068 << V.InstanceLightmapAndShadowMapUVBias[1]
1069 << V.InstanceLightmapAndShadowMapUVBias[2]
1070 << V.InstanceLightmapAndShadowMapUVBias[3];
1091 delete InstanceOriginData;
1092 delete InstanceLightmapData;
1093 delete InstanceTransformData;
1094 delete InstanceCustomData;
1106 InstanceOriginData->
Empty(NumInstances);
1107 InstanceLightmapData->
Empty(NumInstances);
1108 InstanceTransformData->
Empty(NumInstances);
1109 InstanceCustomData->
Empty(NumCustomDataFloats * NumInstances);
1118 InstanceLightmapDataPtr = InstanceLightmapData->
GetDataPointer();
1121 InstanceTransformDataPtr = InstanceTransformData->
GetDataPointer();
1149 GetInstanceOriginInternal(InstanceIndex, Origin);
1156 GetInstanceOriginInternal(InstanceIndex, Origin);
1183 GetInstanceLightMapDataInternal(InstanceIndex, InstanceLightmapAndShadowMapUVBias);
1188 GetInstanceCustomDataInternal(InstanceIndex,
OutCustomData);
1194 SetInstanceOriginInternal(InstanceIndex, Origin);
1210 SetInstanceLightMapDataInternal(InstanceIndex,
FVector4f((
float)LightmapUVBias.
X, (
float)LightmapUVBias.
Y, (
float)ShadowmapUVBias.
X, (
float)ShadowmapUVBias.
Y));
1212 for (
int32 i = 0; i < NumCustomDataFloats; ++i)
1214 SetInstanceCustomDataInternal(InstanceIndex, i, 0);
1243 SetInstanceLightMapDataInternal(InstanceIndex,
FVector4f((
float)LightmapUVBias.
X, (
float)LightmapUVBias.
Y, (
float)ShadowmapUVBias.
X, (
float)ShadowmapUVBias.
Y));
1248 SetInstanceCustomDataInternal(InstanceIndex,
Index, CustomData);
1253 SetInstanceOriginInternal(InstanceIndex,
FVector4f(0, 0, 0, 0));
1256 InstanceTransform[0] =
FVector4f(0, 0, 0, 0);
1257 InstanceTransform[1] =
FVector4f(0, 0, 0, 0);
1258 InstanceTransform[2] =
FVector4f(0, 0, 0, 0);
1269 SetInstanceLightMapDataInternal(InstanceIndex,
FVector4f(0, 0, 0, 0));
1271 for (
int32 i = 0; i < NumCustomDataFloats; ++i)
1273 SetInstanceCustomDataInternal(InstanceIndex, i, 0);
1283 InstanceTransform[0][3] = ((
float)HitProxyColor.
R) + (bSelected ? 256.f : 0.0f);
1284 InstanceTransform[1][3] = (
float)HitProxyColor.
G;
1285 InstanceTransform[2][3] = (
float)HitProxyColor.
B;
1291 InstanceTransform[0][3] = ((
float)HitProxyColor.
R) + (bSelected ? 256.f : 0.0f);
1292 InstanceTransform[1][3] = (
float)HitProxyColor.
G;
1293 InstanceTransform[2][3] = (
float)HitProxyColor.
B;
1304 InstanceTransform[0][3] = 0.0f;
1305 InstanceTransform[1][3] = 0.0f;
1306 InstanceTransform[2][3] = 0.0f;
1312 InstanceTransform[0][3] = 0.0f;
1313 InstanceTransform[1][3] = 0.0f;
1314 InstanceTransform[2][3] = 0.0f;
1324 uint32 CurrentSize = InstanceTransformData->
Num() * InstanceTransformData->
GetStride();
1325 check((
void*)((&ElementData[Index1]) + 1) <= (
void*)(InstanceTransformDataPtr + CurrentSize));
1326 check((
void*)((&ElementData[Index1]) + 0) >= (
void*)(InstanceTransformDataPtr));
1327 check((
void*)((&ElementData[Index2]) + 1) <= (
void*)(InstanceTransformDataPtr + CurrentSize));
1328 check((
void*)((&ElementData[Index2]) + 0) >= (
void*)(InstanceTransformDataPtr));
1331 ElementData[Index1] = ElementData[Index2];
1337 uint32 CurrentSize = InstanceTransformData->
Num() * InstanceTransformData->
GetStride();
1338 check((
void*)((&ElementData[Index1]) + 1) <= (
void*)(InstanceTransformDataPtr + CurrentSize));
1339 check((
void*)((&ElementData[Index1]) + 0) >= (
void*)(InstanceTransformDataPtr));
1340 check((
void*)((&ElementData[Index2]) + 1) <= (
void*)(InstanceTransformDataPtr + CurrentSize));
1341 check((
void*)((&ElementData[Index2]) + 0) >= (
void*)(InstanceTransformDataPtr));
1344 ElementData[Index1] = ElementData[Index2];
1351 check((
void*)((&ElementData[Index1]) + 1) <= (
void*)(InstanceOriginDataPtr + CurrentSize));
1352 check((
void*)((&ElementData[Index1]) + 0) >= (
void*)(InstanceOriginDataPtr));
1353 check((
void*)((&ElementData[Index2]) + 1) <= (
void*)(InstanceOriginDataPtr + CurrentSize));
1354 check((
void*)((&ElementData[Index2]) + 0) >= (
void*)(InstanceOriginDataPtr));
1357 ElementData[Index1] = ElementData[Index2];
1361 FInstanceLightMapVector* ElementData =
reinterpret_cast<FInstanceLightMapVector*
>(InstanceLightmapDataPtr);
1362 uint32 CurrentSize = InstanceLightmapData->
Num() * InstanceLightmapData->
GetStride();
1363 check((
void*)((&ElementData[Index1]) + 1) <= (
void*)(InstanceLightmapDataPtr + CurrentSize));
1364 check((
void*)((&ElementData[Index1]) + 0) >= (
void*)(InstanceLightmapDataPtr));
1365 check((
void*)((&ElementData[Index2]) + 1) <= (
void*)(InstanceLightmapDataPtr + CurrentSize));
1366 check((
void*)((&ElementData[Index2]) + 0) >= (
void*)(InstanceLightmapDataPtr));
1368 FInstanceLightMapVector
TempStore = ElementData[Index1];
1369 ElementData[Index1] = ElementData[Index2];
1373 float* ElementData =
reinterpret_cast<float*
>(InstanceCustomDataPtr);
1374 const uint32 CurrentSize = InstanceCustomData->
Num() * InstanceCustomData->
GetStride();
1376 for (
int32 i = 0; i < NumCustomDataFloats; ++i)
1381 check((
void*)((&ElementData[
CustomDataIndex1]) + 1) <= (
void*)(InstanceCustomDataPtr + CurrentSize));
1383 check((
void*)((&ElementData[
CustomDataIndex2]) + 1) <= (
void*)(InstanceCustomDataPtr + CurrentSize));
1395 return NumInstances;
1400 return NumCustomDataFloats;
1405 if (InstanceOriginData)
1409 if (InstanceLightmapData)
1413 if (InstanceTransformData)
1417 if (InstanceCustomData)
1425 return bUseHalfFloat;
1455 return InstanceTransformData->
GetStride();
1460 return InstanceLightmapData->
GetStride();
1477 template<
typename T>
1481 uint32 CurrentSize = InstanceTransformData->
Num() * InstanceTransformData->
GetStride();
1483 if (
ensure((
void*)((&ElementData[InstanceIndex]) + 1) <= (
void*)(InstanceTransformDataPtr + CurrentSize))
1484 &&
ensure((
void*)((&ElementData[InstanceIndex]) + 0) >= (
void*)(InstanceTransformDataPtr)))
1486 Transform[0][0] = ElementData[InstanceIndex].InstanceTransform1[0];
1487 Transform[0][1] = ElementData[InstanceIndex].InstanceTransform1[1];
1488 Transform[0][2] = ElementData[InstanceIndex].InstanceTransform1[2];
1489 Transform[0][3] = ElementData[InstanceIndex].InstanceTransform1[3];
1491 Transform[1][0] = ElementData[InstanceIndex].InstanceTransform2[0];
1492 Transform[1][1] = ElementData[InstanceIndex].InstanceTransform2[1];
1493 Transform[1][2] = ElementData[InstanceIndex].InstanceTransform2[2];
1494 Transform[1][3] = ElementData[InstanceIndex].InstanceTransform2[3];
1496 Transform[2][0] = ElementData[InstanceIndex].InstanceTransform3[0];
1497 Transform[2][1] = ElementData[InstanceIndex].InstanceTransform3[1];
1498 Transform[2][2] = ElementData[InstanceIndex].InstanceTransform3[2];
1499 Transform[2][3] = ElementData[InstanceIndex].InstanceTransform3[3];
1509 inline void GetInstanceOriginInternal(
int32 InstanceIndex,
FVector4f &Origin)
const
1514 if (
ensure((
void*)((&ElementData[InstanceIndex]) + 1) <= (
void*)(InstanceOriginDataPtr + CurrentSize))
1515 &&
ensure((
void*)((&ElementData[InstanceIndex]) + 0) >= (
void*)(InstanceOriginDataPtr)))
1517 Origin = ElementData[InstanceIndex];
1521 Origin =
FVector4f(0.0f, 0.0f, 0.0f, 0.0f);
1527 FInstanceLightMapVector* ElementData =
reinterpret_cast<FInstanceLightMapVector*
>(InstanceLightmapDataPtr);
1528 uint32 CurrentSize = InstanceLightmapData->
Num() * InstanceLightmapData->
GetStride();
1530 if (
ensure((
void*)((&ElementData[InstanceIndex]) + 1) <= (
void*)(InstanceLightmapDataPtr + CurrentSize))
1531 &&
ensure((
void*)((&ElementData[InstanceIndex]) + 0) >= (
void*)(InstanceLightmapDataPtr)))
1535 float(ElementData[InstanceIndex].InstanceLightmapAndShadowMapUVBias[0]) / 32767.0f,
1536 float(ElementData[InstanceIndex].InstanceLightmapAndShadowMapUVBias[1]) / 32767.0f,
1537 float(ElementData[InstanceIndex].InstanceLightmapAndShadowMapUVBias[2]) / 32767.0f,
1538 float(ElementData[InstanceIndex].InstanceLightmapAndShadowMapUVBias[3]) / 32767.0f
1551 float* ElementData =
reinterpret_cast<float*
>(InstanceCustomDataPtr);
1552 const uint32 CurrentSize = InstanceCustomData->
Num() * InstanceCustomData->
GetStride();
1554 for (
int32 i = 0; i < NumCustomDataFloats; ++i)
1556 int32 CustomDataIndex = NumCustomDataFloats * InstanceIndex + i;
1558 if (
ensure((
void*)((&ElementData[CustomDataIndex]) + 1) <= (
void*)(InstanceCustomDataPtr + CurrentSize))
1559 &&
ensure((
void*)((&ElementData[CustomDataIndex]) + 0) >= (
void*)(InstanceCustomDataPtr)))
1566 template<
typename T>
1570 uint32 CurrentSize = InstanceTransformData->
Num() * InstanceTransformData->
GetStride();
1572 if (
ensure((
void*)((&ElementData[InstanceIndex]) + 1) <= (
void*)(InstanceTransformDataPtr + CurrentSize))
1573 &&
ensure((
void*)((&ElementData[InstanceIndex]) + 0) >= (
void*)(InstanceTransformDataPtr)))
1575 ElementData[InstanceIndex].InstanceTransform1[0] =
Transform[0][0];
1576 ElementData[InstanceIndex].InstanceTransform1[1] =
Transform[0][1];
1577 ElementData[InstanceIndex].InstanceTransform1[2] =
Transform[0][2];
1578 ElementData[InstanceIndex].InstanceTransform1[3] =
Transform[0][3];
1580 ElementData[InstanceIndex].InstanceTransform2[0] =
Transform[1][0];
1581 ElementData[InstanceIndex].InstanceTransform2[1] =
Transform[1][1];
1582 ElementData[InstanceIndex].InstanceTransform2[2] =
Transform[1][2];
1583 ElementData[InstanceIndex].InstanceTransform2[3] =
Transform[1][3];
1585 ElementData[InstanceIndex].InstanceTransform3[0] =
Transform[2][0];
1586 ElementData[InstanceIndex].InstanceTransform3[1] =
Transform[2][1];
1587 ElementData[InstanceIndex].InstanceTransform3[2] =
Transform[2][2];
1588 ElementData[InstanceIndex].InstanceTransform3[3] =
Transform[2][3];
1592 inline void SetInstanceOriginInternal(
int32 InstanceIndex,
const FVector4f& Origin)
const
1597 if (
ensureMsgf((
void*)((&ElementData[InstanceIndex]) + 1) <= (
void*)(InstanceOriginDataPtr + CurrentSize),
TEXT(
"OOB Instance Set Under: %i, %u, %p, %p"), InstanceIndex, CurrentSize, &ElementData, InstanceOriginDataPtr)
1598 &&
ensureMsgf((
void*)((&ElementData[InstanceIndex]) + 0) >= (
void*)(InstanceOriginDataPtr),
TEXT(
"OOB Instance Set: %i, %u, %p, %p"), InstanceIndex, CurrentSize, &ElementData, InstanceOriginDataPtr))
1600 ElementData[InstanceIndex] = Origin;
1606 FInstanceLightMapVector* ElementData =
reinterpret_cast<FInstanceLightMapVector*
>(InstanceLightmapDataPtr);
1607 uint32 CurrentSize = InstanceLightmapData->
Num() * InstanceLightmapData->
GetStride();
1609 if (
ensure((
void*)((&ElementData[InstanceIndex]) + 1) <= (
void*)(InstanceLightmapDataPtr + CurrentSize))
1610 &&
ensure((
void*)((&ElementData[InstanceIndex]) + 0) >= (
void*)(InstanceLightmapDataPtr)))
1621 inline void SetInstanceCustomDataInternal(
int32 InstanceIndex,
int32 DataIndex,
float CustomData)
1623 if (DataIndex >= NumCustomDataFloats)
1628 float* ElementData =
reinterpret_cast<float*
>(InstanceCustomDataPtr);
1629 const uint32 CurrentSize = InstanceCustomData->
Num() * InstanceCustomData->
GetStride();
1631 const int32 CustomDataIndex = NumCustomDataFloats * InstanceIndex + DataIndex;
1633 if (
ensure((
void*)((&ElementData[CustomDataIndex]) + 1) <= (
void*)(InstanceCustomDataPtr + CurrentSize))
1634 &&
ensure((
void*)((&ElementData[CustomDataIndex]) + 0) >= (
void*)(InstanceCustomDataPtr)))
1636 ElementData[CustomDataIndex] = CustomData;
1643 delete InstanceOriginData;
1644 InstanceOriginDataPtr =
nullptr;
1646 delete InstanceTransformData;
1647 InstanceTransformDataPtr =
nullptr;
1649 delete InstanceLightmapData;
1650 InstanceLightmapDataPtr =
nullptr;
1652 delete InstanceCustomData;
1653 InstanceCustomData =
nullptr;
1674 uint8* InstanceOriginDataPtr =
nullptr;
1677 uint8* InstanceTransformDataPtr =
nullptr;
1680 uint8* InstanceLightmapDataPtr =
nullptr;
1683 uint8* InstanceCustomDataPtr =
nullptr;
1685 int32 NumInstances = 0;
1686 int32 NumCustomDataFloats = 0;
1687 bool bUseHalfFloat =
false;
1711#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_5
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define NULL
Definition oodle2base.h:134
#define check(expr)
Definition AssertionMacros.h:314
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define ensure( InExpression)
Definition AssertionMacros.h:464
@ MAX_STATIC_TEXCOORDS
Definition Components.h:22
@ INDEX_NONE
Definition CoreMiscDefines.h:150
@ ForceInit
Definition CoreMiscDefines.h:155
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FArchive & operator<<(FArchive &Ar, FEnvQueryDebugProfileData::FStep &Data)
Definition EnvQueryTypes.cpp:489
return true
Definition ExternalRpcRegistry.cpp:601
#define NSLOCTEXT(InNamespace, InKey, InTextLiteral)
Definition Internationalization.h:300
void Init()
Definition LockFreeList.h:4
UE::Math::TVector< float > FVector3f
Definition MathFwd.h:73
UE::Math::TVector4< float > FVector4f
Definition MathFwd.h:75
#define MIN_int16
Definition NumericLimits.h:15
#define MAX_int16
Definition NumericLimits.h:24
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
#define MAX_STATIC_MESH_LODS
Definition StaticMeshResources.h:59
EBulkReregister
Definition StaticMeshResources.h:997
TArray< FStaticMeshSectionAreaWeightedTriangleSampler, FMemoryImageAllocator > FStaticMeshSectionAreaWeightedTriangleSamplerArray
Definition StaticMeshResources.h:282
EResizeBufferFlags
Definition StaticMeshVertexDataInterface.h:12
@ LightMapCoordinateIndex
Definition Archive.h:1208
Definition BulkData.h:1295
Definition MeshCardBuild.h:142
Definition ColorVertexBuffer.h:16
void ReleaseRHIForStreaming(FRHIResourceReplaceBatcher &Batcher)
Definition ColorVertexBuffer.cpp:413
Definition RHIDefinitions.h:95
Definition DistanceFieldAtlas.h:241
Definition LocalVertexFactory.h:51
Definition NameTypes.h:617
Definition PositionVertexBuffer.h:27
void ReleaseRHIForStreaming(FRHIResourceReplaceBatcher &Batcher)
Definition PositionVertexBuffer.cpp:228
Definition RHICommandList.h:455
Definition RHIResourceReplace.h:55
Definition RawIndexBuffer.h:130
void ReleaseRHIForStreaming(FRHIResourceReplaceBatcher &Batcher)
Definition RawIndexBuffer.cpp:385
Definition RayTracingGeometry.h:31
Definition RayTracingStreamableAsset.h:13
Definition RefCounting.h:213
Definition RenderingThread.h:652
Definition RenderResource.h:37
void SetOwnerName(FName InOwnerName)
Definition RenderResource.h:120
Definition ResourceArray.h:77
virtual void SetAllowCPUAccess(bool bInNeedsCPUAccess)=0
Definition SceneInterface.h:106
Definition StaticMeshResources.h:1003
void SanitizeMeshComponents()
Definition StaticMeshResources.cpp:228
ENGINE_API ~FStaticMeshComponentBulkReregisterContext()
Definition StaticMeshResources.cpp:190
ENGINE_API void AddSimpleConstructionScript(USimpleConstructionScript *SCS)
Definition StaticMeshResources.cpp:215
Definition StaticMeshResources.h:952
ENGINE_API const TArray< UStaticMeshComponent * > & GetComponentsUsingMesh(UStaticMesh *StaticMesh) const
Definition StaticMeshResources.cpp:70
ENGINE_API ~FStaticMeshComponentRecreateRenderStateContext()
Definition StaticMeshResources.cpp:75
Definition StaticMeshResources.h:1031
void SetInstance(int32 InstanceIndex, const FMatrix44f &Transform)
Definition StaticMeshResources.h:1232
void SetInstanceCustomData(int32 InstanceIndex, int32 Index, float CustomData)
Definition StaticMeshResources.h:1246
void NullifyInstance(int32 InstanceIndex)
Definition StaticMeshResources.h:1251
SIZE_T GetResourceSize() const
Definition StaticMeshResources.h:1468
void ClearInstanceEditorData(int32 InstanceIndex)
Definition StaticMeshResources.h:1298
uint32 GetOriginStride()
Definition StaticMeshResources.h:1448
void SetInstance(int32 InstanceIndex, const FMatrix44f &Transform, const FVector2D &LightmapUVBias, const FVector2D &ShadowmapUVBias)
Definition StaticMeshResources.h:1225
FResourceArrayInterface * GetCustomDataResourceArray()
Definition StaticMeshResources.h:1443
void SetAllowCPUAccess(bool InNeedsCPUAccess)
Definition StaticMeshResources.h:1403
void GetInstanceTransform(int32 InstanceIndex, FRenderTransform &Transform) const
Definition StaticMeshResources.h:1132
void SetInstanceLightMapData(int32 InstanceIndex, const FVector2D &LightmapUVBias, const FVector2D &ShadowmapUVBias)
Definition StaticMeshResources.h:1241
FResourceArrayInterface * GetOriginResourceArray()
Definition StaticMeshResources.h:1428
void GetInstanceCustomDataValues(int32 InstanceIndex, TArrayView< float > OutCustomData) const
Definition StaticMeshResources.h:1186
FStaticMeshInstanceData(bool bInUseHalfFloat)
Definition StaticMeshResources.h:1083
void SetInstance(int32 InstanceIndex, const FMatrix44f &Transform, float RandomInstanceID, const FVector2D &LightmapUVBias, const FVector2D &ShadowmapUVBias)
Definition StaticMeshResources.h:1191
uint32 GetTransformStride()
Definition StaticMeshResources.h:1453
void SwapInstance(int32 Index1, int32 Index2)
Definition StaticMeshResources.h:1319
void GetInstanceLightMapData(int32 InstanceIndex, FVector4f &InstanceLightmapAndShadowMapUVBias) const
Definition StaticMeshResources.h:1181
uint32 GetCustomDataStride()
Definition StaticMeshResources.h:1463
int32 GetNumCustomDataFloats() const
Definition StaticMeshResources.h:1398
FResourceArrayInterface * GetLightMapResourceArray()
Definition StaticMeshResources.h:1438
int32 GetNumInstances() const
Definition StaticMeshResources.h:1393
int32 IsValidIndex(int32 Index) const
Definition StaticMeshResources.h:1127
bool GetTranslationUsesHalfs() const
Definition StaticMeshResources.h:1423
uint32 GetLightMapStride()
Definition StaticMeshResources.h:1458
void SetInstance(int32 InstanceIndex, const FMatrix44f &Transform, float RandomInstanceID)
Definition StaticMeshResources.h:1218
~FStaticMeshInstanceData()
Definition StaticMeshResources.h:1089
FResourceArrayInterface * GetTransformResourceArray()
Definition StaticMeshResources.h:1433
void AllocateInstances(int32 InNumInstances, int32 InNumCustomDataFloats, EResizeBufferFlags BufferFlags, bool DestroyExistingInstances)
Definition StaticMeshResources.h:1099
void GetInstanceRandomID(int32 InstanceIndex, float &RandomInstanceID) const
Definition StaticMeshResources.h:1153
FStaticMeshInstanceData()
Definition StaticMeshResources.h:1075
void SetInstanceEditorData(int32 InstanceIndex, FColor HitProxyColor, bool bSelected)
Definition StaticMeshResources.h:1277
Definition StaticMeshResources.h:67
int32 GetDefaultLightMapResolution() const
Definition StaticMeshResources.h:104
FMeshReductionSettings GetDefaultSettings(int32 LODIndex) const
Definition StaticMeshResources.h:116
int32 GetDefaultMaxNumStreamedLODs() const
Definition StaticMeshResources.h:92
ENGINE_API FMeshReductionSettings GetSettings(const FMeshReductionSettings &InSettings, int32 LODIndex) const
int32 GetDefaultNumLODs() const
Definition StaticMeshResources.h:86
FStaticMeshLODGroup()
Definition StaticMeshResources.h:70
bool IsLODStreamingSupported() const
Definition StaticMeshResources.h:110
int32 GetDefaultMaxNumOptionalLODs() const
Definition StaticMeshResources.h:98
Definition StaticMeshResources.h:154
void GetLODGroupDisplayNames(TArray< FText > &OutDisplayNames) const
ENGINE_API void Initialize(const class ITargetPlatformSettings *TargetPlatform)
ENGINE_API void Initialize(const ITargetPlatform *TargetPlatform)
const FStaticMeshLODGroup & GetLODGroup(FName LODGroup) const
Definition StaticMeshResources.h:165
int32 GetLODGroupIdx(FName GroupName) const
Definition StaticMeshResources.h:176
void GetLODGroupNames(TArray< FName > &OutNames) const
Definition StaticMeshResources.h:774
ENGINE_API bool HasNaniteFallbackMesh(EShaderPlatform ShaderPlatform) const
Definition StaticMesh.cpp:3003
ENGINE_API void GetResourceSizeEx(FResourceSizeEx &CumulativeResourceSize) const
Definition StaticMesh.cpp:4833
int32 GetCurrentFirstLODIdx(int32 MinLODIdx) const
Definition StaticMeshResources.h:922
bool bReadyForStreaming
Definition StaticMeshResources.h:818
bool IsInitialized() const
Definition StaticMeshResources.h:803
void InitResources(ERHIFeatureLevel::Type InFeatureLevel, UStaticMesh *Owner)
Definition StaticMesh.cpp:2756
ENGINE_API ~FStaticMeshRenderData()
Definition StaticMesh.cpp:2353
int32 GetNumNonOptionalLODs() const
Definition StaticMesh.cpp:2393
bool bLODsShareStaticLighting
Definition StaticMeshResources.h:813
ENGINE_API SIZE_T GetCPUAccessMemoryOverhead() const
Definition StaticMesh.cpp:4868
FStaticMeshLODResourcesArray LODResources
Definition StaticMeshResources.h:785
ENGINE_API FStaticMeshRenderData()
Definition StaticMesh.cpp:2337
uint8 CurrentFirstLODIdx
Definition StaticMeshResources.h:822
ENGINE_API void InitializeRayTracingRepresentationFromRenderingLODs()
Definition StaticMesh.cpp:2904
ENGINE_API bool HasValidNaniteData() const
Definition StaticMesh.cpp:2998
ENGINE_API void AllocateLODResources(int32 NumLODs)
Definition StaticMesh.cpp:2892
bool bHasNaniteFallbackMesh
Definition StaticMeshResources.h:815
void BuildAreaWeighedSamplingData()
uint8 LODBiasModifier
Definition StaticMeshResources.h:824
uint8 NumInlinedLODs
Definition StaticMeshResources.h:820
FPerPlatformFloat ScreenSize[MAX_STATIC_MESH_LODS]
Definition StaticMeshResources.h:789
void SerializeInlineDataRepresentations(FArchive &Ar, UStaticMesh *Owner)
Definition StaticMesh.cpp:2419
void ComputeUVDensities(UStaticMesh *Mesh)
int32 GetNumNonStreamingLODs() const
Definition StaticMesh.cpp:2371
FBoxSphereBounds Bounds
Definition StaticMeshResources.h:797
ENGINE_API int32 GetFirstValidLODIdx(int32 MinLODIdx) const
Definition StaticMesh.cpp:2949
TPimplPtr< Nanite::FResources > NaniteResourcesPtr
Definition StaticMeshResources.h:791
FStaticMeshRayTracingProxy * RayTracingProxy
Definition StaticMeshResources.h:794
ENGINE_API void ReleaseResources()
Definition StaticMesh.cpp:2853
FStaticMeshVertexFactoriesArray LODVertexFactories
Definition StaticMeshResources.h:786
const FStaticMeshLODResources * GetCurrentFirstLOD(int32 MinLODIdx) const
Definition StaticMeshResources.h:932
Definition StaticMeshResources.h:286
const FShaderResourceViewRHIRef & GetBufferSRV() const
Definition StaticMeshResources.h:300
virtual FString GetFriendlyName() const override
Definition StaticMeshResources.h:297
virtual ENGINE_API void ReleaseRHI() override
Definition StaticMesh.cpp:415
void Init(FStaticMeshSectionAreaWeightedTriangleSamplerArray *SamplerToUpload)
Definition StaticMeshResources.h:292
ENGINE_API ~FStaticMeshSectionAreaWeightedTriangleSamplerBuffer()
Definition StaticMesh.cpp:365
ENGINE_API FStaticMeshSectionAreaWeightedTriangleSamplerBuffer()
Definition StaticMesh.cpp:361
virtual ENGINE_API void InitRHI(FRHICommandListBase &RHICmdList) override
Definition StaticMesh.cpp:369
const FBufferRHIRef & GetBufferRHI() const
Definition StaticMeshResources.h:299
Definition StaticMeshResources.h:404
Definition StaticMeshUpdate.h:157
Definition StaticMeshUpdate.h:69
Definition StaticMeshUpdate.h:140
Definition StaticMeshVertexBuffer.h:150
void ReleaseRHIForStreaming(FRHIResourceReplaceBatcher &Batcher)
Definition StaticMeshVertexBuffer.cpp:306
Definition StaticMeshVertexDataInterface.h:22
virtual bool IsValidIndex(uint32 Index)=0
virtual FResourceArrayInterface * GetResourceArray()=0
virtual void Empty(uint32 NumVertices)=0
virtual uint8 * GetDataPointer()=0
virtual uint32 GetStride() const =0
virtual SIZE_T GetResourceSize() const =0
virtual int32 Num() const =0
virtual void ResizeBuffer(uint32 NumVertices, EResizeBufferFlags BufferFlags=EResizeBufferFlags::None)=0
Definition ArrayView.h:139
UE_FORCEINLINE_HINT bool IsValidIndex(int32 Index) const
Definition IndirectArray.h:408
Definition UnrealString.h.inl:34
Definition RefCounting.h:454
Definition StaticMeshVertexData.h:13
Definition UniquePtr.h:107
Definition BodySetup.h:128
Definition SimpleConstructionScript.h:18
Definition StaticMesh.h:593
Type
Definition RHIFeatureLevel.h:20
@ Num
Definition RHIFeatureLevel.h:54
Definition SceneManagement.h:73
int32 FGeometryGroupHandle
Definition SceneManagement.h:74
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition StaticMeshResources.h:394
FRawStaticIndexBuffer ReversedIndexBuffer
Definition StaticMeshResources.h:396
FRawStaticIndexBuffer WireframeIndexBuffer
Definition StaticMeshResources.h:400
FRawStaticIndexBuffer ReversedDepthOnlyIndexBuffer
Definition StaticMeshResources.h:398
uint8 G
Definition Color.h:492
uint8 R
Definition Color.h:492
uint8 B
Definition Color.h:492
Definition DynamicMeshBuilder.h:26
Definition LocalVertexFactory.h:60
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
Definition MeshReductionSettings.h:35
float PercentTriangles
Definition MeshReductionSettings.h:40
float PercentVertices
Definition MeshReductionSettings.h:48
Definition RHIResources.h:3496
Definition ResourceSize.h:31
Definition SplineMeshSceneProxy.h:25
Definition StaticMesh.h:487
Definition StaticMeshResources.h:271
TRefCountPtr< const FStaticMeshLODResources > Owner
Definition StaticMeshResources.h:279
ENGINE_API FStaticMeshAreaWeightedSectionSampler()
Definition StaticMesh.cpp:1216
virtual ENGINE_API float GetWeights(TArray< float > &OutWeights) override
Definition StaticMesh.cpp:1227
Definition StaticMeshResources.h:426
SIZE_T GetCPUAccessMemoryOverhead() const
Definition StaticMesh.cpp:1039
uint32 bHasReversedDepthOnlyIndices
Definition StaticMeshResources.h:454
ENGINE_API int32 GetNumVertices() const
Definition StaticMesh.cpp:1065
FStaticMeshAreaWeightedSectionSampler AreaWeightedSampler
Definition StaticMeshResources.h:497
class FCardRepresentationData * CardRepresentationData
Definition StaticMeshResources.h:436
FBoxSphereBounds SourceMeshBounds
Definition StaticMeshResources.h:442
void InitResources(UStaticMesh *Parent, int32 LODIndex)
Definition StaticMesh.cpp:1515
uint32 BuffersSize
Definition StaticMeshResources.h:469
uint32 DepthOnlyNumTriangles
Definition StaticMeshResources.h:466
ENGINE_API void GetResourceSizeEx(FResourceSizeEx &CumulativeResourceSize) const
Definition StaticMesh.cpp:1019
ENGINE_API ~FStaticMeshLODResources()
Definition StaticMesh.cpp:1459
FRawStaticIndexBuffer DepthOnlyIndexBuffer
Definition StaticMeshResources.h:492
float MaxDeviation
Definition StaticMeshResources.h:445
uint32 bBuffersInlined
Definition StaticMeshResources.h:461
uint32 bHasDepthOnlyIndices
Definition StaticMeshResources.h:448
uint32 bHasColorVertexData
Definition StaticMeshResources.h:456
uint32 bHasReversedIndices
Definition StaticMeshResources.h:451
ENGINE_API int32 GetNumTexCoords() const
Definition StaticMesh.cpp:1070
void ReleaseResources()
Definition StaticMesh.cpp:1656
void ReleaseRHIForStreaming(TBatcher &Batcher)
Definition StaticMeshResources.h:509
FRayTracingGeometry * RayTracingGeometry
Definition StaticMeshResources.h:439
uint32 bIsOptionalLOD
Definition StaticMeshResources.h:464
FRawStaticIndexBuffer IndexBuffer
Definition StaticMeshResources.h:489
FStaticMeshVertexBuffers VertexBuffers
Definition StaticMeshResources.h:486
class FDistanceFieldVolumeData * DistanceFieldData
Definition StaticMeshResources.h:433
ENGINE_API int32 GetNumTriangles() const
Definition StaticMesh.cpp:1055
FStaticMeshSectionAreaWeightedTriangleSamplerBuffer AreaWeightedSectionSamplersBuffer
Definition StaticMeshResources.h:501
FStaticMeshSectionArray Sections
Definition StaticMeshResources.h:430
FAdditionalStaticMeshIndexBuffers * AdditionalIndexBuffers
Definition StaticMeshResources.h:494
FStaticMeshSectionAreaWeightedTriangleSamplerArray AreaWeightedSectionSamplers
Definition StaticMeshResources.h:499
uint32 bHasWireframeIndices
Definition StaticMeshResources.h:458
FByteBulkData StreamingBulkData
Definition StaticMeshResources.h:471
Definition StaticMeshResources.h:698
bool bBuffersInlined
Definition StaticMeshResources.h:713
virtual ENGINE_API bool AreBuffersStreamedIn() const override
Definition StaticMesh.cpp:2068
void SerializeRayTracingGeometry(FArchive &Ar, UStaticMesh *OwnerStaticMesh, uint8 InStripFlags)
Definition StaticMesh.cpp:1985
virtual ENGINE_API void ReleaseBVHForStreaming(FRHIResourceReplaceBatcher &Batcher) override
Definition StaticMesh.cpp:2196
virtual ENGINE_API uint32 GetRequestSizeBuffers() const override
Definition StaticMesh.cpp:2061
void DiscardCPUData()
Definition StaticMesh.cpp:1835
virtual ENGINE_API void InitWithStreamedData(FRHICommandListBase &RHICmdList, FMemoryView StreamedData, bool bBuffersOnly=false) override
Definition StaticMesh.cpp:2115
uint32 OfflineBVHSize
Definition StaticMeshResources.h:709
virtual ENGINE_API uint32 GetRequestSize() const override
Definition StaticMesh.cpp:2047
FStaticMeshSectionArray * Sections
Definition StaticMeshResources.h:701
uint32 OfflineBVHOffset
Definition StaticMeshResources.h:708
bool bRayTracingGeometryStreamedIn
Definition StaticMeshResources.h:715
FByteBulkData StreamableData
Definition StaticMeshResources.h:706
bool bBuffersStreamedIn
Definition StaticMeshResources.h:716
virtual ENGINE_API void ReleaseBuffersForStreaming(FRHIResourceReplaceBatcher &Batcher) override
Definition StaticMesh.cpp:2208
virtual ENGINE_API void ReleaseForStreaming(FRHIResourceReplaceBatcher &Batcher) override
Definition StaticMesh.cpp:2190
virtual ENGINE_API void IssueRequest(FBulkDataBatchRequest &Request, FIoBuffer &RequestBuffer, bool bBuffersOnly=false) override
Definition StaticMesh.cpp:2078
virtual ENGINE_API bool IsBVHStreamedIn() const override
Definition StaticMesh.cpp:2073
bool bOwnsBuffers
Definition StaticMeshResources.h:712
FRawStaticIndexBuffer * IndexBuffer
Definition StaticMeshResources.h:704
bool bOwnsRayTracingGeometry
Definition StaticMeshResources.h:711
virtual ENGINE_API ~FStaticMeshRayTracingProxyLOD()
Definition StaticMesh.cpp:1761
uint32 BuffersSize
Definition StaticMeshResources.h:707
FRayTracingGeometry * RayTracingGeometry
Definition StaticMeshResources.h:699
void InitResources(UStaticMesh *Owner, int32 LODIndex)
Definition StaticMesh.cpp:1776
void ReleaseResources()
Definition StaticMesh.cpp:1818
FStaticMeshVertexBuffers * VertexBuffers
Definition StaticMeshResources.h:703
virtual ENGINE_API uint32 GetRequestSizeBVH() const override
Definition StaticMesh.cpp:2054
void SerializeMetaData(FArchive &Ar)
Definition StaticMesh.cpp:2020
void SerializeBuffers(FArchive &Ar, UStaticMesh *OwnerStaticMesh, uint8 InStripFlags)
Definition StaticMesh.cpp:1964
Definition StaticMeshResources.h:752
FStaticMeshRayTracingProxyLODArray LODs
Definition StaticMeshResources.h:753
~FStaticMeshRayTracingProxy()
Definition StaticMesh.cpp:2226
bool bUsingRenderingLODs
Definition StaticMeshResources.h:756
void InitResources(UStaticMesh *Owner)
Definition StaticMesh.cpp:2234
void ReleaseResources()
Definition StaticMesh.cpp:2247
FStaticMeshVertexFactoriesArray * LODVertexFactories
Definition StaticMeshResources.h:754
Definition StaticMeshResources.h:259
int32 SectionIdx
Definition StaticMeshResources.h:267
virtual ENGINE_API float GetWeights(TArray< float > &OutWeights) override
Definition StaticMesh.cpp:1190
ENGINE_API FStaticMeshSectionAreaWeightedTriangleSampler()
Definition StaticMesh.cpp:1177
FStaticMeshLODResources * Owner
Definition StaticMeshResources.h:266
Definition StaticMeshResources.h:202
bool bVisibleInRayTracing
Definition StaticMeshResources.h:218
ENGINE_API friend FArchive & operator<<(FArchive &Ar, FStaticMeshSection &Section)
Definition StaticMesh.cpp:426
uint32 MinVertexIndex
Definition StaticMeshResources.h:209
bool bEnableCollision
Definition StaticMeshResources.h:213
FStaticMeshSection()
Definition StaticMeshResources.h:232
uint32 NumTriangles
Definition StaticMeshResources.h:208
bool bForceOpaque
Definition StaticMeshResources.h:222
bool bAffectDistanceFieldLighting
Definition StaticMeshResources.h:220
bool bCastShadow
Definition StaticMeshResources.h:216
int32 MaterialIndex
Definition StaticMeshResources.h:204
uint32 MaxVertexIndex
Definition StaticMeshResources.h:210
uint32 FirstIndex
Definition StaticMeshResources.h:207
Definition StaticMeshResources.h:320
void SetOwnerName(FName OwnerName)
Definition StaticMeshResources.h:378
void InitFromDynamicVertex(FRHICommandListBase &RHICmdList, FLocalVertexFactory *VertexFactory, TArray< FDynamicMeshVertex > &Vertices, uint32 NumTexCoords=1, uint32 LightMapIndex=0)
Definition StaticMeshResources.h:345
void InitWithDummyData(FRenderCommandPipe *RenderCommandPipe, FLocalVertexFactory *VertexFactory, uint32 NumVertices, uint32 NumTexCoords=1, uint32 LightMapIndex=0)
Definition StaticMeshResources.h:335
FColorVertexBuffer ColorVertexBuffer
Definition StaticMeshResources.h:328
void ENGINE_API InitModelBuffers(TArray< FModelVertex > &Vertices)
Definition StaticMesh.cpp:1277
void InitModelVF(FLocalVertexFactory *VertexFactory)
Definition StaticMeshResources.h:373
void InitFromDynamicVertex(FLocalVertexFactory *VertexFactory, TArray< FDynamicMeshVertex > &Vertices, uint32 NumTexCoords=1, uint32 LightMapIndex=0)
Definition StaticMeshResources.h:355
void InitModelVF(FRHICommandListBase &RHICmdList, FLocalVertexFactory *VertexFactory)
Definition StaticMeshResources.h:363
void InitWithDummyData(FLocalVertexFactory *VertexFactory, uint32 NumVertices, uint32 NumTexCoords=1, uint32 LightMapIndex=0)
Definition StaticMeshResources.h:340
void InitModelVF(FRenderCommandPipe *RenderCommandPipe, FLocalVertexFactory *VertexFactory)
Definition StaticMeshResources.h:368
void InitFromDynamicVertex(FRenderCommandPipe *RenderCommandPipe, FLocalVertexFactory *VertexFactory, TArray< FDynamicMeshVertex > &Vertices, uint32 NumTexCoords=1, uint32 LightMapIndex=0)
Definition StaticMeshResources.h:350
void ENGINE_API InitComponentVF(FLocalVertexFactory *VertexFactory, int32 LightMapCoordinateIndex, bool bOverrideColorVertexBuffer, FLocalVertexFactory::FDataType &OutDat) const
Definition StaticMesh.cpp:1261
FStaticMeshVertexBuffer StaticMeshVertexBuffer
Definition StaticMeshResources.h:322
void InitWithDummyData(FRHICommandListBase &RHICmdList, FLocalVertexFactory *VertexFactory, uint32 NumVertices, uint32 NumTexCoords=1, uint32 LightMapIndex=0)
Definition StaticMeshResources.h:330
FPositionVertexBuffer PositionVertexBuffer
Definition StaticMeshResources.h:325
Definition StaticMeshResources.h:643
ENGINE_API void ReleaseResources()
Definition StaticMesh.cpp:1155
FLocalVertexFactory VertexFactory
Definition StaticMeshResources.h:657
ENGINE_API void InitVertexFactory(const FStaticMeshVertexBuffers &VertexBuffers, FLocalVertexFactory &InOutVertexFactory, uint32 LODIndex, const UStaticMesh *InParentMesh, bool bInOverrideColorVertexBuffer)
Definition StaticMesh.cpp:1075
ENGINE_API ~FStaticMeshVertexFactories()
Definition StaticMesh.cpp:1171
struct FSplineMeshVertexFactory * SplineVertexFactoryOverrideColorVertexBuffer
Definition StaticMeshResources.h:664
struct FSplineMeshVertexFactory * SplineVertexFactory
Definition StaticMeshResources.h:662
FStaticMeshVertexFactories(ERHIFeatureLevel::Type InFeatureLevel)
Definition StaticMeshResources.h:644
ENGINE_API void InitResources(const FStaticMeshVertexBuffers &VertexBuffers, uint32 LODIndex, const UStaticMesh *Parent)
Definition StaticMesh.cpp:1146
FLocalVertexFactory VertexFactoryOverrideColorVertexBuffer
Definition StaticMeshResources.h:660
Definition WeightedRandomSampler.h:30
Definition IsContiguousContainer.h:16
Definition UnrealTypeTraits.h:172
Definition BoxSphereBounds.h:25
T Y
Definition Vector2D.h:52
T X
Definition Vector2D.h:49
static CORE_API const TVector2< double > ZeroVector
Definition Vector2D.h:63
T Y
Definition Vector4.h:46
T Z
Definition Vector4.h:49
T W
Definition Vector4.h:52
T X
Definition Vector4.h:43