Russian Qt Forum
Декабрь 10, 2019, 12:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: GLSL шейдер не работает на ATI...  (Прочитано 5353 раз)
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, что можно сделать...
Спасибо!
Записан
twp
Гость
« Ответ #1 : Март 26, 2012, 21:52 »

может просто видюха не поддерживает нужных расширений? Этой утилитой можно узнать поддерживаемые расширения.
Записан
alexlogvinenkoit
Гость
« Ответ #2 : Март 27, 2012, 10:57 »

Спасибо!

А как в своей программе можно определить, есть там нужные расширения или нет?
И вообще, я полагаю, что OpenGL 2.0 и GLSL 2.0 установлены на всех картах... А я ничего не использую из версий выше...
Записан
alexlogvinenkoit
Гость
« Ответ #3 : Март 27, 2012, 11:52 »

Только что обнаружил, что на этой же видяхе (ATI) в Linux-e все прекрасно работает... Вообще никак не могу понять, что происходил...
Записан
twp
Гость
« Ответ #4 : Март 27, 2012, 17:19 »

ну если проблема не в видяхе, то остается софт - драйвера, настройки
Записан
alexlogvinenkoit
Гость
« Ответ #5 : Март 30, 2012, 10:01 »

Ну да, это я тоже понял... Только вот драйвер-то я не настраивал на nVidia или в Linux... Может в шейдере используется что-то, что не поддерживается ATI... Там, насколько я почитал, нужно писать очень четко, в отличие от nVidia, которая допускает какие-то нечеткости... Или еще что-то...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.097 секунд. Запросов: 20.