4,446
社区成员
发帖
与我相关
我的任务
分享
/*遍历场景中的每一个光源*/
for(int k = 0; k < m_scn->get_l_num(); k++)
{
PointLight pl = m_scn->get_light(k);/*光源*/
l = pl.get_pst() - point;/*交点到光源的方向*/
l.normalize();
Ray l_ray = Ray(point + l*SMALL, l);/**/
float shade = 1.0f;/*阴影,1.0表示交点不在阴影中*/
float distance = INFINITY;/*初始化无限大距离*/
/*测试是否有物体遮挡住光源*/
for(int k=0;k<m_scn->get_o_num();k++)
{
Object* obj = m_scn->get_objects(k);/*当前物体*/
if(obj->is_intersected(l_ray,distance))
{
shade = 0.0f;
break;
}
}