В настоящее время у меня проблема с вычислением радиуса объема света для отложенного рендеринга. При низкой интенсивности света размер объема выглядит правильно, но когда интенсивность света (и, следовательно, радиус) увеличивается, объем света кажется все более и более маленьким.
Я рассчитываю радиус светового объема (в мировом пространстве) следующим образом:
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-рендеринг.