Terminus
light.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <QVector3D>
4 #include <QVector4D>
5 
6 namespace terminus
7 {
8 
15 class Light
16 {
17 public:
23  enum Type
24  {
25  AMBIENT = 0,
27  POINT = 2,
28  SPOT = 3
29  };
30 
34  static constexpr int vectorCount = 3;
35 
39  static const Light nullLight;
40 
41 public:
42  static Light createAmbient(const QVector3D & color);
43  static Light createDirectional(const QVector3D & color, const QVector3D & direction);
44  static Light createPoint(const QVector3D & color, const QVector3D & position, float intensity);
45  static Light createSpot(const QVector3D & color, const QVector3D & position, const QVector3D & direction, float intensity, float cutoffDegrees, float cutoffBorder);
46 
47 public:
48  Light(Type type = AMBIENT);
49 
50  void setPosition(const QVector3D & position);
51  void setDirection(const QVector3D & direction);
52  void setColor(const QVector3D & color);
53  void setIntensity(float intensity);
54  void setCutoff(float cutoffDegrees, float cutoffBorder);
55 
56 protected:
57  QVector4D positionType;
58  QVector4D directionIntensity;
59  QVector4D colorCutOff;
60 };
61 
62 }// namespace terminus
QVector4D directionIntensity
Definition: light.h:58
QVector4D positionType
Definition: light.h:57
void setPosition(const QVector3D &position)
Definition: light.cpp:54
Light(Type type=AMBIENT)
Definition: light.cpp:47
static Light createPoint(const QVector3D &color, const QVector3D &position, float intensity)
Definition: light.cpp:27
void setIntensity(float intensity)
Definition: light.cpp:75
void setCutoff(float cutoffDegrees, float cutoffBorder)
Definition: light.cpp:80
Type
The type of a light source.
Definition: light.h:23
Ambient light, only color is used.
Definition: light.h:26
void setDirection(const QVector3D &direction)
Definition: light.cpp:61
static Light createDirectional(const QVector3D &color, const QVector3D &direction)
Definition: light.cpp:19
static Light createSpot(const QVector3D &color, const QVector3D &position, const QVector3D &direction, float intensity, float cutoffDegrees, float cutoffBorder)
Definition: light.cpp:36
Point light, defined by position, attenuation and color.
Definition: light.h:28
Definition: light.h:25
void setColor(const QVector3D &color)
Definition: light.cpp:68
Definition: eventhandler.cpp:18
Directional light, defined by direction and color.
Definition: light.h:27
static Light createAmbient(const QVector3D &color)
Definition: light.cpp:12
The Light class represents a light source with a packed, shader compatible memory layout...
Definition: light.h:15
static constexpr int vectorCount
the number of 4d vectors occupied by an instance of this class
Definition: light.h:34
static const Light nullLight
a light that has no effect on the scene
Definition: light.h:39
QVector4D colorCutOff
Definition: light.h:59