W3C WebGPU стандартының жобасын ашады

W3C WebGPU және WebGPU Shading Language (WGSL) спецификацияларының алғашқы жобаларын шығарды, олар көрсету және есептеу сияқты GPU операцияларын орындауға арналған API интерфейстерін, сондай-ақ GPU-да жұмыс істейтін бағдарламаларды жазуға арналған шейдер тілін анықтайды. концептуалды түрде Vulkan, Metal және Direct3D 12 API интерфейстеріне ұқсас.Спецификацияларды Mozilla, Google, Apple және Microsoft инженерлері кіретін жұмыс тобы дайындаған.

Концептуалды түрде WebGPU WebGL-ден Vulkan графикалық API OpenGL-ден айырмашылығымен бірдей, бірақ ол белгілі бір графикалық API-ге негізделмеген, бірақ Vulkan, Metal және қолданбаларында табылған бірдей төмен деңгейлі примитивтерді пайдаланатын әмбебап қабат болып табылады. 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

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