Làm thế nào trên trái đất bạn có được màu sắc tốt từ 2BPP?


11

Tôi đã xem xét kết cấu PowerVR và đã chạy vào một số kết cấu rõ ràng là 2 bit trên mỗi pixel. Điều này, thẳng thắn, soi sáng tâm trí của tôi. Làm thế nào để một người có được khả năng bảo quản màu tốt một nửa khi bạn chỉ có 4 trạng thái có thể trên mỗi pi trên mỗi pixel? Tôi thích bất kỳ nguồn tài nguyên nào nói về sự nén lại đằng sau một kỳ tích như vậy. Cảm ơn!


Với JPG, bạn có thể có được màu sắc đẹp dưới 1BPP :)
Ivan Kuckir

Câu trả lời:


13

Mã hóa PVRTC 2BPP, như được giới thiệu trong bài viết này chia một hình ảnh thành các khối 8x4-texel và nén từng khối sao cho chỉ có hai màu RGB được lưu trữ cho mỗi khối ba mươi hai texel.

Không ai trong số ba mươi hai texel lưu trữ một màu của riêng mình - mỗi texel chỉ lưu trữ thông tin về cách pha trộn giữa hai màu RGB của khối 8x4-texel của nó.

Nếu hình ảnh nguồn có khối texel 8x4 với cầu vồng gồm 32 màu, thì nén PVRTC 2BPP sẽ làm rất kém việc duy trì chất lượng của nó, bởi vì trong PVRTC 2BPP, mỗi khối tex4 chỉ có hai màu RGB để hòa trộn.


Hấp dẫn! Cảm ơn rât nhiều. Đáng buồn thay, tôi gặp rất nhiều khó khăn khi tải giấy bạn liên kết đến. Có lẽ nó được lưu trữ trên EC2 của Amazon? ;)
Toji

6

Nén họa tiết không nén pixel. Nó nén các khối pixel. Khi một pixel riêng lẻ được tham chiếu, GPU sẽ tính toán khối nào đại diện cho pixel đó. Sau đó, nó xử lý toàn bộ khối để có được màu của pixel đó.

Một ví dụ

Giả sử kích thước khối là 4 pixel pixel trên kết cấu RGB. Không nén, mỗi khối tiêu thụ 4x4x3 = 48byte trong bộ nhớ kết cấu.
Bây giờ thuật toán nén sẽ tính trung bình cho mỗi kênh (RGB) và lưu trữ nó với khối (3 byte). Bây giờ, hãy cho mỗi pixel 2 bit để điều chỉnh mức trung bình để pixel gần với màu gốc hơn. Đó là một 4x4x2x3/8 = 12byte khác .
Tổng số byte được sử dụng bởi máy nén mới được phát minh này là 15 byte cho mỗi khối, tỷ lệ nén là 31,25%.

Máy nén huyền thoại của tôi sử dụng 7,5 bpp. Điều đó không tốt bằng 2 ppptc có thể đạt được, nhưng bây giờ bạn có ý tưởng sơ bộ về cách 2 bbp có thể đạt được.

cập nhật:
Tôi chỉ nhìn vào trang wikipedia cho pvrtc . Có vẻ như pvrtc không sử dụng nén dựa trên khối truyền thống. Dưới đây là bài viết mô tả cách thức hoạt động của khối dựa trên khối và cách pvrtc khác nhau. Đặc biệt lưu ý: Bộ lọc dựa trên khối có thể tạo ra hình ảnh đẹp mắt bằng cách sử dụng 4bpp (không có alpha), trong khi nvrtc có thể làm như vậy với 2bpp.


1

@Toji, trang web trên giấy có một chút tính khí nhưng nó làm việc cho tôi sáng nay. Không, nếu bạn có quyền truy cập vào ACM / SIGGRAPH, thì nó được lưu trữ ở đây . Kỳ lạ thay, nó cũng trên IMG trang web nhà phát triển / PowerVR (đăng ký miễn phí) nhưng tôi dường như không thể tìm thấy phần đúng. :-(

[CẬP NHẬT] Nó vẫn còn trên trang web IMG tại đây [/ UPDATE]

@bmcnet: PVRTC không phá vỡ kết cấu thành các khối như, giả sử, ETC hoặc S3TC. FWIW, tôi đã thử nghiệm với kết cấu dựa trên khối nhưng tôi không thể tìm ra cách đóng gói đủ dữ liệu vào các khối độc lập và vẫn nhận được kết quả tôi muốn. Thay vào đó, đó là một chút hệ thống nén kết cấu 'toàn cầu'. Nó có 2 hình ảnh có độ phân giải thấp, tương đương với độ phân giải của mục tiêu, và sau đó trộn chúng lại với nhau trên cơ sở texel-by-texel.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.