Hệ thống nén kết cấu phổ quát của Google và Binomial mã nguồn mở

Google và nhị thức mở ra văn bản nguồn Cơ sở chung, một codec để nén kết cấu hiệu quả và định dạng tệp ".basis" phổ biến được liên kết để phân phối kết cấu dựa trên hình ảnh và video. Mã triển khai tham chiếu được viết bằng C++ và cung cấp được cấp phép theo Apache 2.0.

Base Universal bổ sung trước đây được phát hành Hệ thống nén dữ liệu Draco 3D và cố gắng giải quyết vấn đề cung cấp họa tiết cho GPU. Cho đến nay, các nhà phát triển vẫn bị giới hạn trong việc lựa chọn giữa các định dạng cấp thấp đạt được hiệu suất cao nhưng dành riêng cho GPU và chiếm nhiều dung lượng ổ đĩa cũng như các định dạng khác giúp giảm kích thước nhưng không thể cạnh tranh với kết cấu GPU về hiệu suất.

Định dạng Basis Universal cho phép bạn đạt được hiệu suất của kết cấu GPU gốc nhưng cung cấp mức độ nén cao hơn.
Cơ sở là định dạng trung gian cung cấp khả năng chuyển mã nhanh kết cấu GPU sang các định dạng cấp thấp khác nhau để sử dụng trên cả hệ thống máy tính để bàn và thiết bị di động trước khi sử dụng. Hiện được hỗ trợ là các định dạng PVRTC1 (4bpp RGB), BC7 (chế độ 6 RGB), BC1-5, ETC1 và ETC2. Dự kiến ​​sẽ hỗ trợ trong tương lai cho định dạng ASTC (RGB hoặc RGBA) và chế độ 4/5 RGBA cho BC7 và 4bpp RGBA cho PVRTC1.

Hệ thống nén kết cấu phổ quát của Google và Binomial mã nguồn mở

Hoạ tiết ở định dạng cơ bản chiếm ít bộ nhớ video hơn 6-8 lần và yêu cầu truyền lượng dữ liệu gần bằng một nửa so với họa tiết thông thường dựa trên định dạng JPEG và ít hơn 10-25% so với họa tiết ở chế độ RDO. Ví dụ: với kích thước hình ảnh JPEG là 891 KB và kết cấu ETC1 là 1 MB, kích thước dữ liệu ở định dạng Cơ bản là 469 KB ở chế độ chất lượng cao nhất. Khi đặt họa tiết vào bộ nhớ video, họa tiết JPEG và PNG được sử dụng trong các thử nghiệm tiêu tốn 16 MB bộ nhớ, trong khi họa tiết ở
Cơ bản cần 2 MB bộ nhớ để dịch sang BC1, PVRTC1 và ETC1 và 4 MB để dịch sang BC7.

Hệ thống nén kết cấu phổ quát của Google và Binomial mã nguồn mở

Quá trình di chuyển các ứng dụng hiện có sang Basis Universal khá đơn giản. Chỉ cần mã hóa lại kết cấu hoặc hình ảnh hiện có sang định dạng mới bằng tiện ích “basisu” do dự án cung cấp, chọn mức chất lượng cần thiết là đủ. Tiếp theo, trong ứng dụng, trước khi mã kết xuất, bạn cần khởi tạo bộ chuyển mã baseu, bộ chuyển mã này chịu trách nhiệm dịch định dạng trung gian sang định dạng được GPU hiện tại hỗ trợ. Đồng thời, hình ảnh trong toàn bộ chuỗi xử lý vẫn được nén, bao gồm cả việc tải ở dạng nén vào GPU. Thay vì chuyển mã trước toàn bộ hình ảnh, GPU chỉ giải mã có chọn lọc những phần cần thiết của hình ảnh.

Nó hỗ trợ lưu các mảng kết cấu không đồng nhất (khối lập phương), kết cấu thể tích, mảng kết cấu, cấp độ mipmap, chuỗi video hoặc các đoạn kết cấu tùy ý trong một tệp. Ví dụ: có thể đóng gói một loạt hình ảnh trong một tệp để tạo video nhỏ hoặc kết hợp một số họa tiết bằng bảng màu chung cho tất cả hình ảnh và loại bỏ các mẫu hình ảnh điển hình trùng lặp. Việc triển khai bộ mã hóa Basis Universal hỗ trợ mã hóa đa luồng bằng OpenMP. Bộ chuyển mã hiện chỉ hoạt động ở chế độ đơn luồng.

thêm có sẵn Bộ giải mã Basis Universal dành cho trình duyệt, được phân phối ở định dạng WebAssembly, có thể được sử dụng trong các ứng dụng web dựa trên WebGL. Cuối cùng, Google dự định hỗ trợ Basis Universal trong tất cả các trình duyệt chính và quảng bá nó dưới dạng định dạng kết cấu di động cho WebGL và thông số kỹ thuật trong tương lai WebGPU, về mặt khái niệm tương tự như API Vulkan, Metal và Direct3D 12.

Cần lưu ý rằng khả năng nhúng video với quá trình xử lý tiếp theo chỉ ở phía GPU khiến Basis Universal trở thành một giải pháp thú vị để tạo giao diện người dùng động trên WebAssembly và WebGL, có thể hiển thị đồng thời hàng trăm video nhỏ với tải CPU tối thiểu. Cho đến khi có thể sử dụng hướng dẫn SIMD trong WebAssugging với codec truyền thống, mức hiệu suất này vẫn chưa đạt được, do đó, video dựa trên kết cấu có thể được sử dụng ở những khu vực không thể áp dụng video thông thường. Mã với các tối ưu hóa bổ sung cho video hiện đang được chuẩn bị xuất bản, bao gồm khả năng sử dụng Khung chữ I và khung chữ P với sự hỗ trợ đệm thích ứng (CR).

Nguồn: opennet.ru

Thêm một lời nhận xét