在光线跟踪中为对象着色

时间:2018-10-31 07:50:56

标签: c++ raytracing

我正在尝试渲染屏幕。到目前为止,我已经将光线与场景中的对象相交了,如果有交叉点,我会为该交叉点设置随机的颜色。

接下来我要做的是根据像素的值设置彩色像素。我看了10多个教程,阅读了一些有关为像素着色的网站。但是,我正在读取的文件没有对象的颜色。相反,它具有以下内容:

  • 具有rgb颜色的环境光
  • 具有rgb颜色和位置的点光源
  • 对象具有环境,漫反射,镜面反射,镜面反射率(单位为rgb)和phong指数(值)。

此外,我知道所发射的光的强度与距离的平方成正比(随着距离的增大,物体上的光会越来越少)。

如果我具有对象的颜色,则可以使用以下算法:

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

    return ambient + phong + reflection;
}

How to compute reflected color?

中所述

我没有物体的颜色,只有反射率值。如何计算物体的颜色?

1 个答案:

答案 0 :(得分:0)

  

但是,我正在读取的文件没有对象的颜色。   相反,它具有以下内容:

     

...

     
      
  • 对象具有环境,漫反射,镜面反射,镜面反射率(单位为rgb)和phong指数(值)。
  •   

如果所有这些都具有RGB,则 是对象的颜色。

将入射光与物体在给定角度下的反射方式相乘,结果就是可以感知物体的颜色。