Graphics 光线跟踪中正确的着色模型

Graphics 光线跟踪中正确的着色模型,graphics,shader,raytracing,Graphics,Shader,Raytracing,我想知道最准确的方法来计算阴影产生的几个不同的光源和环境光。 环境光是存在于整个“世界”中的具有相同强度且没有特定方向的光,扩散照明是由于点光源的直接照明而产生的照明 假设Ka是表面环境反射率的系数,Ia是环境光的强度,Kd是表面漫反射率,Ip1是第一个(相应)点光源的强度,N是表面法线,L1是光(相应地指第一个源)方向 根据我的参考资料,斑点处的颜色强度应为: I=Ka.Ia+Kd(Ip1(N.L1)+Ip2(N.L2)) 其中“”是点积 但是根据我的理解,真实的光强度应该是光源之间的某种平均

我想知道最准确的方法来计算阴影产生的几个不同的光源和环境光。 环境光是存在于整个“世界”中的具有相同强度且没有特定方向的光,扩散照明是由于点光源的直接照明而产生的照明

假设
Ka
是表面环境反射率的系数,
Ia
是环境光的强度,
Kd
是表面漫反射率,
Ip1
是第一个(相应)点光源的强度,
N
是表面法线,
L1
是光(相应地指第一个源)方向

根据我的参考资料,斑点处的颜色强度应为:

I=Ka.Ia+Kd(Ip1(N.L1)+Ip2(N.L2))
其中“
”是点积

但是根据我的理解,真实的光强度应该是光源之间的某种平均值,而不仅仅是将它们相加,这样,如果只有两个光源,方程应该如下所示:

I=Ka.Ia+Kd(Ip1(N.L1)+Ip2(N.L2))/2

如果有3个光源,但第三个光源被阻挡,不能直接照亮表面,则:

I=Ka.Ia+Kd(Ip1(N.L1)+Ip2(N.L2))/3
(因此,如果有一个地方所有3个灯光都有贡献,那么它会更亮


我的假设正确吗?

嗯,不,光不应该被平均化。想想看。如果你只有一个强大的光源,并且你添加了另一个非常微弱的光,那么物体的颜色会减弱吗?比如说,强大的光有强度10,颜色(假设方向垂直于法线,为简单起见,没有环境光)将为10。然后添加第二个弱光(强度为0.1)后,颜色将为(10+0.1)/2为5.05。因此,添加更多的灯光会使对象看起来更暗。这没有意义。

在现实世界中,灯光会添加。它也应该在光线跟踪器中。

亮度不是灯光强度的线性函数。换句话说,瞄准一个点的两个相同光源不会被视为“亮度”的两倍作为一种光。(亮度是一个模棱两可的术语——亮度是一个更好的术语,意味着人类视觉加权的亮度)


已知各种像素的强度,可以近似校正要在显示器上查看的图像,这称为。

极端情况下,如果有无限多个灯光,则平均后的净光为零。灯光相互独立。