Announcement

Collapse
No announcement yet.

BC7/BC6H Texture compression is broken

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

    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

    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:

    Code:
    #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 https://github.com/GameTechDev/ISPCTextureCompressor) 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

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

    And welcome to the forums!
    FREE VR Drum Kit Project
    FREE Color LUT Collection
    FREE Physics Driven Spacecraft Project
    FREE GTA Style Vehicle Interaction
    Dynamic DoF(Depth of Field)
    Camera Crossfade

    Comment


      #3
      Will do, thanks Jacky!

      Comment


        #4
        Originally posted by Blink View Post
        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

        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:

        Code:
        #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 https://github.com/GameTechDev/ISPCTextureCompressor) 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
        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
        "A little bit of nonsense now and then is cherished by the wisest men..."
        -- Willy Wonka

        Smooth Zoom Camera Plugin for 4.22 here.

        Comment


          #5
          Done, thanks teak!

          Comment


            #6
            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.

            Comment


              #7
              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.

              Comment


                #8
                Originally posted by [EPIC] Smedis View Post
                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!

                Comment

                Working...
                X