Название: Реализация преломления в фрагментных шейдерах Отправлено: navrocky от Декабрь 18, 2015, 10:42 Пытаюсь разобраться как сделать эффект преломления в фрагментном шейдере, но не соображу как мне получить пиксель из выходного буфера?
Надо сперва сцену отрисовывать в текстуру, а потом эту текстуру передавать в шейдер, или всё таки есть возможность использовать выходной буфер в качестве текстуры для шейдера? Интересует решение без привязки к Qt, т.к. проект на чистом OpenGL. Название: Re: Реализация преломления в фрагментных шейдерах Отправлено: Igors от Декабрь 18, 2015, 12:12 Надо сперва сцену отрисовывать в текстуру, а потом эту текстуру передавать в шейдер, или всё таки есть возможность использовать выходной буфер в качестве текстуры для шейдера? Думаю без текстуры не обойтись, хотя бы потому что выходной буфер перекрывается тем же шейдером. Да и чтение из него (glReadPixels) медленное.А вообще здесь главное - удачно задать "кривизну". И, возможно, анти-алиас придется самому писать. Что впрочем хорошо, делом займетесь :) Название: Re: Реализация преломления в фрагментных шейдерах Отправлено: navrocky от Декабрь 18, 2015, 12:31 Думаю без текстуры не обойтись, хотя бы потому что выходной буфер перекрывается тем же шейдером. Да и чтение из него (glReadPixels) медленное. А вообще здесь главное - удачно задать "кривизну". И, возможно, анти-алиас придется самому писать. Что впрочем хорошо, делом займетесь :) Ну у меня преломление по идее должно быть простое, 2d волны так сказать. Ну в общем я понял, что мысль пошла правильно, спасибо. Буду рендерить сцену в текстуру и потом её же использовать как исходную текстуру для фрагментых шейдеров. Буду разный пост-процессинг реализовывать. А glReadPixels вроде как к шейдерам не имеет отношения? Название: Re: Реализация преломления в фрагментных шейдерах Отправлено: Igors от Декабрь 18, 2015, 13:03 А glReadPixels вроде как к шейдерам не имеет отношения? Как из шейдера читать - не знаю. Чуть больше про АА. Когда при преломлении лучи расходятся, то "общий" AA не спасает, рез-т получается рваным/зубатым, т.к. ловятся точки текстуры достаточно далеко друг от друга. Поэтому надо считать матрицу суб-пикселей (хотя бы 3x3), аккуратно вычисляя нормаль и позицию для каждого суб-пикселя. 90% работы обычно с этим |