W3C layihəsi WebGPU standartını təqdim edir

W3C, göstərmə və hesablama kimi GPU əməliyyatlarını yerinə yetirmək üçün API-ləri, həmçinin GPU-da işləyən proqramların yazılması üçün şeyder dilini müəyyən edən WebGPU və WebGPU Shading Language (WGSL) spesifikasiyalarının ilk layihələrini buraxdı. konseptual olaraq Vulkan, Metal və Direct3D 12 API-lərinə bənzəyir.Spesifikasiyalar Mozilla, Google, Apple və Microsoft mühəndislərinin daxil olduğu işçi qrup tərəfindən hazırlanıb.

Konseptual olaraq, WebGPU WebGL-dən Vulkan qrafika API-nin OpenGL-dən fərqləndiyi kimi fərqlənir, lakin o, xüsusi qrafik API-yə əsaslanmır, lakin Vulkan, Metal və digər proqramlarda 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 veb üçün Vulkan, Metal və ya Direct3D-ə birbaşa daxil olan, 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

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