public static void Set(this ProgramBinding _, FloatUniform uniform, float value)
 => Gl.Uniform1(uniform.Location, value);
 public static unsafe void Set(this ProgramBinding _, Mat4Uniform uniform, bool transpose, Matrix4x4 matrix)
 => Gl.UniformMatrix4(uniform.Location, 1, transpose, &matrix.M11);
 public static void Set(this ProgramBinding _, Vec3Uniform uniform, Vector3 vector)
 => Gl.Uniform3(uniform.Location, vector.X, vector.Y, vector.Z);
 public static void Set(this ProgramBinding _, Vec4Uniform uniform, Vector4 vector)
 => Gl.Uniform4(uniform.Location, vector.X, vector.Y, vector.Z, vector.W);
 public static void Set(this ProgramBinding _, Vec2Uniform uniform, Vector2 vector)
 => Gl.Uniform2(uniform.Location, vector.X, vector.Y);