Russian Qt Forum
Апрель 30, 2024, 05:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Реализация преломления в фрагментных шейдерах  (Прочитано 4674 раз)
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« : Декабрь 18, 2015, 10:42 »

Пытаюсь разобраться как сделать эффект преломления в фрагментном шейдере, но не соображу как мне получить пиксель из выходного буфера?

Надо сперва сцену отрисовывать в текстуру, а потом эту текстуру передавать в шейдер, или всё таки есть возможность использовать выходной буфер в качестве текстуры для шейдера?

Интересует решение без привязки к Qt, т.к. проект на чистом OpenGL.
Записан

Гугль в помощь
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Декабрь 18, 2015, 12:12 »

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

А вообще здесь главное - удачно задать "кривизну". И, возможно, анти-алиас придется самому писать. Что впрочем хорошо, делом займетесь  Улыбающийся
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #2 : Декабрь 18, 2015, 12:31 »

Думаю без текстуры не обойтись, хотя бы потому что выходной буфер перекрывается тем же шейдером. Да и чтение из него (glReadPixels) медленное.

А вообще здесь главное - удачно задать "кривизну". И, возможно, анти-алиас придется самому писать. Что впрочем хорошо, делом займетесь  Улыбающийся

Ну у меня преломление по идее должно быть простое, 2d волны так сказать. Ну в общем я понял, что мысль пошла правильно, спасибо. Буду рендерить сцену в текстуру и потом её же использовать как исходную текстуру для фрагментых шейдеров. Буду разный пост-процессинг реализовывать.

А glReadPixels вроде как к шейдерам не имеет отношения?
Записан

Гугль в помощь
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Декабрь 18, 2015, 13:03 »

А glReadPixels вроде как к шейдерам не имеет отношения?
Как из шейдера читать - не знаю. Чуть больше про АА. Когда при преломлении лучи расходятся, то "общий" AA не спасает, рез-т получается рваным/зубатым, т.к. ловятся точки текстуры достаточно далеко друг от друга. Поэтому надо считать матрицу суб-пикселей (хотя бы 3x3), аккуратно вычисляя нормаль и позицию для каждого суб-пикселя. 90% работы обычно с этим
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 22.