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

Path tracer (8 стр)

Страницы: 14 5 6 7 8 9 Следующая »
#105
22:26, 14 янв. 2020

IBets
> RWTexture ресурс не поддерживает сэмплеры
А зачем он у тебя тут RWTexture ? Глядя на код - ты просто читаешь из этой текстуры.


#106
(Правка: 22:39) 22:36, 14 янв. 2020

MrShoor
Ну так алгоритм таков расчет кадра с помощью дельтра трэкинга. И на выходе получаем => position, normal, diffuseColor
Загружаем diffuseColorVolume, interationCountVolume из DiffuseVolume[position]
Производим суммирование colorSum = (interationCountVolume * diffuseColorVolume + diffuseColor) / ++interationCountVolume
Загружаем colorSum и interationCountVolume в DiffuseVolume[position]
Записываем в финальный кадр colorSum

#107
(Правка: 22:49) 22:48, 14 янв. 2020

IBets
> Загружаем colorSum и interationCountVolume в DiffuseVolume[position]
Так, а как оно работает? Ты читаешь интерполированное значение между 8 семплами, а потом пишешь в... куда? Записываешь одно значение? То, что в DiffuseVolume[позиция соседа] может оказаться посчитанный или частично посчитанный семпл как обходишь? А если пишешь сразу 8 семплов - то всё еще интереснее.

#108
(Правка: 22:52) 22:51, 14 янв. 2020

MrShoor
Не я в один пишу. Я так еще не придумал как сделать, так чтобы убрать дискретизацию. Просто суслику было интересно прокатит ли такое.

#109
22:56, 14 янв. 2020

IBets
> Не я в один пишу.
Так а может 2 текстуры завести, из одной читаешь, в другую пишешь, на следующем кадре меняешь местами.
Мне кажется то, что сейчас на одной текстуре - оно не совсем корректно работает, хотя визуально этого может быть и не видно.

#110
23:05, 14 янв. 2020

MrShoor
Ну я не вижу сильной разницы.

+ Показать
+ Показать

Вторая текстура не решит главную проблему, нужно как-то придумать интерполяцию цвета по соседним пикселям исходя из interationCount
#111
(Правка: 1:05) 0:51, 15 янв. 2020

Suslik
Смотри а с отражениями можно же не сильно мудить. Мы можем очищать к примеру записывать не только диффузу так, а полностью рассчитанный BRDF. А потом просто каждый допустим 60 кадр ее нулить, не всю карту а только локальную область куда смотрит камера.
Если оттделить диффузу, то вообще мне кажется метод очень даже не плох будет

#112
(Правка: 2:36) 1:19, 15 янв. 2020

Suslik
Так же попробовал записать фазовую функцию и почему то оно кажется точно работает, хотя она зависит от направления взгляда

#113
(Правка: 4:01) 3:58, 15 янв. 2020

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

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

#114
(Правка: 16 янв. 2020, 0:08) 23:59, 15 янв. 2020

Suslik
Да триллинейка простая не прокатывает, нужно учитывать interation count. Сейчас я сделал в два прохода. В одном кадре рассчитываем диффузу в другом спекулар, и суммируем это. В динамике результат более симпатичный, чем в предыдущий раз

#115
5:20, 16 янв. 2020

IBets
да, выглядит интересно

#116
(Правка: 14:45) 14:13, 16 янв. 2020

Suslik
MrShoor
Решил заюзать текстуру RGB111110Float а iteration count в RInt32 , но происходит переполнение. Есть способ побороть данную проблему не юзая 32бита на цвет? Интуитивно кажется такого вообще не должно происходить.

+ Показать
+ Показать
#117
(Правка: 18:15) 18:14, 16 янв. 2020

IBets
> а iteration count в RInt32 , но происходит переполнение.
А ты уверен, что переполнение происходит именно на счетчике, а не в колор текстуре, в которой у тебя 11 и 10 бит на канал.

#118
(Правка: 18:16) 18:16, 16 янв. 2020

MrShoor
Именно не в счетчике. А в текстуре. Хотя кажется такого не должно быть. Ведь мы в ней не храним сумму а финальный цвет.

#119
18:18, 16 янв. 2020

IBets
> Ведь мы в ней не храним сумму а финальный цвет
Ты же там накапливаешь цвет, который потом делишь на iteration count? 11 бит если что - это 2048 значений. 10 бит - 1024. Почему ты думаешь, что такого быть не должно?

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