Надо сперва сцену отрисовывать в текстуру, а потом эту текстуру передавать в шейдер, или всё таки есть возможность использовать выходной буфер в качестве текстуры для шейдера?
Думаю без текстуры не обойтись, хотя бы потому что выходной буфер перекрывается тем же шейдером. Да и чтение из него (glReadPixels) медленное.
А вообще здесь главное - удачно задать "кривизну". И, возможно, анти-алиас придется самому писать. Что впрочем хорошо, делом займетесь