Search Issue Tracker

Won't Fix

Won't Fix in 6000.6.X

Votes

0

Found in

6000.0.69f1

6000.3.9f1

6000.4.0b9

6000.5.0a8

6000.6.0a1

Issue ID

UUM-135929

Regression

No

Opaque textures with BC7 compression by default have non-opaque alpha values

Texture

-

Steps to reproduce:
1. Open the attached user's project "BC7_Alpha.zip"
2. Open "Assets/Scenes/SampleScene.unity" and enter Play Mode
3. Capture a screenshot of the Game View
4. Open any image editing software (e.g Gimp)
5. Increase the contrast until you can observe the artifacts (see attached "actual results.png")

Actual results: Parts of the high contrast background image are visible through the opaque blue texture
Expected result: Blue texture is fully opaque

Reproducible with: 6000.0.70f1, 6000.3.10f1, 6000.4.0b11, 6000.5.0a8
Could not test on 2021.2.0a3 due to a crash that is unresolvable (it was fixed with 2021.2.0a4 release)

Environment tested: Windows 10 24H2

  1. Resolution Note:

    Thank you for reporting the artifacts you have encountered.

    What you are observing is a typical consequence of block compression: BC7 is a lossy format, and in some cases the decompressed alpha value can differ by one least significant bit from the original. This is expected behavior and part of how the BC7 format and its encoders trade bit‑exactness in individual channels for overall RGBA quality. If your content relies on strict alpha semantics (such as fully opaque pixels being preserved exactly), there are several options to mitigate this, such as switching back to the ISPC compressor in the Player Settings (which performs better on the provided texture in this regard), using a different compression format, splitting the alpha channel into a separate texture, or adjusting shader logic to account for small alpha deviations.

    Over time, the team will continue improving compression workflows, and as part of that we will look more closely at how fully opaque and fully transparent pixels are handled. For now, the behavior you are seeing is consistent with BC7’s design and current implementation, so we recommend applying one of the above workarounds when exact alpha behavior is required.

  2. Resolution Note (6000.6.X):

    Thank you for reporting the artifacts you have encountered.

    What you are observing is a typical consequence of block compression: BC7 is a lossy format, and in some cases the decompressed alpha value can differ by one least significant bit from the original. This is expected behavior and part of how the BC7 format and its encoders trade bit‑exactness in individual channels for overall RGBA quality. If your content relies on strict alpha semantics (such as fully opaque pixels being preserved exactly), there are several options to mitigate this, such as switching back to the ISPC compressor in the Player Settings (which performs better on the provided texture in this regard), using a different compression format, splitting the alpha channel into a separate texture, or adjusting shader logic to account for small alpha deviations.

    Over time, the team will continue improving compression workflows, and as part of that we will look more closely at how fully opaque and fully transparent pixels are handled. For now, the behavior you are seeing is consistent with BC7’s design and current implementation, so we recommend applying one of the above workarounds when exact alpha behavior is required.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.