Мне нужно настроить фрагментный шейдер GLSL, чтобы изменить цвет фрагмента, отличный от того, который обрабатывается в данный момент. Поскольку это может показаться нежелательным, я приведу очень краткий контекст.
В проекте используется проход рендеринга, посредством которого данная модель рисуется в FBO с уникальными цветами, которые соответствуют UV-координатам на карте текстуры. Затем эти цвета отбираются и преобразуются в координаты изображения, так что карта текстуры для модели может обновляться в зависимости от того, что видно камере. По существу:
Render model to FBO
For each FBO pixel
1. sample secondary texture based on FBO pixel position
2. convert color at current pixel to image coordinate for the model's texture map
3. update model's texture with sampled secondary texture at calculated coordinate
End loop
Проблема в том, что текущая реализация сильно привязана к процессору, поэтому я читаю пиксели из FBO и затем манипулирую ими. В идеале, поскольку у меня уже есть цвет фрагмента для работы с фрагментным шейдером, я хочу просто добавить несколько последних шагов к процессу и оставить все на GPU.
Конкретная проблема, с которой я сталкиваюсь, заключается в том, что я не совсем понимаю, как (или если это вообще возможно) использовать фрагментный шейдер, чтобы установить цвет фрагмента, который он не обрабатывает. Если я не могу обработать что-либо, используя очень большой FBO и просто смещая фрагмент, на который я хочу установить цвет, могу ли я обработать что-то, что записывает непосредственно в текстуру?
Любая помощь / совет с благодарностью. Спасибо!