光线追踪 - 颜色混合

时间:2014-11-01 18:34:30

标签: graphics raytracing color-blending

我正在写一个光线追踪器。到目前为止,我有漫反射和高光照明,我也计划实现反射和折射。

到目前为止,我已经使用了白光,我计算了这样的表面颜色:surface_color * light_intensity,除以适当的距离^ 2值,因为我使用的是点光源。对于镜面反射,它是light_color * light_intensity。 Afaik,镜面反射不会改变光的颜色,所以这也适用于不同颜色的光源。

当光源不是白色时,如何计算漫反射面反射的颜色?例如,(0.7,0.2,0)光击中(0.5,0.5,0.5)表面。另外,在这种情况下距离因素是否有所不同?

另外,如何在不同颜色光源的单点添加光线贡献?例如,(1,0.5,1)表面被(0.5,0.5,1)和(1,0.7,0.2)光照亮。我只是计算两者(包括的距离)并将它们加在一起吗?

1 个答案:

答案 0 :(得分:1)

  • 我发现RGB是一个很差的色彩空间来进行光照计算,因为你必须考虑一堆特殊情况来获得看起来很逼真或行为方式的任何东西。
  • 话虽如此,从概念上讲,在HSL而不是RGB中进行照明计算可能更容易。根据您使用的语言和工具包,这应该是标准库/发行版或可用工具包的一部分。
  • 更加物理上准确的替代方案是实现光谱渲染,而不是返回RGB值的跟踪函数,它们返回采样光谱功率分布。 SPD比跟踪一大堆RGB混合特殊情况更准确,更容易使用,代价是轻微但明显的性能损失(特别是如果未经优化)。镜面高光和彩色灯光是此型号的自然结果,在一般情况下不需要任何特殊处理。