Перейти к содержанию
Deathman

Помогите расколдовать чудную страну МылЛандию обратно в зону

Рекомендуемые сообщения

 

Я ввожу в игру Bokeh (Правдоподобный вариант глубины резкости) и я смог двумя проходами создать вот такую вот размытую текстуру кадра, но вот с правильным смешиванием этой текстуры с кадром по глубине с учетом параметров глубины резкости при помощи функции DOFFactor, которая принимает на вход данные о глубине пикселя, и выдает силу размытия, как я понимаю, есть проблемы - ни какие мои идеи к правильному результату не приводят. Мог бы кто помочь?
 

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

Спойлер

vec DOFFactor(vec depth)
{
    vec dist_to_focus = depth - dof_params.y;
    vec blur_far = saturate(dist_to_focus / (dof_params.z - dof_params.y));
    vec blur_near = saturate(dist_to_focus / (dof_params.x - dof_params.y));
    vec blur = blur_near + blur_far;
        blur = pow(blur, 2);
    return blur;
}

 

HVg_fjOI_Ew.jpg?size=1920x1080&quality=97FD3UM8_hKA.jpg?size=1920x1080&quality=9ojvQSNPQANA.jpg?size=1920x1080&quality=9

Изменено пользователем Deathman

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Ну попробуй  blur = pow(blur, 2);  заменить на   blur = (pow(blur, 2) ) /10;   или  на   blur = pow ( (blur, 2) /10);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, macron сказал:

Ну попробуй  blur = pow(blur, 2);  заменить на   blur = (pow(blur, 2) ) /10;   или  на   blur = pow ( (blur, 2) /10);

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


Дополнено 1 минуту спустя

Кстати забавный факт - если считать алгоритм размытия Bokeh с размытием 10*10 точек в половинном разрешении, а потом апскейлить его до реального разрешения кадра то можно нехило выйграть производительность. Использую это для глубины резкости впервые, а для AO уже давно


Дополнено 34 минуты спустя

Новости - я нашел вот такую статью с полным пайплайном Bokeh, но блендинг идет через линейную интерполяцию размытого кадра и исходного по силе размытия, что в принципе меня не устраивает
ss_deathman_10-16-23_23-45-03_l01_escapess_deathman_10-16-23_23-45-14_l01_escape


Дополнено 53 минуты спустя

Соррян за кринжпостинг - проблема не в линейной интерполяции, а самой формуле Bokeh, которую я использую. Даже если в самом шейдерном проходе регулировать силу эффекта все равно будут образовываться те же самые ореолы вокруг неразмытых пикселей, так как эти пиксели все равно участвуют в поиске среднего арифметического для эффекта. Надо либо вводить учет глубины для каждого пикселя, по типу уменьшения его яркости пропорционально приближению к камере, либо же придумывать что-то другое. Отложу Bokeh на будущие обновления проекта

Изменено пользователем Deathman

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Если есть доступ к нейросети типа chatgpt, спроси там. Иногда помогает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
21 минуту назад, macron сказал:

Если есть доступ к нейросети типа chatgpt, спроси там. Иногда помогает.

Я и сам своего рода генеративная языковая модель, обучающаяся на данных из интернета, так что справлюсь:u1F601: 


Дополнено 13 минуты спустя
1 час назад, Deathman сказал:

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


Дополнено 1 минуту спустя

Кстати забавный факт - если считать алгоритм размытия Bokeh с размытием 10*10 точек в половинном разрешении, а потом апскейлить его до реального разрешения кадра то можно нехило выйграть производительность. Использую это для глубины резкости впервые, а для AO уже давно


Дополнено 34 минуты спустя

Новости - я нашел вот такую статью с полным пайплайном Bokeh, но блендинг идет через линейную интерполяцию размытого кадра и исходного по силе размытия, что в принципе меня не устраивает
ss_deathman_10-16-23_23-45-03_l01_escapess_deathman_10-16-23_23-45-14_l01_escape


Дополнено 53 минуты спустя

Соррян за кринжпостинг - проблема не в линейной интерполяции, а самой формуле Bokeh, которую я использую. Даже если в самом шейдерном проходе регулировать силу эффекта все равно будут образовываться те же самые ореолы вокруг неразмытых пикселей, так как эти пиксели все равно участвуют в поиске среднего арифметического для эффекта. Надо либо вводить учет глубины для каждого пикселя, по типу уменьшения его яркости пропорционально приближению к камере, либо же придумывать что-то другое. Отложу Bokeh на будущие обновления проекта

НАЕБА... Обманул. 
Я хороший мальчик и смог своим котелком довести формулу до ума, хоть и успел откатить все изменения до коммита со сломанным рендертаргетом, так что на прототип приходится смотреть так. Так что тема закрыта, все свободны, а я пойду пить заслуженный чай за такую большую работу
ss_deathman_10-17-23_00-25-34_l01_escapess_deathman_10-17-23_00-25-45_l01_escape


Дополнено 14 минуты спустя

Если кто-то это будет читать то вот вам музыки что-ли послушать

 

 


Дополнено 19 минуты спустя
1 час назад, macron сказал:

Ну попробуй  blur = pow(blur, 2);  заменить на   blur = (pow(blur, 2) ) /10;   или  на   blur = pow ( (blur, 2) /10);

На самом деле это ужасное решение. Эта строчка нужна для того чтобы "усилить контрастность" значения силы глубины резкости, и нет смысла ее делить, в таком случае стоило вместо деления ее вовсе убрать :u1F601:

Изменено пользователем Deathman

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

удалите эту фигню .


¯\_(ツ)_/¯

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу