В конце ноября 2024 года занимающийся разработкой графических стандартов консорциум Khronos сообщил, что Nvidia передала организации разработку открытого языка шейдеров Slang и связанного с ним компилятора. Исходный код проекта написан на C++ и опубликован на GitHub под лицензией Apache 2.0. Nvidia занималась поддержкой Slang с 2017 года. Решение широко применяется в производственных проектах в различных отраслях, где используется компьютерная графика.
Предполагается, что разработка Slang на независимой площадке Khronos позволит привлечь в проект новых разработчиков. Также в проекте уже несколько лет принимают участие контрибуторы из Autodesk, Adobe, id Software, Igalia и Valve.
По информации OpenNET, язык Slang по синтаксису очень близок к языку HLSL, применяемому в Direct3D, и примечателен поддержкой модулей, дженериков и интерфейсов для упрощения сопровождения и разработки больших кодовых баз, а также ориентацией на достижение максимальной производительности и использование в приложениях, выполняющих отрисовку в реальном времени. Из дополнительных возможностей отмечается поддержка расширений для использования графических шейдеров для вычислений, связанных с машинным обучением и автоматическим дифференцированием.
Компилятор развивается в соответствии с парадигмой «написал шейдер один раз, запускай где угодно». Проект позволяет преобразовывать шейдеры, написанные на языках Slang, HLSL (High-Level Shader Language) и GLSL (OpenGL Shading Language) в представление для графических API Direct3D 11/12, Vulkan, Metal, OpenGL, WebGPU, OptiX и CUDA, а также в машинный код, способный выполняться на обычном CPU. Помимо компиляции шейдеров в бинарное представление Slang позволяет генерировать на выходе текстовый исходный код на языках C++, MSL (Metal Shading Language) и CUDA, сохраняющий изначальное наименование идентификаторов и структуру вызовов.
Помимо языка Slang компилятор может использоваться для сборки большей части уже существующего кода на языке HLSL без внесения в него изменений или ограничиваясь незначительными правками (например, компания Valve смогла скомпилировать в Slang все HLSL-шейдеры игры Source 2, изменив всего 10 строк кода). Для компиляции GLSL представляется отдельный модуль, поддерживающий большинство внутренних функций и элементов синтаксиса GLSL. При компиляции можно настраивать параметры генерируемого кода, например, формировать как максимально переносимый код, так и код, использующий новые возможности из свежих спецификаций Direct3D и Vulkan.
20 ноября представлен новый выпуск Slang 2024.14.5, в котором появились такие возможности, как новый тип Atomic для выполнения атомарных операций, выражение "where", интерфейс IFunc для написания обобщённых функций, типы Tuple для хранения коллекций значений с разными типами, обобщенные типы с переменным количеством параметров, поддержка Unicode, бэкенды для языков шейдеров Metal и WGSL (применяется в WebGPU). Представлена написанная на Slang реализация растеризатора, поддерживающего технику 3D-рендеринга Gaussian Splatting. Подготовлена online-среда для экспериментов и компиляции из браузера.