W3C memperkenalkan rancangan standar WebGPU

W3C telah merilis draf pertama spesifikasi WebGPU dan WebGPU Shading Language (WGSL), yang mendefinisikan API untuk melakukan operasi GPU seperti rendering dan komputasi, serta bahasa shader untuk menulis program yang berjalan pada GPU. secara konseptual mirip dengan API Vulkan, Metal, dan Direct3D 12. Spesifikasinya disiapkan oleh kelompok kerja yang mencakup para insinyur dari Mozilla, Google, Apple, dan Microsoft.

Secara konseptual, WebGPU berbeda dari WebGL dengan cara yang sama seperti API grafis Vulkan berbeda dari OpenGL, tetapi ini tidak didasarkan pada API grafis tertentu, tetapi merupakan lapisan universal yang menggunakan primitif tingkat rendah yang sama seperti yang ditemukan di Vulkan, Metal dan Langsung3D. WebGPU memberi aplikasi JavaScript kontrol tingkat rendah atas organisasi, pemrosesan dan transmisi perintah ke GPU, pengelolaan sumber daya terkait, memori, buffer, objek tekstur, dan shader grafis yang dikompilasi. Pendekatan ini memungkinkan Anda mencapai kinerja yang lebih tinggi untuk aplikasi grafis dengan mengurangi biaya overhead dan meningkatkan efisiensi kerja dengan GPU.

WebGPU memungkinkan pembuatan proyek 3D kompleks untuk Web yang berfungsi sama baiknya dengan program mandiri yang mengakses langsung Vulkan, Metal, atau Direct3D, tetapi tidak terikat pada platform tertentu. WebGPU juga menyediakan kemampuan tambahan untuk mem-porting program grafis asli ke dalam bentuk yang mendukung web melalui kompilasi ke WebAssembly. Selain grafis 3D, WebGPU juga menyertakan kemampuan yang terkait dengan pembongkaran kalkulasi ke GPU dan mengeksekusi shader.

Fitur utama WebGPU:

  • Manajemen sumber daya yang terpisah, pekerjaan persiapan, dan transmisi perintah ke GPU (di WebGL, satu objek bertanggung jawab atas semuanya sekaligus). Tiga konteks terpisah disediakan: GPUDevice untuk membuat sumber daya seperti tekstur dan buffer; GPUCommandEncoder untuk menyandikan perintah individual, termasuk tahap rendering dan komputasi; GPUCommandBuffer untuk dimasukkan ke dalam antrean untuk dieksekusi pada GPU. Hasilnya dapat dirender di area yang terkait dengan satu atau beberapa elemen kanvas, atau diproses tanpa output (misalnya, saat menjalankan tugas komputasi). Memisahkan tahapan memudahkan untuk memisahkan operasi pembuatan dan persiapan sumber daya ke dalam penangan berbeda yang dapat berjalan di thread berbeda.
  • Pendekatan berbeda terhadap status pemrosesan. WebGPU menawarkan dua objek - GURenderPipeline dan GPUComputePipeline, yang memungkinkan Anda menggabungkan berbagai status yang telah ditentukan sebelumnya oleh pengembang, sehingga browser tidak menyia-nyiakan sumber daya untuk pekerjaan tambahan, seperti mengkompilasi ulang shader. Status yang didukung meliputi: shader, buffer vertex dan tata letak atribut, tata letak grup tempel, pencampuran, kedalaman dan pola, serta format keluaran pasca-render.
  • Model yang mengikat seperti fitur pengelompokan sumber daya Vulkan. Untuk mengelompokkan sumber daya, WebGPU menyediakan objek GPUBindGroup, yang dapat dikaitkan dengan objek serupa lainnya untuk digunakan dalam shader saat menulis perintah. Membuat grup seperti itu memungkinkan pengemudi untuk melakukan tindakan persiapan yang diperlukan terlebih dahulu, dan memungkinkan browser mengubah pengikatan sumber daya di antara panggilan undian dengan lebih cepat. Tata letak pengikatan sumber daya dapat ditentukan sebelumnya menggunakan objek GPUBindGroupLayout.

Sumber: opennet.ru

Tambah komentar