Кіріспе
Графикалық бағдарламалау тілі
Көлеңкелеу тілі – шадер эффекттерін бағдарламалауға бейімделген графикалық бағдарламалау тілі. Көлеңкелеу тілдері әдетте "вектор", "матрица", "түс" және "нормаль" сияқты арнайы дерек түрлерін қамтиды.
Желіден тыс реендерлеу
Офлайн рендерингте қолданылатын көлеңкелеу тілдері әдетте табиғи тілге жақын болады, сондықтан бағдарламалау бойынша ерекше білім қажет емес. Офлайн рендерингтің мақсаты – нақты уақыт рендерингінен көбірек уақыт және есептеу ресурстарын жұмсап, ең жоғары сапалы суреттерді жасау.
Гудинидің VEX көлеңкелеу тілі
Houdini VEX (Vector Expressions) көлеңкелеу тілі (көбінесе "VEX" деп қысқартылады) RenderMan-ға ұқсас құрылған. Дегенмен, оның толыққанды 3D пакетіне енуі, көлеңке жазушыға көлеңкенің ішіндегі деректерге қол жеткізу мүмкіндігін береді, бұл әдетте рендеринг ортасында болмайтын мүмкіндік. RSL және VEX арасындағы тілдік ерекшеліктер көбінесе синтаксистік, сондай-ақ бірнеше көлеңке операцияларының атауларындағы айырмашылықтардан туындайды.
Геллато көлеңкелеу тілі
Gelato-ның көлеңкелеу тілі, Houdini-дің VEX-і сияқты, RenderMan-ге ұқсас құрылған. Gelato Shading Language және RSL арасындағы ерекшеліктер көбінесе синтаксистік – Gelato функция анықтамаларында аргументтерді бөлу үшін үтірлердің орнына нүктелерді пайдаланады, сондай-ақ кейбір көлеңкелеу операцияларының атаулары мен параметрлері басқаша.
Ашық көлеңкелеу тілі
Ашық көлеңкелеу тілі (OSL) Sony Pictures Imageworks компаниясының Arnold Renderer-і үшін әзірленген. Ол Blender-дің Cycles рендерлеу қозғалтқышында да қолданылады. OSL-дің беттік және көлемдік шейдерлері беттердің немесе көлемдердің жарықты маңызды үлгі алу арқылы қалай шашыратынын анықтайды, осылайша ол сәулелерді іздеу және жаһандық жарықтандыруды қолдайтын физикалық негіздегі рендерлерге өте ыңғайлы.
Нақты уақыт реендері
Шын уақытты көрсету үшін көлеңкелеу тілдері қазір кеңінен таралған. Олар бұрынғы парадигмаларға қарағанда жоғары аппараттық абстракцияны және трансформация мен көлеңкелеу теңдеулерін қатты кодтаудан гөрі икемді бағдарламалау моделін ұсынады. Олар аз шығынмен көбірек бақылау мен бай мазмұнға мүмкіндік береді. GPU-да тікелей орындалуға арналған шейдерлер ағын бағдарламалау моделінің арқасында жоғары өнімді жалпы мақсаттағы өңдеуге пайдалы болды; бұл ұқсас аппараттық құралдарда жұмыс істейтін есептеу шейдерлерін жасауға әкелді (қараңыз: GPGPU). Тарихи тұрғыдан алғанда, нарықта бірнеше мұндай тілдер басымдық танытты; олар төменде сипатталған.
ARB құрастыру тілі
OpenGL Architecture Review Board 2002 жылы ARB ассемблер тілін бағдарламаланатын графикалық процессорлар үшін стандартты төмен деңгейдегі нұсқаулар жиынтығы ретінде белгіледі. Жоғары деңгейдегі OpenGL көлеңкелеу тілдері көбінесе жүктеу және орындау үшін ARB ассемблеріне компиляцияланады. Жоғары деңгейдегі көлеңкелеу тілдерінен өзгеше, ARB ассемблері бақылау ағынын немесе тармақталуды қолдамайды. Дегенмен, GPU-лар арасында үйлесімділік қажет болған жағдайда ол қолданыла береді.
OpenGL көлеңкелеу тілі
GLSL немесе glslang деп те аталады, бұл OpenGL үшін арналған стандартталған көлеңкелеу тілі. Бұл тіл төбелік және фрагменттік өңдеуді бір командалар жинағында біріктіреді, соның арқасында шартты циклдар мен тармақталу мүмкін болады. GLSL-ден бұрын ARB құрастыру тілі қолданылды.
Cg бағдарламалау тілі
Nvidia әзірлеген Cg тілі, өндіріс процесін оңай және тиімді интеграциялау үшін жасалған. Ол API-ға тәуелді емес және активтерді басқаруды жақсартуға арналған көптеген тегін құралдармен бірге келеді. Cg тілінің дамуы 2012 жылы тоқтатылды және қазіргі таңда ескірген деп есептеледі.
DirectX шейдерлер жинақтау тілі
Direct3D 8 және 9-дағы шейдерлік құрастыру тілі Shader Model 1.0/1.1, 2.0 және 3.0 нұсқаларындағы төбелік және пиксельдік шейдерлерді бағдарламалау үшін негізгі тіл болып табылады. Ол графикалық драйверге орындалу үшін жіберілетін аралық шейдер байт-кодының тікелей көрінісі. Шейдерлік құрастыру тілі 4.0, 4.1, 5.0 және 5.1 бірыңғай Shader Model нұсқаларын тікелей бағдарламалау үшін қолданылмайды, бірақ оны жөндеу мақсатында аралық байт-кодты көрсету үшін пайдалану мүмкіндігі сақталады.
DirectX жоғары деңгейдегі шедер тілі
Жоғары деңгейлі көлеңкелеу тілі (HLSL) – DirectX 9 және одан жоғары нұсқалары мен Xbox ойын консольдары үшін C стиліндегі көлеңкелеу тілі. Ол Nvidia-ның Cg тілімен байланысты, бірақ DirectX және Xbox платформаларында ғана қолданылады. HLSL бағдарламалары DirectX шейдерлік ассемблер тіліне баламалы байт-кодына компиляцияланады. HLSL Direct3D 9 нұсқасында шейдерлік ассемблер тіліне опциялық балама ретінде ұсынылды, бірақ Direct3D 10 және одан жоғары нұсқаларында міндетті болды, себебі шейдерлік ассемблер тілі қолданудан шығарылды.
Adobe Pixel Bender және Adobe Graphics Assembly Language бағдарламалық жасақтамасы
Adobe Systems Pixel Bender-ді Adobe Flash 10 API-нің бір бөлігі ретінде қосты. Pixel Bender тек пикселдерді өңдей алатын, бірақ 3D нүктелік деректерді өңдеуге қабілетсіз болды. Flash 11 Stage3D деп аталатын толық жаңа 3D API-ді ұсынды, ол Adobe Graphics Assembly Language (AGAL) деп аталатын өзінің көлеңкелеу тілін пайдаланады, бұл толыққанды 3D үдетуді қамтамасыз етеді. Flash 11.8 нұсқасында Pixel Bender үшін GPU үдетуі жойылды. AGAL – төменгі деңгейдегі, бірақ платформаға тәуелсіз көлеңкелеу тілі, оны, мысалы, немесе GLSL-ге компиляциялауға болады.
PlayStation шейдерлік тілі
Sony PlayStation Shader Language (PSSL) тілін, Cg/HLSL тіліне ұқсас, бірақ PlayStation 4 платформасына арналған көлеңкелеу тілі ретінде жариялады. PSSL-дің ПК-дегі HLSL шейдерлерімен үлкен дәрежеде үйлесімді екендігі хабарланды, сонымен қатар PS4 платформасы үшін қосымша мүмкіндіктері бар.
Металл көлеңкелеу тілі
Apple компаниясы 2012 жылдан бері шығарылған көптеген Mac компьютерлерінде, 5S үлгісінен бастап iPhone-дарда және iPad Air үлгісінен бастап iPad-тарда жұмыс істейтін Metal деп аталатын төменгі деңгейдегі графикалық API құрды. Metal-дың Metal Shading Language (MSL) деп аталатын өз көлеңкелеу тілі бар, ол C++14 негізінде жасалған және clang және LLVM арқылы іске асырылған. MSL төбелік, фрагменттік және есептеу процестерін біріктіреді.
WebGPU көлеңкелеу тілі
WebGPU көлеңкелеу тілі (WGSL) — WebGPU үшін арналған көлеңкелеу тілі. Яғни, WebGPU API-ді пайдаланатын қосымша GPU-да іске асатын, шейдерлер деп аталатын бағдарламаларды жасау үшін WGSL-ді қолданады.