Google at Binomial open source Basis Universal texture compression system

Google at Binomial binuksan pinagmulang mga teksto Pangkalahatang Batayan, isang codec para sa mahusay na texture compression at isang nauugnay na unibersal na ".basis" na format ng file para sa pamamahagi ng mga texture na nakabatay sa imahe at video. Ang reference na pagpapatupad ng code ay nakasulat sa C++ at naibigay lisensyado sa ilalim ng Apache 2.0.

Basis Universal complements dati inilathala Draco 3D data compression system at sinusubukang lutasin ang problema sa pagbibigay ng mga texture para sa GPU. Hanggang ngayon, ang mga developer ay limitado sa pagpili sa pagitan ng mababang antas na mga format na nakakamit ng mataas na pagganap ngunit partikular sa GPU at kumukuha ng maraming espasyo sa disk, at iba pang mga format na nakakakuha ng pagbawas ng laki ngunit hindi maaaring makipagkumpitensya sa mga texture ng GPU sa pagganap.

Binibigyang-daan ka ng Basis Universal na format na makamit ang pagganap ng mga native na texture ng GPU, ngunit nagbibigay ng mas mataas na antas ng compression.
Ang Basis ay isang intermediate na format na nagbibigay ng mabilis na transcoding ng mga texture ng GPU sa iba't ibang mababang antas na format para magamit sa parehong mga desktop system at mobile device bago gamitin. Kasalukuyang sinusuportahan ang PVRTC1 (4bpp RGB), BC7 (6 RGB mode), BC1-5, ETC1, at ETC2 na mga format. Inaasahan ang hinaharap na suporta para sa ASTC format (RGB o RGBA) at 4/5 RGBA mode para sa BC7 at 4bpp RGBA para sa PVRTC1.

Google at Binomial open source Basis Universal texture compression system

Ang mga texture sa batayang format ay tumatagal ng 6-8 beses na mas kaunting memorya ng video at nangangailangan ng paglilipat ng humigit-kumulang kalahati ng data kaysa sa karaniwang mga texture batay sa JPEG na format at 10-25% na mas mababa kaysa sa mga texture sa RDO mode. Halimbawa, na may JPEG image size na 891 KB at ETC1 texture na 1 MB, ang laki ng data sa Basis format ay 469 KB sa pinakamataas na kalidad na mode. Kapag naglalagay ng mga texture sa memorya ng video, ang mga JPEG at PNG na texture na ginamit sa mga pagsubok ay gumagamit ng 16 MB ng memorya, habang ang mga texture sa
Ang batayan ay nangangailangan ng 2 MB ng memorya para sa pagsasalin sa BC1, PVRTC1 at ETC1, at 4 MB para sa pagsasalin sa BC7.

Google at Binomial open source Basis Universal texture compression system

Ang proseso ng paglipat ng mga umiiral na application sa Basis Universal ay medyo simple. Ito ay sapat na upang i-recode ang mga umiiral na mga texture o mga imahe sa isang bagong format gamit ang "basisu" utility na ibinigay ng proyekto, pagpili ng kinakailangang antas ng kalidad. Susunod, sa application, bago ang rendering code, kailangan mong simulan ang basisu transcoder, na responsable para sa pagsasalin ng intermediate na format sa format na sinusuportahan ng kasalukuyang GPU. Kasabay nito, ang mga larawan sa buong chain ng pagpoproseso ay nananatiling naka-compress, kabilang ang pag-load sa naka-compress na anyo sa GPU. Sa halip na pre-emptively transcoding ang buong imahe, ang GPU ay piling nagde-decode ng mga kinakailangang bahagi lang ng larawan.

Sinusuportahan nito ang pag-save ng mga heterogenous na texture array (cubemaps), volumetric na texture, texture array, mipmap level, video sequence o arbitrary texture fragment sa isang file. Halimbawa, posibleng mag-pack ng isang serye ng mga larawan sa isang file upang lumikha ng maliliit na video, o pagsamahin ang ilang mga texture gamit ang isang karaniwang palette para sa lahat ng mga imahe at pag-deduplicate ng mga tipikal na template ng larawan. Sinusuportahan ng pagpapatupad ng Basis Universal encoder ang multi-threaded encoding gamit ang OpenMP. Ang transcoder ay kasalukuyang gumagana lamang sa single-threaded mode.

Bukod pa rito magagamit Basis Universal decoder para sa mga browser, na inihatid sa WebAssembly na format, na maaaring magamit sa mga web application na nakabatay sa WebGL. Sa huli, nilalayon ng Google na suportahan ang Basis Universal sa lahat ng pangunahing browser at i-promote ito bilang isang portable na format ng texture para sa WebGL at isang detalye sa hinaharap. WebGPU, sa konseptong katulad ng mga Vulkan, Metal at Direct3D 12 API.

Napansin na ang kakayahang mag-embed ng video kasama ang kasunod na pagproseso nito lamang sa gilid ng GPU ay ginagawang isang kawili-wiling solusyon ang Basis Universal para sa paglikha ng mga dynamic na interface ng gumagamit sa WebAssembly at WebGL, na maaaring sabay na magpakita ng daan-daang maliliit na video na may kaunting pag-load ng CPU. Hanggang sa magagamit ang mga tagubilin ng SIMD sa WebAssembly na may mga tradisyonal na codec, hindi pa makakamit ang antas ng pagganap na ito, kaya maaaring gamitin ang texture-based na video sa mga lugar kung saan hindi naaangkop ang kumbensyonal na video. Ang code na may mga karagdagang pag-optimize para sa video ay kasalukuyang inihahanda para sa paglalathala, kabilang ang kakayahang gamitin I-frame at P-frame na may suporta sa adaptive padding (CR).

Pinagmulan: opennet.ru

Magdagdag ng komento