The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Консорциум Khronos взял в свои руки разработку открытого компилятора шейдеров Slang

22.11.2024 22:25

Компания NVIDIA передала язык шейдеров Slang и связанный с ним компилятор под покровительство консорциума Khronos, занимающегося разработкой графических стандартов. Предполагается, что разработка проекта Slang на независимой площадке Khronos позволит привлечь в проект новых участников. Язык создан как совместный проект NVIDIA и ведущих университетов США (Университет Карнеги-Меллона, Стэнфордский университет, Массачусетский технологический институт, Калифорнийский университет в Сан-Диего и Вашингтонский университет). О поддержке нового совместного проекта заявили компании Autodesk, Adobe, id Software, Igalia и Valve. Код компилятора написан на языке C++ и открыт под лицензией Apache 2.0. Компилятором поддерживаются платформы Linux, Windows, macOS и WebAssembly.

Язык 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.

Дополнительно представлен новый выпуск Slang 2024.14.5, в котором появились такие возможности, как новый тип Atomic<T> для выполнения атомарных операций, выражение "where", интерфейс IFunc для написания обобщённых функций, типы Tuple для хранения коллекций значений с разными типами, обобщенные типы с переменным количеством параметров, поддержка Unicode, бэкенды для языков шейдеров Metal и WGSL (применяется в WebGPU). Представлена написанная на Slang реализация растеризатора, поддерживающего технику 3D-рендеринга Gaussian Splatting. Подготовлена online-среда для экспериментов и компиляции из браузера.

  1. Главная ссылка к новости (https://www.khronos.org/news/p...)
  2. OpenNews: Проект ZLUDA продолжит развитие в форме универсальной реализации CUDA
  3. OpenNews: Проект LibreCUDA для запуска кода CUDA на GPU NVIDIA без проприетарного Runtime
  4. OpenNews: Google открыл код системы компиляции графических шейдеров для API Vulkan
  5. OpenNews: Компания Valve открыла новый компилятор шейдеров для GPU AMD
  6. OpenNews: Представлен Rust GPU, инструментарий для разработки шейдеров на языке Rust
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62279-slang
Ключевые слова: slang, shader, khronos, nvidia
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (33) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 23:01, 22/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +14 +/
    > написал шейдер один раз, запускай где угодно

    Написал шейдер один раз, теперь отлаживай везде.

     
     
  • 2.13, Аноним (13), 00:58, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    ну так чему и научила Java. Ага, один раз и везде, щаз.
     
     
  • 3.26, Аноним (-), 19:39, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Один раз напиши, семь раз отладь
     
  • 2.22, pavlinux (ok), 14:26, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > теперь отлаживай везде.

    Шейдер спит - зарплата идëт

     

  • 1.2, Аноним (2), 23:03, 22/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это то самое которая в сталкере 2 используется?
     
     
  • 2.5, Аноним (-), 23:21, 22/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да, там чето долго.

    И вот что я понять не могу, - а почему 160 гб? Как бы не жалко, но ведь много же?

     
     
  • 3.7, Аноним (7), 00:01, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Стоковые ассеты забыли удалить. Ну и там сжатие бывает что в 20 раз можно сжать без ухищрений. Обычное дело.
     
     
  • 4.8, Аноним (8), 00:05, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Репак — 130 с чем-то гигабайт. Видимо, не шибко-то жмётся.
     
     
  • 5.24, Аноним (24), 16:15, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Там страна лучших программистов, ну. Круче индусов даже.
     
     
  • 6.27, Аноним (27), 20:05, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Страна лучших программистов — это про «Смуту». Зато на 80 Гб винчестер влезет!
     
  • 3.35, videokojima (?), 01:49, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    да вроде типично для пятоанрильного проекта с большой картой.. вот еслиб полностью выкинули запечённый свет оставив только динамический то похудела бы до 60, но так пока только в starwars outlaws сделали и то не без жертв в стилистике.. а тут и тот и тот сделан такчто и место жрётся и фепесики жрутся хлудшее обоих миров собрали. но что поделаешь
     
  • 2.29, Аноним (-), 00:26, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    в сталкере - что под руку рабочее попалось. проблема ue5 проектов - там надо долго и нудно полиш
     
  • 2.36, videokojima (?), 01:53, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    сомнительно чтобы в сталкере шейдеры компилились через сланг а не через стандартный анриловский компилятор хлсл шейдеров..
     

  • 1.6, Аноним (7), 23:42, 22/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Приходится завязываться на shaderc, который является обёрткой, потому что glslang такое кривое дерьмище, отваливающееся в каждом обновлении. Сабж тоже угробят.
     
     
  • 2.10, Аноним (10), 00:28, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Нужен 16-ый стандарт.
     

  • 1.9, Аноним (10), 00:27, 23/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Нвидия режет Косты денег им мало. И так уже дороже апле, но нет надо больше золото. Все эти сказки про привлечение пользователей и независимые площадки мы слышали много раз.
     
  • 1.11, Аноним (11), 00:28, 23/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Компания NVIDIA передала язык шейдеров Slang и связанный с ним >компилятор

       В английском языке слова закончились, или студенты про Slang не слышали? Или тут типа с большой буквы :)

     
     
  • 2.12, Аноним (12), 00:40, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    думаю это от S(hader) Lang(uage)
     
     
  • 3.17, Анониссимус (?), 07:57, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Тогда бы надо было сразу -- shlang. Вот бы здесь начало подгорать от путаницы :D
     
     
  • 4.21, Аноним (21), 13:26, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    "А нарисуй мне 3D-шланг на Шланг"?
     
     
  • 5.25, Анониссимус (?), 16:44, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > "А нарисуй мне 3D-шланг на Шланг"?

    Не совсем. Просто шлангом здесь пренебрежительно называют Clang.

     

  • 1.15, Слава Линуксу (?), 03:57, 23/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Неужели мы вернёмся во времена, когда не нужно было компилировать шейдеры пол часа?
     
     
  • 2.16, Аноним (16), 07:34, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Для этого заставить видеокарты снова использовать унифицированные шейдеры вместо того зоопарка что сейчас. Казнить и расстреливать всех погромистов что пишут не на hlsl\glsl и следить за этим в реальном времени.
    Успехов это форсить)
     
  • 2.23, Аноним (23), 15:04, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Почему ты так решил? Тут же сказано что дженерики ввели чтоб было удобно писать более жирные шейдеры.  Но во времена долгой компиляции шейдеров вроде никто не планирует возвращается, всех же устраивает периодически фризящая картинка с он-тайм компиляцией.
     
  • 2.28, AleksK (ok), 23:44, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Что там у тебя за железо, что шейдеры компилит пол часа?
     
     
  • 3.41, Loki13 (ok), 11:54, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Shadow of Tomb Raider, при запуске компилит(пишет Обработка шейдеров Vulkan) шейдеры 5 минут(только что проверил) на 3900Х и 4070Ti, хотя видеокарта не важна вроде, по top все 12 ядер заняты обработкой, на процессоре это делает. Да, можно прервать, но если не прерывать, то вот так. Запускаю из стима под линуксом.
     
     
  • 4.42, AleksK (ok), 13:14, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Shadow of Tomb Raider, при запуске компилит(пишет Обработка шейдеров Vulkan) шейдеры 5
    > минут(только что проверил) на 3900Х и 4070Ti, хотя видеокарта не важна
    > вроде, по top все 12 ядер заняты обработкой, на процессоре это
    > делает. Да, можно прервать, но если не прерывать, то вот так.
    > Запускаю из стима под линуксом.

    Во-первых, где я говорил что шейдеры не компилятся? Компилятся. Но пол часа это перебор.

    Во-вторых, третья серия райзенов это весьма так себе по производительности. Давно бы поменял его на 5xxx, там даже мать менять не надо, а производительность вот реально раза в полтора будет больше.

    У меня на R9 7900x в последней драгонаге шейдеры компились пару минут даже наверное чуть меньше.

     
  • 2.32, Bottle (?), 09:29, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не вернёмся. В этом вина исключительно разработчиков игр, которые используют новомодные техники вроде specialisation constants, которые делают из одного универсального шейдера сотню разных, а всё это чудо надо ещё потом скомпилировать...
    Почему Crysis 3 (не ремастер) не лагает на современном железе, а игры на Unreal 5 зачастую тормозят? Ответ кроется в том, что программисты слишком заигрались со сложными шейдерами и попытками их оптимизировать. У всего должен быть предел.
     
  • 2.37, videokojima (?), 02:01, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    увы нет. тут помогут либо системы кеширования прекомпиленых шейдеров и их распространение с игрой как может делать стим и как делают консоли, либо динамическая компиляция шейдеров что может приводить к графическим глитчам либо правильная настройка системного кэша шейдеров видеокарты чтобы хотябы не каждый раз на запуске компилить а только если что-то в игре изменилось.. ну и естественно компиляция шейдеров не целой пачкой а грамотно разбитыми кусками чтобы при небольших патчах перекомпилировать приходилось бы малый кусочек кэша.. впрочем это компилятор может будет чутка быстрее предыдущих но врятли существенно.
     

  • 1.18, Аноним (18), 09:21, 23/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Да там жеж история какая. Когда то OpenGL был исторически первым стандартом 3D. А потом пришло более удачное D3D, все производители видушек ринулись его поддерживать и OpenGL ничего не оставалось, кроме как просто копировать функционал D3D и прибивать его фишки костылями. Так пде примерно и с этими шейдерными языками. Надо было обязательно изобрести несколько несовместимых между собой, чтобы проггерам было "удобнее". Именно из за этого винда и жива до сих пор, что там все стандартизовано и зачастую разрабы не хотят парится и просто выбирают D3D12.
     
     
  • 2.19, Тоже Аноним (-), 11:19, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Теперь и в линуксе будет стандартизировано? Или новость не про это?
     
     
  • 3.38, Массоны Рептилоиды (?), 11:55, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да
     

  • 1.43, хеллоу (-), 11:25, 30/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А как с++-биндинги-то написать к этим шейдерам универсально а не шесть отдельных рендереров?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру