如何计算反射颜色?

时间:2017-12-18 09:25:05

标签: raytracing

我试图实现一个简单的物理精确光线跟踪器。我让它以灰度工作(光强度很强),但是我在用颜色挣扎。

如何计算有色(非白色)光与表面之间的关系。说浅色是rgb(1.0,0.9,0.8),表面是rgb(0.8,0.9,1.0)?

1 个答案:

答案 0 :(得分:0)

以非常基本的方式

假设您选择了phong着色模型,或者您选择不做任何特定的着色。

  1. 你需要场景的环境系数(描述场景中颜色整体强度的系数),假设它是0.3;然后将对象的颜色乘以系数。
  2. 然后你需要计算phong着色模型,或者只需要对象的颜色,没有任何特殊的着色模型。
  3. 然后你需要计算下一个对象的颜色,如果你的反射向量击中任何一个,再次从步骤1开始(递归)
  4. 总结所有结果
  5. 代码:

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