Chrome жүйесінде WebGPU қолдауы қосылады

Google 113 мамырда шығарылуы жоспарланған Chrome 2 жүйесінде WebGPU графикалық API және WebGPU Shading Language (WGSL) үшін әдепкі қолдауды жариялады. WebGPU көрсету және есептеу сияқты GPU жағындағы операцияларды орындау үшін Vulkan, Metal және Direct3D 12-ге ұқсас API ұсынады, сонымен қатар GPU жағындағы бағдарламаларды жазу үшін шейдер тілін пайдалануға мүмкіндік береді. WebGPU іске асыру бастапқыда ChromeOS, macOS және Windows жүйесіне арналған жинақтарда ғана қосылады. Linux және Android үшін WebGPU қолдауы кейінірек іске қосылады.

Chrome браузерінен басқа эксперименттік WebGPU қолдауы 2020 жылдың сәуірінен бастап Firefox-та және 2021 жылдың қарашасынан бастап Safari-де сынақтан өтті. Firefox жүйесінде WebGPU қосу үшін about:config ішінде dom.webgpu.enabled және gfx.webgpu.force-қосылған жалаушаларды орнатыңыз. Firefox және Safari қолданбаларында әдепкі бойынша WebGPU қосу жоспарлары әлі жоқ. Firefox және Chrome үшін әзірленген WebGPU іске асырулары бөлек кітапханалар түрінде қол жетімді - Dawn (C++) және wgpu (Rust), оларды WebGPU қолдауын қолданбаларыңызға біріктіру үшін пайдалануға болады. Сондай-ақ, WebGL көмегімен танымал JavaScript кітапханаларына WebGPU қолдауын қосу жұмыстары жүргізілуде. Мысалы, WebGPU-ға толық қолдау Babylon.js жүйесінде және ішінара қолдау Three.js, PlayCanvas және TensorFlow.js ішінде жарияланған.

Концептуалды түрде, WebGPU WebGL-тен Vulkan графикалық API OpenGL-ден ерекшеленетінімен бірдей ерекшеленеді, бірақ WebGPU арнайы графикалық API-ге негізделмеген, бірақ Vulkan-да табылған бірдей төмен деңгейлі примитивтерді пайдаланатын жалпы мақсаттағы қабат, Металл және Direct3D. WebGPU JavaScript қолданбаларын ұйымдастыруды, өңдеуді және командаларды GPU-ға жіберуді, байланысты ресурстарды, жадты, буферлерді, текстуралық нысандарды және құрастырылған графикалық шейдерлерді басқаруды төмен деңгейлі басқарумен қамтамасыз етеді. Бұл тәсіл қосымша шығындарды азайту және GPU тиімділігін арттыру арқылы жоғары өнімділік графикалық қолданбаларға қол жеткізуге мүмкіндік береді.

WebGPU Vulkan, Metal немесе Direct3D тікелей пайдаланатын, бірақ белгілі бір платформалармен байланысы жоқ дербес бағдарламалармен қатар жұмыс істейтін веб үшін күрделі 3D жобаларын жасауға мүмкіндік береді. WebGPU сонымен қатар WebAssembly жүйесіне компиляциялау арқылы жергілікті графикалық бағдарламаларды веб қосылған пішінге тасымалдаудың қосымша опцияларын қамтамасыз етеді. 3D графикасынан басқа, WebGPU GPU жағына есептеулерді түсіру және шейдерлерді орындаумен байланысты мүмкіндіктерді де қамтиды.

WebGPU негізгі мүмкіндіктері:

  • Ресурстарды бөлек басқару, дайындық жұмыстары және командаларды GPU-ға беру (WebGL-де барлығына бірден бір объект жауапты болды). Үш бөлек контекст берілген: текстуралар мен буферлер сияқты ресурстарды жасауға арналған GPUDevice; көрсету және есептеу кезеңдерін қоса, жеке командаларды кодтауға арналған GPUCommandEncoder; GPUCommandBuffer GPU іске қосу кезегіне өту үшін. Нәтижені бір немесе бірнеше кенеп элементтерімен байланысты аймақта көрсетуге немесе шығарусыз өңдеуге болады (мысалы, есептеу тапсырмаларын орындау кезінде). Кезеңдерді бөлу ресурс жасау және қамтамасыз ету операцияларын әртүрлі ағындарда іске қосылатын әртүрлі өңдегіштерге бөлуді жеңілдетеді.
  • Күйлерді өңдеуге басқаша көзқарас. WebGPU екі нысанды қамтамасыз етеді - GPURenderPipeline және GPUComputePipeline, олар әзірлеуші ​​алдын ала анықтаған әртүрлі күйлерді біріктіруге мүмкіндік береді, бұл браузерге шейдерлерді қайта құрастыру сияқты қосымша жұмыстарға ресурстарды ысырап етпеуге мүмкіндік береді. Қолдау көрсетілетін күйлерге мыналар жатады: шейдерлер, шыңдық буфер және атрибут орналасулары, жабысқақ топ орналасулары, араластыру, тереңдік және үлгілер, көрсетуден кейінгі шығыс пішімдері.
  • Вулканның ресурстарды топтау құралдары сияқты байланыстыратын үлгі. Ресурстарды топтарға топтау үшін WebGPU GPUBindGroup нысанын қамтамасыз етеді, ол пәрмендерді жазу кезінде шейдерлерде пайдалану үшін басқа ұқсас нысандармен байланыстырылуы мүмкін. Мұндай топтарды құру драйверге алдын ала қажетті дайындық әрекеттерін орындауға мүмкіндік береді және шолғышқа ұтыс қоңыраулары арасындағы ресурстарды байланыстыруды әлдеқайда жылдам өзгертуге мүмкіндік береді. Ресурс байланыстыруларының орналасуын GPUBindGroupLayout нысаны арқылы алдын ала анықтауға болады.

Ақпарат көзі: opennet.ru

пікір қалдыру