A shader nyelvek kérdése manapság egyre égetőbb, ugyanis jelenleg a nagyobb körben támogatott grafikus API-k a HLSL vagy a GLSL egyes verzióiban írt shadereket fogadják el. Persze az újabb, explicit API-k már nem közvetlenül, hanem valamilyen köztes nyelven keresztül, de a lényeg ettől még nem változik, így a shaderek jó része HLSL-ben vagy GLSL-ben van írva.
Hirdetés
Problémát jelent azonban, hogy például a GLSL fejlesztése megfeneklett, így valós újítás nem kerül már bele, míg a HLSL-t ugyan újítja a Microsoft, de viszonylag lassan, és emiatt több tervezett funkció nagyobb késésekkel érkezik. Valójában az alapvető gond az, hogy az alapokat tekintve mind a HLSL-t, mind pedig a GLSL-t kisebb, pár tucat sorból álló kód megírására tervezték, miközben manapság igen nagy, több ezer soros kódokhoz használják ezeket a nyelveket. Technikailag kivitelezhető, csak messze nem optimális a helyzet.
Van azonban egy kevésbé ismert nyelv, a Slang, ami az NVIDIA, a Carnegie Mellon Egyetem, a Stanford Egyetem, az MIT, a Kaliforniai Egyetem San Diego (UCSD) és a Washingtoni Egyetem együttműködéséből született. Ez konkrétan a komplex shader programokhoz lett kifejlesztve, vagyis az alapjait tekintve is optimális a több ezer soros kódokhoz, miközben kompatibilis szinte az összes elterjedt, GPU-kat célzó API-jal.
A Khronos Group most bejelentette a Slang Initiative-et, amelynek a célja a modern igényekhez tervezett Slang nyelv, illetve a hozzá való fordító elterjesztése. Ennek a nyílt forráskódú kezdeményezésnek számos előnye van, többek között maga a Slang fordító nem csak a Slang nyelvet fogadja el, hanem kis módosításokkal a HLSL 2020-at és a GLSL 4.6-ot is, miközben optimális kódot generál az egyes más nyelvekhez, amelyekkel célozhatók az egyes API-k és felületek. Utóbbiakhoz tartozik például a Vulkan, a DirectX 12, a Metal, a WebGPU, illetve az OpenGL is.
A kezdeményezést már támogatja a Valve, illetve az Autodesk, és alapvetően nincs túl nagy ellenérv az alkalmazásával szemben, mivel jól beilleszthető a jelenlegi szoftverkörnyezetekbe.