Войти
ПрограммированиеФорумГрафика

Помогите найти алгоритмы полноэкранного сглаживания (постэффект, glsl) (6 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
#75
12:07, 24 июля 2018

MrShoor
> 1. Не учитывается srgb (если акум буфер это R8G8B8A8 текстура)
RGB16F (hdr) использую
MrShoor
> 2. Для HDR фреймбуфера - это тонмаппинг после аккумулирования
Постэффекты все вырублены.
Аккумуляция происходит все равно до них.MrShoor
> 3. Плохое распределение семплов джитера
> 4. Слишком много семплов джитера
Взял Ваше распредение (8 штук).

+ Показать


#76
12:12, 24 июля 2018

vindast
> Взял Ваше распредение (8 штук).
Вроде норм. Завтра гляну с компа на твои скриншоты.

#77
12:17, 24 июля 2018
Кто нибудь тут на форуме случайно не раздавал модели? А хочется нормальных моделей для риалтайма надергать, для того что бы сцена была приличная, (pbr). На скетчфабе есть много чего, но оно обычно содержит слишком много полигонов.
#78
14:37, 24 июля 2018
vindast
> Кто нибудь тут на форуме случайно не раздавал модели
http://artisaverb.info/PBT.html
#79
20:16, 24 июля 2018

Asaq, он у меня есть.
Мне бы архитектуру какую нибудь.

#80
21:16, 24 июля 2018

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

#81
21:31, 24 июля 2018

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

+ Показать
#82
22:11, 24 июля 2018

vindast
> Сейчас скрины новые залью.
Прерыдущие скрины не видел, а эти выглядят как надо.

> Лесенки однако есть на высоко контрастных областях, предполагаю, что связано
> это с тем что от житера к житеру свет на них меняется значительно.
Да, и для этого есть решение, тут начиная с 17 слайда: https://de45xmedrsdbp.cloudfront.net/Resources/files/TemporalAA_s… -59732822.pdf
Идея заключается в том, чтобы сделать tonemap до смешивание, а потом сделать обратный тонмап, чтобы восстановить линейность для будущих фильтров. В твоем случае если постпроцесса нет, то можно просто тонмап сделать до.
Это если ты разобрался что такое tonemap и с чем его едят. Если нет - то можешь забить пока на лесенки.

Собственно ты сделал самое основное, сделал jitering + accum. А это и есть суть taa. Теперь, чтобы добавить динамики - тебе нужно знать где именно находился пиксель, который ты рисуешь на предыдущем кадре. Для этого и нужен буфер скоростей. А еще там будет много information lost, когда ты не можешь найти этот пиксель с предыдущего кадра.
Поэтому если такое случается то вес при смешивании выставляется в ноль:
new_pixel = lerp(last_pixel, current_pixel, a*weight);
И ты получаешь просто несглаженный пиксель.

#83
23:30, 24 июля 2018

MrShoor
> чтобы сделать tonemap до смешивание, а потом сделать обратный тонмап, чтобы
> восстановить линейность для будущих фильтров.
Звучит как извращение)

MrShoor
> Это если ты разобрался что такое tonemap и с чем его едят.
Вот кстати сделал у себя tonemap типа этого, но вышло не очень. Хотел как раз этим занять после того как разберусь со сглаживанием.

Пойду курить буфер скоростей. Я подумал что проще всего это сделать храня для объекта его предыдущую матрицу mvp, то есть есть currentMVP и previosMVP. (аналогично камерам как выше было)

vCurrent = currentMVP * v;
vPrevios = previosMVP * v;
//бла бла бла
vCurrent /= vCurrent.w;
vPrevios /= vPrevios .w;

deltaUV = (vCurrent - vPrevios).xy
deltaUV = (deltaUV + 1.0) / 2.0

И deltaUV закинуть в интерполятор с учетом перспективы.

Только вопрос, не жирно ли выйдет? Еще одно умножение на матрицу же + интерполяция. Т

#84
23:39, 24 июля 2018

Или даже 2 если брать без житера.

#85
0:00, 25 июля 2018

И еще один  рендер таргет у g-Buffer

#86
0:51, 25 июля 2018

vindast
> Я подумал что проще всего это сделать храня для объекта его предыдущую матрицу
> mvp, то есть есть currentMVP и previosMVP.
Да, примерно так и делают. Только учитывай, что currentMVP и previousMVP должны быть без джиттера.

> И deltaUV закинуть в интерполятор с учетом перспективы.
Только в интерполятор надо закидывать vCurrent и vPrevious до деления на w, а делить на w уже в пиксельном шейдере.

> Только вопрос, не жирно ли выйдет? Еще одно умножение на матрицу же + интерполяция. Т
Жирно по сранению с чем? По сравнению с FXAA - конечно жирно. По сравнению с суперсемплингом - очень дешево.

#87
1:04, 25 июля 2018

На Спектруме антиалиазинга не было :) два цвета на знакоместо и два атрибута = яркость и моргание )))

#88
1:41, 25 июля 2018

Daniil Petrov, что? У тебя понос словесный. Лечись.

#89
2:07, 25 июля 2018

vindast
> Только вопрос, не жирно ли выйдет? Еще одно умножение на матрицу же +
> интерполяция.
По сравнению со скелетной анимацией, где два набора трансформаций костей надо будет хранить, нет, не жирно.

Страницы: 1 2 3 4 5 6 7 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.

Тема закрыта.