Изменение юниформ-переменной внутри шейдерной программы для использования другой шейдерной программой - RenderMonkey

RenderMonkey довольно древний, поэтому я изо всех сил пытаюсь найти способ сделать это. Чтобы было ясно, единственная причина, по которой я использую RenderMonkey, заключается в том, что это задание для университета.

RenderMonkey позволяет вам определять юниформ-переменные в рабочей области, на которые могут ссылаться ваши шейдерные программы. Они также предлагают «переменную семантику», которая представляет собой предопределенные переменные, которые изменяются в зависимости от ситуации. Например, время истекло. По мере увеличения времени увеличивается «время» поплавка.

У меня есть слон с ружьем на спине (странно, я знаю). Пистолет стреляет частицами с течением времени. Пистолет также вращается со временем. Чтобы частицы пули стреляли в правильном направлении, их тоже нужно вращать так же, как и пушку. Моей первой мыслью было применить тот же расчет вращения (тот, который зависит от прошедшего времени), что и для пистолета, к пулям, но это приводит к тому, что пули продолжают вращаться после того, как они были выпущены, что не идеально.

Мне было интересно, есть ли способ иметь одну юниформ-переменную "gunAngle", которая редактируется в шейдере оружия (то есть поворачивается в проходе оружия), а затем это измененное значение передается шейдеру частиц пули. Если это невозможно в Rendermonkey, есть ли у кого-нибудь идеи по обходному пути?

1 ответ

"gunAngle" должен быть рассчитан на ЦП и установлен на униформу в каждом кадре. Если вы хотите использовать данные в нескольких шейдерных программах, вы должны использовать Shader Storage Buffer Object или Uniform Block .

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