На основании этой информации я посчитал, что в моём случае выражениеКод: [Выделить]gl.uniform1f(location, v0)
Присваивают значение переменной-атрибуту по ссылке location. Метод gl.uniform1f() присваивает единственное значение и используется для изменения первого элемента вектора uniform-переменной. Второму и третьему элементам вектора будут присвоены значения 0.0, а четвёртому - значение 1.0. Аналогично действует метод gl.uniform2f(), который присваивает значения первым двум элементам, третьему присваивает 0.0, а четвёртому - значение 1.0. Метод gl.uniform3f() присваивает значение первым трём элементам, а четвёртому - значение 1.0. Метод gl.uniform4f() присваивает значения всем четырём элементам вектора.
gl.uniform2f(location, v0, v1)
gl.uniform3f(location, v0, v1, v2)
gl.uniform4f(location, v0, v1, v2, v3)
Используемая Uniform* команда должна соответствовать размеру uniform объявленного в шейдере. Например, для загрузки uniform, объявленного как bvec2, следует использовать либо Uniform2i{v}, либо Uniform2f{v}. В случае несоответствия Uniform* команды будет генерироваться ошибка INVALID_OPERATION. В данном примере попытка использовать Uniform1iv сгенерирует такую ошибку.
Для всех других типов используемая Uniform* команда должна соответствовать размеру и типу uniform, объявленному в шейдере. Никаких преобразований типов не выполняется. Например, для загрузки uniform объявленного как vec4, должен использоваться Uniform4f{v}. Для загрузки матрицы 3х3 - должна быть использована команда UniformMatrix3fv. В случае несоответствия Uniform* команды будет генерироваться ошибка INVALID_OPERATION. В данном примере попытка использовать Uniform4i{v} сгенерирует такую ошибку.
... и может быть подставлено вместо первого варианта.Как оказалось - не может.