Chrome рдордзреНрдпреЗ WebGPU рд╕рдорд░реНрдерди рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЕрд╕реЗрд▓

Google рдиреЗ Chrome 113 рдордзреНрдпреЗ WebGPU рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ API рдЖрдгрд┐ WGSL (WebGPU рд╢реЗрдбрд┐рдВрдЧ рд▓рдБрдЧреНрд╡реЗрдЬ) рд╕рд╛рдареА рдбреАрдлреЙрд▓реНрдЯ рд╕рдорд░реНрдерди рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдШреЛрд╖рдгрд╛ рдХреЗрд▓реА рдЖрд╣реЗ, рдЬреА 2 рдореЗ рд░реЛрдЬреА рд░рд┐рд▓реАрдЬ рд╣реЛрдгрд╛рд░ рдЖрд╣реЗ. WebGPU рдкреНрд░рд╕реНрддреБрддреАрдХрд░рдг рдЖрдгрд┐ рд╕рдВрдЧрдгрдирд╛рд╕рд╛рд░рдЦреНрдпрд╛ GPU-рд╕рд╛рдЗрдб рдСрдкрд░реЗрд╢рдиреНрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Vulkan, Metal рдЖрдгрд┐ Direct3D 12 рд╕рд╛рд░рдЦрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдЖрдгрд┐ GPU рдмрд╛рдЬреВрд▓рд╛ рдЪрд╛рд▓рдгрд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╕рд╛рдареА рд╢реЗрдбрд░ рднрд╛рд╖реЗрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рдгреНрдпрд╛рд╕ рджреЗрдЦреАрд▓ рдЕрдиреБрдорддреА рджреЗрддреЗ. WebGPU рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдлрдХреНрдд ChromeOS, macOS рдЖрдгрд┐ Windows рдмрд┐рд▓реНрдбрд╡рд░ рд╕рдХреНрд╖рдо рдХреЗрд▓реА рдЬрд╛рдИрд▓. Linux рдЖрдгрд┐ Android рд╕рд╛рдареА, WebGPU рд╕рдорд░реНрдерди рдирдВрддрд░рдЪреНрдпрд╛ рддрд╛рд░рдЦреЗрд▓рд╛ рд╕рдХреНрд░рд┐рдп рдХреЗрд▓реЗ рдЬрд╛рдИрд▓.

Chrome рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдПрдкреНрд░рд┐рд▓ 2020 рдкрд╛рд╕реВрди Firefox рдордзреНрдпреЗ рдЖрдгрд┐ рдиреЛрд╡реНрд╣реЗрдВрдмрд░ 2021 рдкрд╛рд╕реВрди Safari рдордзреНрдпреЗ WebGPU рд╕рд╛рдареА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╕рдорд░реНрдердирд╛рдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдгреНрдпрд╛рдд рдЖрд▓реА рдЖрд╣реЗ. Firefox рдордзреНрдпреЗ WebGPU рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА dom.webgpu.enabled рдЖрдгрд┐ gfx.webgpu.force-рд╕рдХреНрд╖рдо рдзреНрд╡рдЬ рд╕реБрдорд╛рд░реЗ:config рдордзреНрдпреЗ рд╕реЗрдЯ рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗрдд. Firefox рдЖрдгрд┐ Safari рдордзреНрдпреЗ WebGPU рдмрд╛рдп рдбреАрдлреЙрд▓реНрдЯ рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рдЪреА рдЕрджреНрдпрд╛рдк рдХреЛрдгрддреАрд╣реА рдпреЛрдЬрдирд╛ рдирд╛рд╣реА. рдлрд╛рдпрд░рдлреЙрдХреНрд╕ рдЖрдгрд┐ рдХреНрд░реЛрдорд╕рд╛рдареА рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗрд▓реА рд╡реЗрдмрдЬреАрдкреАрдпреВ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╕реНрд╡рддрдВрддреНрд░ рд▓рд╛рдпрдмреНрд░рд░реАрдВрдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ - рдбреЙрди (рд╕реА++) рдЖрдгрд┐ рдбрдмреНрд▓реНрдпреВрдЬреАрдкреАрдпреВ (рд░рд╕реНрдЯ), рдЬреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдордзреНрдпреЗ рд╡реЗрдмрдЬреАрдкреАрдпреВ рд╕рдорд░реНрдерди рд╕рдорд╛рдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд░реВ рд╢рдХрддрд╛. рд╡реЗрдмрдЬреАрдПрд▓ рд╡рд╛рдкрд░рдгрд╛рд▒реНрдпрд╛ рд▓реЛрдХрдкреНрд░рд┐рдп JavaScript рд▓рд╛рдпрдмреНрд░рд░реАрдВрдирд╛ WebGPU рд╕рдкреЛрд░реНрдЯ рдЬреЛрдбрдгреНрдпрд╛рдЪреЗ рдХрд╛рдорд╣реА рд╕реБрд░реВ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, Babylon.js рдордзреНрдпреЗ WebGPU рд╕рд╛рдареА рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдЖрдзреАрдЪ рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ Three.js, PlayCanvas рдЖрдгрд┐ TensorFlow.js рдордзреНрдпреЗ рдЖрдВрд╢рд┐рдХ рд╕рдорд░реНрдерди рдЬрд╛рд╣реАрд░ рдХреЗрд▓реЗ рдЖрд╣реЗ.

рд╡реИрдЪрд╛рд░рд┐рдХрджреГрд╖реНрдЯреНрдпрд╛, WebGPU рд╣реЗ WebGL рдкреЗрдХреНрд╖рд╛ рдЕрдЧрджреА рддреНрдпрд╛рдЪ рдкреНрд░рдХрд╛рд░реЗ рд╡реЗрдЧрд│реЗ рдЖрд╣реЗ рдЬрд╕реЗ Vulkan рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ API OpenGL рдкреЗрдХреНрд╖рд╛ рд╡реЗрдЧрд│реЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ WebGPU рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ API рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рдПрдХ рд╕рд╛рд░реНрд╡рддреНрд░рд┐рдХ рд╕реНрддрд░ рдЖрд╣реЗ рдЬреЛ рд╡рд▓реНрдХрди, рдореЗрдЯрд▓ рдЖрдгрд┐ рдордзреАрд▓ рд╕рдорд╛рди рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдЖрджрд┐рдо рд╡рд╛рдкрд░рддреЛ. рдбрд╛рдпрд░реЗрдХреНрдЯ3рдбреА. WebGPU JavaScript рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдирд╛ рд╕рдВрд╕реНрдереЗрд╡рд░ рдХрдореА-рд╕реНрддрд░реАрдп рдирд┐рдпрдВрддреНрд░рдг, GPU рд▓рд╛ рдЖрджреЗрд╢рд╛рдВрдЪреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдгрд┐ рдкреНрд░рд╕рд╛рд░рдг, рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЗ, рдореЗрдорд░реА, рдмрдлрд░, рдЯреЗрдХреНрд╕рдЪрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЖрдгрд┐ рд╕рдВрдХрд▓рд┐рдд рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╢реЗрдбрд░реНрд╕ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ. рд╣рд╛ рджреГрд╖реНрдЯреАрдХреЛрди рддреБрдореНрд╣рд╛рд▓рд╛ рдУрд╡реНрд╣рд░рд╣реЗрдб рдЦрд░реНрдЪ рдХрдореА рдХрд░реВрди рдЖрдгрд┐ GPU рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рдЪреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд╛рдврд╡реВрди рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рд╕рд╛рдареА рдЙрдЪреНрдЪ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЛ.

WebGPU рд╡реЗрдмрд╕рд╛рдареА рдЬрдЯрд┐рд▓ 3D рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХрд░рдгреЗ рд╢рдХреНрдп рдХрд░рддреЗ рдЬреЗ рд╕реНрдЯрдБрдбрдЕрд▓реЛрди рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕рдкреЗрдХреНрд╖рд╛ рд╡рд╛рдИрдЯ рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реАрдд рдЬреЗ рдереЗрдЯ Vulkan, Metal рдХрд┐рдВрд╡рд╛ Direct3D рд╡рд╛рдкрд░рддрд╛рдд, рдкрд░рдВрддреБ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╢реА рдЬреЛрдбрд▓реЗрд▓реЗ рдирд╛рд╣реАрдд. WebGPU WebAssembly рдордзреНрдпреЗ рд╕рдВрдХрд▓рдирд╛рджреНрд╡рд╛рд░реЗ рд╡реЗрдм-рд╕рдХреНрд╖рдо рдлреЙрд░реНрдордордзреНрдпреЗ рдореВрд│ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕ рдкреЛрд░реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖рдорддрд╛ рджреЗрдЦреАрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреЗ. 3D рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, WebGPU рдордзреНрдпреЗ GPU рдордзреНрдпреЗ рдСрдлрд▓реЛрдбрд┐рдВрдЧ рдХреЕрд▓рдХреНрдпреБрд▓реЗрд╢рди рдЖрдгрд┐ рд╢реЗрдбрд░реНрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреНрдпрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд╖рдорддрд╛ рджреЗрдЦреАрд▓ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд.

WebGPU рдЪреА рдкреНрд░рдореБрдЦ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ:

  • рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪреЗ рд╕реНрд╡рддрдВрддреНрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди, рдкреВрд░реНрд╡рддрдпрд╛рд░реА рдХрд╛рд░реНрдп рдЖрдгрд┐ GPU рд▓рд╛ рдЖрджреЗрд╢рд╛рдВрдЪреЗ рдкреНрд░рд╕рд╛рд░рдг (WebGL рдордзреНрдпреЗ рдПрдХрд╛рдЪ рд╡реЗрд│реА рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯреАрд╕рд╛рдареА рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрдмрд╛рдмрджрд╛рд░ рд╣реЛрддрд╛). рддреАрди рд╡реЗрдЧрд│реЗ рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдЖрд╣реЗрдд: рдЯреЗрдХреНрд╕рдЪрд░ рдЖрдгрд┐ рдмрдлрд░ рдпрд╛рдВрд╕рд╛рд░рдЦреА рд╕рдВрд╕рд╛рдзрдиреЗ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА GPUDevice; GPUCommandEncoder рд╡реИрдпрдХреНрддрд┐рдХ рдЖрджреЗрд╢ рдПрдиреНрдХреЛрдбрд┐рдВрдЧрд╕рд╛рдареА, рдкреНрд░рд╕реНрддреБрддреАрдХрд░рдг рдЖрдгрд┐ рдЧрдгрдирд╛ рдЯрдкреНрдкреНрдпрд╛рдВрд╕рд╣; GPU рд╡рд░реАрд▓ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╛рдареА GPUCommandBuffer рд░рд╛рдВрдЧреЗрдд рдЕрд╕реЗрд▓. рдкрд░рд┐рдгрд╛рдо рдПрдХ рдХрд┐рдВрд╡рд╛ рдЕрдзрд┐рдХ рдХреЕрдирд╡реНрд╣рд╛рд╕ рдШрдЯрдХрд╛рдВрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд╖реЗрддреНрд░рд╛рдордзреНрдпреЗ рдкреНрд░рд╕реНрддреБрдд рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ рдХрд┐рдВрд╡рд╛ рдЖрдЙрдЯрдкреБрдЯрд╢рд┐рд╡рд╛рдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЧрдгрдирд╛ рдХрд╛рд░реНрдпреЗ рдЪрд╛рд▓рд╡рддрд╛рдирд╛). рдЯрдкреНрдкреЗ рд╡рд┐рднрдХреНрдд рдХреЗрд▓реНрдпрд╛рдиреЗ рд╕рдВрд╕рд╛рдзрди рдирд┐рд░реНрдорд┐рддреА рдЖрдгрд┐ рддрдпрд╛рд░реА рдСрдкрд░реЗрд╢рдиреНрд╕ рд╡реЗрдЧрд│реНрдпрд╛ рд╣рдБрдбрд▓рд░рдордзреНрдпреЗ рд╡реЗрдЧрд│реЗ рдХрд░рдгреЗ рд╕реЛрдкреЗ рд╣реЛрддреЗ рдЬреЗ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдереНрд░реЗрдбреНрд╕рд╡рд░ рдЪрд╛рд▓реВ рд╢рдХрддрд╛рдд.
  • рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░рд╛рдЬреНрдпрд╛рдВрд╕рд╛рдареА рдПрдХ рднрд┐рдиреНрди рджреГрд╖реНрдЯреАрдХреЛрди. WebGPU рджреЛрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдСрдлрд░ рдХрд░рддреЗ - GPURenderPipeline рдЖрдгрд┐ GPUComputePipeline, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдбреЗрд╡реНрд╣рд▓рдкрд░рджреНрд╡рд╛рд░реЗ рдкреВрд░реНрд╡-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рд╡рд┐рдз рдЕрд╡рд╕реНрдерд╛ рдПрдХрддреНрд░ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддрд╛рдд, рдЬреЗ рдмреНрд░рд╛рдЙрдЭрд░рд▓рд╛ рд╢реЗрдбрд░реНрд╕рдЪреЗ рдкреБрдирд░реНрд╕рдВрдХрд▓рди рдХрд░рдгреНрдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдорд╛рд╡рд░ рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдпрд╛ рдШрд╛рд▓рд╡реВ рд╢рдХрдд рдирд╛рд╣реАрдд. рд╕рдорд░реНрдерд┐рдд рд╕реНрдерд┐рддреАрдВрдордзреНрдпреЗ рд╣реЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ: рд╢реЗрдбрд░реНрд╕, рд╡реНрд╣рд░реНрдЯреЗрдХреНрд╕ рдмрдлрд░ рдЖрдгрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рдВрдбрдгреА, рдЪрд┐рдХрдЯ рдЧрдЯ рдорд╛рдВрдбрдгреА, рдорд┐рд╢реНрд░рдг, рдЦреЛрд▓реА рдЖрдгрд┐ рдирдореБрдиреЗ рдЖрдгрд┐ рдкреЛрд╕реНрдЯ-рд░реЗрдВрдбрд░ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рд░реВрдк.
  • рд╡рд▓реНрдХрдирдЪреНрдпрд╛ рд╕рдВрд╕рд╛рдзрди рд╕рдореВрд╣реАрдХрд░рдг рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрд╕рд╛рд░рдЦреЗ рдмрдВрдзрдирдХрд╛рд░рдХ рдореЙрдбреЗрд▓. рд╕рдВрд╕рд╛рдзрдиреЗ рдПрдХрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, WebGPU рдПрдХ GPUBindGroup рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рджрд╛рди рдХрд░рддреЗ, рдЬреЗ рдЖрдЬреНрдЮрд╛ рд▓рд┐рд╣рд┐рддрд╛рдирд╛ рд╢реЗрдбрд░реНрд╕рдордзреНрдпреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЗрддрд░ рд╕рдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЕрд╕реВ рд╢рдХрддреЗ. рдЕрд╕реЗ рдЧрдЯ рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рдиреЗ рдбреНрд░рд╛рдпрд╡реНрд╣рд░рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдкреВрд░реНрд╡рддрдпрд╛рд░реА рдХреНрд░рд┐рдпрд╛ рдЕрдЧреЛрджрд░рдЪ рдХрд░рддрд╛ рдпреЗрддрд╛рдд рдЖрдгрд┐ рдмреНрд░рд╛рдЙрдЭрд░рд▓рд╛ рдбреНрд░реЙ рдХреЙрд▓реНрд╕рдордзреАрд▓ рд░рд┐рд╕реЛрд░реНрд╕ рдмрд╛рдЗрдВрдбрд┐рдВрдЧреНрд╕ рдЕрдзрд┐рдХ рд╡реЗрдЧрд╛рдиреЗ рдмрджрд▓рддрд╛ рдпреЗрддрд╛рдд. GPUBindGroupLayout рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╛рдкрд░реВрди рд░рд┐рд╕реЛрд░реНрд╕ рдмрд╛рдЗрдВрдбрд┐рдВрдЧрдЪрд╛ рд▓реЗрдЖрдЙрдЯ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛