Οι νυχτερινές εκδόσεις του Firefox περιλαμβάνουν πλέον υποστήριξη WebGPU

В Νύχτα Κατασκευάζει ο Firefox εμφανίστηκε υποστήριξη προδιαγραφών WebGPU, το οποίο παρέχει μια διεπαφή προγραμματισμού για επεξεργασία γραφικών 3D και υπολογιστές από την πλευρά της GPU, εννοιολογικά παρόμοια με το API Vulkan, Μέταλλο и Direct3D 12. Η προδιαγραφή αναπτύσσεται από τη Mozilla, την Google, την Apple, τη Microsoft και μέλη της κοινότητας ομάδα εργασίας, που δημιουργήθηκε από τον οργανισμό W3C.

Ο βασικός στόχος του WebGPU είναι να παρέχει μια ασφαλή, φιλική προς το χρήστη, φορητή και υψηλής απόδοσης διεπαφή προγραμματισμού για την πλατφόρμα Ιστού για να αξιοποιήσει τις τεχνολογίες και τις δυνατότητες τρισδιάστατων γραφικών που παρέχονται από σύγχρονα API γραφικών συστημάτων, όπως το Direct3D 3 σε Windows, Metal σε macOS και Vulkan στο Linux. Εννοιολογικά, το WebGPU διαφέρει από το WebGL με τον ίδιο τρόπο που το Vulkan διαφέρει από το OpenGL και ταυτόχρονα δεν βασίζεται σε ένα συγκεκριμένο API γραφικών, αλλά είναι ένα καθολικό επίπεδο που χρησιμοποιεί γενικά τα ίδια αρχικά χαμηλού επιπέδου που βρίσκονται στο Vulkan, Μέταλλο και Direct12D.

Το WebGPU παρέχει σε εφαρμογές JavaScript έλεγχο χαμηλότερου επιπέδου σχετικά με την οργάνωση, την επεξεργασία και τη μετάδοση εντολών στην GPU, τη διαχείριση των σχετικών πόρων, της μνήμης, των buffer, των αντικειμένων υφής και των μεταγλωττισμένων γραφικών shaders. Αυτή η προσέγγιση σάς επιτρέπει να επιτύχετε υψηλότερη απόδοση για εφαρμογές γραφικών μειώνοντας τα γενικά έξοδα και αυξάνοντας την αποτελεσματικότητα της εργασίας με την GPU.

Το WebGPU καθιστά δυνατή τη δημιουργία ολοκληρωμένων σύνθετων τρισδιάστατων έργων για τον Ιστό που δεν λειτουργούν χειρότερα από αυτόνομα προγράμματα που έχουν άμεση πρόσβαση σε Vulkan, Metal ή Direct3D, αλλά δεν συνδέονται με συγκεκριμένες πλατφόρμες. Το WebGPU παρέχει επίσης πρόσθετες δυνατότητες κατά τη μεταφορά εγγενών προγραμμάτων γραφικών σε μια φόρμα με δυνατότητα web μέσω της χρήσης της τεχνολογίας WebAssembly. Εκτός από τα τρισδιάστατα γραφικά, το WebGPU καλύπτει επίσης δυνατότητες που σχετίζονται με τη μεταφόρτωση υπολογισμών στη GPU και την υποστήριξη ανάπτυξης shader. Shaders μπορώ να δημιουργηθεί στη γλώσσα σκίασης WebGPU ή να καθοριστεί στην ενδιάμεση μορφή SPIR-V και στη συνέχεια να μεταφραστεί σε γλώσσες shader που υποστηρίζονται από τα τρέχοντα προγράμματα οδήγησης.

Το WebGPU χρησιμοποιεί ξεχωριστή διαχείριση πόρων, προπαρασκευαστικές εργασίες και μετάδοση εντολών στην GPU (στο WebGL, ένα αντικείμενο ήταν υπεύθυνο για τα πάντα ταυτόχρονα). Παρέχονται τρία ξεχωριστά πλαίσια:
Συσκευή GPU για τη δημιουργία πόρων όπως υφές και buffer. GPUCommandEncoder για την κωδικοποίηση μεμονωμένων εντολών, συμπεριλαμβανομένων των σταδίων απόδοσης και υπολογισμού. Το GPUCommandBuffer θα τεθεί σε ουρά για εκτέλεση στη GPU. Το αποτέλεσμα μπορεί να αποδοθεί σε μια περιοχή που σχετίζεται με ένα ή περισσότερα στοιχεία καμβά ή να υποβληθεί σε επεξεργασία χωρίς έξοδο (για παράδειγμα, κατά την εκτέλεση εργασιών υπολογισμού). Ο διαχωρισμός των σταδίων διευκολύνει τον διαχωρισμό των λειτουργιών δημιουργίας και προετοιμασίας πόρων σε διαφορετικούς χειριστές που μπορούν να εκτελούνται σε διαφορετικά νήματα.

Η δεύτερη διαφορά μεταξύ WebGPU και WebGL είναι μια διαφορετική προσέγγιση στον χειρισμό των καταστάσεων. Το WebGPU προσφέρει δύο αντικείμενα - GPURenderPipeline και GPUComputePipeline, τα οποία σας επιτρέπουν να συνδυάσετε διάφορες καταστάσεις προκαθορισμένες από τον προγραμματιστή, κάτι που επιτρέπει στο πρόγραμμα περιήγησης να μην σπαταλά πόρους σε πρόσθετες εργασίες, όπως η εκ νέου μεταγλώττιση των shaders. Οι υποστηριζόμενες καταστάσεις περιλαμβάνουν: shaders, διατάξεις buffer και χαρακτηριστικών κορυφών, διατάξεις για κολλώδεις ομάδες, ανάμειξη, βάθος και μοτίβα και μορφές εξόδου μετά την απόδοση.

Το τρίτο χαρακτηριστικό του WebGPU ονομάζεται, σε μεγάλο βαθμό, μοντέλο σύνδεσης
θυμίζει τα εργαλεία ομαδοποίησης πόρων που υπάρχουν στο Vulkan.
Για να ομαδοποιήσει τους πόρους μαζί, το WebGPU παρέχει ένα αντικείμενο GPUBindGroup, το οποίο μπορεί να συσχετιστεί με άλλα παρόμοια αντικείμενα για χρήση σε shaders κατά τη σύνταξη εντολών. Η δημιουργία τέτοιων ομάδων επιτρέπει στο πρόγραμμα οδήγησης να εκτελεί τις απαραίτητες προπαρασκευαστικές ενέργειες εκ των προτέρων και επιτρέπει στο πρόγραμμα περιήγησης να αλλάζει τις συνδέσεις πόρων μεταξύ των κλήσεων κλήσεων πολύ πιο γρήγορα. Η διάταξη των δεσμεύσεων πόρων μπορεί να προκαθοριστεί χρησιμοποιώντας το αντικείμενο GPUBindGroupLayout.

Οι νυχτερινές εκδόσεις του Firefox περιλαμβάνουν πλέον υποστήριξη WebGPU

Στον Firefox, για να ενεργοποιήσετε το WebGPU στο about:config, υπάρχει μια ρύθμιση "dom.webgpu.enabled". Η απόδοση CanvasContext απαιτεί επίσης την ενεργοποίηση της σύνθεσης WebRender ("gfx.webrender.all" στο about:config), γραμμένο σε Rust και ανάθεση λειτουργιών απόδοσης περιεχομένου σελίδας στην GPU. Η υλοποίηση του WebGPU βασίζεται στον κώδικα έργου
wgpu, γραμμένο σε Rust και με δυνατότητα εκτέλεσης πάνω από τα DX12, Vulkan και Metal API σε Linux, Android, Windows και macOS (η υποστήριξη DX11 και OpenGL ES 3.0 βρίσκεται επίσης σε εξέλιξη). Παράλληλα, η Google αναπτύσσει μια άλλη υλοποίηση, η οποία είναι διαθέσιμη στο Κλαδί καναρίνι Chromium και ενεργοποιείται χρησιμοποιώντας τη σημαία "chrome://flags/#enable-unsafe-webgpu", αλλά μέχρι στιγμής λειτουργεί μόνο σε macOS και Windows.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο