WebGPU اغلب به عنوان یک API گرافیک وب تلقی می شود که با افشای قابلیت های سخت افزاری پیشرفته و فعال کردن عملیات رندرینگ و محاسباتی بر روی یک GPU، مشابه Direct3D 12، Metal و Vulkan، دسترسی یکپارچه و سریع به GPU ها را می دهد.
با این حال، WebGPU از مرزهای یک API جاوا اسکریپت فراتر می رود. این یک بلوک ساختمانی اساسی شبیه به WebAssembly است، با مفاهیمی که به دلیل اکوسیستم رو به رشد آن فراتر از وب است. تیم Chrome WebGPU را چیزی فراتر از فناوری وب میداند. این یک اکوسیستم پر رونق است که حول یک فناوری اصلی متمرکز شده است.
کاوش در اکوسیستم فعلی
سفر با مشخصات جاوا اسکریپت آغاز می شود، تلاش مشترکی که شامل سازمان های متعددی مانند اپل، گوگل، اینتل، موزیلا و مایکروسافت می شود. همه مرورگرهای وب اصلی WebGPU را پیاده سازی کرده اند یا در حال پیاده سازی هستند.
در همان زمان، موزیلا و گوگل پتانسیل WebGPU را در برنامه های کاربردی پلتفرم خاص تشخیص دادند و پیاده سازی WebGPU را از مرورگرها جدا کردند و امکان استفاده مستقل را فراهم کردند.
برای Chrome، این به عنوان Dawn عملی شد، یک کتابخانه C/C++ که فراخوانهای WebGPU را به دستورات درایور GPU ترجمه میکند. Dawn به برنامههای C و C++ اجازه میدهد تا از WebGPU به صورت بومی استفاده کنند، و با استفاده از تخصص فروشنده مرورگر، یک انتزاع GPU قابل حمل و ارگونومیک ارائه میدهد.
همانطور که در پست وبلاگ WebGPU نشان داده شد: API گرافیک بین پلتفرمی فردا ، انتقال یک برنامه WebGPU مخصوص پلتفرم به وب ساده است. Emscripten ، زنجیره ابزار C++ WebAssembly، در حال حاضر از WebGPU پشتیبانی می کند و برای انتقال آن به وب، تنها به حداقل تغییرات نیاز دارد.
همچنین میتوانید کد JavaScript WebGPU خود را در خارج از مرورگر با زمان اجرا Node.js JavaScript اجرا کنید زیرا شامل یک ماژول WebGPU مبتنی بر Dawn است . این به شما امکان می دهد تا کد خود را بدون تغییر در سمت سرور یا در سایر زمینه های خاص پلت فرم اجرا کنید.
یک اکوسیستم مشابه برای Rust با wgpu ، پیادهسازی WebGPU فایرفاکس وجود دارد. Wgpu را می توان مستقیماً در برنامه های Rust ادغام کرد، که سپس می تواند با استفاده از web-sys به وب منتقل شود. علاوه بر این، زمان اجرا Deno JavaScript از WebGPU از طریق wgpu پشتیبانی می کند. اتحاد wgpu با پست وبلاگ Deno را ببینید.
این یک اکوسیستم موازی بین Rust و C++ همانطور که در نمودار زیر نشان داده شده است ایجاد می کند.
افق های در حال ظهور
اکوسیستم WebGPU فراتر از قلمروهای جاوا اسکریپت، C++ و Rust است.
زبان برنامه نویسی ترجیحی شما ممکن است در واقع قبلاً پیوندهایی برای WebGPU داشته باشد زیرا مهندسانی که روی پیاده سازی WebGPU کار می کنند نیز در حال توسعه یک هدر C مشترک برای WebGPU هستند. این می تواند برای هدف قرار دادن Dawn، wgpu، و دیگران استفاده شود، و ایجاد اتصالات برای زبان های با استفاده از C FFI را آسان می کند.
تیم کروم همچنین در نظر دارد از Dawn بهعنوان پیشفرض رندر برای همه عناصر رابط کاربری مرورگر، از جمله منوها، نوارهای ابزار، ابزارهای توسعهدهنده و محتوای وب استفاده کند. این امر نیاز به اجرای رندر جداگانه برای هر API بومی را از بین می برد و فرآیند توسعه را ساده می کند. این ویژگی در مرحله آزمایشی روی macOS و Windows پشت پرچم chrome://flags/#skia-graphite
قرار دارد.
WebGPU اغلب به عنوان یک API گرافیک وب تلقی می شود که با افشای قابلیت های سخت افزاری پیشرفته و فعال کردن عملیات رندرینگ و محاسباتی بر روی یک GPU، مشابه Direct3D 12، Metal و Vulkan، دسترسی یکپارچه و سریع به GPU ها را می دهد.
با این حال، WebGPU از مرزهای یک API جاوا اسکریپت فراتر می رود. این یک بلوک ساختمانی اساسی شبیه به WebAssembly است، با مفاهیمی که به دلیل اکوسیستم رو به رشد آن فراتر از وب است. تیم Chrome WebGPU را چیزی فراتر از فناوری وب میداند. این یک اکوسیستم پر رونق است که حول یک فناوری اصلی متمرکز شده است.
کاوش در اکوسیستم فعلی
سفر با مشخصات جاوا اسکریپت آغاز می شود، تلاش مشترکی که شامل سازمان های متعددی مانند اپل، گوگل، اینتل، موزیلا و مایکروسافت می شود. همه مرورگرهای وب اصلی WebGPU را پیاده سازی کرده اند یا در حال پیاده سازی هستند.
در همان زمان، موزیلا و گوگل پتانسیل WebGPU را در برنامه های کاربردی پلتفرم خاص تشخیص دادند و پیاده سازی WebGPU را از مرورگرها جدا کردند و امکان استفاده مستقل را فراهم کردند.
برای Chrome، این به عنوان Dawn عملی شد، یک کتابخانه C/C++ که فراخوانهای WebGPU را به دستورات درایور GPU ترجمه میکند. Dawn به برنامههای C و C++ اجازه میدهد تا از WebGPU به صورت بومی استفاده کنند، و با استفاده از تخصص فروشنده مرورگر، یک انتزاع GPU قابل حمل و ارگونومیک ارائه میدهد.
همانطور که در پست وبلاگ WebGPU نشان داده شد: API گرافیک بین پلتفرمی فردا ، انتقال یک برنامه WebGPU مخصوص پلتفرم به وب ساده است. Emscripten ، زنجیره ابزار C++ WebAssembly، در حال حاضر از WebGPU پشتیبانی می کند و برای انتقال آن به وب، تنها به حداقل تغییرات نیاز دارد.
همچنین میتوانید کد JavaScript WebGPU خود را در خارج از مرورگر با زمان اجرا Node.js JavaScript اجرا کنید زیرا شامل یک ماژول WebGPU مبتنی بر Dawn است . این به شما امکان می دهد تا کد خود را بدون تغییر در سمت سرور یا در سایر زمینه های خاص پلت فرم اجرا کنید.
یک اکوسیستم مشابه برای Rust با wgpu ، پیادهسازی WebGPU فایرفاکس وجود دارد. Wgpu را می توان مستقیماً در برنامه های Rust ادغام کرد، که سپس می تواند با استفاده از web-sys به وب منتقل شود. علاوه بر این، زمان اجرا Deno JavaScript از WebGPU از طریق wgpu پشتیبانی می کند. اتحاد wgpu با پست وبلاگ Deno را ببینید.
این یک اکوسیستم موازی بین Rust و C++ همانطور که در نمودار زیر نشان داده شده است ایجاد می کند.
افق های در حال ظهور
اکوسیستم WebGPU فراتر از قلمروهای جاوا اسکریپت، C++ و Rust است.
زبان برنامه نویسی ترجیحی شما ممکن است در واقع قبلاً پیوندهایی برای WebGPU داشته باشد زیرا مهندسانی که روی پیاده سازی WebGPU کار می کنند نیز در حال توسعه یک هدر C مشترک برای WebGPU هستند. این می تواند برای هدف قرار دادن Dawn، wgpu، و دیگران استفاده شود، و ایجاد اتصالات برای زبان های با استفاده از C FFI را آسان می کند.
تیم کروم همچنین در نظر دارد از Dawn بهعنوان پیشفرض رندر برای همه عناصر رابط کاربری مرورگر، از جمله منوها، نوارهای ابزار، ابزارهای توسعهدهنده و محتوای وب استفاده کند. این امر نیاز به اجرای رندر جداگانه برای هر API بومی را از بین می برد و فرآیند توسعه را ساده می کند. این ویژگی در مرحله آزمایشی روی macOS و Windows پشت پرچم chrome://flags/#skia-graphite
قرار دارد.