![]() |
UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
|
#include "ShaderCodeLibrary.h"#include "Algo/Replace.h"#include "Async/ParallelFor.h"#include "Containers/HashTable.h"#include "Containers/Set.h"#include "Containers/StringView.h"#include "FileCache/FileCache.h"#include "HAL/FileManager.h"#include "HAL/LowLevelMemTracker.h"#include "HAL/PlatformFileManager.h"#include "HAL/PlatformSplash.h"#include "Hash/CityHash.h"#include "Interfaces/IPluginManager.h"#include "Internationalization/Regex.h"#include "Math/UnitConversion.h"#include "Misc/CommandLine.h"#include "Misc/ConfigCacheIni.h"#include "Misc/CoreDelegates.h"#include "Misc/MessageDialog.h"#include "Misc/Paths.h"#include "Misc/ScopeLock.h"#include "Misc/ScopeRWLock.h"#include "Misc/SecureHash.h"#include "Misc/StringBuilder.h"#include "PipelineFileCache.h"#include "ProfilingDebugging/AssetMetadataTrace.h"#include "ProfilingDebugging/LoadTimeTracker.h"#include "ProfilingDebugging/DiagnosticTable.h"#include "RenderingThread.h"#include "Shader.h"#include "ShaderCodeArchive.h"#include "ShaderCompilerCore.h"#include "ShaderPipelineCache.h"#include "DataDrivenShaderPlatformInfo.h"#include "String/ParseTokens.h"#include "IO/IoChunkId.h"#include "IO/IoDispatcher.h"#include "IO/IoDispatcherInternal.h"Classes | |
| struct | UE::ShaderLibrary::Private::FMountedPakFileInfo |
| struct | UE::ShaderLibrary::Private::FNamedShaderLibrary |
| class | FShaderMapResource_SharedCode |
| class | FShaderLibraryInstance |
| class | FShaderLibrariesCollection |
Namespaces | |
| namespace | UE |
| namespace | UE::ShaderLibrary |
| namespace | UE::ShaderLibrary::Private |
Macros | |
| #define | UE_SHADERLIB_WITH_INTROSPECTION !UE_BUILD_SHIPPING |
| #define | UE_SHADERLIB_SUPPORT_CHUNK_DISCOVERY (1) |
Functions | |
| DEFINE_LOG_CATEGORY (LogShaderLibrary) | |
| FString | UE::ShaderLibrary::Private::GetShaderLibraryNameForChunk (FString const &BaseName, int32 ChunkId) |
| bool | UE::ShaderLibrary::Private::IsRunningWithPakFile () |
| bool | UE::ShaderLibrary::Private::IsRunningWithIoStore () |
| bool | UE::ShaderLibrary::Private::IsRunningWithZenStore () |
| bool | UE::ShaderLibrary::Private::ShouldLookForLooseCookedChunks () |
| FORCEINLINE FName | ParseFNameCached (const FStringView &Src, TMap< uint32, FName > &NameCache) |
| uint32 | GetTypeHash (const FCompactFullName &A) |
| void | FixupUnsanitizedNames (const FString &Src, TArray< FString > &OutFields) |
| void | DiagnoseLeakingShaderMapResourceRefs (const FShaderMapResource_SharedCode *InResource) |
Variables | |
| int32 | GShaderCodeLibrarySeparateLoadingCache = 0 |
| int32 | GPreloadShaderMaps = 1 |
| bool | GShaderMapResourceRef = false |
| bool | GUploadShaderDebugArtifacts = false |
| int32 | UE::ShaderLibrary::Private::GProduceExtendedStats = 1 |
| FSharedShaderMapResourceExplicitRelease | OnSharedShaderMapResourceExplicitRelease |
| FAutoConsoleCommandWithArgsAndOutputDevice | GListShaderLibrariesCmd (TEXT("ListShaderLibraries"), TEXT("Spits out a csv table containing stats of all shader libraries"), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateStatic([](const TArray< FString > &Params, FOutputDevice &Out) { auto Iter=[&](const FString &LogicalName, UE::ShaderLibrary::Private::FNamedShaderLibrary &NamedShaderLibrary) { FRWScopeLock ComponentReadLock(NamedShaderLibrary.ComponentsMutex, SLT_ReadOnly);for(const TUniquePtr< FShaderLibraryInstance > &ShaderLibrary :NamedShaderLibrary.Components) { const FString &Name=ShaderLibrary->Library->GetName();const FString OwnerName=ShaderLibrary->Library->GetOwnerName().ToString();uint32 Id=ShaderLibrary->Library->GetId();int32 NumShaders=ShaderLibrary->GetNumShaders();int32 NumShaderMaps=ShaderLibrary->GetNumResources();uint32 LibrarySize=ShaderLibrary->GetSizeBytes();uint32 RHILibrarySize=ShaderLibrary->Library->GetSizeBytes();uint32 MapsSize=ShaderLibrary->GetShaderMapsSizeBytes();Out.Logf(TEXT("%s,%s,%s,%x,%d,%d,%.3f,%.3f,%.3f"), *Name, *LogicalName, *OwnerName, Id, NumShaders, NumShaderMaps, LibrarySize/1024.f, RHILibrarySize/1024.f, MapsSize/1024.f);} };if(FShaderLibrariesCollection *Collection=FShaderLibrariesCollection::Impl) { Out.Logf(TEXT("ShaderLibraryName,LogicalName,OwnerName,Id,NumShaders,NumShaderMaps,LibrarySizeKb,RHILibrarySizeKb,ShaderMapsSizeKb"));Collection->IterateNamedShaderLibrariesSafe(Iter);} else { UE_LOG(LogShaderLibrary, Warning, TEXT("ShaderLibrariesCollection is not available."));} })) |
| #define UE_SHADERLIB_SUPPORT_CHUNK_DISCOVERY (1) |
| #define UE_SHADERLIB_WITH_INTROSPECTION !UE_BUILD_SHIPPING |
| DEFINE_LOG_CATEGORY | ( | LogShaderLibrary | ) |
| void DiagnoseLeakingShaderMapResourceRefs | ( | const FShaderMapResource_SharedCode * | InResource | ) |
| uint32 GetTypeHash | ( | const FCompactFullName & | A | ) |
| FORCEINLINE FName ParseFNameCached | ( | const FStringView & | Src, |
| TMap< uint32, FName > & | NameCache | ||
| ) |
| FAutoConsoleCommandWithArgsAndOutputDevice GListShaderLibrariesCmd(TEXT("ListShaderLibraries"), TEXT("Spits out a csv table containing stats of all shader libraries"), FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateStatic([](const TArray< FString > &Params, FOutputDevice &Out) { auto Iter=[&](const FString &LogicalName, UE::ShaderLibrary::Private::FNamedShaderLibrary &NamedShaderLibrary) { FRWScopeLock ComponentReadLock(NamedShaderLibrary.ComponentsMutex, SLT_ReadOnly); for(const TUniquePtr< FShaderLibraryInstance > &ShaderLibrary :NamedShaderLibrary.Components) { const FString &Name=ShaderLibrary->Library->GetName(); const FString OwnerName=ShaderLibrary->Library->GetOwnerName().ToString(); uint32 Id=ShaderLibrary->Library->GetId(); int32 NumShaders=ShaderLibrary->GetNumShaders(); int32 NumShaderMaps=ShaderLibrary->GetNumResources(); uint32 LibrarySize=ShaderLibrary->GetSizeBytes(); uint32 RHILibrarySize=ShaderLibrary->Library->GetSizeBytes(); uint32 MapsSize=ShaderLibrary->GetShaderMapsSizeBytes(); Out.Logf(TEXT("%s,%s,%s,%x,%d,%d,%.3f,%.3f,%.3f"), *Name, *LogicalName, *OwnerName, Id, NumShaders, NumShaderMaps, LibrarySize/1024.f, RHILibrarySize/1024.f, MapsSize/1024.f); } }; if(FShaderLibrariesCollection *Collection=FShaderLibrariesCollection::Impl) { Out.Logf(TEXT("ShaderLibraryName,LogicalName,OwnerName,Id,NumShaders,NumShaderMaps,LibrarySizeKb,RHILibrarySizeKb,ShaderMapsSizeKb")); Collection->IterateNamedShaderLibrariesSafe(Iter); } else { UE_LOG(LogShaderLibrary, Warning, TEXT("ShaderLibrariesCollection is not available.")); } })) | ( | TEXT("ListShaderLibraries") | , |
| TEXT("Spits out a csv table containing stats of all shader libraries") | , | ||
| FConsoleCommandWithArgsAndOutputDeviceDelegate::CreateStatic([](const TArray< FString > &Params, FOutputDevice &Out) { auto Iter=[&](const FString &LogicalName, UE::ShaderLibrary::Private::FNamedShaderLibrary &NamedShaderLibrary) { FRWScopeLock ComponentReadLock(NamedShaderLibrary.ComponentsMutex, SLT_ReadOnly); for(const TUniquePtr< FShaderLibraryInstance > &ShaderLibrary :NamedShaderLibrary.Components) { const FString &Name=ShaderLibrary->Library->GetName(); const FString OwnerName=ShaderLibrary->Library->GetOwnerName().ToString(); uint32 Id=ShaderLibrary->Library->GetId(); int32 NumShaders=ShaderLibrary->GetNumShaders(); int32 NumShaderMaps=ShaderLibrary->GetNumResources(); uint32 LibrarySize=ShaderLibrary->GetSizeBytes(); uint32 RHILibrarySize=ShaderLibrary->Library->GetSizeBytes(); uint32 MapsSize=ShaderLibrary->GetShaderMapsSizeBytes(); Out.Logf(TEXT("%s,%s,%s,%x,%d,%d,%.3f,%.3f,%.3f"), *Name, *LogicalName, *OwnerName, Id, NumShaders, NumShaderMaps, LibrarySize/1024.f, RHILibrarySize/1024.f, MapsSize/1024.f); } }; if(FShaderLibrariesCollection *Collection=FShaderLibrariesCollection::Impl) { Out.Logf(TEXT("ShaderLibraryName,LogicalName,OwnerName,Id,NumShaders,NumShaderMaps,LibrarySizeKb,RHILibrarySizeKb,ShaderMapsSizeKb")); Collection->IterateNamedShaderLibrariesSafe(Iter); } else { UE_LOG(LogShaderLibrary, Warning, TEXT("ShaderLibrariesCollection is not available.")); } }) | |||
| ) |
| int32 GPreloadShaderMaps = 1 |
| int32 GShaderCodeLibrarySeparateLoadingCache = 0 |
| FSharedShaderMapResourceExplicitRelease OnSharedShaderMapResourceExplicitRelease |