Tôi nghi ngờ nó thực sự có thể lật BC6-7 khối với công việc ít hơn nhiều so với một giải nén đầy đủ và nén lại, nhưng nó vẫn không có bữa ăn ngoài trời và nhiều phức tạp hơn lật BC1-5 khối.
Trước hết, BC6-7 có nhiều chế độ có thể được chọn cho mỗi khối. Các chế độ có bố cục nhị phân hoàn toàn khác nhau, do đó bạn sẽ phải viết một thói quen lật khác nhau cho mỗi chế độ (có ~ 20 trong số chúng hoàn toàn, IIRC).
Một khó khăn khác là các chế độ được phân vùng, trong đó các pixel trong khối được phân vùng thành 2 hoặc 3 tập hợp con, mỗi pixel có phân đoạn dòng RGB riêng. Phân vùng phải được chọn từ một bộ được xác định trước; những cái cho BC6 có thể được nhìn thấy ở đây . Vấn đề là bộ phân vùng này không đối xứng dưới các lật dọc. Tuy nhiên, tôi nghi ngờ nó là đối xứng dưới sự kết hợp của một số lật dọc và hoán đổi hai tập con. Ví dụ: nhìn vào phân vùng # 22 (hàng thứ 6, cột thứ 3) tại liên kết đó, không có phiên bản lật theo chiều dọc của bảng trong bảng, nhưng nếu bạn lật theo chiều dọc vàtrao đổi 0 và 1, bạn kết thúc với phân vùng # 9 (hàng thứ 3, cột thứ 2). Tôi chưa xác minh rằng mọi phân vùng có thể được lật theo cách này, tôi cũng chưa kiểm tra các phân vùng cho BC7 (cũng bao gồm các phân vùng có 3 tập con).
Ngay cả khi điều đó hoạt động, bạn vẫn không ở nhà miễn phí. Trong BC1-5, thứ tự của hai điểm cuối của phân đoạn dòng RGB đã được sử dụng để chuyển đổi chế độ, nhưng trong BC6-7, thứ tự các điểm cuối được chọn để sửa một bit của các chỉ số mỗi pixel trong mỗi tập hợp phân vùng. Do đó, nếu bạn thay đổi phân vùng xung quanh, bạn cũng có thể phải trao đổi thứ tự các điểm cuối.
Và cuối cùng nhưng không kém phần quan trọng, trong BC6-7, các điểm cuối thường được nén delta (tức là một điểm cuối được lưu trữ ở độ chính xác hoàn toàn và các điểm cuối khác được lưu trữ dưới dạng các vùng đồng bằng có độ chính xác thấp hơn từ nó). Hoán đổi các tập hợp phân vùng và thứ tự điểm cuối sẽ chuyển đổi điểm cuối nào là độ chính xác cao, do đó bạn sẽ phải xáo trộn các bit có độ chính xác thấp xung quanh và phủ nhận một số vùng đồng bằng.
Nói chung, có vẻ như không có bất kỳ showstopper cơ bản nào (mặc dù tôi chưa thực sự viết mã), nhưng chắc chắn sẽ có rất nhiều công việc để lật hoặc xoay các định dạng này. Nếu có thể, tôi khuyên bạn nên lật hình ảnh trong đường ống nghệ thuật của bạn trước khi chúng bị nén.
(BTW, thông số kỹ thuật đầy đủ nhất của BC6-7 tôi đã tìm thấy là thông số ARB lòngure_compression_bptc ; Tôi cũng đã viết một bài đăng blog về các định dạng BCn một thời gian trước.)