ΠšΠΎΠ½ΡΠΎΡ€Ρ†ΠΈΡƒΠΌ Khronos взял Π² свои Ρ€ΡƒΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ компилятора ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² Slang

Компания 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-срСда для экспСримСнтов ΠΈ компиляции ΠΈΠ· Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru