Russian Qt Forum

Программирование => Разработка игр => Тема начата: alexlogvinenkoit от Март 26, 2012, 16:19



Название: GLSL шейдер не работает на ATI...
Отправлено: alexlogvinenkoit от Март 26, 2012, 16:19
Всем привет!

Столкнулся с такой проблемой: есть шейдер, он конвертирует 12-битный YUV кадр (YUV420P) в RGB24.
Вот нарисовалась проблема: на карте nVidia отработал шикарно, но вот на ATI некорректно отображает картинку... Изображение получается размером 1/4 нужного, а 3/4 занимает что-то непонятное... Ну и, конечно же, цвета не совпадают, но что-то отдаленно похожее на оригинал есть.

Вот сам шейдер:
Код:
uniform sampler2DRect y_texture, u_texture, v_texture;
uniform float imageHeight;

void main(void) {
    float sx, sy, r, g, b, y, u, v;
    sx = gl_TexCoord[0].x;
    sy = imageHeight - gl_TexCoord[0].y;
    y = texture2DRect(y_texture, vec2(sx / 2.0, sy / 2.0)).r;
    u = texture2DRect(u_texture, vec2(sx / 2.0, sy / 2.0)).r;
    v = texture2DRect(v_texture, vec2(sx / 2.0, sy / 2.0)).r;
    y = 1.1643 * (y - 0.0625);
    u = u - 0.5;
    v = v - 0.5;
    r = y + 1.5958 * v;
    g = y - 0.39173 * u - 0.8129 * v;
    b = y + 2.017 * u;
    gl_FragColor = vec4(r, g, b, 1.0);
}

Подскажите, please, что можно сделать...
Спасибо!


Название: Re: GLSL шейдер не работает на ATI...
Отправлено: twp от Март 26, 2012, 21:52
может просто видюха не поддерживает нужных расширений? Этой (http://www.realtech-vr.com/glview/) утилитой можно узнать поддерживаемые расширения.


Название: Re: GLSL шейдер не работает на ATI...
Отправлено: alexlogvinenkoit от Март 27, 2012, 10:57
Спасибо!

А как в своей программе можно определить, есть там нужные расширения или нет?
И вообще, я полагаю, что OpenGL 2.0 и GLSL 2.0 установлены на всех картах... А я ничего не использую из версий выше...


Название: Re: GLSL шейдер не работает на ATI...
Отправлено: alexlogvinenkoit от Март 27, 2012, 11:52
Только что обнаружил, что на этой же видяхе (ATI) в Linux-e все прекрасно работает... Вообще никак не могу понять, что происходил...


Название: Re: GLSL шейдер не работает на ATI...
Отправлено: twp от Март 27, 2012, 17:19
ну если проблема не в видяхе, то остается софт - драйвера, настройки


Название: Re: GLSL шейдер не работает на ATI...
Отправлено: alexlogvinenkoit от Март 30, 2012, 10:01
Ну да, это я тоже понял... Только вот драйвер-то я не настраивал на nVidia или в Linux... Может в шейдере используется что-то, что не поддерживается ATI... Там, насколько я почитал, нужно писать очень четко, в отличие от nVidia, которая допускает какие-то нечеткости... Или еще что-то...