如何计算反射颜色



我正在尝试实现一个简单的物理精确的射线纹理器。我在灰度上工作(因此使用光强度),但我正在挣扎着颜色。

我如何计算有色(非白色)光与表面之间的关系。假设浅色是RGB(1.0,0.9,0.8),表面为RGB(0.8,0.9,1.0)?

以非常基本的方式

让我们假设您选择了phong阴影模型,或者选择不做任何特定的阴影。

  1. 您需要场景的环境系数(描述场景中颜色总体增强的系数),假设它是0.3;然后将对象的颜色乘以系数。
  2. 然后,您需要计算phong阴影模型,或者只需要对象的颜色,o任何特殊的阴影模型。
  3. 然后,如果您的反射矢量击中了任何一个,则需要计算下一个对象的颜色,再次从步骤1开始(递归)
  4. 总和所有结果

代码:

Color3 trace(..)
{
    ...
    Color3 ambient = object.color * 0.3;
    Color3 phong = phongModel(..) or object.color;
    Color3 reflection = trace(..);
    return ambient + phong + reflection;
}

最新更新