Преобразование YUV с помощью фрагментного шейдера

Я реализовал преобразование YUV в RGB с помощью фрагментного шейдера, написанного на языке шейдеров Nvidia. (Y, U и V хранятся в отдельных текстурах, которые комбинируются с помощью мульти-текстурирования в моем фрагментном шейдере). Он отлично работает под OpenGL, но под Direct3D я просто не могу заставить изображение на выходе выглядеть правильно. Я начинаю подозревать, что Direct3D каким-то образом изменяет образцы Y, U и V, прежде чем я получу возможность сделать свою вещь преобразования YUV. Кто-нибудь знает, вносит ли Direct3D какие-либо изменения в значения, хранящиеся в текстурах, до запуска фрагментного шейдера и как их отключить>?

Вы это где-нибудь выпустили? Я борюсь с а) изучением преобразования YUV-RGB и б) одновременным изучением Cg. Я бы с удовольствием посмотрел на то, что вы сделали.

moswald 17.06.2009 23:39

Проверить mdk.org.pl/2007/11/17/gl-colorspace-conversions

dicroce 18.06.2009 18:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
2
5 562
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Единственное, что приходит в голову, это то, что текстуры имеют неподходящий формат (с низкой точностью или сжатый).

Можете ли вы описать, как результат выглядит не так? Есть ли шанс получить правильный или неправильный снимок экрана?

Ответ принят как подходящий

Мы разобрались. :) В основном проблема заключалась в том, что, хотя наши уравнения YUV в RGB были правильными, мы не производили правильную выборку данных V! Так что никакие эксперименты с уравнениями не помогли бы!

В конце концов, я бы порекомендовал следующую стратегию всем, кто пытается это сделать:

1) Установите для R, G и B значение Y. Вы должны получить изображение в оттенках серого (поскольку Y содержит только яркость). 2) Затем установите R, G и B на U. У вас должны получиться забавные цвета! 3) Наконец, установите R, G и B на V. Опять же, у вас должны получиться смешные цвета.

Кроме того, очень важна правильная нормализация значений. Посетите наш fourcc.org для обсуждения правильной нормализации YUV.

Другие вопросы по теме