Assignments
Assignments
|
#include <spotLight.h>
Public Member Functions | |
std::string | name (void) const |
Util::Point3D | getAmbient (Util::Ray3D ray, const class RayShapeIntersectionInfo &iInfo, const Material &material) const |
Util::Point3D | getDiffuse (Util::Ray3D ray, const class RayShapeIntersectionInfo &iInfo, const Material &material) const |
Util::Point3D | getSpecular (Util::Ray3D ray, const class RayShapeIntersectionInfo &iInfo, const Material &material) const |
bool | isInShadow (const class RayShapeIntersectionInfo &iInfo, const Shape &shape, unsigned int tIdx) const |
Util::Point3D | transparency (const class RayShapeIntersectionInfo &iInfo, const class Shape &shape, Util::Point3D cLimit, unsigned int samples, unsigned int tIdx) const |
void | drawOpenGL (int index, GLSLProgram *glslProgram) const |
Public Member Functions inherited from Ray::Light | |
virtual | ~Light (void) |
virtual bool | isInShadow (const class RayShapeIntersectionInfo &iInfo, const class Shape &shape, unsigned int tIdx) const =0 |
Static Public Member Functions | |
static std::string | Directive (void) |
Private Member Functions | |
void | _write (std::ostream &stream) const |
void | _read (std::istream &stream) |
Private Attributes | |
Util::Point3D | _location |
Util::Point3D | _direction |
double | _constAtten |
double | _linearAtten |
double | _quadAtten |
double | _cutOffAngle |
double | _dropOffRate |
Additional Inherited Members | |
Protected Attributes inherited from Ray::Light | |
Util::Point3D | _ambient |
Util::Point3D | _diffuse |
Util::Point3D | _specular |
This class describes a spot-light light-source. This light has a fixed position in space and a fixed direction. The light attenuates both as a function of the distance from the light-source and the angle between the line from the light to the point and the light direction. The cutOffAngle specifies the angle beyond which the light has no contribution.
|
privatevirtual |
This method reads the Light from the stream (excluding the starting directive)
Implements Ray::Light.
|
privatevirtual |
This method writes the Light into the stream (including the starting directive)
Implements Ray::Light.
|
inlinestatic |
This static method returns the directive describing the Light.
|
virtual |
This method calls the necessary OpenGL commands to render the light. The index argument specifices the index of the light that is to be drawn.
Implements Ray::Light.
|
virtual |
This method returns the ambient contribution of the light source to the specified hit location.
Implements Ray::Light.
|
virtual |
This method returns the diffuse contribution of the light source to the specified hit location.
Implements Ray::Light.
|
virtual |
This method returns the specular contribution of the light source to the specified hit location.
Implements Ray::Light.
bool SpotLight::isInShadow | ( | const class RayShapeIntersectionInfo & | iInfo, |
const Shape & | shape, | ||
unsigned int | tIdx | ||
) | const |
|
inlinevirtual |
This method returns the name of the shape
Implements Ray::Light.
|
virtual |
This method tests if the intersection point represented by iInfo is in partial shadow from the light source. A ray is cast from the hit location to the light source, and the transparency values are accumulated. If the light source is an area light source, multiple rays area cast to (uniformly randomly chosen positions on the area light sources and the transparency is set to the average of the transparency values over the samples. If the transparency value falls below cLimit, the testing terminates.
Implements Ray::Light.
|
private |
The constant term of the attenuation equation
|
private |
The cut-off angle for the spot light (should be in the range [0,Pi/2])
|
private |
The preferred direction the outgoing light rays
|
private |
The rate at which the intensity falls off as light travels in the non-preferred direction (should be in the range [0,128])
|
private |
The linear term of the attenuation equation
|
private |
The position of the spot-light
|
private |
The quadratic term of the attenuation equation