WebGPU рд╕рдорд░реНрдерди Chrome рдорд╛ рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫ

рдЧреБрдЧрд▓рд▓реЗ рдХреНрд░реЛрдо резрезрей рдорд╛ WebGPU рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ API рд░ WGSL (WebGPU рд╢реЗрдбрд┐рдЩ рд▓реНрдпрд╛рдЩреНрдЧреНрд╡реЗрдЬ) рдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдорд░реНрдерди рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗ рдШреЛрд╖рдгрд╛ рдЧрд░реЗрдХреЛ рдЫ, рдЬреБрди рдореЗ реи рдорд╛ рд░рд┐рд▓рд┐рдЬрдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЫред WebGPU рд▓реЗ Vulkan, Metal, рд░ Direct113D 2 рдЬрд╕реНрддреИ GPU-рд╕рд╛рдЗрдб рдЕрдкрд░реЗрд╕рдирд╣рд░реВ рдЬрд╕реНрддреИ рд░реЗрдиреНрдбрд░рд┐рдЩ рд░ рдХрдореНрдкреНрдпреБрдЯрд┐рдЩ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рд░ GPU рд╕рд╛рдЗрдбрдорд╛ рдЪрд▓реНрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВ рд▓реЗрдЦреНрди рд╢реЗрдбрд░ рднрд╛рд╖рд╛рдХреЛ рдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рдкрдирд┐ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред WebGPU рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реБрд░реБрдорд╛ ChromeOS, macOS рд░ Windows рдмрд┐рд▓реНрдбрд╣рд░реВрдорд╛ рдорд╛рддреНрд░ рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫред рд▓рд┐рдирдХреНрд╕ рд░ рдПрдиреНрдбреНрд░реЛрдЗрдбрдХрд╛ рд▓рд╛рдЧрд┐, WebGPU рд╕рдорд░реНрдерди рдкрдЫрд┐рдХреЛ рдорд┐рддрд┐рдорд╛ рд╕рдХреНрд░рд┐рдп рд╣реБрдиреЗрдЫред

Chrome рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, WebGPU рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕рдорд░реНрдерди рдлрд╛рдпрд░рдлрдХреНрд╕рдорд╛ рдЕрдкреНрд░рд┐рд▓ реирежреиреж рджреЗрдЦрд┐ рд░ рд╕рдлрд╛рд░реАрдорд╛ рдиреЛрднреЗрдореНрдмрд░ реирежреирез рджреЗрдЦрд┐ рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рдПрдХреЛ рдЫред Firefox рдорд╛ WebGPU рд╕рдХреНрд╖рдо рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ dom.webgpu.enabled рд░ gfx.webgpu.force-рд╕рдХреНрд╖рдо рдлреНрд▓реНрдпрд╛рдЧрд╣рд░реВ about:config рдорд╛ рд╕реЗрдЯ рдЧрд░реНрдиреБрдкрд░реНрдЫред Firefox рд░ Safari рдорд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ WebGPU рд╕рдХреНрд╖рдо рдЧрд░реНрдиреЗ рдХреБрдиреИ рдпреЛрдЬрдирд╛ рдЫреИрдиред Firefox рд░ Chrome рдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рдХрд╕рд┐рдд WebGPU рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд╣рд░реВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдЙрдкрд▓рдмреНрдз рдЫрдиреН - Dawn (C++) рд░ wgpu (Rust), рдЬреБрди рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ WebGPU рд╕рдорд░реНрдерди рдПрдХреАрдХреГрдд рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╡реЗрдмрдЬреАрдПрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд▓реЛрдХрдкреНрд░рд┐рдп JavaScript рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдорд╛ WebGPU рд╕рдорд░реНрдерди рдердкреНрдиреЗ рдХрд╛рдо рдкрдирд┐ рднрдЗрд░рд╣реЗрдХреЛ рдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, Babylon.js рдорд╛ WebGPU рдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдШреЛрд╖рдгрд╛ рдЧрд░рд┐рд╕рдХреЗрдХреЛ рдЫ, рд░ Three.js, PlayCanvas рд░ TensorFlow.js рдорд╛ рдЖрдВрд╢рд┐рдХ рд╕рдорд░реНрдердиред

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

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

WebGPU рдХреЛ рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реБ:

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди