我目前在计算延迟渲染器的光量半径方面存在问题。在低光强下,体积大小看起来是正确的,但是当光强度(因此半径)增加时,光量似乎越来越小。根据强度计算光量半径
我计算光量半径(以世界空间)是这样的:
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.由于我打算使用HDR渲染,所以光色可以超出(1,1,1)。
线性?不是。那是二次方的,你可以立即知道它是基于距离平方的。 – 2014-11-24 00:20:58