انویدیا زبان سایهزن Slang و کامپایلر مرتبط با آن را به کنسرسیوم Khronos، کنسرسیومی که استانداردهای گرافیکی را توسعه میدهد، اهدا کرده است. انتظار میرود توسعه پروژه Slang بر روی پلتفرم مستقل Khronos، مشارکتکنندگان جدیدی را جذب کند. این زبان به عنوان یک پروژه مشترک بین انویدیا و دانشگاههای پیشرو ایالات متحده (دانشگاه کارنگی ملون، دانشگاه استنفورد، موسسه فناوری ماساچوست، دانشگاه کالیفرنیا در سن دیگو و دانشگاه واشنگتن) ایجاد شده است. شرکتهای Autodesk، Adobe، id Software، Igalia و Valve حمایت خود را از این پروژه مشترک جدید اعلام کردهاند. کد کامپایلر با زبان ++C نوشته شده و تحت مجوز Apache 2.0 متنباز است. این کامپایلر از پلتفرمهای زیر پشتیبانی میکند: Linux, Windows, macOS و وب اسمبلی.
سینتکس Slang بسیار شبیه به Direct3D HLSL است و به دلیل پشتیبانی از ماژول ها، ژنریک ها و رابط ها برای ساده سازی نگهداری و توسعه پایگاه های کد بزرگ و همچنین تمرکز آن بر دستیابی به حداکثر کارایی و استفاده در برنامه های رندر بلادرنگ قابل توجه است. ویژگی های اضافی شامل پشتیبانی از برنامه های افزودنی برای استفاده از سایه زن های گرافیکی برای محاسبات مربوط به یادگیری ماشین و تمایز خودکار است.
کامپایلر مطابق با پارادایم توسعه داده شده است - "یک بار سایه زن بنویس، هر جا اجرا شود" و به شما امکان می دهد سایه بان های نوشته شده به زبان عامیانه، HLSL (زبان سایه زن سطح بالا) و GLSL (زبان سایه باز OpenGL) را به یک نمایش برای Direct3D 11 گرافیکی API /12، Vulkan، Metal، OpenGL، WebGPU، OptiX و CUDA، و همچنین کدهای بومی با قابلیت روی یک CPU معمولی اجرا شود. علاوه بر کامپایل کردن سایه بان ها در یک نمایش باینری، Slang به شما امکان می دهد کد منبع متن خروجی را در C++، MSL (زبان سایه فلزی) و CUDA تولید کنید، که نام شناسه اصلی و ساختار تماس را حفظ می کند.
علاوه بر زبان عامیانه، از کامپایلر می توان برای کامپایل بیشتر کدهای HLSL موجود بدون ایجاد تغییرات در آن یا محدود کردن آن به تغییرات جزئی استفاده کرد (به عنوان مثال، Valve توانسته تمام سایه زن های HLSL بازی Source 2 را کامپایل کند. زبان عامیانه، تغییر تنها 10 خط کد). یک ماژول جداگانه برای کامپایل GLSL ارائه شده است که از اکثر توابع داخلی و عناصر نحوی GLSL پشتیبانی می کند. در طول کامپایل، می توانید پارامترهای کد تولید شده را پیکربندی کنید، به عنوان مثال، می توانید هم قابل حمل ترین کد و هم کدی را که از ویژگی های جدید از آخرین مشخصات Direct3D و Vulkan استفاده می کند، ایجاد کنید.
علاوه بر این، نسخه جدیدی از Slang 2024.14.5 معرفی شد که ویژگی هایی مانند نوع جدید Atomic را معرفی کرد. برای انجام عملیات اتمی، عبارت «where»، رابط IFunc برای نوشتن توابع عمومی، انواع Tuple برای ذخیره مجموعه مقادیر با انواع مختلف، انواع عمومی با تعداد متغیر متغیر، پشتیبانی یونیکد، پشتیبان برای Metal و شیدر WGSL زبان ها (مورد استفاده در WebGPU). پیادهسازی یک شطرنجساز نوشته شده به زبان عامیانه که از تکنیک رندر سه بعدی Gaussian Splatting پشتیبانی میکند، ارائه شده است. یک محیط آنلاین برای آزمایش و گردآوری از مرورگر آماده شده است.
منبع: opennet.ru
