Можете ли вы применить матрицы преобразования после запуска ваших пиксельных шейдеров? - PullRequest
0 голосов
/ 10 февраля 2020

Я работаю с изображениями, и мне было поручено расширить количество эффектов постобработки изображений, которые мы можем выполнять с нашими изображениями. Некоторым требуемым эффектам нужны пиксельные данные для расчетов, поэтому я создал несколько пиксельных шейдеров, чтобы они выполняли свою работу, и они отлично работают.

Проблема в том, что изображения должны быть трансформируемыми, т.е. вращать, увеличивать и уменьшать масштаб, панорамирование и т. д. c. Создание всех этих текстур, алгоритмы для постобработки, все они замедляют работу программы. Мне нужен способ, чтобы сделать эти преобразования без полного повторения каждого эффекта. Некоторые из изображений, над которыми работает программа, представляют собой изображения размером в несколько гигабайт, поэтому я не могу сделать очевидную вещь - кэшировать изображения после преобразований для последующего использования.

Я ищу какое-то разумное решение Вот. Я не специалист по графике, но я не могу представить, что подобные программы с постобработкой повторяют постобработку при каждом панорамировании. Мое лучшее предположение - сохранить последнюю текстуру и применить к ней преобразования, но я не знаю, как это сделать.

1 Ответ

1 голос
/ 10 февраля 2020

Говоря «изображения», я предполагаю, что вы имеете в виду 2D текстуры, которые вы загружаете, и применяете некоторые пост-проэффекты. Если это так, просто создайте цель рендеринга и визуализируйте ее со всеми пост-эффектами. Затем поверните / панорамируйте квад с прикрепленной текстурой (потребуется упрощенный c фрагментный шейдер с выборкой текстур). Повторно измените эту текстуру в случае изменения параметров постпрофиля.

Если, с другой стороны, у вас есть 3D-сцена, то ее не нужно обходить, вы должны визуализировать ее каждый кадр.

Если мои предположения неверны, было бы лучше, если бы вы предоставили более подробную информацию по вашему делу.

...