C++ 光线跟踪中的着色对象

C++ 光线跟踪中的着色对象,c++,raytracing,C++,Raytracing,我正在尝试渲染屏幕。到目前为止,我已经将光线与场景中的对象相交,如果存在相交,我将为该相交设置随机颜色 下一步我需要做的是根据像素的值给像素着色。我已经看了10多个教程,读了几个关于像素着色的网站。但是,我正在读取的文件没有对象的颜色。相反,它具有以下特点: 具有rgb颜色的环境光 具有rgb颜色和位置的点光源 对象具有环境光、漫反射、镜面反射、镜像反射(rgb)和phong指数a值。 另外,我知道发射的光的强度与距离的平方成正比。随着距离变大,物体上的光会变少 如果我有对象的颜色,我可以使用以

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

下一步我需要做的是根据像素的值给像素着色。我已经看了10多个教程,读了几个关于像素着色的网站。但是,我正在读取的文件没有对象的颜色。相反,它具有以下特点:

具有rgb颜色的环境光 具有rgb颜色和位置的点光源 对象具有环境光、漫反射、镜面反射、镜像反射(rgb)和phong指数a值。 另外,我知道发射的光的强度与距离的平方成正比。随着距离变大,物体上的光会变少

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

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

    return ambient + phong + reflection;
}
如中所述:

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

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

对象具有环境光、漫反射、镜面反射、镜像反射(rgb)和phong指数a值。 如果所有这些都是RGB,那就是对象的颜色


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

为什么不为物体设定一种默认颜色,例如白色?好吧,这是一个很好的假设。可能是这个,我要试试这个。我觉得自己是个白痴,因为我不这么想。最好是用灰色而不是白色,这样你就可以看到反光了