Google at Binomial
Basis Universal complements dati
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.
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.
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
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
Pinagmulan: opennet.ru