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
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
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Build fails when building a project containing an 18+ dimension array with IL2CPP
- [Android][Sentis] Human poses are not detected when using the BlazePose model
- Sprite Editor Outline Tool Overlay is not displayed when no Sprite is selected
- “No method with RuntimeInitializeOnLoadMethod attribute” warning from ReadmeEditor.cs is thrown after installing Project Auditor Rules
- Projection matrix is altered when using RasterCommandBuffer.ClearRenderTarget on DX12 and Metal
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.
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.