W3C рдорд╕реБрджрд╛ WebGPU рдорд╛рдирдХ рдЕрдирд╛рд╡рд░рдг рдХрд░рддреЛ

W3C рдиреЗ WebGPU рдЖрдгрд┐ WebGPU рд╢реЗрдбрд┐рдВрдЧ рд▓рдБрдЧреНрд╡реЗрдЬ (WGSL) рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдЪреЗ рдкрд╣рд┐рд▓реЗ рдорд╕реБрджреЗ рдЬрд╛рд░реА рдХреЗрд▓реЗ рдЖрд╣реЗрдд, рдЬреЗ GPU рдСрдкрд░реЗрд╢рдиреНрд╕ рдЬрд╕реЗ рдХреА рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЖрдгрд┐ рдХрдВрдкреНрдпреБрдЯрд┐рдВрдЧ, рддрд╕реЗрдЪ GPU рд╡рд░ рдЪрд╛рд▓рдгрд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╕рд╛рдареА рд╢реЗрдбрд░ рднрд╛рд╖рд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА API рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛рдд. рд╕рдВрдХрд▓реНрдкрдирд╛рддреНрдордХрджреГрд╖реНрдЯреНрдпрд╛ Vulkan, Metal рдЖрдгрд┐ Direct3D 12 API рд╕рд╛рд░рдЦреЗрдЪ. рддрдкрд╢реАрд▓ рдПрдХрд╛ рдХрд╛рд░реНрдпрд░рдд рдЧрдЯрд╛рдиреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗ рд╣реЛрддреЗ рдЬреНрдпрд╛рдд Mozilla, Google, Apple рдЖрдгрд┐ Microsoft рдордзреАрд▓ рдЕрднрд┐рдпрдВрддреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рд╣реЛрддреЗ.

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

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

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

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

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

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