Как я понимаю, в такой конфигурации нет петель.
Но есть один.
В пре-GL 4.5 (который включает в себя WebGL) петли обратной связи происходят каждый раз, когда вы читаете текстуру, которая в данный момент присоединена к кадровому буферу. Неважно, если вы не пишете в данный момент. Неважно, что вы не можете писать в него в данный момент. Пока он подключен к кадровому буферу, вы получаете неопределенное поведение при чтении к нему (если только они не считываются с неподключенных уровней mipmap).
В после GL 4.5 (который не не включает WebGL) или с расширением текстурного барьера, это смягчается. Но недостаточно, чтобы решить вашу проблему. UB по-прежнему срабатывает, когда вы пытаетесь прочитать пиксели, записанные во время предыдущего вызова, из изображения, которое все еще прикреплено к кадровому буферу.
Таким образом, вы должны либо изменить FBO, чтобы изображение больше не прикреплялось, либо создать текстурный барьер (если у вас есть доступ к 4.5 / ARB / NV_texture_barrier, что на настольном GL вы, вероятно, делаете).