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

Path tracer (7 стр)

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

Suslik
Ок я попробую. Покажу что получилось


#91
19:49, 9 янв. 2020

Suslik
Я так полагаю нужно делить объемную текстуру на кластеры, и рассчитывать каждый кластер раз в кадр. Потому что вся текстура считается слишком долго

#92
23:59, 10 янв. 2020

Suslik
Кажется сделал вычисление диффузы. Но странно что оно отличается, от вычисленной стандартным путем. А так же что делать со спекуляром?

#93
(Правка: 1:44) 1:43, 11 янв. 2020

IBets
> А так же что делать со спекуляром?
А спекуляр считать динамически.


Ну или тоже предрассчитывать. В статике можно все предрассчитывать.
Правда для спекуляра нужно предрассчитать уже значение для каждого направления (и для каждого уровня шероховатости).

#94
(Правка: 11:36) 11:33, 13 янв. 2020

Suslik
В первый раз я сделал расчет по кластерам в volume space. Но потом я понял, зачем нам обрабатывать все воксели, если мы можем записать результат работы path трэйсера в пространстве экрана в нашу 3D текстуру с Diffuse с альфа каналом по числу итераций. Ну и производить такое же суммирование как при суммирование кадров


Странно что изначально не додумался до этого, а стал что-то сложное мудрить.
#95
(Правка: 12:05) 11:39, 13 янв. 2020

IBets
почему появляется шум при поворачивании?

> А так же что делать со спекуляром?
на самом деле можно предрассчитывать даже спекуляр даже с преломлениями, рассеяниями, самоотражениями и самосветимостью даже с произвольной BRDF. только это сложнее. и только для статической геометрии (главное ограничение). и я не видел, чтобы кто-то это делал на ходу в реалтайме: https://sites.fas.harvard.edu/~cs278/papers/prt.pdf

но факт в том, что предрассчитанный объём считался в реалтайме в каком-то там 2000-мохнатом году. сегодня он на мобилках сможет считаться.

#96
23:44, 13 янв. 2020

>почему появляется шум при поворачивании?
Вангую, что у него там - стохастическая OIT, а при остановке статическая картинка продолжает сглаживаться, усредняя по последующим кадрам.

#97
(Правка: 0:07) 0:07, 14 янв. 2020

Cheb
Потому что дельта трэкингом считается в один проход.  Без полупрозрачной геометрии видно что лайтмапа посчитана
Я думаю нужно дать пользователю выбор для переключения режимов. Когда ему нужно он переключит дельта трэкинг, на обычный рэймарчинг с накапливание цвета по альфа каналу.

.

#98
3:33, 14 янв. 2020

IBets
выглядит хорошо. как ты записываешь результат в лайтмапу, когда луч находится между вокселями?

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

Suslik
Я записываю так

   //postion, color, normal get by delta tracing

    uint3 voxelID = uint3(round(saturate(GetNormalizedTexcoord(position, desc.BoundingBox)) * desc.VolumeDim));
    float4 diffuseColor = TextureVolumeDiffuse[voxelID]; 
    float alpha = 1.0f / (diffuseColor.a + 1.0f);  
    float4 sum = float4(lerp(diffuseColor.xyz, color, float3(alpha, alpha, alpha)), diffuseColor.a += 1.0f);
    TextureVolumeDiffuse[voxelID] = sum;
 
  
    TextureColorUAV[id.xy]    = float4(sum.xyz, 1.0);
    TexturePositionUAV[id.xy] = float4(position, 1.0);
    TextureNormalUAV[id.xy]   = float4(normal, 1.0f);
Из-за того что одна выборка видна дескретизация. Я пока не решал эту проблему
+ Показать
#100
14:43, 14 янв. 2020

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

#101
14:55, 14 янв. 2020

Suslik
Да пока так, я позже добавлю. Я сейчас просто сосредоточен на трассировки по Octree для ускорения. Хотя возможно есть что интереснее для этого?

#102
(Правка: 16:15) 16:14, 14 янв. 2020

Suslik
Вот что получается при использовании в лоб трилинейной фильтрации.

+ Показать

Вот код писал, не подсматривал чужой, возможно у меня баг
+ Показать

Я думаю попробовать отбрасывать пиксели с минимальной светимостью при интерполяции и замещать их пикселем полученным с помощью round(texcoord)
#103
22:15, 14 янв. 2020

IBets
> Вот код писал, не подсматривал чужой, возможно у меня баг
Бага вроде нет, но я не понял, почему бы не использовать семплеры? Это же всяко быстрее было бы, чем 8 лоадов из текстуры.

#104
(Правка: 22:17) 22:16, 14 янв. 2020

MrShoor
RWTexture ресурс не поддерживает сэмплеры

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