/** * Default constructor. */ FTargetPlatformManagerModule() : bRestrictFormatsToRuntimeOnly(false), bForceCacheUpdate(true) { GetTargetPlatforms(); GetActiveTargetPlatforms(); GetAudioFormats(); GetTextureFormats(); GetShaderFormats(); bForceCacheUpdate = false; FModuleManager::Get().OnModulesChanged().AddRaw(this, &FTargetPlatformManagerModule::ModulesChangesCallback); }
/** * Main entrypoint, guarded by a try ... except. * This expects 4 parameters: * The image path and name * The working directory path, which has to be unique to the instigating process and thread. * The parent process Id * The thread Id corresponding to this worker */ int32 GuardedMain(int32 argc, TCHAR* argv[]) { GEngineLoop.PreInit(argc, argv, TEXT("-NOPACKAGECACHE -Multiprocess")); #if DEBUG_USING_CONSOLE GLogConsole->Show( true ); #endif #if PLATFORM_WINDOWS //@todo - would be nice to change application name or description to have the ThreadId in it for debugging purposes SetConsoleTitle(argv[3]); #endif // We just enumerate the shader formats here for debugging. const TArray<const class IShaderFormat*>& ShaderFormats = GetShaderFormats(); check(ShaderFormats.Num()); for (int32 Index = 0; Index < ShaderFormats.Num(); Index++) { TArray<FName> OutFormats; ShaderFormats[Index]->GetSupportedFormats(OutFormats); check(OutFormats.Num()); for (int32 InnerIndex = 0; InnerIndex < OutFormats.Num(); InnerIndex++) { UE_LOG(LogShaders, Display, TEXT("Available Shader Format %s"), *OutFormats[InnerIndex].ToString()); } } LastCompileTime = FPlatformTime::Seconds(); FString InCommunicating = argv[6]; #if PLATFORM_SUPPORTS_NAMED_PIPES const bool bThroughFile = GShaderCompileUseXGE || (InCommunicating == FString(TEXT("-communicatethroughfile"))); const bool bThroughNamedPipe = (InCommunicating == FString(TEXT("-communicatethroughnamedpipe"))); const bool bThroughNamedPipeOnce = (InCommunicating == FString(TEXT("-communicatethroughnamedpipeonce"))); #else const bool bThroughFile = true; const bool bThroughNamedPipe = false; const bool bThroughNamedPipeOnce = false; #endif check((int32)bThroughFile + (int32)bThroughNamedPipe + (int32)bThroughNamedPipeOnce == 1); FWorkLoop::ECommunicationMode Mode = bThroughFile ? FWorkLoop::ThroughFile : (bThroughNamedPipeOnce ? FWorkLoop::ThroughNamedPipeOnce : FWorkLoop::ThroughNamedPipe); FWorkLoop WorkLoop(argv[2], argv[1], argv[4], argv[5], Mode); WorkLoop.Loop(); return 0; }
static const IShaderFormat* FindShaderFormat(FName Name) { const TArray<const IShaderFormat*>& ShaderFormats = GetShaderFormats(); for (int32 Index = 0; Index < ShaderFormats.Num(); Index++) { TArray<FName> Formats; ShaderFormats[Index]->GetSupportedFormats(Formats); for (int32 FormatIndex = 0; FormatIndex < Formats.Num(); FormatIndex++) { if (Formats[FormatIndex] == Name) { return ShaderFormats[Index]; } } } return nullptr; }
/** * Main entrypoint, guarded by a try ... except. * This expects 4 parameters: * The image path and name * The working directory path, which has to be unique to the instigating process and thread. * The parent process Id * The thread Id corresponding to this worker */ int32 GuardedMain(int32 argc, TCHAR* argv[]) { GEngineLoop.PreInit(argc, argv, TEXT("-NOPACKAGECACHE -Multiprocess")); #if DEBUG_USING_CONSOLE GLogConsole->Show( true ); #endif #if PLATFORM_WINDOWS //@todo - would be nice to change application name or description to have the ThreadId in it for debugging purposes SetConsoleTitle(argv[3]); #endif // We just enumerate the shader formats here for debugging. const TArray<const class IShaderFormat*>& ShaderFormats = GetShaderFormats(); check(ShaderFormats.Num()); TMap<FString, uint16> FormatVersionMap; for (int32 Index = 0; Index < ShaderFormats.Num(); Index++) { TArray<FName> OutFormats; ShaderFormats[Index]->GetSupportedFormats(OutFormats); check(OutFormats.Num()); for (int32 InnerIndex = 0; InnerIndex < OutFormats.Num(); InnerIndex++) { UE_LOG(LogShaders, Display, TEXT("Available Shader Format %s"), *OutFormats[InnerIndex].ToString()); uint16 Version = ShaderFormats[Index]->GetVersion(OutFormats[InnerIndex]); FormatVersionMap.Add(OutFormats[InnerIndex].ToString(), Version); } } LastCompileTime = FPlatformTime::Seconds(); FWorkLoop::ECommunicationMode Mode = FWorkLoop::ThroughFile; FWorkLoop WorkLoop(argv[2], argv[1], argv[4], argv[5], Mode, FormatVersionMap); WorkLoop.Loop(); return 0; }