9#include "Containers/Queue.h"
23 class ICookOnTheFlyServerConnection;
24 class FCookOnTheFlyMessage;
41 const FString& ShaderTypesToLoad,
66 double RequestStartTime = 0.0;
72 FString ShaderTypesToLoad;
123 virtual void Tick()
override final;
138 const FString& ShaderTypesToLoad,
166 const FString& VertexFactoryName,
167 const FString& PipelineName,
206 virtual bool Init()
override;
223 bool ConnectToODSCHost();
224 bool CheckODSCConnection();
251 inline FODSCShaderId() {}
257 int32 PermutationId = 0;
260 friend inline uint32 GetTypeHash(
const FODSCShaderId&
Id )
263 GetTypeHash(
Id.ShaderTypeHashedName),
266 HashCombine(GetTypeHash(
Id.PermutationId), GetTypeHash(
Id.Platform)))));
269 friend bool operator==(
const FODSCShaderId&
X,
const FODSCShaderId&
Y)
271 return X.ShaderTypeHashedName ==
Y.ShaderTypeHashedName
272 &&
X.ShaderPipelineName ==
Y.ShaderPipelineName
273 &&
X.VFTypeHashedName ==
Y.VFTypeHashedName
274 &&
X.PermutationId ==
Y.PermutationId
275 &&
X.Platform ==
Y.Platform;
278 friend bool operator!=(
const FODSCShaderId&
X,
const FODSCShaderId&
Y)
285 struct FODSCShaderMapData
308 FEvent* AllRequestsDoneEvent;
322 std::atomic<bool> bIsConnectedToODSCServer =
false;
323 std::atomic<bool> bHasPendingGlobalShaders =
false;
324 std::atomic<uint32> NumPendingMaterialsRecompile = 0;
325 std::atomic<uint32> NumPendingMaterialsShaders = 0;
326 bool bHasDefaultConnection =
false;
EQueueMode
Definition Queue.h:17
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
auto Response
Definition ExternalRpcRegistry.cpp:598
UE_FORCEINLINE_HINT bool operator!=(const FIndexedPointer &Other) const
Definition LockFreeList.h:76
EODSCMetaDataType
Definition ODSCThread.h:29
@ IsNotDependentOnMaterialName
@ IsDependentOnMaterialName
ODSCRecompileCommand
Definition ShaderCompiler.h:1469
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
Definition Archive.h:1208
Definition MemoryImage.h:858
Definition MaterialShared.h:1194
Definition MaterialShared.h:1518
Definition MaterialShared.h:2058
Definition NameTypes.h:617
Definition ODSCThread.h:36
bool ReloadGlobalShaders() const
Definition ODSCThread.cpp:146
virtual void FillPayload(FArchive &Payload) override
Definition ODSCThread.cpp:98
ODSCRecompileCommand GetRecompileCommandType() const
Definition ODSCThread.h:61
const TArray< uint8 > & GetMeshMaterialMaps() const
Definition ODSCThread.cpp:136
virtual void ProcessResponse(FArchive &Response) override
Definition ODSCThread.cpp:117
const TArray< uint8 > & GetGlobalShaderMap() const
Definition ODSCThread.cpp:141
void AddPayload(const FODSCRequestPayload &Payload)
Definition ODSCThread.cpp:126
int32 NumPayloads() const
Definition ODSCThread.h:62
const TArray< FString > & GetMaterialsToLoad() const
Definition ODSCThread.cpp:131
Definition ODSCThread.h:105
void StopThread()
Definition ODSCThread.cpp:215
bool GetPendingShaderData(bool &bOutIsConnectedToODSCServer, bool &bOutHasPendingGlobalShaders, uint32 &OutNumPendingMaterialsRecompile, uint32 &OutNumPendingMaterialsShaders) const
Definition ODSCThread.cpp:693
bool CheckIfRequestAlreadySent(const TArray< FShaderId > &RequestShaderIds, const FMaterial *Material) const
Definition ODSCThread.cpp:270
void GetCompletedRequests(TArray< FODSCMessageHandler * > &OutCompletedRequests)
Definition ODSCThread.cpp:479
FThreadSafeCounter ExitRequest
Definition ODSCThread.h:213
virtual void Stop() override
Definition ODSCThread.cpp:517
FMaterialShaderMap * FindMaterialShaderMap(const FString &MaterialName, const FMaterialShaderMapId &ShaderMapId) const
Definition ODSCThread.cpp:326
void Wakeup()
Definition ODSCThread.cpp:489
void ResetMaterialsODSCData(EShaderPlatform InShaderPlatform)
Definition ODSCThread.cpp:230
void StartThread()
Definition ODSCThread.cpp:210
void RegisterMaterialShaderMaps(const FString &MaterialName, const TArray< TRefCountPtr< FMaterialShaderMap > > &LoadedShaderMaps)
Definition ODSCThread.cpp:302
virtual void Tick() override final
Definition ODSCThread.cpp:225
void AddShaderPipelineRequest(EShaderPlatform ShaderPlatform, ERHIFeatureLevel::Type FeatureLevel, EMaterialQualityLevel::Type QualityLevel, const FMaterial *Material, const FPrimitiveSceneInfo *PrimitiveSceneInfo, const FString &VertexFactoryName, const FString &PipelineName, const TArray< FString > &ShaderTypeNames, int32 PermutationId, const TArray< FShaderId > &RequestShaderIds)
Definition ODSCThread.cpp:382
virtual uint32 Run() override final
Definition ODSCThread.cpp:505
virtual void Exit() override
Definition ODSCThread.cpp:523
void AddRequest(const TArray< FString > &MaterialsToCompile, const FString &ShaderTypesToLoad, EShaderPlatform ShaderPlatform, ERHIFeatureLevel::Type FeatureLevel, EMaterialQualityLevel::Type QualityLevel, ODSCRecompileCommand RecompileCommandType, const FShaderCompilerFlags &ExtraCompilerFlags=FShaderCompilerFlags())
Definition ODSCThread.cpp:370
virtual ~FODSCThread()
Definition ODSCThread.cpp:166
virtual bool Init() override
Definition ODSCThread.cpp:500
const FString & GetODSCHostIP() const
Definition ODSCThread.h:195
void RetrieveMissedMaterials(TArray< FString > &OutMaterialPaths) const
Definition ODSCThread.cpp:351
void UnregisterMaterialName(const FMaterial *Material)
Definition ODSCThread.cpp:296
void WaitUntilAllRequestsDone()
Definition ODSCThread.cpp:495
Definition PrimitiveSceneInfo.h:266
Definition RunnableThread.h:20
Definition ShaderCore.h:402
Definition SingleThreadRunnable.h:12
Definition ThreadSafeCounter.h:14
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition UnrealString.h.inl:34
Definition RefCounting.h:454
Definition UniquePtr.h:107
Type
Definition SceneTypes.h:132
Type
Definition RHIFeatureLevel.h:20
Definition AdvancedWidgetsModule.cpp:13
Definition ShaderCompiler.h:1417