Rev | Line | |
---|
[2197] | 1 | #pragma once
|
---|
| 2 | #include "light.hpp"
|
---|
| 3 |
|
---|
| 4 | class PointLight :
|
---|
| 5 | public Light
|
---|
| 6 | {
|
---|
| 7 | public:
|
---|
| 8 | PointLight(){}
|
---|
| 9 | PointLight(const Vector& position, const Vector& radiance, const Vector& direction)
|
---|
| 10 | : Light(position, radiance)
|
---|
| 11 | {
|
---|
| 12 | this->direction = direction;
|
---|
| 13 | }
|
---|
| 14 | float getFormFactor(const Vector& lookpoint, const Vector& normal) const |
---|
| 15 | { |
---|
| 16 | Vector diff; diff.setDifference(lookpoint, position); |
---|
| 17 | float dist2 = diff.norm2(); |
---|
| 18 | float dist2inv = 1.0f / dist2; |
---|
| 19 | return - dist2inv * dist2inv * (diff * normal) * (diff * direction); |
---|
| 20 | } |
---|
| 21 | Vector getSample() const {return position;} |
---|
| 22 | bool isPossiblyVisible(const Vector& point) const
|
---|
| 23 | {
|
---|
| 24 | Vector diff; diff.setDifference(point, position);
|
---|
| 25 | return diff * direction > 0;
|
---|
| 26 | }
|
---|
| 27 | };
|
---|
Note: See
TracBrowser
for help on using the repository browser.