Google ááẠChrome 113 ááœáẠWebGPU ááááºáá ẠAPI ááŸáá·áº WGSL (WebGPU Shading Language) á¡ááœáẠáá°áááºážáá¶á·ááá¯ážááŸá¯áá«áááºááŒá±á¬ááºáž ááŒá±áá¬áá²á·ááŒá®ážá áá±á 2 áááºáá±á·ááœáẠááœááºááŸáááẠá á®á ááºáá¬ážáááºá WebGPU ááẠVulkaná Metalá ááŸáá·áº Direct3D 12 ááá¯á·ááŸáá·áº áááºáá°ááá·áº áááá¯ááááºážáááºáž á¡ááºáá¬áá±á·á áºááᯠáá¶á·ááá¯ážáá±ážááŒá®áž GPU áááºááŒááºážááœáẠáá¯ááºáá±á¬ááºááá·áº áááá¯ááááºáá»á¬ážááᯠáá±ážáá¬ážááẠá¡ááœááºá¡ááŒááºááŸáá·áº ááœááºáá»ááºááŒááºážáá²á·ááá¯á·áá±á¬ GPU-side áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá¡ááœáẠshader language ááᯠá¡áá¯á¶ážááŒá¯ááœáá·áºáá±ážáááºá WebGPU á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠChromeOSá macOS ááŸáá·áº Windows áááºáá±á¬ááºááŸá¯áá»á¬ážááœááºáᬠáááŠážááœááºáᬠááœáá·áºáá¬ážáááºááŒá áºáááºá Linux ááŸáá·áº Android á¡ááœááºá WebGPU áá¶á·ááá¯ážááŸá¯ááᯠáá±á¬ááºááá¯ááºážáááºá áœá²ááœáẠá áááºá¡áá¯á¶ážááŒá¯ááá¯ááºáááºááŒá áºáááºá
Chrome á¡ááŒááºá WebGPU á¡ááœáẠá ááºážáááºáá¶á·ááá¯ážááŸá¯ááᯠFirefox ááœáẠá§ááŒá®á 2020 ááááºážá á ááºážáááºáá²á·ááŒá®áž 2021 áá¯ááŸá Ạááá¯áááºáá¬áááááºážá Safari ááœáẠá ááºážáááºáá²á·áááºá Firefox ááœáẠWebGPU ááá¯ááœáá·áºáááºá áááºááẠabout:config ááœáẠdom.webgpu.enabled ááŸáá·áº gfx.webgpu.force-enabled flags ááᯠáááºááŸááºááá·áºáááºá Firefox ááŸáá·áº Safari ááœáẠáá°áááºážá¡ááá¯ááºáž WebGPU ááá¯ááœáá·áºááẠá¡á á®á¡á ááºáááŸááá±ážáá«á Firefox ááŸáá·áº Chrome á¡ááœáẠáá®ááœááºáá¯ááºáá¯ááºáá¬ážáá±á¬ WebGPU á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá»á¬ážááᯠáá®ážááŒá¬ážá á¬ááŒáá·áºááá¯ááºáá¯á¶á á¶ááŒáá·áº áááá¯ááºááẠ- Dawn (C++) ááŸáá·áº wgpu (Rust) ááᯠááá·áºá¡ááºááºáá®áá±ážááŸááºážáá»á¬ážááœáẠWebGPU áá¶á·ááá¯ážááŸá¯ááᯠáá±á«ááºážá ááºáááºá¡ááœáẠáááºá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá WebGL ááᯠáá°áááºážá¡ááá¯ááºáž á¡áá¯á¶ážááŒá¯ááá·áº áá¬áááºááŒá®áž JavaScript á á¬ááŒáá·áºááá¯ááºáá»á¬ážááá¯á· WebGPU áá¶á·ááá¯ážááŸá¯ááá¯áááºáž ááá·áºááœááºážááẠáá¯ááºáá±á¬ááºáá±áá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá WebGPU á¡ááœáẠá¡áá±á¬ááºá¡áá¶á· á¡ááŒáá·áºá¡á á¯á¶ááᯠBabylon.js ááœáẠááŒá±áá¬áá¬ážááŒá®ážá ááŸáá·áº Three.jsá PlayCanvas ááŸáá·áº TensorFlow.js ááá¯á·ááœáẠáá áºá áááºáá áºááá¯ááºáž áá¶á·ááá¯ážáá±ážáá¬ážáá«áááºá
ááá±á¬ááá¬ážá¡áá WebGPU ááẠVulkan ááááºáá ẠAPI ááẠOpenGL ááŸáá·áºááá°ááá·áºáá¯á¶á á¶á¡ááá¯ááºáž WebGPU ááŸáá·áº áá»á¬ážá áœá¬ááœá²ááŒá¬ážáááºá ááá¯á·áá±á¬áº WebGPU ááẠáá®ážááŒá¬ážááááºáá ẠAPI ááá¯á¡ááŒá±áá¶áá¬ážááŒááºážááá¯ááºáá±á¬áºáááºáž Vulkaná Metal ááŸáá·áº áá°áá®áá±á¬á¡ááá·áºáááá·áº primitives áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯ááá·áº universal layer áá áºáá¯ááŒá áºáááºá Direct3D WebGPU ááẠá¡ááœá²á·á¡á ááºážá¡áá±á«áº á¡ááá·áºáááá·áºááááºážáá»á¯ááºááŸá¯á GPU ááá¯á· á¡áááá·áºáá±ážáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááŒááºážááŸáá·áº áá±ážááá¯á·ááŒááºážá áááºá ááºá¡áááºážá¡ááŒá áºáá»á¬ážá ááŸááºáá¬ááºá ááŒá¬ážáá¶áá»á¬ážá á¡ááœááºá¡ááŒááºá¡áá¬ááá¹áá¯áá»á¬ážááŸáá·áº á á¯á ááºážáá¬ážáá±á¬ ááááºáá áºá¡ááááºá¡á¬áá«ááá»á¬ážááᯠá á®áá¶ááá·áºááœá²ááŒááºážááá¯á·ááŒáá·áº WebGPU á¡ááºááºáá®áá±ážááŸááºážáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáá«áááºá á€áá»ááºážáááºááŸá¯ááẠááá·áºá¡á¬áž áá¯ááºáá»á ááááºáááºáá¬ááŒá®áž GPU ááŸáá·áº á¡áá¯ááºáá¯ááºááŒááºážá á áœááºážáá±á¬ááºáááºááᯠááá¯ážááŒáŸáá·áºááŒááºážááŒáá·áº ááááºáá áºá¡ááºááºáá®áá±ážááŸááºážáá»á¬ážá¡ááœáẠááá¯ááá¯ááŒáá·áºáá¬ážáá±á¬á áœááºážáá±á¬ááºáááºááᯠáááŸáá á±áááºááŒá áºáááºá
WebGPU ááẠVulkaná Metal ááá¯á·ááá¯áẠDirect3D ááᯠááá¯ááºááá¯ááºá¡áá¯á¶ážááŒá¯ááá·áº áá®ážááŒá¬ážááááºáá±á¬ááºážáá»á¬ážááŸáá·áº ááá»áááºáááºáá² áá®ážááŒá¬ážáááá¯ááááºáá»á¬ážááẠááá¯ááá¯ážááá·áº áááºá¡ááœáẠááŸá¯ááºááœá±ážáá±á¬ 3D ááá±á¬áá»ááºáá»á¬ážááᯠáááºáá®ážááá¯ááºá á±áááºá WebGPU ááẠáá¬ááááááºáá áºáááá¯ááááºáá»á¬ážááᯠWebAssembly ááœááºá á¯á ááºážááŒááºážááŒáá·áº web-enabled form áá áºáá¯á¡ááŒá áºááá¯á· porting ááŒá¯áá¯ááºááẠá¡ááá¯á áœááºážáá±á¬ááºáááºáá»á¬ážááᯠáá±ážáá«áááºá 3D ááááºáá áºá¡ááŒááºá WebGPU ááẠGPU ááá¯á· ááœááºáá»ááºááŸá¯áá»á¬ážááᯠáááºááŸá¬ážááŒááºážááŸáá·áº shaders áá»á¬ážááᯠáá¯ááºáá±á¬ááºááŒááºážááá¯ááºáᬠá áœááºážáááºáá»á¬ážáááºáž áá«áááºáááºá
WebGPU áá¡áááá¡ááºá¹áá«áááºáá»á¬áž
- á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáá®ážááŒá¬ážá á®áá¶ááá·áºááœá²ááŒááºážá ááŒááºáááºááŒááºážáá¯ááºáááºážááŸáá·áº GPU ááá¯á· á¡áááá·áºáá»á¬ážáá±ážááá¯á·ááŒááºáž (WebGL ááœáẠá¡áá¬ááá¹áá¯áá áºáá¯ááẠá¡áá¬á¡á¬ážáá¯á¶ážá¡ááœáẠáá áºááŒáá¯ááºááẠáá¬áááºááŸááááº)á áá®ážááŒá¬ážá¡ááŒá±á¬ááºážá¡áá¬áá¯á¶ážáá¯ááᯠáá¶á·ááá¯ážáá±ážáááº- ááœá²á·á ááºážáááºáá±á¬ááºáá¯á¶ááŸáá·áº ááŒá¬ážáá¶áá»á¬ážáá²á·ááá¯á·áá±á¬ á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáááºáá®ážáááºá¡ááœáẠGPUDeviceá áááºáááºááŒááºážááŸáá·áº ááœááºáá»ááºááŒááºážá¡ááá·áºáá»á¬ážá¡áá«á¡ááẠáá áºáŠážáá»ááºážá á® command áá»á¬ážááᯠáá¯ááºááœááºážáááºá¡ááœáẠGPUCommandEncoderá GPUCommandBuffer ááẠGPU áá±á«áºááœáẠáá¯ááºáá±á¬ááºááẠáááºážá á®áá±áá«áááºá ááááºááᯠáá áºáᯠááá¯á·ááá¯áẠáá áºáá¯áááºááá¯áá±á¬ áááºážáááºááŒááºá ááºáá»á¬ážááŸáá·áº áááºá ááºáá±ááá·áº á§áááá¬ááœáẠááŒááºááá¯ááá¯ááºáááºá ááá¯á·ááá¯áẠá¡ááœááºáááŸááá² áá¯ááºáá±á¬ááºáá±ááẠ(á¥ááá¬á ááœááºáá»ááºááŸá¯áá¯ááºáá±á¬ááºáá±áá»áááºááœááº)á á¡ááá·áºáá»á¬ážááᯠááá¯ááºážááŒá¬ážááŒááºážááŒáá·áº á¡áááºážá¡ááŒá áºáááºáá®ážááŒááºážááŸáá·áº ááŒááºáááºááŒááºážáá¯ááºáááºážáá±á¬ááºáá¬áá»á¬ážááᯠááá°áá®áá±á¬ thread áá»á¬ážááœáẠáá¯ááºáá±á¬ááºááá¯ááºáá±á¬ ááá°áá®áá±á¬ ááá¯ááºááœááºááŒá±ááŸááºážáá°áá»á¬ážá¡ááŒá Ạááœá²ááŒá¬ážááẠááá¯ááá¯ááœááºáá°á á±áááºá
- áá¯ááºáá±á¬ááºáá±ááá·áº ááŒááºáááºáá»á¬ážá¡ááœáẠááœá²ááŒá¬ážáá±á¬áá»ááºážáááºááŸá¯á WebGPU ááẠá¡áá¬ááá¹áá¯ááŸá áºáá¯ááᯠáá¶á·ááá¯ážáá±ážááẠ- GPURenderPipeline ááŸáá·áº GPUComputePipeline ááẠáá±á¬á·ááºáá²áá±ážáá¬ážáá°á០ááŒáá¯áááºáááºááŸááºáá¬ážáá±á¬ ááŒááºáááºá¡áá»áá¯ážáá»áá¯ážááᯠáá±á«ááºážá ááºááá¯ááºá á±áá¬á áááºážááẠbrowser á¡á¬áž ááŒááºáááºáá±á«ááºážá ááºážááŒááºážáá²á·ááá¯á·áá±á¬ áá±á¬ááºáááºááœá²á¡áá¯ááºáá»á¬ážááœáẠá¡áááºážá¡ááŒá áºáá»á¬ážááᯠááŒá¯ááºážáá®ážááŒááºážáááŒá¯ááẠááœáá·áºááŒá¯áá±ážááá·áºá¡áá¬ááŒá áºáááºá áá¶á·ááá¯ážáá±ážáá¬ážáá±á¬ ááŒááºáááºáá»á¬áž ááœááº- shadersá vertex ááŒá¬ážáá¶ááŸáá·áº áááºááœáŸááºážáá»áẠá¡ááŒááºá¡áááºáá»á¬ážá áááºá á±ážáá²áá±á¬ á¡á¯ááºá ᯠá¡ááŒááºá¡áááºáá»á¬ážá áá±á¬á ááºááŒááºážá á¡áááºááŸáá·áº áá¯á¶á á¶áá»á¬ážááŸáá·áº ááá¯á·á áº-áááºáááºááŸá¯ á¡ááœááºáá±á¬áºáááºáá»á¬ážá
- Vulkan á á¡áááºážá¡ááŒá áºá¡á¯ááºá á¯ááœá²á·ááŒááºážá¡ááºá¹áá«áááºáá»á¬ážáá²á·ááá¯á· áá±á«ááºážá ááºáá¬ážáá±á¬áá¯á¶á á¶á á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá¡áá°ááᜠá¡á¯ááºá á¯ááœá²á·áááºá WebGPU ááẠá¡áááá·áºáá»á¬ážáá±ážáá¬ážáá±á áẠShaders áá»á¬ážááœáẠá¡áá¯á¶ážááŒá¯áááºá¡ááœáẠá¡ááŒá¬ážáá±á¬ á¡áá¬ážáá°á¡áá¬áá»á¬ážááŸáá·áº áááºá ááºááá¯ááºááá·áº GPUBindGroup á¡áá¬ááá¹áá¯ááᯠáá¶á·ááá¯ážáá±ážáá«áááºá ááá¯ááá¯á·áá±á¬á¡ááœá²á·áá»á¬ážááá¯áááºáá®ážááŒááºážááẠáá¬ááºáá±á¬ááºážá¡á¬áž ááá¯á¡ááºáá±á¬ááŒáá¯áááºááŒááºáááºáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºááá¯ááºá á±ááŒá®áž ááœá²áá±á«áºáá±á«áºááá¯ááŸá¯áá»á¬ážááŒá¬ážááœáẠá¡áááºážá¡ááŒá áºáá»áááºáááºááŸá¯áá»á¬ážááᯠááá±á¬ááºáá¬á¡á¬áž ááŒá±á¬ááºážáá²ááá¯ááºá á±áá«áááºá GPUBindGroupLayout á¡áá¬ááá¹áá¯ááᯠá¡áá¯á¶ážááŒá¯á áááºážááŒá áºá ááºážááŸá±á¬ááºááŒááºážá á¡ááŒááºá¡áááºááᯠááŒáá¯áááºáááºááŸááºááá¯ááºáááºá
source: opennet.ru