ืชืžื™ื›ื” ื‘-WebGPU ืชื•ืคืขืœ ื‘-Chrome

ื’ื•ื’ืœ ื”ื•ื“ื™ืขื” ืขืœ ื”ื›ืœืœืช ืชืžื™ื›ืช ื‘ืจื™ืจืช ืžื—ื“ืœ ืขื‘ื•ืจ ื”-API ื”ื’ืจืคื™ ืฉืœ WebGPU ื•-WGSL (ืฉืคืช ื”ืฆืœืœื” ืฉืœ WebGPU) ื‘-Chrome 113, ืฉืžืชื•ื›ื ืŸ ืœืฆืืช ื‘-2 ื‘ืžืื™. WebGPU ืžืกืคืง ืžืžืฉืง ืชื›ื ื•ืช ื“ื•ืžื” ืœ-Vulkan, Metal ื•-Direct3D 12 ืœื‘ื™ืฆื•ืข ืคืขื•ืœื•ืช ื‘ืฆื“ ื”-GPU ื›ืžื• ืขื™ื‘ื•ื“ ื•ืžื—ืฉื•ื‘, ื•ื›ืŸ ืžืืคืฉืจ ืฉื™ืžื•ืฉ ื‘ืฉืคืช ื”ืฆืœืœื” ืœื›ืชื™ื‘ืช ืชื•ื›ื ื™ื•ืช ื”ืคื•ืขืœื•ืช ื‘ืฆื“ ื”-GPU. ื™ื™ืฉื•ื ื”-WebGPU ื™ื•ืคืขืœ ื‘ืชื—ื™ืœื” ืจืง ื‘-ChromeOS, macOS ื•-Windows. ืขื‘ื•ืจ ืœื™ื ื•ืงืก ื•ืื ื“ืจื•ืื™ื“, ืชืžื™ื›ืช WebGPU ืชื•ืคืขืœ ื‘ืžื•ืขื“ ืžืื•ื—ืจ ื™ื•ืชืจ.

ื‘ื ื•ืกืฃ ืœ-Chrome, ืชืžื™ื›ื” ื ื™ืกื™ื•ื ื™ืช ื‘-WebGPU ื ื‘ื“ืงื” ืžืื– ืืคืจื™ืœ 2020 ื‘-Firefox ื•ืžืื– ื ื•ื‘ืžื‘ืจ 2021 ื‘-Safari. ื›ื“ื™ ืœื”ืคืขื™ืœ WebGPU ื‘-Firefox, ืขืœื™ืš ืœื”ื’ื“ื™ืจ ืืช ื”ื“ื’ืœื™ื dom.webgpu.enabled ื•-gfx.webgpu.force-enabled ื‘- about:config. ืื™ืŸ ืขื“ื™ื™ืŸ ืชื•ื›ื ื™ื•ืช ืœื”ืคืขื™ืœ ืืช WebGPU ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื‘ืคื™ื™ืจืคื•ืงืก ื•ื‘ืกืคืืจื™. ื™ื™ืฉื•ืžื™ WebGPU ืฉืคื•ืชื—ื• ืขื‘ื•ืจ Firefox ื•ื›ืจื•ื ื–ืžื™ื ื™ื ื‘ืฆื•ืจื” ืฉืœ ืกืคืจื™ื•ืช ื ืคืจื“ื•ืช - Dawn (C++) ื•-wgpu (Rust), ืฉื‘ื”ืŸ ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื›ื“ื™ ืœืฉืœื‘ ืชืžื™ื›ื” ื‘-WebGPU ื‘ืืคืœื™ืงืฆื™ื•ืช ืฉืœืš. ื›ืžื• ื›ืŸ, ืžืชื‘ืฆืขืช ืขื‘ื•ื“ื” ืœื”ื•ืกืคืช ืชืžื™ื›ืช WebGPU ืœืกืคืจื™ื•ืช JavaScript ืคื•ืคื•ืœืจื™ื•ืช ื”ืžืฉืชืžืฉื•ืช ื‘-WebGL ื‘ืื•ืคืŸ ืžืงื•ืจื™. ืœื“ื•ื’ืžื”, ืชืžื™ื›ื” ืžืœืื” ื‘-WebGPU ื›ื‘ืจ ื”ื•ื›ืจื–ื” ื‘-Babylon.js, ื•ืชืžื™ื›ื” ื—ืœืงื™ืช ื‘-Three.js, PlayCanvas ื•-TensorFlow.js.

ืžื‘ื—ื™ื ื” ืงื•ื ืกืคื˜ื•ืืœื™ืช, WebGPU ืฉื•ื ื” ืž-WebGL ื‘ืื•ืชื” ืžื™ื“ื” ืฉื”-API ื”ื’ืจืคื™ ืฉืœ Vulkan ืฉื•ื ื” ืž-OpenGL, ืืš WebGPU ืื™ื ื• ืžื‘ื•ืกืก ืขืœ ืžืžืฉืง API ื’ืจืคื™ ืกืคืฆื™ืคื™, ืืœื ื”ื•ื ืฉื›ื‘ื” ืื•ื ื™ื‘ืจืกืœื™ืช ื”ืžืฉืชืžืฉืช ื‘ืื•ืชื ืคืจื™ืžื™ื˜ื™ื‘ื™ื ื‘ืจืžื” ื ืžื•ื›ื” ืฉื ืžืฆืืช ื‘ื•ื•ืœืงืŸ, ืžืชื›ืช ื• ื™ืฉื™ืจ 3D. WebGPU ืžืกืคืงืช ืœื™ื™ืฉื•ืžื™ JavaScript ืขื ืฉืœื™ื˜ื” ื‘ืจืžื” ื ืžื•ื›ื” ืขืœ ื”ืืจื’ื•ืŸ, ืขื™ื‘ื•ื“ ื•ืฉื™ื“ื•ืจ ืฉืœ ืคืงื•ื“ื•ืช ืœ-GPU, ื ื™ื”ื•ืœ ืžืฉืื‘ื™ื ืžืฉื•ื™ื›ื™ื, ื–ื™ื›ืจื•ืŸ, ืžืื’ืจื™ื, ืื•ื‘ื™ื™ืงื˜ื™ ื˜ืงืกื˜ื•ืจื” ื•ื”ืฆืœืœื•ืช ื’ืจืคื™ืงื” ื”ื™ื“ื•ืจ. ื’ื™ืฉื” ื–ื• ืžืืคืฉืจืช ืœืš ืœื”ืฉื™ื’ ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื ื™ื•ืชืจ ืขื‘ื•ืจ ื™ื™ืฉื•ืžื™ ื’ืจืคื™ืงื” ืขืœ ื™ื“ื™ ื”ืคื—ืชืช ืขืœื•ื™ื•ืช ื”ืชืงื•ืจื” ื•ื”ื’ื‘ืจืช ื™ืขื™ืœื•ืช ื”ืขื‘ื•ื“ื” ืขื ื”-GPU.

WebGPU ืžืืคืฉืจ ืœื™ืฆื•ืจ ืคืจื•ื™ืงื˜ื™ื ืชืœืช ืžื™ืžื“ื™ื™ื ืžื•ืจื›ื‘ื™ื ืขื‘ื•ืจ ื”ืื™ื ื˜ืจื ื˜ ืฉื‘ื™ืฆื•ืขื™ื”ื ืื™ื ื ื’ืจื•ืขื™ื ื™ื•ืชืจ ืžืชื•ื›ื ื•ืช ืขืฆืžืื™ื•ืช ื”ืžืฉืชืžืฉื•ืช ื™ืฉื™ืจื•ืช ื‘ื•ื•ืœืงืŸ, ืžืชื›ืช ืื• Direct3D, ืืš ืื™ื ืŸ ืงืฉื•ืจื•ืช ืœืคืœื˜ืคื•ืจืžื•ืช ืกืคืฆื™ืคื™ื•ืช. WebGPU ืžืกืคืง ื’ื ื™ื›ื•ืœื•ืช ื ื•ืกืคื•ืช ืœื”ืขื‘ืจืช ืชื•ื›ื ื™ื•ืช ื’ืจืคื™ืงื” ืžืงื•ืจื™ื•ืช ืœื˜ื•ืคืก ื”ืžื•ืชืื ืœืื™ื ื˜ืจื ื˜ ื‘ืืžืฆืขื•ืช ืงื•ืžืคื™ืœืฆื™ื” ืœืชื•ืš WebAssembly. ื‘ื ื•ืกืฃ ืœื’ืจืคื™ืงื” ืชืœืช ืžื™ืžื“ื™ืช, WebGPU ื›ื•ืœืœ ื’ื ื™ื›ื•ืœื•ืช ื”ืงืฉื•ืจื•ืช ืœื”ื•ืจื“ืช ื—ื™ืฉื•ื‘ื™ื ืœ-GPU ื•ื‘ื™ืฆื•ืข ื”ืฆืœืœื•ืช.

ืชื›ื•ื ื•ืช ืขื™ืงืจื™ื•ืช ืฉืœ WebGPU:

  • ื ื™ื”ื•ืœ ื ืคืจื“ ืฉืœ ืžืฉืื‘ื™ื, ืขื‘ื•ื“ืช ื”ื›ื ื” ื•ื”ืขื‘ืจืช ืคืงื•ื“ื•ืช ืœ-GPU (ื‘-WebGL ืื•ื‘ื™ื™ืงื˜ ืื—ื“ ื”ื™ื” ืื—ืจืื™ ืขืœ ื”ื›ืœ ื‘ื‘ืช ืื—ืช). ืฉืœื•ืฉื” ื”ืงืฉืจื™ื ื ืคืจื“ื™ื ืžืกื•ืคืงื™ื: GPUDevice ืœื™ืฆื™ืจืช ืžืฉืื‘ื™ื ื›ื’ื•ืŸ ืžืจืงืžื™ื ื•ืžืื’ืจื™ื; GPUCommandEncoder ืœืงื™ื“ื•ื“ ืคืงื•ื“ื•ืช ื‘ื•ื“ื“ื•ืช, ื›ื•ืœืœ ืฉืœื‘ื™ ืจื™ื ื“ื•ืจ ื•ื—ื™ืฉื•ื‘; GPUCommandBuffer ืฉื™ืขืžื•ื“ ื‘ืชื•ืจ ืœื‘ื™ืฆื•ืข ื‘-GPU. ื ื™ืชืŸ ืœื”ืฆื™ื’ ืืช ื”ืชื•ืฆืื” ื‘ืื–ื•ืจ ื”ืžืฉื•ื™ืš ืœืืœืžื ื˜ ืื—ื“ ืื• ื™ื•ืชืจ ืฉืœ ืงื ื‘ืก, ืื• ืœืขื‘ื“ ืœืœื ืคืœื˜ (ืœื“ื•ื’ืžื”, ื‘ืขืช ื”ืคืขืœืช ืžืฉื™ืžื•ืช ืžื—ืฉื•ื‘). ื”ืคืจื“ืช ื”ืฉืœื‘ื™ื ืžืงืœื” ืขืœ ื”ืคืจื“ืช ืคืขื•ืœื•ืช ื™ืฆื™ืจืช ืžืฉืื‘ื™ื ื•ื”ื›ื ื” ืœืžื˜ืคืœื™ื ืฉื•ื ื™ื ืฉื™ื›ื•ืœื™ื ืœืคืขื•ืœ ืขืœ ืฉืจืฉื•ืจื™ื ืฉื•ื ื™ื.
  • ื’ื™ืฉื” ืฉื•ื ื” ืœืขื™ื‘ื•ื“ ืžืฆื‘ื™ื. WebGPU ืžืฆื™ืข ืฉื ื™ ืื•ื‘ื™ื™ืงื˜ื™ื - GPURenderPipeline ื•-GPUComputePipeline, ื”ืžืืคืฉืจื™ื ืœืฉืœื‘ ืžืฆื‘ื™ื ืฉื•ื ื™ื ืฉื”ื•ื’ื“ืจื• ืžืจืืฉ ืขืœ ื™ื“ื™ ื”ืžืคืชื—, ืžื” ืฉืžืืคืฉืจ ืœื“ืคื“ืคืŸ ืœื ืœื‘ื–ื‘ื– ืžืฉืื‘ื™ื ืขืœ ืขื‘ื•ื“ื” ื ื•ืกืคืช, ื›ืžื• ื”ื™ื“ื•ืจ ืžื—ื“ืฉ ืฉืœ ื”ืฆืœืœื•ืช. ื”ืžืฆื‘ื™ื ื”ื ืชืžื›ื™ื ื›ื•ืœืœื™ื: ื”ืฆืœืœื•ืช, ืคืจื™ืกื•ืช ื—ื™ืฅ ืงื•ื“ืงื•ื“ ื•ืชื›ื•ื ื”, ืคืจื™ืกื•ืช ืงื‘ื•ืฆื•ืช ื“ื‘ื™ืงื•ืช, ืžื™ื–ื•ื’, ืขื•ืžืง ื•ืชื‘ื ื™ื•ืช ื•ืชื‘ื ื™ื•ืช ืคืœื˜ ืœืื—ืจ ืจื™ื ื“ื•ืจ.
  • ืžื•ื“ืœ ืžื—ื™ื™ื‘ ื‘ื“ื•ืžื” ืœืชื›ื•ื ื•ืช ืงื™ื‘ื•ืฅ ื”ืžืฉืื‘ื™ื ืฉืœ Vulkan. ื›ื“ื™ ืœืงื‘ืฅ ืžืฉืื‘ื™ื ื™ื—ื“ื™ื•, WebGPU ืžืกืคืง ืื•ื‘ื™ื™ืงื˜ GPUBindGroup, ืฉื ื™ืชืŸ ืœืฉื™ื™ืš ืœืื•ื‘ื™ื™ืงื˜ื™ื ื“ื•ืžื™ื ืื—ืจื™ื ืœืฉื™ืžื•ืฉ ื‘ื”ืฆืœืœื•ืช ื‘ื–ืžืŸ ื›ืชื™ื‘ืช ืคืงื•ื“ื•ืช. ื™ืฆื™ืจืช ืงื‘ื•ืฆื•ืช ื›ืืœื” ืžืืคืฉืจืช ืœื ื”ื’ ืœื‘ืฆืข ืืช ืคืขื•ืœื•ืช ื”ื”ื›ื ื” ื”ื“ืจื•ืฉื•ืช ืžืจืืฉ, ื•ืžืืคืฉืจืช ืœื“ืคื“ืคืŸ ืœืฉื ื•ืช ื›ืจื™ื›ื•ืช ืžืฉืื‘ื™ื ื‘ื™ืŸ ืงืจื™ืื•ืช ืœืฆื™ื™ืจ ื”ืจื‘ื” ื™ื•ืชืจ ืžื”ืจ. ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืžืจืืฉ ืืช ื”ืคืจื™ืกื” ืฉืœ ื›ืจื™ื›ื•ืช ืžืฉืื‘ื™ื ื‘ืืžืฆืขื•ืช ื”ืื•ื‘ื™ื™ืงื˜ GPUBindGroupLayout.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”