BC7/BC6H Texture compression is broken

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):

  1. Start a new blank project (Blueprint or C++) with Starter Content
  2. Go to Edit -> Project Settings, under Platforms -> Windows turn off all ‘Targeted RHIs’ except DirectX 11 (SM5)
  3. Restart the Editor (important)
  4. Open any Texture from the Content Browser (e.g. StarterContent -> Textures -> T_Brick_Clay_Beveled_D)
  5. In the Texture Editor change the Compression setting (Details Panel) to either BC7 or BC6H (aka HDRCompressed)
  6. Watch the Editor crash and disappear without a trace :confused:

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 :slight_smile:

Can you also post this in 4.11 preview release thread please?

And welcome to the forums!

Will do, thanks Jacky!

AND… <smiles> could you post in AnswerHub? That’s what Epic has told us to do in terms of reporting bugs… See 4.11 thread from Epic staff… I guess its much easier to track. By the way, excellent troubleshooting to figure out the issue. cya…

teak

Done, thanks teak!

Hi guys, I posted this comment on AnswerHub:

"As far as I can see, this problem is because ispc_texcomp.dll is missing. I’m not sure how, but to me it looks like it should be part of 4.11 (at least the file is there for 4.11 in Perforce)? It’s also in 4.10 and 4.9, etc.

(And yes, BC6H and BC7 works fine for me on my machine…)

Though perhaps it’s that file is somehow filtered out when it’s released publicly…?"

And yes, AnswerHub is definitely preferred when reporting issues. :slight_smile:

Hi guys. This issue has now been fixed and should be included in the final UE 4.11 release (CL #2920749).

The problem was indeed that ispc_texcomp.dll was missing in UE4 binary release builds. This file is included on github, though, so you can also get it from there.

Awesome, thanks for looking into this and fixing it so quickly!