ការគាំទ្រ WebGPU នឹងត្រូវបានបើកនៅក្នុង Chrome

Компания Google объявила о включении по умолчанию поддержки графического API WebGPU и языка шейдеров WGSL (WebGPU Shading Language) в ветке Chrome 113, релиз которой намечен на 2 мая. WebGPU предоставляет схожий с Vulkan, Metal и Direct3D 12 программный интерфейс для выполнения операций на стороне GPU, таких как рендеринг и вычисления, а также позволяет использовать язык шейдров для написания программ, работающих на стороне GPU. Реализация WebGPU будет включена вначале только в сборках для ChromeOS, macOS и Windows. Для Linux и Android поддержка WebGPU будет активирована позднее.

Кроме Chrome экспериментальная поддержка WebGPU тестируется с апреля 2020 года в Firefox и с ноября 2021 года в Safari. Для включения WebGPU в Firefox в about:config следует выставить флаги dom.webgpu.enabled и gfx.webgpu.force-enabled. О планах по включению WebGPU по умолчанию в Firefox и Safari пока не сообщается. Развиваемые для Firefox и Chrome реализации WebGPU доступны в форме отдельных библиотек — Dawn (С++) и wgpu (Rust), которые можно использовать для интеграции поддержки WebGPU в свои приложения. Также ведётся работа по добавлению поддержки WebGPU в популярные JavaScript-библитеки, изначально использующие WebGL. Например, полная поддержка WebGPU уже заявлена в Babylon.js, а частичная в Three.js, PlayCanvas и TensorFlow.js.

Концептуально WebGPU отличается от WebGL примерно так же, как графический API Vulkan отличается от OpenGL, но при этом WebGPU не основывается на конкретном графическом API, а представляет собой универсальную прослойку, использующую те же низкоуровневые примитивы, что имеются в Vulkan, Metal и Direct3D. WebGPU предоставляет приложениям на JavaScript средства для низкоуровневого контроля за организацией, обработкой и передачей команд к GPU, управления связанными ресурсами, памятью, буферами, объектами текстур и скомпилированными графическими шейдерами. Подобный подход позволяет добиться более высокой производительности графических приложений за счёт снижения накладных расходов и повышения эффективности работы с GPU.

WebGPU даёт возможность создавать для Web сложные 3D-проекты, работающие не хуже, чем обособленные программы, напрямую использующие Vulkan, Metal или Direct3D, но не привязанные к конкретным платформам. WebGPU также предоставляет дополнительные возможности при портировании нативных графических программ в форму, способную работать на базе web-технологий, благодаря компиляции в WebAssembly. Кроме 3D-графики WebGPU охватывает и возможности, связанные с выносом вычислений на сторону GPU и выполнением шейдеров.

លក្ខណៈសំខាន់ៗរបស់ WebGPU៖

  • ការគ្រប់គ្រងដោយឡែកពីគ្នានៃធនធាន ការងាររៀបចំ និងការបញ្ជូនពាក្យបញ្ជាទៅ GPU (ក្នុង WebGL វត្ថុមួយទទួលខុសត្រូវចំពោះអ្វីៗគ្រប់យ៉ាងក្នុងពេលតែមួយ) ។ បរិបទដាច់ដោយឡែកបីត្រូវបានផ្តល់ជូន៖ GPUDevice សម្រាប់បង្កើតធនធានដូចជា វាយនភាព និងសតិបណ្ដោះអាសន្ន។ GPUCommandEncoder សម្រាប់ការអ៊ិនកូដពាក្យបញ្ជាបុគ្គល រួមទាំងដំណាក់កាលបង្ហាញ និងការគណនា។ GPUCommandBuffer នឹងត្រូវបានតម្រង់ជួរសម្រាប់ការប្រតិបត្តិនៅលើ GPU ។ លទ្ធផលអាចត្រូវបានបង្ហាញនៅក្នុងតំបន់ដែលភ្ជាប់ជាមួយធាតុផ្ទាំងក្រណាត់មួយ ឬច្រើន ឬដំណើរការដោយគ្មានលទ្ធផល (ឧទាហរណ៍ នៅពេលដំណើរការកិច្ចការគណនា)។ ការបំបែកដំណាក់កាលធ្វើឱ្យវាកាន់តែងាយស្រួលក្នុងការបំបែកប្រតិបត្តិការបង្កើតធនធាន និងការរៀបចំទៅជាឧបករណ៍ដោះស្រាយផ្សេងៗគ្នាដែលអាចដំណើរការលើខ្សែស្រលាយផ្សេងៗគ្នា។
  • វិធីសាស្រ្តផ្សេងគ្នាចំពោះរដ្ឋដំណើរការ។ WebGPU ផ្តល់នូវវត្ថុពីរ - GPURenderPipeline និង GPUComputePipeline ដែលអនុញ្ញាតឱ្យអ្នកបញ្ចូលគ្នានូវស្ថានភាពផ្សេងៗដែលបានកំណត់ជាមុនដោយអ្នកអភិវឌ្ឍន៍ ដែលអនុញ្ញាតឱ្យកម្មវិធីរុករកមិនខ្ជះខ្ជាយធនធានលើការងារបន្ថែម ដូចជាការចងក្រងកម្មវិធីស្រមោលឡើងវិញ។ រដ្ឋដែលគាំទ្ររួមមានៈ ស្រមោល សតិបណ្ដោះអាសន្ន និងប្លង់គុណលក្ខណៈ ប្លង់ក្រុមស្អិត ការលាយបញ្ចូលគ្នា ជម្រៅ និងលំនាំ និងទម្រង់លទ្ធផលក្រោយការបង្ហាញ។
  • គំរូ​ចង​ច្រើន​ដូច​ជា​លក្ខណៈ​ក្រុម​ធនធាន​របស់ Vulkan ។ ដើម្បីដាក់ធនធានជាក្រុមជាមួយគ្នា WebGPU ផ្តល់នូវវត្ថុ GPUBindGroup ដែលអាចត្រូវបានភ្ជាប់ជាមួយវត្ថុស្រដៀងគ្នាផ្សេងទៀតសម្រាប់ប្រើក្នុង Shaders ខណៈពេលកំពុងសរសេរពាក្យបញ្ជា។ ការបង្កើតក្រុមបែបនេះអនុញ្ញាតឱ្យអ្នកបើកបរអនុវត្តសកម្មភាពរៀបចំចាំបាច់ជាមុន ហើយអនុញ្ញាតឱ្យកម្មវិធីរុករកផ្លាស់ប្តូរការចងធនធានរវាងការហៅចេញកាន់តែលឿន។ ប្លង់នៃការចងធនធានអាចត្រូវបានកំណត់ជាមុនដោយប្រើវត្ថុ GPUBindGroupLayout ។

ប្រភព: opennet.ru

បន្ថែមមតិយោបល់