Ettevõte NVIDIA on andnud shader-keele Slang ja sellega seotud kompilaatori Khronose konsortsiumi, mis tegeleb graafikandmete standardite arendamisega, tõe alla. Oodatakse, et Slangi projekti arendamine iseseisval Khronose platvormil toob projekti uusi osalejaid. Keel on loodud koostööprojekti raames, kuhu kuuluvad NVIDIA ja USA juhtivad ülikoolid (Carnegie Melloni Ülikool, Stanfordi Ülikool, Massachusettsi Tehnikaülikool, San Diego Ülikool ja Washingtoni Ülikool). Uue koostööprojekti toetamisest teatasid ettevõtted Autodesk, Adobe, id Software, Igalia ja Valve. Kompilaatori kood on kirjutatud C++ keeles ja avatud Apache 2.0 litsentsi alla. Kompilaator toetab Linuxi, Windowsi, macOS-i ja WebAssembly platvorme.
Slangi süntaks on väga sarnane HLSL-iga, mida kasutatakse Direct3D-s, ning see on tuntud modulaarsuse, generikute ja liidestega, et lihtsustada suurte koodibaaside hooldust ja arendust, samuti maksimaalse jõudluse saavutamise ja reaalajas renderdavate rakenduste kasutamise suunaga. Täiendavate võimalustena on välja toodud laienduste tugi graafiliste shaderite kasutamiseks masinõppe ja automaatse diferentseerimisega seotud arvutustes.
Kompilaator arendab end paradiigiga — "kirjuta shader üks kord, käivita igal pool", ja võimaldab konvertida shaderid, mis on kirjutatud Slangi, HLSLi (High-Level Shader Language) ja GLSLi (OpenGL Shading Language) keeltes, kujule, mis on mõeldud graafiliste API-de jaoks nagu Direct3D 11/12, Vulkan, Metal, OpenGL, WebGPU, OptiX ja CUDA, samuti masina koodiks, mis suudab töötada tavalisel CPU-l. Lisaks shaderite kompileerimisele võimaldab Slang genereerida väljundina teksti lähtekoodi C++, MSL (Metal Shading Language) ja CUDA keeltes, säilitades algsed identifikaatorite nimed ja kutsungite struktuuri.
Peale Slangi keele saab kompilaatorit kasutada suure osa juba olemasoleva HLSL koodi kompileerimiseks ilma seda muutmata või vaid väheste muudatustega (näiteks suutis ettevõte Valve kompileerida kõik Source 2 mängu HLSL shaderid Slangiks, muutes vaid 10 koodiread). GLSLi kompileerimiseks on olemas eraldi moodul, mis toetab enamikku sisemisest funktsioonidest ja GLSLi süntaksielementidest. Kompileerimise käigus saab määrata genereeritava koodi parameetreid, näiteks saab genereerida nii maksimaalselt ülekantavat koodi kui ka koodi, mis kasutab uusi võimalusi värsketes Direct3D ja Vulkan spetsifikatsioonides.
Lisaks on tutvustatud uut väljaannet Slang 2024.14.5, kus on esindatud sellised võimalused nagu uus tüüp Atomic<T> atomaarsete operatsioonide teostamiseks, avaldis "where", liidese IFunc tugi üldiste funktsioonide kirjutamiseks, Tuple tüüpide toete väärtuste kogumite salvestamiseks erinevate tüüpidega, üldised tüübid muutuva arvu parameetritega, Unicode tugi, liidesed Metal ja WGSL shader-keelte jaoks (kasutatakse WebGPU-s). Esitletud on Slangi baasil rakendatud rasteriseerija, mis toetab 3D renderdustehnikat Gaussian Splatting. Valmistatud on online keskkond eksperimenteerimiseks ja kompileerimiseks brauseri kaudu.
Allikas: opennet.ru
