Потому что блюр у меня накладывается в рендер таргет при отрисовке на сцену и там меняются константы условно от 0 до 1
Тебе сначала надо отрисовать то, что ты хочешь размыть, в текстуру, а потом уже эту текстуру зачитывать. Но на мобилках GPU плиточные, рисуют сцену с маленьким вьюпортом в быструю память, выгружают получившийся кусочек картинки в текстуру в обычной памяти, потом другой кусочек, и так далее. Но для полноэкранного пасса выгрузка это только лишние расходы. Если блюр отдельно по вертикали и по горизонтали, на Adreno ещё для случая "текстура → полноэкранный пасс → текстура" можно использовать GL_BINNING_CONTROL_HINT_QCOM GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM, тогда будет рисовать сразу в память текстуры