WebGPU dəstəyi Chrome-da aktivləşdiriləcək

Google, mayın 113-də buraxılması planlaşdırılan Chrome 2-ə WebGPU qrafika API və WGSL (WebGPU Shading Language) üçün standart dəstəyin daxil edildiyini elan etdi. WebGPU göstərmə və hesablama kimi GPU tərəfi əməliyyatları yerinə yetirmək üçün Vulkan, Metal və Direct3D 12-yə bənzər proqramlaşdırma interfeysi təqdim edir və həmçinin GPU tərəfində işləyən proqramları yazmaq üçün şeyder dilindən istifadə etməyə imkan verir. WebGPU tətbiqi əvvəlcə yalnız ChromeOS, macOS və Windows qurğularında aktivləşdiriləcək. Linux və Android üçün WebGPU dəstəyi daha sonra aktivləşdiriləcək.

Chrome ilə yanaşı, WebGPU üçün eksperimental dəstək 2020-ci ilin aprelindən Firefox-da və 2021-ci ilin noyabrından Safari-də sınaqdan keçirilib. Firefox-da WebGPU-nu aktivləşdirmək üçün siz about:config-də dom.webgpu.enabled və gfx.webgpu.force ilə aktiv olan bayraqları təyin etməlisiniz. Firefox və Safari-də defolt olaraq WebGPU-nu işə salmaq hələ plan yoxdur. Firefox və Chrome üçün hazırlanmış WebGPU tətbiqləri ayrıca kitabxanalar şəklində mövcuddur - Dawn (C++) və wgpu (Rust), onlardan WebGPU dəstəyini tətbiqlərinizə inteqrasiya etmək üçün istifadə edə bilərsiniz. Doğma olaraq WebGL-dən istifadə edən məşhur JavaScript kitabxanalarına WebGPU dəstəyinin əlavə edilməsi istiqamətində də işlər aparılır. Məsələn, Babylon.js-də WebGPU-ya tam dəstək, Three.js, PlayCanvas və TensorFlow.js-də isə qismən dəstək artıq elan edilib.

Konseptual olaraq, WebGPU WebGL-dən Vulkan qrafika API-nin OpenGL-dən fərqləndiyi kimi fərqlənir, lakin WebGPU xüsusi qrafik API-yə əsaslanmır, lakin Vulkan, Metal və digərlərində olan eyni aşağı səviyyəli primitivlərdən istifadə edən universal təbəqədir. Direct3D. WebGPU komandaların GPU-ya təşkili, işlənməsi və ötürülməsi, əlaqəli resursları, yaddaşı, buferləri, faktura obyektlərini və tərtib edilmiş qrafik şeyderləri idarə etmək üzərində aşağı səviyyəli nəzarəti olan JavaScript proqramlarını təmin edir. Bu yanaşma əlavə xərcləri azaltmaqla və GPU ilə işin səmərəliliyini artırmaqla qrafik tətbiqləri üçün daha yüksək performans əldə etməyə imkan verir.

WebGPU İnternet üçün Vulkan, Metal və ya Direct3D-dən birbaşa istifadə edən, lakin xüsusi platformalara bağlı olmayan müstəqil proqramlardan daha pis olmayan mürəkkəb 3D layihələr yaratmağa imkan verir. WebGPU həmçinin WebAssembly-də tərtib etməklə yerli qrafik proqramlarını veb-aktiv formaya köçürmək üçün əlavə imkanlar təqdim edir. 3D qrafika ilə yanaşı, WebGPU həmçinin GPU-ya hesablamaların yüklənməsi və şeyderlərin icrası ilə bağlı imkanları da əhatə edir.

WebGPU-nun əsas xüsusiyyətləri:

  • Resursların ayrıca idarə edilməsi, hazırlıq işləri və əmrlərin GPU-ya ötürülməsi (WebGL-də bir obyekt bir anda hər şeyə cavabdeh idi). Üç ayrı kontekst təqdim olunur: fakturalar və buferlər kimi resursların yaradılması üçün GPUDevice; Göstərmə və hesablama mərhələləri daxil olmaqla, fərdi əmrlərin kodlaşdırılması üçün GPUCommandEncoder; GPUCommandBuffer GPU-da icra üçün növbəyə alınacaq. Nəticə bir və ya bir neçə kətan elementi ilə əlaqəli sahədə göstərilə və ya çıxış olmadan işlənə bilər (məsələn, hesablama tapşırıqlarını yerinə yetirərkən). Mərhələlərin ayrılması resursun yaradılması və hazırlanması əməliyyatlarını müxtəlif mövzularda işləyə bilən müxtəlif işləyicilərə ayırmağı asanlaşdırır.
  • Emal vəziyyətlərinə fərqli yanaşma. WebGPU iki obyekt təklif edir - GPURenderPipeline və GPUComputePipeline, tərtibatçı tərəfindən əvvəlcədən müəyyən edilmiş müxtəlif vəziyyətləri birləşdirməyə imkan verir ki, bu da brauzerə şeyderlərin yenidən tərtib edilməsi kimi əlavə işə resurslar sərf etməməyə imkan verir. Dəstəklənən dövlətlərə aşağıdakılar daxildir: şaderlər, vertex buferi və atribut düzümləri, yapışqan qrup tərtibatları, qarışdırma, dərinlik və nümunələr, və post-render çıxış formatları.
  • Vulkanın resurs qruplaşdırma xüsusiyyətlərinə çox bənzəyən məcburi model. Resursları bir yerdə qruplaşdırmaq üçün WebGPU GPUBindGroup obyektini təmin edir, o, əmrlər yazarkən şeyderlərdə istifadə üçün digər oxşar obyektlərlə əlaqələndirilə bilər. Belə qrupların yaradılması sürücüyə əvvəlcədən lazımi hazırlıq hərəkətlərini yerinə yetirməyə imkan verir və brauzerə çəkiliş zəngləri arasında resurs bağlamalarını daha sürətli dəyişməyə imkan verir. Resurs bağlamalarının tərtibatı GPUBindGroupLayout obyektindən istifadə edərək əvvəlcədən təyin edilə bilər.

Mənbə: opennet.ru

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