117 InstanceData->GetInstanceLightMapData(InstanceIndex, InstanceLightmapAndShadowMapUVBias);
122 InstanceData->GetInstanceCustomDataValues(InstanceIndex, InstanceCustomData);
132 ENGINE_API virtual void ReleaseRHI()
override;
134 ENGINE_API virtual void ReleaseResource()
override;
136 SIZE_T GetResourceSize()
const;
155 check(!bFlushToGPUPending);
156 return InstanceOriginBuffer.VertexBufferRHI;
161 check(!bFlushToGPUPending);
162 return InstanceTransformBuffer.VertexBufferRHI;
167 check(!bFlushToGPUPending);
168 return InstanceLightmapBuffer.VertexBufferRHI;
176 bFlushToGPUPending =
true;
184 bool bFlushToGPUPending;
189 } InstanceOriginBuffer;
194 virtual FString
GetFriendlyName()
const override {
return TEXT(
"FInstanceTransformBuffer"); }
195 } InstanceTransformBuffer;
200 virtual FString
GetFriendlyName()
const override {
return TEXT(
"FInstanceLightmapBuffer"); }
201 } InstanceLightmapBuffer;
206 virtual FString
GetFriendlyName()
const override {
return TEXT(
"FInstanceCustomDataBuffer"); }
207 } InstanceCustomDataBuffer;
322 return 8 *
sizeof(
uint64);
370 InstanceOffset.Bind(ParameterMap,
TEXT(
"InstanceOffset"));
430 void InitVertexFactories();
471 Result.bDynamicRelevance =
true;
472 Result.bStaticRelevance =
false;
581 bool CanSetupInstancedMeshBatch(
int32 LODIndex)
const;
582 bool CanSetupRayTracingInstancedMeshBatch(
int32 LODIndex)
const;
632 , QuantizedData(nullptr)
638 FStaticLightingTextureMapping_InstancedStaticMesh (
const FArchive& Ar)
641 , QuantizedData(nullptr)
651 check(bComplete ==
false);
678 return FString(
TEXT(
"InstancedSMLightingMapping"));
#define NULL
Definition oodle2base.h:134
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
TAutoConsoleVariable< float > CVarFoliageMinimumScreenSize
const int32 InstancedStaticMeshMaxTexCoord
Definition InstancedStaticMesh.cpp:78
TAutoConsoleVariable< float > CVarRandomLODRange
TAutoConsoleVariable< int32 > CVarMinLOD
#define LAYOUT_FIELD(T, Name,...)
Definition MemoryLayout.h:471
#define DECLARE_TYPE_LAYOUT(T, Interface)
Definition MemoryLayout.h:557
EBufferUsageFlags
Definition RHIDefinitions.h:892
EUniformBufferUsage
Definition RHIDefinitions.h:536
FRDGBufferRef CreateVertexBuffer(FRDGBuilder &GraphBuilder, const TCHAR *Name, const FRDGBufferDesc &Desc, const void *InitialData, uint64 InitialDataSize, ERDGInitialDataFlags InitialDataFlags)
Definition RenderGraphUtils.cpp:957
#define END_GLOBAL_SHADER_PARAMETER_STRUCT
Definition ShaderParameterMacros.h:1669
#define SHADER_PARAMETER_SRV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1720
#define BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT
Definition ShaderParameterMacros.h:1663
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
@ LightMapCoordinateIndex
EVertexInputStreamType
Definition VertexFactory.h:128
Definition Archive.h:1208
Definition ColorVertexBuffer.h:16
Definition DistanceFieldAtlas.h:241
Definition InstanceDataSceneProxy.h:425
Definition InstancedStaticMesh.h:401
UInstancedStaticMeshComponent * Component
Definition InstancedStaticMesh.h:410
ENGINE_API void ReleaseResources(FSceneInterface *Scene, const UStaticMesh *StaticMesh)
Definition InstancedStaticMesh.cpp:961
ENGINE_API void BindBuffersToVertexFactories(FRHICommandListBase &RHICmdList, FStaticMeshInstanceBuffer *InstanceBuffer)
Definition InstancedStaticMesh.cpp:1018
const FStaticMeshRayTracingProxyLODArray * RayTracingProxyLODs
Definition InstancedStaticMesh.h:422
TIndirectArray< FInstancedStaticMeshVertexFactory > VertexFactories
Definition InstancedStaticMesh.h:416
int32 LightMapCoordinateIndex
Definition InstancedStaticMesh.h:413
ERHIFeatureLevel::Type FeatureLevel
Definition InstancedStaticMesh.h:425
FStaticMeshLODResourcesArray & LODModels
Definition InstancedStaticMesh.h:419
TIndirectArray< FInstancedStaticMeshVertexFactory > RayTracingProxyVertexFactories
Definition InstancedStaticMesh.h:421
Definition InstancedStaticMesh.h:442
UStaticMesh * StaticMesh
Definition InstancedStaticMesh.h:535
FInstancingUserData UserData_DeselectedInstances
Definition InstancedStaticMesh.h:550
virtual ENGINE_API void GetPreSkinnedLocalBounds(FBoxSphereBounds &OutBounds) const override
Definition InstancedStaticMesh.cpp:2319
FInstancingUserData UserData_SelectedInstances
Definition InstancedStaticMesh.h:549
virtual FPrimitiveViewRelevance GetViewRelevance(const FSceneView *View) const override
Definition InstancedStaticMesh.h:461
virtual ENGINE_API HHitProxy * CreateHitProxies(IPrimitiveComponent *Component, TArray< TRefCountPtr< HHitProxy > > &OutHitProxies) override
Definition InstancedStaticMesh.cpp:1765
ENGINE_API FInstancedStaticMeshVFLooseUniformShaderParametersRef CreateLooseUniformBuffer(const FSceneView *View, const FInstancingUserData *InstancingUserData, uint32 InstancedLODRange, uint32 InstancedLODIndex, EUniformBufferUsage UniformBufferUsage) const
Definition InstancedStaticMesh.cpp:1273
static const bool bHasSelectedInstances
Definition InstancedStaticMesh.h:544
virtual ENGINE_API bool GetShadowMeshElement(int32 LODIndex, int32 BatchIndex, uint8 InDepthPriorityGroup, FMeshBatch &OutMeshBatch, bool bDitheredLODTransition) const override
Definition InstancedStaticMesh.cpp:1713
ENGINE_API SIZE_T GetTypeHash() const override
Definition InstancedStaticMesh.cpp:1093
bool bUseGpuLodSelection
Definition InstancedStaticMesh.h:480
~FInstancedStaticMeshSceneProxy()
Definition InstancedStaticMesh.h:450
virtual ENGINE_API void GetDistanceFieldAtlasData(const FDistanceFieldVolumeData *&OutDistanceFieldData, float &SelfShadowBias) const override
Definition InstancedStaticMesh.cpp:1755
virtual ENGINE_API bool GetWireframeMeshElement(int32 LODIndex, int32 BatchIndex, const FMaterialRenderProxy *WireframeRenderProxy, uint8 InDepthPriorityGroup, bool bAllowPreCulledIndices, FMeshBatch &OutMeshBatch) const override
Definition InstancedStaticMesh.cpp:1735
ENGINE_API void SetupRayTracingInstancedMeshBatch(int32 LODIndex, int32 BatchIndex, FMeshBatch &OutMeshBatch) const
Definition InstancedStaticMesh.cpp:1673
virtual ENGINE_API void DestroyRenderThreadResources() override
Definition InstancedStaticMesh.cpp:1623
virtual ENGINE_API void GetLightRelevance(const FLightSceneProxy *LightSceneProxy, bool &bDynamic, bool &bRelevant, bool &bLightMapped, bool &bShadowMapped) const override
Definition InstancedStaticMesh.cpp:1703
virtual int32 GetNumMeshBatches() const override
Definition InstancedStaticMesh.h:491
virtual ENGINE_API void SetInstanceCullDistance_RenderThread(float StartCullDistance, float EndCullDistance) override
Definition InstancedStaticMesh.cpp:2297
FInstancedStaticMeshRenderData InstancedRenderData
Definition InstancedStaticMesh.h:538
virtual ENGINE_API float GetGpuLodInstanceRadius() const override
Definition InstancedStaticMesh.cpp:1794
virtual ENGINE_API bool GetInstanceDrawDistanceMinMax(FVector2f &OutDistanceMinMax) const override
Definition InstancedStaticMesh.cpp:1775
bool bAnySegmentUsesWorldPositionOffset
Definition InstancedStaticMesh.h:479
virtual ENGINE_API float GetLodScreenSizeScale() const override
Definition InstancedStaticMesh.cpp:1789
virtual ENGINE_API void CreateRenderThreadResources(FRHICommandListBase &RHICmdList) override
Definition InstancedStaticMesh.cpp:1605
virtual ENGINE_API void GetDynamicMeshElements(const TArray< const FSceneView * > &Views, const FSceneViewFamily &ViewFamily, uint32 VisibilityMap, FMeshElementCollector &Collector) const override
Definition InstancedStaticMesh.cpp:1099
float InstanceLODDistanceScale
Definition InstancedStaticMesh.h:553
virtual bool IsDetailMesh() const override
Definition InstancedStaticMesh.h:525
virtual ENGINE_API bool GetRayTracingMeshElement(int32 LODIndex, int32 BatchIndex, int32 SectionIndex, uint8 InDepthPriorityGroup, FMeshBatch &OutMeshBatch) const
Definition InstancedStaticMesh.cpp:1745
FInstancingUserData UserData_AllInstances
Definition InstancedStaticMesh.h:548
ENGINE_API void SetupInstancedMeshBatch(int32 LODIndex, int32 BatchIndex, FMeshBatch &OutMeshBatch) const
Definition InstancedStaticMesh.cpp:1643
virtual ENGINE_API FInstanceDataUpdateTaskInfo * GetInstanceDataUpdateTaskInfo() const override
Definition InstancedStaticMesh.cpp:1801
FBoxSphereBounds StaticMeshBounds
Definition InstancedStaticMesh.h:577
virtual ENGINE_API void UpdateInstances_RenderThread(FRHICommandListBase &RHICmdList, const FBoxSphereBounds &InBounds, const FBoxSphereBounds &InLocalBounds) override
Definition InstancedStaticMesh.cpp:1633
virtual ENGINE_API void SetEvaluateWorldPositionOffsetInRayTracing(FRHICommandListBase &RHICmdList, bool bEvaluate) override
Definition InstancedStaticMesh.cpp:1806
virtual ENGINE_API bool GetMeshElement(int32 LODIndex, int32 BatchIndex, int32 ElementIndex, uint8 InDepthPriorityGroup, bool bUseSelectionOutline, bool bAllowPreCulledIndices, FMeshBatch &OutMeshBatch) const override
Definition InstancedStaticMesh.cpp:1724
Definition InstancedStaticMesh.h:359
void Bind(const FShaderParameterMap &ParameterMap)
Definition InstancedStaticMesh.h:362
ENGINE_API void GetElementShaderBindings(const class FSceneInterface *Scene, const FSceneView *View, const FMeshMaterialShader *Shader, const EVertexInputStreamType InputStreamType, ERHIFeatureLevel::Type FeatureLevel, const FVertexFactory *VertexFactory, const FMeshBatchElement &BatchElement, FMeshDrawSingleShaderBindings &ShaderBindings, FVertexInputStreamArray &VertexStreams) const
Definition InstancedStaticMesh.cpp:6012
Definition LightSceneProxy.h:43
Definition LocalVertexFactory.h:213
ENGINE_API void Bind(const FShaderParameterMap &ParameterMap)
Definition LocalVertexFactory.cpp:63
Definition LocalVertexFactory.h:51
FDataType Data
Definition LocalVertexFactory.h:188
Definition MaterialRenderProxy.h:102
Definition MeshDrawShaderBindings.h:104
Definition MeshElementCollector.h:26
Definition MeshMaterialShader.h:68
Definition RHICommandList.h:455
Definition RHIResources.h:3304
Definition RayTracingGeometry.h:31
Definition RenderResource.h:37
RENDERCORE_API void UpdateRHI(FRHICommandListBase &RHICmdList)
Definition RenderResource.cpp:225
Definition ResourceArray.h:77
Definition SceneInterface.h:106
Definition SceneView.h:2212
FEngineShowFlags EngineShowFlags
Definition SceneView.h:2324
Definition SceneView.h:1425
const FSceneViewFamily * Family
Definition SceneView.h:1427
Definition ShaderCore.h:323
Definition ShaderParameters.h:56
Definition ShaderParameters.h:87
Definition StaticLighting.h:114
virtual void Apply(struct FQuantizedLightmapData *QuantizedData, const TMap< ULightComponent *, class FShadowMapData2D * > &ShadowMapData, const FStaticLightingBuildContext *LightingContext)=0
Definition InstancedStaticMesh.h:71
FBufferRHIRef GetInstanceTransformBuffer()
Definition InstancedStaticMesh.h:159
uint32 GetNumInstances() const
Definition InstancedStaticMesh.h:92
void SetFlushToGPUPending()
Definition InstancedStaticMesh.h:174
FBufferRHIRef GetInstanceLightmapBuffer()
Definition InstancedStaticMesh.h:165
TSharedPtr< FStaticMeshInstanceData, ESPMode::ThreadSafe > InstanceData
Definition InstancedStaticMesh.h:148
void GetInstanceCustomDataValues(int32 InstanceIndex, TArray< float > &InstanceCustomData) const
Definition InstancedStaticMesh.h:120
void GetInstanceLightMapData(int32 InstanceIndex, FVector4f &InstanceLightmapAndShadowMapUVBias) const
Definition InstancedStaticMesh.h:115
void GetInstanceTransform(int32 InstanceIndex, FRenderTransform &Transform) const
Definition InstancedStaticMesh.h:97
virtual FString GetFriendlyName() const override
Definition InstancedStaticMesh.h:135
void GetInstanceRandomID(int32 InstanceIndex, float &RandomInstanceID) const
Definition InstancedStaticMesh.h:102
bool RequireCPUAccess
Definition InstancedStaticMesh.h:151
FBufferRHIRef GetInstanceOriginBuffer()
Definition InstancedStaticMesh.h:153
FStaticMeshInstanceData * GetInstanceData() const
Definition InstancedStaticMesh.h:125
Definition StaticMeshResources.h:1031
Definition StaticMeshResources.h:774
Definition StaticMeshSceneProxy.h:34
virtual ENGINE_API FPrimitiveViewRelevance GetViewRelevance(const FSceneView *View) const override
Definition StaticMeshSceneProxy.cpp:2372
Definition StaticMeshLight.h:24
void SetLocalToWorld(const FMatrix &InLocalToWorld)
Definition StaticMeshLight.cpp:93
virtual bool IsInstancedMesh() const override
Definition StaticMeshLight.h:53
Definition StaticMeshLight.h:109
virtual FString GetDescription() const override
Definition StaticMeshLight.h:132
Definition RenderResource.h:474
virtual RENDERCORE_API FString GetFriendlyName() const override
Definition RenderResource.cpp:561
Definition VertexFactory.h:661
TArray< FVertexStream, TInlineAllocator< 8 > > FVertexStreamList
Definition VertexFactory.h:834
FVertexStreamList Streams
Definition VertexFactory.h:837
Definition HitProxies.h:135
Definition ComponentInterfaces.h:59
Definition IConsoleManager.h:1792
Definition IndirectArray.h:20
Definition UnrealString.h.inl:34
UE_FORCEINLINE_HINT ReferencedType * GetReference() const
Definition RefCounting.h:584
Definition SharedPointer.h:692
Definition UniquePtr.h:107
Definition InstancedStaticMeshComponent.h:158
Definition StaticMesh.h:593
Definition Texture.h:1219
Type
Definition RHIFeatureLevel.h:20
@ false
Definition radaudio_common.h:23
Definition InstancedStaticMesh.h:705
FComponentInstanceSharingData()
Definition InstancedStaticMesh.h:716
UInstancedStaticMeshComponent * Component
Definition InstancedStaticMesh.h:707
UTexture * ShadowMapTexture
Definition InstancedStaticMesh.h:713
UTexture * LightMapTexture
Definition InstancedStaticMesh.h:710
Definition InstancedStaticMesh.h:729
TArray< FComponentInstanceSharingData > SharingData
Definition InstancedStaticMesh.h:734
TMap< UInstancedStaticMeshComponent *, TArray< FInstancedStaticMeshInstanceData > > ComponentInstances
Definition InstancedStaticMesh.h:731
Definition InstancedStaticMesh.h:240
FVertexStreamComponent InstanceOriginComponent
Definition InstancedStaticMesh.h:242
FRHIShaderResourceView * InstanceCustomDataSRV
Definition InstancedStaticMesh.h:253
FRHIShaderResourceView * InstanceOriginSRV
Definition InstancedStaticMesh.h:250
FVertexStreamComponent InstanceLightmapAndShadowMapUVBiasComponent
Definition InstancedStaticMesh.h:248
int32 NumCustomDataFloats
Definition InstancedStaticMesh.h:255
FRHIShaderResourceView * InstanceTransformSRV
Definition InstancedStaticMesh.h:251
FRHIShaderResourceView * InstanceLightmapSRV
Definition InstancedStaticMesh.h:252
FVertexStreamComponent InstanceTransformComponent[3]
Definition InstancedStaticMesh.h:245
Definition InstancedStaticMeshSceneProxyDesc.h:11
Definition InstancedStaticMesh.h:262
void SetData(FRHICommandListBase &RHICmdList, const FDataType &InData, const FInstancedStaticMeshDataType *InInstanceData)
Definition InstancedStaticMesh.h:300
FRHIUniformBuffer * GetUniformBuffer() const
Definition InstancedStaticMesh.h:345
static ENGINE_API void GetPSOPrecacheVertexFetchElements(EVertexInputStreamType VertexInputStreamType, FVertexDeclarationElementList &Elements)
Definition InstancedStaticMesh.cpp:736
static ENGINE_API bool ShouldCompilePermutation(const FVertexFactoryShaderPermutationParameters &Parameters)
Definition InstancedStaticMesh.cpp:697
virtual ENGINE_API void InitRHI(FRHICommandListBase &RHICmdList) override
Definition InstancedStaticMesh.cpp:760
FInstancedStaticMeshVertexFactory(ERHIFeatureLevel::Type InFeatureLevel)
Definition InstancedStaticMesh.h:265
static ENGINE_API void ModifyCompilationEnvironment(const FVertexFactoryShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition InstancedStaticMesh.cpp:703
DECLARE_VERTEX_FACTORY_TYPE_API(FInstancedStaticMeshVertexFactory, ENGINE_API)
static constexpr uint32 NumBitsForVisibilityMask()
Definition InstancedStaticMesh.h:320
FRHIShaderResourceView * GetInstanceOriginSRV() const
Definition InstancedStaticMesh.h:325
FRHIShaderResourceView * GetInstanceCustomDataSRV() const
Definition InstancedStaticMesh.h:340
FRHIShaderResourceView * GetInstanceTransformSRV() const
Definition InstancedStaticMesh.h:330
static ENGINE_API void InitInstancedStaticMeshVertexFactoryComponents(const FStaticMeshVertexBuffers &VertexBuffers, const FColorVertexBuffer *ColorVertexBuffer, const FStaticMeshInstanceBuffer *InstanceBuffer, const FInstancedStaticMeshVertexFactory *VertexFactory, int32 LightMapCoordinateIndex, bool bRHISupportsManualVertexFetch, FInstancedStaticMeshVertexFactory::FDataType &OutData, FInstancedStaticMeshDataType &OutInstanceData)
Definition InstancedStaticMesh.cpp:983
FRHIShaderResourceView * GetInstanceLightmapSRV() const
Definition InstancedStaticMesh.h:335
static ENGINE_API void GetVertexElements(ERHIFeatureLevel::Type FeatureLevel, EVertexInputStreamType InputStreamType, bool bSupportsManualVertexFetch, FDataType &Data, FInstancedStaticMeshDataType &InstanceData, FVertexDeclarationElementList &Elements)
Definition InstancedStaticMesh.cpp:792
Definition InstancedStaticMesh.h:221
int32 StartCullDistance
Definition InstancedStaticMesh.h:226
class FStaticMeshRenderData * MeshRenderData
Definition InstancedStaticMesh.h:223
class FInstancedStaticMeshRenderData * RenderData
Definition InstancedStaticMesh.h:222
FVector InstancingOffset
Definition InstancedStaticMesh.h:236
int32 MinLOD
Definition InstancedStaticMesh.h:231
int32 EndCullDistance
Definition InstancedStaticMesh.h:227
bool bRenderSelected
Definition InstancedStaticMesh.h:233
FVector AverageInstancesScale
Definition InstancedStaticMesh.h:235
float LODDistanceScale
Definition InstancedStaticMesh.h:229
int32 MinDrawDistance
Definition InstancedStaticMesh.h:225
bool bRenderUnselected
Definition InstancedStaticMesh.h:234
Definition LocalVertexFactory.h:60
Definition MeshBatch.h:232
Definition MeshBatch.h:371
Definition PrimitiveViewRelevance.h:14
Definition LightMap.h:500
Definition RHIUtilities.h:181
Definition ShaderCore.h:544
Definition StaticMeshResources.h:320
Definition MeshMaterialShader.h:44
Definition VertexStreamComponent.h:22
Definition BoxSphereBounds.h:25