Если вам нужно условное ветвление в GLSL (в вашем случае для выбора функции замедления на основе переменной), вам нужно использовать операторы if или switch.
Например
if (easingId == 0) {
result = cubicIn();
} else if (easingId == 1) {
result = cubicOut();
}
или
switch (easingId) {
case 0:
result = cubicIn();
break;
case 1:
result = cubicOut();
break;
}
GLSL не поддерживает указатели функций, поэтому, к сожалению, решения с динамической диспетчеризацией (таблицы указателей функций и т. Д.) Будут невозможны.
Хотя ваш вопрос явно касался данных, передаваемых в шейдер, я также хотел бы отметить, что если значение, управляющее ветвью, передается в шейдер как единое целое, то вместо этого вы можете скомпилировать несколько вариантов вашего шейдера. , а затем динамически выбрать правильный (то есть тот, который использует правильную функцию замедления) из самого приложения. Это сэкономит стоимость ветвления в шейдере.