Могу ли я использовать вывод одного кадра шейдера GLSL в качестве ввода для следующего? - PullRequest
0 голосов
/ 14 апреля 2020

Я бы хотел использовать одно растровое изображение для хранения состояния динамической 2D-системы, которая со временем эволюционирует в соответствии с некоторыми правилами. Думайте об этом как о градациях серого, где яркость каждого пикселя представляет температуру каждой точки на прямоугольной пластине angular в момент времени t, назовите это T (t). И у меня есть функция, которая даст мне температуру в каждой точке в момент времени t + 1 как функцию этого; поэтому T (t + 1) = f (T (t)). Или, если вы предпочитаете, чтобы пиксели представляли высоту поверхности воды в каждой точке, а функция рассчитывает, как волны на воде эволюционируют с течением времени.

В любом случае, я думаю, что можно сделать все это в шейдере GLSL, если результаты предыдущего прохода шейдера в момент времени t доступны шейдеру в следующем кадре, т. е. в момент времени t + 1.

До сих пор в значительной степени каждый базис c пример, который я могу найти (и я настоящий новичок в шейдерах, так что, может быть, мне просто нужно найти несколько не очень базовых * примеров), кажется, что улица с односторонним движением; вывод шейдера (цвет в каждой точке) может быть функцией времени и существующей текстуры, но не его собственного предыдущего вывода.

Я что-то упустил?

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

...