Η υποστήριξη WebGPU θα είναι ενεργοποιημένη στο Chrome

Η Google ανακοίνωσε την προεπιλεγμένη υποστήριξη για το API γραφικών WebGPU και τη γλώσσα σκίασης WebGPU (WGSL) στο Chrome 113, το οποίο έχει προγραμματιστεί να κυκλοφορήσει στις 2 Μαΐου. Το WebGPU παρέχει ένα API παρόμοιο με το Vulkan, το Metal και το Direct3D 12 για την εκτέλεση λειτουργιών από την πλευρά της GPU, όπως η απόδοση και ο υπολογισμός, και σας επιτρέπει επίσης να χρησιμοποιείτε μια γλώσσα shader για τη σύνταξη προγραμμάτων στην πλευρά της GPU. Η εφαρμογή WebGPU θα ενεργοποιηθεί αρχικά μόνο σε εκδόσεις για ChromeOS, macOS και Windows. Για Linux και Android, η υποστήριξη WebGPU θα ενεργοποιηθεί αργότερα.

Εκτός από τον Chrome, η πειραματική υποστήριξη WebGPU έχει δοκιμαστεί από τον Απρίλιο του 2020 στον Firefox και από τον Νοέμβριο του 2021 στο Safari. Για να ενεργοποιήσετε το WebGPU στον Firefox, ορίστε τις σημαίες dom.webgpu.enabled και gfx.webgpu.force enabled στο about:config. Δεν υπάρχουν ακόμη σχέδια ενεργοποίησης του WebGPU από προεπιλογή στον Firefox και στο Safari. Οι υλοποιήσεις WebGPU που αναπτύχθηκαν για τον Firefox και το Chrome είναι διαθέσιμες με τη μορφή ξεχωριστών βιβλιοθηκών - Dawn (C++) και wgpu (Rust), τις οποίες μπορείτε να χρησιμοποιήσετε για να ενσωματώσετε την υποστήριξη WebGPU στις εφαρμογές σας. Γίνονται επίσης εργασίες για την προσθήκη υποστήριξης WebGPU σε δημοφιλείς βιβλιοθήκες JavaScript εγγενώς χρησιμοποιώντας WebGL. Για παράδειγμα, η πλήρης υποστήριξη για το WebGPU έχει ήδη ανακοινωθεί στο Babylon.js και μερική υποστήριξη στα Three.js, PlayCanvas και TensorFlow.js.

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

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

Βασικά χαρακτηριστικά του WebGPU:

  • Ξεχωριστή διαχείριση πόρων, προπαρασκευαστικές εργασίες και μετάδοση εντολών στην GPU (στο WebGL, ένα αντικείμενο ήταν υπεύθυνο για όλα ταυτόχρονα). Παρέχονται τρία ξεχωριστά περιβάλλοντα: Συσκευή GPU για τη δημιουργία πόρων όπως υφές και buffer. GPUCommandEncoder για την κωδικοποίηση μεμονωμένων εντολών, συμπεριλαμβανομένων των σταδίων απόδοσης και υπολογισμού. GPUCommandBuffer για μετάβαση στην ουρά εκτέλεσης της GPU. Το αποτέλεσμα μπορεί να αποδοθεί σε μια περιοχή που σχετίζεται με ένα ή περισσότερα στοιχεία καμβά ή να υποβληθεί σε επεξεργασία χωρίς έξοδο (για παράδειγμα, κατά την εκτέλεση υπολογιστικών εργασιών). Ο διαχωρισμός των σταδίων διευκολύνει τον διαχωρισμό των λειτουργιών δημιουργίας και παροχής πόρων σε διαφορετικούς χειριστές που μπορούν να εκτελούνται σε διαφορετικά νήματα.
  • Μια διαφορετική προσέγγιση στο χειρισμό των κρατών. Το WebGPU παρέχει δύο αντικείμενα - το GPURenderPipeline και το GPUComputePipeline, τα οποία σας επιτρέπουν να συνδυάσετε διαφορετικές καταστάσεις προκαθορισμένες από τον προγραμματιστή, γεγονός που καθιστά δυνατό στο πρόγραμμα περιήγησης να μην σπαταλά πόρους σε πρόσθετες εργασίες, όπως η εκ νέου μεταγλώττιση των shaders. Οι υποστηριζόμενες καταστάσεις περιλαμβάνουν: shaders, διατάξεις buffer και χαρακτηριστικών κορυφών, διατάξεις για κολλώδεις ομάδες, ανάμειξη, βάθος και μοτίβα, μορφές εξόδου μετά την απόδοση.
  • Ένα δεσμευτικό μοντέλο, όπως τα εργαλεία ομαδοποίησης πόρων του Vulkan. Για να ομαδοποιήσει τους πόρους σε ομάδες, το WebGPU παρέχει ένα αντικείμενο GPUBindGroup, το οποίο, τη στιγμή της εγγραφής των εντολών, μπορεί να συσχετιστεί με άλλα παρόμοια αντικείμενα για χρήση σε shaders. Η δημιουργία τέτοιων ομάδων επιτρέπει στο πρόγραμμα οδήγησης να εκτελεί τις απαραίτητες προπαρασκευαστικές ενέργειες εκ των προτέρων και επιτρέπει στο πρόγραμμα περιήγησης να αλλάζει τις συνδέσεις πόρων μεταξύ των κλήσεων κλήσεων πολύ πιο γρήγορα. Η διάταξη των δεσμεύσεων πόρων μπορεί να προκαθοριστεί χρησιμοποιώντας το αντικείμενο GPUBindGroupLayout.

Πηγή: opennet.ru

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