Так-то твой шейдер делает абсолютно то же самое, что и обычный альфа-блендинг, только у тебя в шейдере лерп между двумя текстурами, а альфа-блендинг лерпает между тем, что во фреймбуфере, и тем, что ты вернул, но альфа-блендинг (src factor SRC_ALPHA, dest factor ONE_MINUS_SRC_ALPHA) без premultiplied alpha это тот же лерп