Chrome เบˆเบฐเบ›เบฐเบเบญเบšเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ WebGPU

ะšะพะผะฟะฐะฝะธั Google ะพะฑัŠัะฒะธะปะฐ ะพ ะฒะบะปัŽั‡ะตะฝะธะธ ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ ะฟะพะดะดะตั€ะถะบะธ ะณั€ะฐั„ะธั‡ะตัะบะพะณะพ API WebGPU ะธ ัะทั‹ะบะฐ ัˆะตะนะดะตั€ะพะฒ WGSL (WebGPU Shading Language) ะฒ ะฒะตั‚ะบะต Chrome 113, ั€ะตะปะธะท ะบะพั‚ะพั€ะพะน ะฝะฐะผะตั‡ะตะฝ ะฝะฐ 2 ะผะฐั. WebGPU ะฟั€ะตะดะพัั‚ะฐะฒะปัะตั‚ ัั…ะพะถะธะน ั Vulkan, Metal ะธ Direct3D 12 ะฟั€ะพะณั€ะฐะผะผะฝั‹ะน ะธะฝั‚ะตั€ั„ะตะนั ะดะปั ะฒั‹ะฟะพะปะฝะตะฝะธั ะพะฟะตั€ะฐั†ะธะน ะฝะฐ ัั‚ะพั€ะพะฝะต GPU, ั‚ะฐะบะธั… ะบะฐะบ ั€ะตะฝะดะตั€ะธะฝะณ ะธ ะฒั‹ั‡ะธัะปะตะฝะธั, ะฐ ั‚ะฐะบะถะต ะฟะพะทะฒะพะปัะตั‚ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ัะทั‹ะบ ัˆะตะนะดั€ะพะฒ ะดะปั ะฝะฐะฟะธัะฐะฝะธั ะฟั€ะพะณั€ะฐะผะผ, ั€ะฐะฑะพั‚ะฐัŽั‰ะธั… ะฝะฐ ัั‚ะพั€ะพะฝะต GPU. ะ ะตะฐะปะธะทะฐั†ะธั WebGPU ะฑัƒะดะตั‚ ะฒะบะปัŽั‡ะตะฝะฐ ะฒะฝะฐั‡ะฐะปะต ั‚ะพะปัŒะบะพ ะฒ ัะฑะพั€ะบะฐั… ะดะปั ChromeOS, macOS ะธ Windows. ะ”ะปั Linux ะธ Android ะฟะพะดะดะตั€ะถะบะฐ WebGPU ะฑัƒะดะตั‚ ะฐะบั‚ะธะฒะธั€ะพะฒะฐะฝะฐ ะฟะพะทะดะฝะตะต.

ะšั€ะพะผะต Chrome ัะบัะฟะตั€ะธะผะตะฝั‚ะฐะปัŒะฝะฐั ะฟะพะดะดะตั€ะถะบะฐ WebGPU ั‚ะตัั‚ะธั€ัƒะตั‚ัั ั ะฐะฟั€ะตะปั 2020 ะณะพะดะฐ ะฒ Firefox ะธ ั ะฝะพัะฑั€ั 2021 ะณะพะดะฐ ะฒ Safari. ะ”ะปั ะฒะบะปัŽั‡ะตะฝะธั WebGPU ะฒ Firefox ะฒ about:config ัะปะตะดัƒะตั‚ ะฒั‹ัั‚ะฐะฒะธั‚ัŒ ั„ะปะฐะณะธ dom.webgpu.enabled ะธ gfx.webgpu.force-enabled. ะž ะฟะปะฐะฝะฐั… ะฟะพ ะฒะบะปัŽั‡ะตะฝะธัŽ WebGPU ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ ะฒ Firefox ะธ Safari ะฟะพะบะฐ ะฝะต ัะพะพะฑั‰ะฐะตั‚ัั. ะ ะฐะทะฒะธะฒะฐะตะผั‹ะต ะดะปั Firefox ะธ Chrome ั€ะตะฐะปะธะทะฐั†ะธะธ WebGPU ะดะพัั‚ัƒะฟะฝั‹ ะฒ ั„ะพั€ะผะต ะพั‚ะดะตะปัŒะฝั‹ั… ะฑะธะฑะปะธะพั‚ะตะบ โ€” Dawn (ะก++) ะธ wgpu (Rust), ะบะพั‚ะพั€ั‹ะต ะผะพะถะฝะพ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะดะปั ะธะฝั‚ะตะณั€ะฐั†ะธะธ ะฟะพะดะดะตั€ะถะบะธ WebGPU ะฒ ัะฒะพะธ ะฟั€ะธะปะพะถะตะฝะธั. ะขะฐะบะถะต ะฒะตะดั‘ั‚ัั ั€ะฐะฑะพั‚ะฐ ะฟะพ ะดะพะฑะฐะฒะปะตะฝะธัŽ ะฟะพะดะดะตั€ะถะบะธ WebGPU ะฒ ะฟะพะฟัƒะปัั€ะฝั‹ะต JavaScript-ะฑะธะฑะปะธั‚ะตะบะธ, ะธะทะฝะฐั‡ะฐะปัŒะฝะพ ะธัะฟะพะปัŒะทัƒัŽั‰ะธะต WebGL. ะะฐะฟั€ะธะผะตั€, ะฟะพะปะฝะฐั ะฟะพะดะดะตั€ะถะบะฐ WebGPU ัƒะถะต ะทะฐัะฒะปะตะฝะฐ ะฒ Babylon.js, ะฐ ั‡ะฐัั‚ะธั‡ะฝะฐั ะฒ Three.js, PlayCanvas ะธ TensorFlow.js.

ะšะพะฝั†ะตะฟั‚ัƒะฐะปัŒะฝะพ WebGPU ะพั‚ะปะธั‡ะฐะตั‚ัั ะพั‚ WebGL ะฟั€ะธะผะตั€ะฝะพ ั‚ะฐะบ ะถะต, ะบะฐะบ ะณั€ะฐั„ะธั‡ะตัะบะธะน API Vulkan ะพั‚ะปะธั‡ะฐะตั‚ัั ะพั‚ OpenGL, ะฝะพ ะฟั€ะธ ัั‚ะพะผ WebGPU ะฝะต ะพัะฝะพะฒั‹ะฒะฐะตั‚ัั ะฝะฐ ะบะพะฝะบั€ะตั‚ะฝะพะผ ะณั€ะฐั„ะธั‡ะตัะบะพะผ API, ะฐ ะฟั€ะตะดัั‚ะฐะฒะปัะตั‚ ัะพะฑะพะน ัƒะฝะธะฒะตั€ัะฐะปัŒะฝัƒัŽ ะฟั€ะพัะปะพะนะบัƒ, ะธัะฟะพะปัŒะทัƒัŽั‰ัƒัŽ ั‚ะต ะถะต ะฝะธะทะบะพัƒั€ะพะฒะฝะตะฒั‹ะต ะฟั€ะธะผะธั‚ะธะฒั‹, ั‡ั‚ะพ ะธะผะตัŽั‚ัั ะฒ Vulkan, Metal ะธ Direct3D. WebGPU ะฟั€ะตะดะพัั‚ะฐะฒะปัะตั‚ ะฟั€ะธะปะพะถะตะฝะธัะผ ะฝะฐ JavaScript ัั€ะตะดัั‚ะฒะฐ ะดะปั ะฝะธะทะบะพัƒั€ะพะฒะฝะตะฒะพะณะพ ะบะพะฝั‚ั€ะพะปั ะทะฐ ะพั€ะณะฐะฝะธะทะฐั†ะธะตะน, ะพะฑั€ะฐะฑะพั‚ะบะพะน ะธ ะฟะตั€ะตะดะฐั‡ะตะน ะบะพะผะฐะฝะด ะบ GPU, ัƒะฟั€ะฐะฒะปะตะฝะธั ัะฒัะทะฐะฝะฝั‹ะผะธ ั€ะตััƒั€ัะฐะผะธ, ะฟะฐะผัั‚ัŒัŽ, ะฑัƒั„ะตั€ะฐะผะธ, ะพะฑัŠะตะบั‚ะฐะผะธ ั‚ะตะบัั‚ัƒั€ ะธ ัะบะพะผะฟะธะปะธั€ะพะฒะฐะฝะฝั‹ะผะธ ะณั€ะฐั„ะธั‡ะตัะบะธะผะธ ัˆะตะนะดะตั€ะฐะผะธ. ะŸะพะดะพะฑะฝั‹ะน ะฟะพะดั…ะพะด ะฟะพะทะฒะพะปัะตั‚ ะดะพะฑะธั‚ัŒัั ะฑะพะปะตะต ะฒั‹ัะพะบะพะน ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ะธ ะณั€ะฐั„ะธั‡ะตัะบะธั… ะฟั€ะธะปะพะถะตะฝะธะน ะทะฐ ัั‡ั‘ั‚ ัะฝะธะถะตะฝะธั ะฝะฐะบะปะฐะดะฝั‹ั… ั€ะฐัั…ะพะดะพะฒ ะธ ะฟะพะฒั‹ัˆะตะฝะธั ัั„ั„ะตะบั‚ะธะฒะฝะพัั‚ะธ ั€ะฐะฑะพั‚ั‹ ั GPU.

WebGPU ะดะฐั‘ั‚ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ัะพะทะดะฐะฒะฐั‚ัŒ ะดะปั Web ัะปะพะถะฝั‹ะต 3D-ะฟั€ะพะตะบั‚ั‹, ั€ะฐะฑะพั‚ะฐัŽั‰ะธะต ะฝะต ั…ัƒะถะต, ั‡ะตะผ ะพะฑะพัะพะฑะปะตะฝะฝั‹ะต ะฟั€ะพะณั€ะฐะผะผั‹, ะฝะฐะฟั€ัะผัƒัŽ ะธัะฟะพะปัŒะทัƒัŽั‰ะธะต Vulkan, Metal ะธะปะธ Direct3D, ะฝะพ ะฝะต ะฟั€ะธะฒัะทะฐะฝะฝั‹ะต ะบ ะบะพะฝะบั€ะตั‚ะฝั‹ะผ ะฟะปะฐั‚ั„ะพั€ะผะฐะผ. WebGPU ั‚ะฐะบะถะต ะฟั€ะตะดะพัั‚ะฐะฒะปัะตั‚ ะดะพะฟะพะปะฝะธั‚ะตะปัŒะฝั‹ะต ะฒะพะทะผะพะถะฝะพัั‚ะธ ะฟั€ะธ ะฟะพั€ั‚ะธั€ะพะฒะฐะฝะธะธ ะฝะฐั‚ะธะฒะฝั‹ั… ะณั€ะฐั„ะธั‡ะตัะบะธั… ะฟั€ะพะณั€ะฐะผะผ ะฒ ั„ะพั€ะผัƒ, ัะฟะพัะพะฑะฝัƒัŽ ั€ะฐะฑะพั‚ะฐั‚ัŒ ะฝะฐ ะฑะฐะทะต web-ั‚ะตั…ะฝะพะปะพะณะธะน, ะฑะปะฐะณะพะดะฐั€ั ะบะพะผะฟะธะปัั†ะธะธ ะฒ WebAssembly. ะšั€ะพะผะต 3D-ะณั€ะฐั„ะธะบะธ WebGPU ะพั…ะฒะฐั‚ั‹ะฒะฐะตั‚ ะธ ะฒะพะทะผะพะถะฝะพัั‚ะธ, ัะฒัะทะฐะฝะฝั‹ะต ั ะฒั‹ะฝะพัะพะผ ะฒั‹ั‡ะธัะปะตะฝะธะน ะฝะฐ ัั‚ะพั€ะพะฝัƒ GPU ะธ ะฒั‹ะฟะพะปะฝะตะฝะธะตะผ ัˆะตะนะดะตั€ะพะฒ.

เบ„เบธเบ™โ€‹เบ™เบฐโ€‹เบชเบปเบกโ€‹เบšเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เบชเปเบฒโ€‹เบ„เบฑเบ™โ€‹เบ‚เบญเบ‡ WebGPUโ€‹:

  • เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เบงเบฝเบเบ‡เบฒเบ™เบเบฐเบเบฝเบกเปเบฅเบฐเบเบฒเบ™เบชเบปเปˆเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เป„เบ›เบซเบฒ GPU (เปƒเบ™ WebGL เบงเบฑเบ”เบ–เบธเบซเบ™เบถเปˆเบ‡เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™). เบชเบฒเบกเบชเบฐเบžเบฒเบšเบเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰: GPUDevice เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เป€เบŠเบฑเปˆเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เปเบฅเบฐ buffers; GPUCommandEncoder เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™, เบฅเบงเบกเบ—เบฑเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เปเบฅเบฐเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ; GPUCommandBuffer เบˆเบฐเบ–เบทเบเบˆเบฑเบ”เบ„เบดเบงเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™ GPU. เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบญเบปเบ‡เบ›เบฐเบเบญเบš canvas, เบซเบผเบทเบ›เบฐเบกเบงเบ™เบœเบปเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ output (เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ„เบญเบกเบžเบดเบงเป€เบ•เบต). เบเบฒเบ™เปเบเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เปเบเบเบเบฒเบ™เบชเป‰เบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปเบฅเบฐเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฒเบ™เบเบฐเบเบฝเบกเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™เบซเบปเบงเบ‚เปเป‰เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.
  • เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบเบฑเบšเบฅเบฑเบ”เบ›เบฐเบกเบงเบ™เบœเบปเบ™. WebGPU เบชเบฐเป€เบซเบ™เบตเบชเบญเบ‡เบงเบฑเบ”เบ–เบธ - GPURenderPipeline เปเบฅเบฐ GPUComputePipeline, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบปเบกเบ—เบปเบšเบฅเบฑเบ”เบ•เปˆเบฒเบ‡เป†เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบเปˆเบญเบ™เป‚เบ”เบเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเบšเปเปˆเป€เบชเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปƒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เป€เบŠเบฑเปˆเบ™: recompiling shaders. เบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบšเบฅเบงเบกเบกเบต: shaders, vertex buffer เปเบฅเบฐ attribute layouts, layouts group sticky, blending, depth and patterns, and post-render output formats.
  • เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบซเบผเบฒเบเบ„เบทเบเบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐเบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบกเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบญเบ‡ Vulkan. เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบธเปˆเบกเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบฎเปˆเบงเบกเบเบฑเบ™, WebGPU เปƒเบซเป‰เบงเบฑเบ”เบ–เบธ GPUBindGroup, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบšเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบญเบทเปˆเบ™เป†เป€เบžเบทเปˆเบญเปƒเบŠเป‰เปƒเบ™ shaders เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ‚เบฝเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡. เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบธเปˆเบกเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบŠเปˆเบงเบเปƒเบซเป‰เบœเบนเป‰เบ‚เบฑเบšเบ‚เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบฝเบกเบžเป‰เบญเบกเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒ, เปเบฅเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป‚เบ—เปเบšเบšเปเบ•เป‰เบกเป„เบ”เป‰เป„เบงเบ‚เบถเป‰เบ™. เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒเป‚เบ”เบเปƒเบŠเป‰เบงเบฑเบ”เบ–เบธ GPUBindGroupLayout.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™