首页 > 解决方案 > 在光线追踪中为对象着色

问题描述

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

接下来我需要做的是根据像素值对像素进行着色。我看过 10 多个教程,阅读了几个关于像素着色的网站。但是,我正在阅读的文件没有对象的颜色。相反,它具有以下内容:

另外,我知道发出的光的强度与距离的平方成正比(随着距离变大,物体上的光越少)。

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

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

    return ambient + phong + reflection;
}

如中所述:如何计算反射颜色?

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

标签: c++raytracing

解决方案


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

...

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

如果你有 RGB 所有这些,那就是对象的颜色。

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


推荐阅读