Mozilla, Firefox-da WebGPU API və WGSL (WebGPU Shading Language) dəstəyini aktivləşdirmək qərarına gəldi. Platforma üçün Windows WebGPU dəstəyi, 22 iyulda planlaşdırılan Firefox 141-də standart olaraq aktivləşdiriləcək. Daha sonra WebGPU dəstəyinin növbəti aylar üçün versiyalarda aktivləşdirilməsi planlaşdırılır: Linux и macOSvə bir müddət sonra platforma üçün versiyada AndroidWebGPU-nu əl ilə aktivləşdirmək üçün about:config səhifəsindəki "dom.webgpu.enabled" və "gfx.webrender.all" parametrlərindən istifadə edə bilərsiniz.
Chrome-da WebGPU dəstəyi defolt olaraq 113-cü ilin may ayında buraxılmış 2023-cü versiyada təklif edilib. Safari-də WebGPU dəstəyinin defolt olaraq bu payızda aktivləşdirilməsi planlaşdırılır (eksperimental dəstək 2021-ci ilin noyabrından mövcuddur). Firefox-da eksperimental WebGPU dəstəyi 2020-ci ildən mövcuddur, lakin yalnız Firefox-un gecə qurulmalarında defolt olaraq aktiv edilib. Firefox-un WebGPU tətbiqi Rust dilində yazılmış və Direct3D 12, Vulkan, OpenGL və Metal qrafika API-lərinin üzərində işləyə bilən WGPU layihə koduna əsaslanır.
WebGPU, GPU tərəfində əməliyyatları yerinə yetirmək üçün Vulkan, Metal və Direct3D 12 ilə oxşar API təmin edir. 3D qrafika ilə yanaşı, WebGPU həmçinin hesablamaların GPU tərəfinə yüklənməsi və şeyderlərin icrası ilə bağlı imkanları əhatə edir. Konseptual olaraq, WebGPU köhnə WebGL spesifikasiyasından Vulkan qrafika API-nin OpenGL-dən fərqləndiyi kimi fərqlənir. Eyni zamanda, WebGPU xüsusi qrafik API-yə əsaslanmır, lakin Vulkan, Metal və Direct3D-də mövcud olan eyni aşağı səviyyəli primitivlərdən istifadə edən universal təbəqədir.
WebGPU JavaScript proqramlarına əmrlərin GPU-ya təşkili, işlənməsi və ötürülməsinə nəzarət etməyə və əlaqəli resursları, yaddaşı, buferləri, faktura obyektlərini və tərtib edilmiş qrafik şeyderləri idarə etməyə imkan verir. Bu yanaşma yerüstü xərcləri azaltmaqla və GPU ilə işləmək səmərəliliyini artırmaqla qrafik proqramların daha yüksək performansını təmin edir.
WebGPU ilə siz Vulkan, Metal və ya Direct3D-dən birbaşa istifadə edən müstəqil proqramlarla yanaşı, yerinə yetirən platforma-aqnostik, mürəkkəb 3D layihələr yarada bilərsiniz. WebGPU həmçinin WebAssembly-ə tərtib sayəsində yerli qrafik proqramlarını brauzerlərdə işləyə bilən forma köçürmək üçün əlavə imkanlar təqdim edir.
WebGPU-nun əsas xüsusiyyətləri və WebGL-dən fərqlər:
- 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
