Line | |
---|
1 | #pragma once |
---|
2 | #include "Vector.hpp" |
---|
3 | |
---|
4 | class Light |
---|
5 | { |
---|
6 | public: |
---|
7 | Vector direction; |
---|
8 | |
---|
9 | Vector position; |
---|
10 | Vector radiance; |
---|
11 | Vector power; |
---|
12 | float area; |
---|
13 | float luminance; |
---|
14 | |
---|
15 | Light() {}; |
---|
16 | Light(const Vector& position, const Vector& radiance) |
---|
17 | { |
---|
18 | this->position = position; |
---|
19 | this->radiance = radiance; |
---|
20 | luminance = radiance.r + radiance.g + radiance.b; |
---|
21 | power = radiance; |
---|
22 | area = 1.0f; |
---|
23 | } |
---|
24 | inline float getLuminance() const {return luminance;} |
---|
25 | virtual float getFormFactor(const Vector& lookpoint, const Vector& normal) const =0; |
---|
26 | virtual Vector getSample() const =0; |
---|
27 | virtual bool isPossiblyVisible(const Vector& point) const {return true;} |
---|
28 | virtual Vector getRadianceAt(const Vector& dir)
|
---|
29 | {
|
---|
30 | return radiance;
|
---|
31 | } |
---|
32 | }; |
---|
Note: See
TracBrowser
for help on using the repository browser.