Firefox-ի գիշերային շինություններն այժմ ներառում են WebGPU աջակցություն

В գիշեր Firefox-ը կառուցում է հայտնվեց ճշգրտման աջակցություն WebGPU, որն ապահովում է ծրագրավորման ինտերֆեյս 3D գրաֆիկայի մշակման և GPU-ի կողմից հաշվելու համար, հայեցակարգային առումով նման է API-ին Վուլկան, մետաղ и Direct3D 12. Հստակեցումը մշակվում է Mozilla-ի, Google-ի, Apple-ի, Microsoft-ի և համայնքի անդամների կողմից աշխատանքային խումբստեղծված W3C-ի կողմից:

WebGPU-ի հիմնական նպատակն է ապահովել անվտանգ, օգտագործողի համար հարմար, շարժական և բարձր արդյունավետությամբ ծրագրավորման ինտերֆեյս վեբ հարթակի համար՝ օգտագործելու 3D գրաֆիկայի տեխնոլոգիաները և հնարավորությունները, որոնք տրամադրվում են ժամանակակից համակարգային գրաֆիկական API-ներով, ինչպիսիք են Direct3D 12-ը Windows-ում, Metal-ում: macOS-ում, իսկ Vulkan-ը՝ Linux-ում: Հայեցակարգային առումով WebGPU-ն տարբերվում է WebGL-ից այնպես, ինչպես Vulkan-ը տարբերվում է OpenGL-ից, և միևնույն ժամանակ այն հիմնված չէ կոնկրետ գրաֆիկական API-ի վրա, այլ ունիվերսալ շերտ է, որը սովորաբար օգտագործում է նույն ցածր մակարդակի պարզունակները, որոնք հայտնաբերված են Vulkan-ում: Մետաղ և Direct3D:

WebGPU-ն JavaScript հավելվածներին տրամադրում է ավելի ցածր մակարդակի հսկողություն հրամանների կազմակերպման, մշակման և GPU-ին փոխանցելու, հարակից ռեսուրսների, հիշողության, բուֆերների, հյուսվածքների օբյեկտների և կոմպիլացված գրաֆիկայի ստվերների կառավարման վրա: Այս մոտեցումը թույլ է տալիս ավելի բարձր կատարողականություն ապահովել գրաֆիկական հավելվածների համար՝ նվազեցնելով ընդհանուր ծախսերը և բարձրացնելով GPU-ի հետ աշխատելու արդյունավետությունը:

WebGPU-ն հնարավորություն է տալիս ստեղծել վեբի համար լիարժեք բարդ 3D նախագծեր, որոնք աշխատում են ոչ ավելի վատ, քան ինքնուրույն ծրագրերը, որոնք ուղղակիորեն մուտք են գործում Vulkan, Metal կամ Direct3D, բայց կապված չեն կոնկրետ հարթակների հետ: WebGPU-ն նաև լրացուցիչ հնարավորություններ է տալիս բնիկ գրաֆիկական ծրագրերը WebAssembly տեխնոլոգիայի օգտագործման միջոցով վեբ միացված ձևի մեջ տեղափոխելիս: Ի լրումն 3D գրաֆիկայի, WebGPU-ն ներառում է նաև հնարավորություններ՝ կապված հաշվարկները GPU-ում բեռնաթափելու և ստվերների զարգացմանն աջակցելու հետ: Շեյդերներ կարող ստեղծվի WebGPU Shading Language-ով կամ նշվի միջանկյալ SPIR-V ձևաչափով, այնուհետև թարգմանվի ներկայիս դրայվերների կողմից աջակցվող ստվերային լեզուներով:

WebGPU-ն օգտագործում է ռեսուրսների առանձին կառավարում, նախապատրաստական ​​աշխատանք և հրամանների փոխանցում GPU-ին (WebGL-ում ամեն ինչի համար միանգամից մեկ օբյեկտ էր պատասխանատու): Տրվում են երեք առանձին համատեքստեր.
GPU Սարք ռեսուրսներ ստեղծելու համար, ինչպիսիք են հյուսվածքները և բուֆերները; GPUCommandEncoder՝ առանձին հրամանների կոդավորման համար, ներառյալ արտապատկերման և հաշվարկման փուլերը. GPUCommandBuffer-ը պետք է հերթագրվի GPU-ում կատարման համար: Արդյունքը կարող է ներկայացվել մեկ կամ մի քանի կտավի տարրերի հետ կապված տարածքում կամ մշակվել առանց ելքի (օրինակ՝ հաշվողական առաջադրանքներ կատարելիս): Փուլերի առանձնացումը հեշտացնում է ռեսուրսների ստեղծման և պատրաստման գործողությունները տարանջատել տարբեր մշակողների մեջ, որոնք կարող են աշխատել տարբեր թելերի վրա:

WebGPU-ի և WebGL-ի միջև երկրորդ տարբերությունը վիճակների կառավարման այլ մոտեցում է: WebGPU-ն առաջարկում է երկու օբյեկտ՝ GPURenderPipeline և GPUComputePipeline, որոնք թույլ են տալիս համատեղել ծրագրավորողի կողմից նախապես սահմանված տարբեր վիճակներ, ինչը թույլ է տալիս զննարկիչին չվատնել ռեսուրսները լրացուցիչ աշխատանքի վրա, օրինակ՝ shader-ների վերակոմպիլյացիա: Աջակցվող վիճակները ներառում են՝ ստվերներ, գագաթային բուֆեր և հատկանիշի դասավորություններ, կպչուն խմբերի դասավորություններ, խառնուրդներ, խորություն և նախշեր և հետարտադրման ելքային ձևաչափեր:

WebGPU-ի երրորդ առանձնահատկությունը հիմնականում կոչվում է պարտադիր մոդել
հիշեցնում է Vulkan-ում առկա ռեսուրսների խմբավորման գործիքները:
Ռեսուրսները միասին խմբավորելու համար WebGPU-ն տրամադրում է GPUBindGroup օբյեկտ, որը կարող է կապված լինել այլ նմանատիպ օբյեկտների հետ՝ հրամաններ գրելիս օգտագործելու համար շեյդերներում: Նման խմբերի ստեղծումը վարորդին թույլ է տալիս նախօրոք կատարել անհրաժեշտ նախապատրաստական ​​գործողությունները, և զննարկիչին թույլ է տալիս շատ ավելի արագ փոխել ռեսուրսների կապերը խաղարկության զանգերի միջև: Ռեսուրսների կապերի դասավորությունը կարող է նախապես սահմանվել GPUBindGroupLayout օբյեկտի միջոցով:

Firefox-ի գիշերային շինություններն այժմ ներառում են WebGPU աջակցություն

Firefox-ում «dom.webgpu.enabled» պարամետրը տրամադրվում է about:config-ում՝ WebGPU-ն միացնելու համար: CanvasContext-ի մատուցման համար անհրաժեշտ է նաև միացնել կոմպոզիցիան Մերձավոր («gfx.webrender.all» about:config-ում), գրված է Rust-ով և էջի բովանդակության արտապատկերման գործողությունները GPU-ին փոխանցելով: WebGPU-ի իրականացումը հիմնված է նախագծի կոդի վրա
wgpu, գրված է Rust-ով և կարող է աշխատել Linux-ի, Android-ի, Windows-ի և macOS-ի DX12, Vulkan և Metal API-ների վերևում (DX11 և OpenGL ES 3.0 աջակցությունը նույնպես մշակման փուլում է): Զուգահեռաբար Google-ը մշակում է ևս մեկ ներդրում, որը հասանելի է Կանարյան ճյուղ Chromium-ը և միացված է «chrome://flags/#enable-unsafe-webgpu» դրոշի միջոցով, բայց առայժմ աշխատում է միայն macOS-ի և Windows-ի վրա:

Source: opennet.ru

Добавить комментарий