paysages3d/src/render/software/LightStatus.cpp

30 lines
663 B
C++
Raw Normal View History

2013-12-08 16:56:59 +00:00
#include "LightStatus.h"
LightStatus::LightStatus(LightingManager *manager, const Vector3 &location, const Vector3 &eye)
{
this->manager = manager;
this->location = location;
this->eye = eye;
}
void LightStatus::pushComponent(LightComponent component)
{
if (manager->filter(&component, location))
{
components.add(component);
}
}
Color LightStatus::apply(const Vector3 &normal, const SurfaceMaterial &material)
{
Color final();
for (auto component: components)
{
final.add(manager->applyFinalComponent(component, eye, location, normal, material));
}
final.a = material->base.a;
return final;
}