Моя общая цель - создать пиксельный шейдер, который принимает в качестве входных данных несколько текстур и выполняет рендеринг для нескольких целей.
Как и через шейдер инициализации и финализации, через повторные запуски этого шейдера я получу свой результат.
Ранее я создавал шейдеры с несколькими входными текстурами и шейдеры, которые рендерится для нескольких целей, но я никогда не комбинировал 2.
Я считаю, что проблемы вызывают мое отсутствие полного понимания семантики и того, как правильно настроить текстуры ввода и вывода.
Я видел несколько разных способов получения входных текстур и запутался в том, как их настроить.
Ниже приведен код разделяемой структуры, которая выводится шейдерами init и itterate (шейдер finalize просто выводит цвет):
struct FRACTAL_OUTPUT
{
float4 IterationsAndControl : COLOR0;
float4 Variables1And2 : COLOR1;
float4 Variables3And4 : COLOR2;
};
Ниже приведены описания текстур для шейдеров itterate и finalize (шейдер init не использует никаких текстур):
Texture2D IterationsAndControl;
sampler IterationsAndControlSampler : register(s4)
{
Texture = <IterationsAndControl>;
};</p>
<p>Texture2D Variables1And2;
sampler Variables1And2Sampler : register(s5)
{
Texture = <IterationsAndControl>;
};</p>
<p>Texture2D Variables3And4;
sampler Variables3And4Sampler : register(s6)
{
Texture = <IterationsAndControl>;
};
В коде c # XNA я установил цели рендеринга (выполнив GraphicsDevice.SetRenderTargets (), затем установил параметры текстуры (выполнив Effect.Parameter ["TextureVariableName"]. SetValue (), затем нарисовал квад (через спрайт). партия).
Любая помощь будет принята с благодарностью, поскольку я не могу найти никаких примеров того, как сделать что-то подобное.