У меня в настоящее время возникает проблема с вычислением радиуса света для отложенного рендеринга. При низких интенсивностях света размер объема выглядит правильно, но когда интенсивность света (и, следовательно, радиус) увеличивается, объем света кажется все более и более малым.вычислить радиус объема света от интенсивности
Я расчет радиуса объема света (в мировом пространстве), как это:
const float LIGHT_CUTOFF_DEFAULT = 50;
mRadius = sqrt(color.length() * LIGHT_CUTOFF_DEFAULT);
Затем я использую это значение для масштабирования окна.
В моем шейдера я тогда вычислить затухание, как это:
float falloff = 5;
float attenuation = max(0, 1.0/(1+falloff*(distance*distance)));
Так, очевидно, я возиться с математикой. Затухание должно быть линейным, верно? Но как мне теперь правильно рассчитать значение мирового масштаба для объема света?
P.S. светлый цвет может выйти за пределы (1,1,1), так как я планирую использовать рендеринг HDR.
Линейный? Нет. Это квадратично, вы можете сразу сказать, потому что оно основано на квадрате расстояния. –