Мой код скомпилировался без ошибок, но не работал, пока я не добавил vec3 перед скобками. Содержимое было компонентами vec3, поэтому я бы предположил, что GLSL обрабатывает его как вектор или выдает мне ошибку, если не может, но просто принял его. Сообщение об ошибке (невозможно преобразовать из 3-компонентного вектора с плавающей точкой в highp 3-компонентный вектор с плавающей запятой) появляется только в том случае, если я удаляю "-vec3(0.)".
Итак, в чем смысл just (...) в GLSL и почему он молча принимается при вычитании vec3?
Примеры:
//this works:
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 uv = fragCoord.xy/iResolution.xy;
vec3 col = vec3(uv.x, uv.y, 0.)-vec3(0.);
fragColor = vec4(vec3(col), 1.);
}
.
//this doesn't:
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 uv = fragCoord.xy/iResolution.xy;
vec3 col = (uv.x, uv.y, 0.)-vec3(0.);
fragColor = vec4(vec3(col), 1.);
}
.
//this gives the helpful error message
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 uv = fragCoord.xy/iResolution.xy;
vec3 col = (uv.x, uv.y, 0.);
fragColor = vec4(vec3(col), 1.);
}