В GLSL большинство функций перегружены, и аргумент может быть вектором. Операции и функции могут работать по компонентам. В случае cos
косинус вычисляется для каждого компонента вектора, а результат сохраняется в новом векторе:
Оператор выражения
vec3 color = cos(vec3(.5,.3,.4));
может читаться как
vec3 color = vec3(cos(.5), cos(.3), cos(.4));