GLSL vec2 использовать как массив с плавающей запятой? - PullRequest
1 голос
/ 06 мая 2020

я пытаюсь что-то сделать на игрушке с шейдером: https://www.shadertoy.com/view/wsffDN
(исходная ссылка: https://www.shadertoy.com/view/3dtSD7) bufferA line 18

я хочу знаете, почему uv был объявлен как uv

vec2 uv = (fragCoord.xy - iResolution.xy*.5) / iResolution.y;

, но эта строка

sceneColor = vec3((uv[0] + stagger) / initpack + 0.05*0., -0, 0.05);

uv [0] используется как float

как это работает и какое значение становится uv?

1 Ответ

2 голосов
/ 06 мая 2020

Совершенно законно получить доступ к компонентам любого типа vec (или типа mat в этом отношении) с синтаксисом массива. Вы даже можете использовать непостоянный индекс массива (ну, в зависимости от версии GLSL, но версии 1.30+ это позволяют). uv[0] делает именно то, что выглядит: обращается к первому элементу вектора.

...