پشتیبانی WebGPU به بیلدهای شبانه فایرفاکس اضافه شده است

В شبانه فایرفاکس می سازد ظاهر شد پشتیبانی از مشخصات WebGPU، که یک رابط برنامه نویسی برای پردازش گرافیک سه بعدی و محاسبات سمت GPU ارائه می دهد که از نظر مفهومی شبیه به API است. VULKAN, فلز и Direct3D 12. این مشخصات توسط موزیلا، گوگل، اپل، مایکروسافت و اعضای انجمن در حال توسعه است گروه کاری، توسط سازمان W3C ایجاد شده است.

هدف اصلی WebGPU ارائه یک رابط برنامه نویسی ایمن، کاربرپسند، قابل حمل و با کارایی بالا برای پلتفرم وب است تا از فناوری ها و قابلیت های گرافیک سه بعدی ارائه شده توسط API های گرافیکی سیستم مدرن، مانند Direct3D 3 در ویندوز، فلز استفاده کند. در macOS و Vulkan در لینوکس. از نظر مفهومی، WebGPU با WebGL تقریباً به همان شکلی متفاوت است که Vulkan با OpenGL متفاوت است، و در عین حال بر اساس یک API گرافیکی خاص نیست، بلکه یک لایه جهانی است که عموماً از همان ابتدایی های سطح پایین موجود در Vulkan استفاده می کند. فلز و Direct12D.

WebGPU برنامه های جاوا اسکریپت را با کنترل سطح پایین تر بر سازمان، پردازش و انتقال دستورات به GPU، مدیریت منابع مرتبط، حافظه، بافرها، اشیاء بافت و سایه زن های گرافیکی کامپایل شده فراهم می کند. این رویکرد به شما اجازه می دهد تا با کاهش هزینه های سربار و افزایش کارایی کار با GPU، به عملکرد بالاتری برای برنامه های گرافیکی دست یابید.

WebGPU ایجاد پروژه های سه بعدی پیچیده کامل برای وب را امکان پذیر می کند که بدتر از برنامه های مستقلی نیستند که مستقیماً به Vulkan، Metal یا Direct3D دسترسی دارند، اما به پلتفرم های خاصی وابسته نیستند. WebGPU همچنین قابلیت‌های اضافی را هنگام انتقال برنامه‌های گرافیکی بومی به فرمی تحت وب با استفاده از فناوری WebAssembly فراهم می‌کند. علاوه بر گرافیک سه بعدی، WebGPU قابلیت های مربوط به بارگذاری محاسبات روی GPU و پشتیبانی از توسعه سایه زن را نیز پوشش می دهد. سایه بان ها قوطی در زبان سایه‌زنی WebGPU ایجاد شود یا در قالب متوسط ​​SPIR-V مشخص شود و سپس به زبان‌های سایه‌زن که توسط درایورهای فعلی پشتیبانی می‌شوند ترجمه شوند.

WebGPU از مدیریت جداگانه منابع، کارهای مقدماتی و انتقال دستورات به GPU استفاده می کند (در WebGL، یک شیء مسئول همه چیز به طور همزمان بود). سه زمینه جداگانه ارائه شده است:
GPUDevice برای ایجاد منابعی مانند بافت ها و بافرها. GPUCommandEncoder برای رمزگذاری دستورات فردی، از جمله مراحل رندر و محاسبات. GPUCommandBuffer برای اجرا در GPU در صف قرار می گیرد. نتیجه را می توان در یک ناحیه مرتبط با یک یا چند عنصر بوم ارائه کرد یا بدون خروجی پردازش کرد (به عنوان مثال، هنگام اجرای وظایف محاسباتی). جداسازی مراحل، تفکیک عملیات ایجاد و آماده‌سازی منبع را در کنترل‌کننده‌های مختلف که می‌توانند روی رشته‌های مختلف اجرا شوند، آسان‌تر می‌کند.

دومین تفاوت بین WebGPU و WebGL رویکرد متفاوتی برای مدیریت وضعیت ها است. WebGPU دو شی را ارائه می دهد - GPURenderPipeline و GPUComputePipeline، که به شما امکان می دهد حالت های مختلف از پیش تعریف شده توسط توسعه دهنده را ترکیب کنید، که به مرورگر اجازه می دهد منابع را برای کارهای اضافی، مانند کامپایل مجدد سایه بان ها، هدر ندهد. حالت‌های پشتیبانی شده عبارتند از: سایه‌زن‌ها، بافر رأس و طرح‌بندی ویژگی‌ها، طرح‌بندی گروه چسبنده، ترکیب، عمق و الگوها، و فرمت‌های خروجی پس از رندر.

سومین ویژگی WebGPU عمدتاً مدل binding نامیده می شود
یادآور ابزارهای گروه بندی منابع موجود در Vulkan است.
برای گروه بندی منابع با هم، WebGPU یک شی GPUBindGroup ارائه می دهد که می تواند با سایر اشیاء مشابه برای استفاده در سایه بان ها هنگام نوشتن دستورات مرتبط شود. ایجاد چنین گروه‌هایی به راننده اجازه می‌دهد تا اقدامات مقدماتی لازم را از قبل انجام دهد و به مرورگر اجازه می‌دهد تا اتصالات منابع را بین تماس‌های قرعه‌کشی بسیار سریع‌تر تغییر دهد. با استفاده از شی GPUBindGroupLayout می‌توان طرح‌بندی پیوندهای منابع را از پیش تعریف کرد.

پشتیبانی WebGPU به بیلدهای شبانه فایرفاکس اضافه شده است

در فایرفاکس، برای فعال کردن WebGPU در about:config، یک تنظیم "dom.webgpu.enabled" وجود دارد. رندر CanvasContext همچنین نیاز به ترکیب بندی فعال دارد WebRender ("gfx.webrender.all" در about:config)، نوشته شده در Rust و برون سپاری عملیات ارائه محتوای صفحه به GPU. پیاده سازی WebGPU بر اساس کد پروژه است
wgpu، به زبان Rust نوشته شده است و می تواند در بالای API های DX12، Vulkan و Metal در لینوکس، اندروید، ویندوز و macOS اجرا شود (پشتیبانی از DX11 و OpenGL ES 3.0 نیز در حال توسعه است). به موازات آن، گوگل در حال توسعه پیاده سازی دیگری است که در دسترس است شاخه قناری Chromium و با استفاده از پرچم "chrome://flags/#enable-unsafe-webgpu" فعال می شود، اما تاکنون فقط روی macOS و Windows کار می کند.

منبع: opennet.ru

اضافه کردن نظر