Firefox түнкү түзүмдөрү азыр WebGPU колдоосун камтыйт

В түн Firefox курат пайда спецификацияны колдоо WebGPU3D графикасын иштетүү жана GPU тарабында эсептөө үчүн программалоо интерфейсин камсыз кылат, концептуалдык жактан APIге окшош. тизмеси, метал и Direct3D 12. Спецификацияны Mozilla, Google, Apple, Microsoft жана коомчулуктун мүчөлөрү иштеп чыгууда жумушчу топ, W3C уюму тарабынан түзүлгөн.

WebGPUнин негизги максаты - Windows, Металлдагы Direct3D 3 сыяктуу заманбап системалык графикалык API'лер тарабынан берилген 12D графикалык технологияларды жана мүмкүнчүлүктөрдү колдонуу үчүн веб-платформа үчүн коопсуз, колдонуучуга ыңгайлуу, портативдик жана жогорку натыйжалуу программалоо интерфейсин камсыз кылуу. macOSто жана Vulkan Linuxта. Концептуалдык жактан алганда, WebGPU WebGLден Vulkan OpenGLден айырмаланып тургандай эле айырмаланат жана ошол эле учурда ал белгилүү бир графикалык API'ге негизделбейт, бирок жалпысынан Вулкандагы ошол эле төмөн деңгээлдеги примитивдерди колдонгон универсалдуу катмар, Металл жана Direct3D.

WebGPU JavaScript тиркемелерин уюштуруу, иштетүү жана GPUга буйруктарды берүү, байланышкан ресурстарды, эстутумду, буферлерди, текстура объектилерин жана компиляцияланган графикалык шейдерлерди башкаруу боюнча төмөнкү деңгээлдеги көзөмөл менен камсыз кылат. Бул ыкма кошумча чыгымдарды азайтуу жана GPU менен иштөөнүн натыйжалуулугун жогорулатуу аркылуу графикалык колдонмолор үчүн жогорку көрсөткүчтөргө жетишүүгө мүмкүндүк берет.

WebGPU веб үчүн толук кандуу комплекстүү 3D долбоорлорду түзүүгө мүмкүндүк берет, алар Vulkan, Metal же Direct3Dге түздөн-түз кире турган, бирок конкреттүү платформаларга байланбаган өз алдынча программалардан кем эмес иштейт. WebGPU ошондой эле WebAssembly технологиясын колдонуу аркылуу жергиликтүү графикалык программаларды веб иштетилген формага өткөрүүдө кошумча мүмкүнчүлүктөрдү камсыз кылат. 3D графикасынан тышкары, WebGPU GPUга эсептөөлөрдү түшүрүү жана шейдердин өнүгүүсүн колдоо менен байланышкан мүмкүнчүлүктөрдү да камтыйт. Шейдерлер алат WebGPU Shading Language түзүлүшү же орто SPIR-V форматында көрсөтүлүшү керек, андан кийин учурдагы драйверлер тарабынан колдоого алынган шейдер тилдерине которулат.

WebGPU ресурстарды өзүнчө башкарууну, даярдык иштерин жана GPUге буйруктарды берүүнү колдонот (WebGLде бир эле объект бир эле учурда бардыгы үчүн жооптуу болгон). Үч өзүнчө контекст берилген:
Текстуралар жана буферлер сыяктуу ресурстарды түзүү үчүн GPUDevice; GPUCommandEncoder жеке буйруктарды, анын ичинде көрсөтүү жана эсептөө этаптарын коддоо үчүн; GPUCommandBuffer GPUде аткаруу үчүн кезекке коюлат. Натыйжа бир же бир нече кенеп элементтери менен байланышкан аймакта көрсөтүлүшү мүмкүн, же чыгарылбастан иштетилет (мисалы, эсептөө тапшырмаларын аткарып жатканда). Этаптарды бөлүү ресурстарды түзүү жана даярдоо операцияларын ар кандай жиптерде иштей турган ар кандай иштеткичтерге бөлүүнү жеңилдетет.

WebGPU менен WebGLдин ортосундагы экинчи айырма - бул мамлекеттерди башкарууга башка мамиле. WebGPU эки объектти сунуштайт - GPURenderPipeline жана GPUComputePipeline, алар иштеп чыгуучу тарабынан алдын ала аныкталган ар кандай абалдарды бириктирүүгө мүмкүндүк берет, бул браузерге шейдерлерди кайра компиляциялоо сыяктуу кошумча жумуштарга ресурстарды текке кетирбөөгө мүмкүндүк берет. Колдоого алынган мамлекеттерге төмөнкүлөр кирет: шейдерлер, чоку буфер жана атрибут макеттери, жабышчаак топ макеттери, аралаштыруу, тереңдик жана үлгүлөр, жана рендерден кийинки чыгаруу форматтары.

WebGPU үчүнчү өзгөчөлүгү, негизинен, милдеттүү модели деп аталат
Вулкандагы ресурстарды топтоо куралдарын эске салат.
Ресурстарды чогуу топтош үчүн, WebGPU GPUBindGroup объектисин берет, ал буйруктарды жазып жатканда шейдерлерде колдонуу үчүн башка ушул сыяктуу объекттер менен байланыштыра алат. Мындай топторду түзүү драйверге алдын ала керектүү даярдык аракеттерин жасоого мүмкүндүк берет жана браузерге тартуу чалууларынын ортосундагы ресурстук байланыштарды тезирээк өзгөртүүгө мүмкүндүк берет. Ресурстук байланыштардын схемасын GPUBindGroupLayout объектисинин жардамы менен алдын ала аныктоого болот.

Firefox түнкү түзүмдөрү азыр WebGPU колдоосун камтыйт

Firefoxто, about:config ичинде WebGPU иштетүү үчүн “dom.webgpu.enabled” жөндөө бар. CanvasContext рендеринги да композицияны иштетүүнү талап кылат WebRender ("gfx.webrender.all" about:config ичинде), Rust менен жазылган жана GPU'га беттин мазмунун көрсөтүү операцияларын аутсорсинг. WebGPU ишке ашыруу долбоордун кодуна негизделген
wgpu, Rust тилинде жазылган жана Linux, Android, Windows жана macOSдо DX12, Vulkan жана Metal API'лердин үстүндө иштөөгө жөндөмдүү (DX11 жана OpenGL ES 3.0 колдоосу дагы иштелип чыгууда). Ошол эле учурда, Google дагы бир ишке ашырууну иштеп чыгууда, ал жеткиликтүү Канар бутагы Chromium жана "chrome://flags/#enable-unsafe-webgpu" желеги аркылуу иштетилген, бирок азырынча macOS жана Windows'до гана иштейт.

Source: opennet.ru

Комментарий кошуу