UE-25224 was briefly on the ‘Known Issues’ list for 4.11 before being removed after Preview 6. Reading over the AnswerHub post this bug seems to have been misclassified as a difficult to reproduce and obscure/harmless crash but is actually quite important.
The following steps will crash the Editor in any version from 4.7 onwards (including the latest 4.11 Preview):
- Start a new blank project (Blueprint or C++) with Starter Content
- Go to Edit -> Project Settings, under Platforms -> Windows turn off all ‘Targeted RHIs’ except DirectX 11 (SM5)
- Restart the Editor (important)
- Open any Texture from the Content Browser (e.g. StarterContent -> Textures -> T_Brick_Clay_Beveled_D)
- In the Texture Editor change the Compression setting (Details Panel) to either BC7 or BC6H (aka HDRCompressed)
- Watch the Editor crash and disappear without a trace
Now, BC7 and BC6H only work in DirectX 11+ and choosing them in the Texture Editor won’t actually do anything until you’ve set up ‘Targeted RHIs’ properly (Step 2 above, remember to restart). After proper setup, choosing either one will exercise a little-used code path (in Source/Developer/TextureFormatIntelISPCTexComp/Private/TextureFormatIntelISPCTexComp.cpp) that tries to load a DLL that isn’t included in the Binary distribution:
#if PLATFORM_WINDOWS
#if PLATFORM_64BITS
mDllHandle = FPlatformProcess::GetDllHandle(TEXT("../../../Engine/Binaries/ThirdParty/IntelISPCTexComp/Win64-Release/ispc_texcomp.dll"));
#else //32-bit platform
mDllHandle = FPlatformProcess::GetDllHandle(TEXT("../../../Engine/Binaries/ThirdParty/IntelISPCTexComp/Win32-Release/ispc_texcomp.dll"));
#endif
#endif
Later use of this missing DLL results in a crash. I’ve compiled ispc_texcomp.dll myself (from GitHub - GameTechDev/ISPCTextureCompressor: ISPC Texture Compressor) and put it in the right directory and can confirm that the Editor no longer crashes and that both BC7 and BC6H work as expected.
With all of this in mind it seems to me that BC7/BC6H texture compression has never actually worked in any released version of Unreal Engine 4.
How this bug survived so many QA passes (4.7, 4.8, 4.9, 4.10) boggles my mind!
Please can this be fixed for 4.11?
P.S. Ending on a positive note, thanks for all the hard work that goes into UE4, you guys/girls at Epic don’t get nearly enough praise