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

Path tracer (9 стр)

Страницы: 14 5 6 7 8 9
#120
18:21, 16 янв 2020

MrShoor
Именно что нет. Там лишь храниться цвет а потом мы делаем так texturVolumeColor = (N*textureVolumeColor + color) / (N+1). То есть хранится среднее по факту


#121
18:27, 16 янв 2020

IBets
> Там лишь храниться цвет а потом мы делаем так texturVolumeColor =
> (N*textureVolumeColor + color) / (N+1). То есть хранится среднее по факту
Хм, тогда даже не знаю. А если сделать RGBA8 текстуру?

#122
18:29, 16 янв 2020

А, тю, так у тебя же это float текстура. Это вполне может быть проблема округления. Ты сделал + color, но значение не поменялось из-за погрешности флоата.

#123
18:36, 16 янв 2020

MrShoor
Да вполне возможно мы складываем очень маленькое и очень большое. Соотвественно теряем. Как лечить такое?

#124
18:51, 16 янв 2020

MrShoor
Но почему это не проявлялось при стандартном флоате ведь GPU полноценными float-ами оперировать должен, то есть сначала он декодит из R11G10B10 => в float3 => производим наш рассчет=> записываем в float3 => GPU енкодит в R11G10B10. Разве нет? Или к примеру проблема из-за того что когда мы конвертим из f32 -> f16 при все большим количестве итераций мы теряем маленькую часть, а потом при делении на (N+1) у нас происходит потеря?

#125
18:57, 16 янв 2020

IBets
> записываем в float3 => GPU енкодит в R11G10B10. Разве нет?
Да, только после записи в R11G11D10 ты получаешь такие же значения, какие были там до твоего + color, ибо точности 11ти битного флоата не хватает.

#126
18:58, 16 янв 2020

IBets
> Соотвественно теряем. Как лечить такое?
Возьми целочисленный формат текстуры, у него будет константная абсолютная погрешность.

#127
19:12, 16 янв 2020

MrShoor
Благодарю работает.

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

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