Всем привет! Я пытался написать скрипт, использующий GLSL для рендеринга множества Мандельброта, но происходит что-то странное.
Я называю эффект functio следующим образом:
vec4 effect( vec4 color, Image texture, vec2 texture_coords, vec2 screen_coords){
Но когда я пытаюсь использовать значения texture_coords, скажем, так:
vec2 c = vec2((texture_coords[0]-WD/2)/100, (texture_coords[1]-HT/2)/100);
Он возвращает одно и то же значение для каждого пикселя; если, с другой стороны, вместо этого я использую screen_coords, это работает, но я боюсь, что если я перетащу окно вокруг него, это может привести к искажению результатов.
Почему я не могу получить texture_coords?
Больше информации о программе и проблемах -fract">здесь
ОБНОВИТЬ
Я переработал код, теперь он выглядит так:
vec4 effect( vec4 color, Image texture, vec2 texture_coords, vec2 window_coords)
{
vec2 c = vec2( ( MinRe + window_coords[0] * ( MaxRe - MinRe ) / ( width + 1 ) ),
( MaxIm - window_coords[1] * ( MaxIm - MinIm ) / ( height + 1 ) )
);
vec2 z = c;
vec2 zn = vec2(0.0, 0.0);
int n_iter = 0;
while( (z[0]*z[0] + z[1]*z[1] < 4) && (n_iter < max_iter)) {
zn[0] = z[0]*z[0] - z[1]*z[1] + c[0];
zn[1] = 2* z[0]*z[1] + c[1];
z[0] = zn[0];
z[1] = zn[1];
n_iter++;
}
Который прекрасно работает. Но когда я использую texture_coords вместо window_coords, код возвращает одно и то же значение для каждого пикселя, несмотря на то, что используемая текстура имеет тот же размер окна.
screen_coords
назван неправильно; настоящее имя будетwindow_coords
. - person Nicol Bolas   schedule 08.01.2016texture_coords
. - person Nicol Bolas   schedule 08.01.2016