Я создаю программу, которая работает с моделью в мировом пространстве. Для моей цели я хочу создать в шейдере две текстуры:
- В мировом пространстве, для постобработки.
- В пространстве экрана (как развертка UV), для сохранения результата работы шейдера в текущей сцене в новую текстуру объекта.
Я не могу понять, как это сделать в одном шейдере с многоцелевым рендерингом.
В вершинном шейдере я устанавливаю положение для обоих пробелов:
layout (location = 0) in vec3 position;
out vec4 scrn_Position;
...
gl_Position = projection * view * model * vec4(position,1.0);
scrn_Position = model * vec4(position,1.0);
В шейдере fragmnet я установил два выхода:
in vec4 scrn_Position;
...
layout (location = 0) out vec4 wrld_Color;
layout (location = 1) out vec4 scrn_Color;
Но как работать с scrn_Position во фрагментном шейдере? Можно ли выполнить за один проход?