Skip to content

BC1-3 Compressor single color optimization #223

Open

Description

The libsquish library adds a special-case block compression for DXT when all 16 source pixels in the block are the same color.

For this case, it uses a table-based scheme to pick the optimal encoding.

NVTT adopted the same solution.

Activity

  1. walbourn commented on Mar 4, 2021

    @walbourn
    CollaboratorAuthor

    Algorithm discussed in this blog

  2. walbourn commented on Jun 9, 2021

    @walbourn
    CollaboratorAuthor

    Q: What do to about dithering with the single-color blocks?

  3. Hancapo commented on Aug 12, 2024

    @Hancapo

    Any news about this? I'm trying to batch convert a bunch of images using a C# wrapper of this library but I'm getting the typical green-ish artifacts in every DXT1/DXT5, there's a workaround that can be done through code or something like that?

  4. walbourn commented on Aug 12, 2024

    @walbourn
    CollaboratorAuthor

    This issue is specifically for compressing 4x4 blocks that all contain exactly the same color. BC1-3 (a.k.a. DXT1-5) all use 5:6:5 for RGB so that sometimes can make the result be a little green tinted depending on the input values.

    By default the DXT1-5 compressor is using a 'luminance perceptual' weighting for the colors. You could try TEX_COMPRESS_UNIFORM (which for texconv is -bc u switch). It could also be the result of SRGB vs. Linear color space mix ups.

  5. Hancapo commented on Aug 13, 2024

    @Hancapo

    Using TEX_COMPRESS_FLAGS.UNIFORM doesn't change anything, getting the same artifacts as always.
    I tried using almost every combination of WIC_FLAGS and TEX_COMPRESS_FLAGS
    PD: The wrapper is using the March 2024 version of the lib.

    ScratchImage image = TexHelper.Instance.LoadFromWICFile("Original.png", WIC_FLAGS.NONE);
    ScratchImage compressed = image.Compress(DXGI_FORMAT.BC1_UNORM, TEX_COMPRESS_FLAGS.UNIFORM, 0.5f);
    compressed.SaveToDDSFile(DDS_FLAGS.NONE, "Compressed.dds");
  6. walbourn commented on Aug 13, 2024

    @walbourn
    CollaboratorAuthor

    Can you attach the original.png?

  7. Hancapo commented on Aug 13, 2024

    @Hancapo

    Sure:
    Image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

bcRelated to DirectX Block Compressionenhancement

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions