Colobot
light.h
Go to the documentation of this file.
1 /*
2  * This file is part of the Colobot: Gold Edition source code
3  * Copyright (C) 2001-2014, Daniel Roux, EPSITEC SA & TerranovaTeam
4  * http://epsiteс.ch; http://colobot.info; http://github.com/colobot
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14  * See the GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program. If not, see http://gnu.org/licenses
18  */
19 
25 #pragma once
26 
27 
28 #include "graphics/core/color.h"
29 
30 #include "math/vector.h"
31 
32 
33 // Graphics module namespace
34 namespace Gfx {
35 
41 {
42  LIGHT_POINT,
43  LIGHT_SPOT,
44  LIGHT_DIRECTIONAL
45 };
46 
53 struct Light
54 {
68  float attenuation0;
70  float attenuation1;
72  float attenuation2;
74  float spotAngle;
75 
78 
81  {
82  LoadDefault();
83  }
84 
86  void LoadDefault()
87  {
88  type = LIGHT_POINT;
89  ambient = Color(0.4f, 0.4f, 0.4f);
90  diffuse = Color(0.8f, 0.8f, 0.8f);
91  specular = Color(1.0f, 1.0f, 1.0f);
92  position = Math::Vector(0.0f, 0.0f, 0.0f);
93  direction = Math::Vector(0.0f, 0.0f, 1.0f);
94  attenuation0 = 1.0f;
95  attenuation1 = attenuation2 = 0.0f;
96  spotAngle = Math::PI/2.0f;
97  spotIntensity = 0.0f;
98  }
99 };
100 
101 
102 } // namespace Gfx
103 
LightType
Type of light in 3D scene.
Definition: light.h:40
Math::Vector position
Position in world space (for point & spot lights)
Definition: light.h:64
Color specular
Color of specular light.
Definition: light.h:62
const float PI
PI.
Definition: const.h:47
Properties of light in 3D scene.
Definition: light.h:53
float spotAngle
Angle of spotlight cone (0-PI/2 radians)
Definition: light.h:74
Color structs and related functions.
float attenuation1
Linear attenuation factor.
Definition: light.h:70
Color ambient
Color of ambient light.
Definition: light.h:58
Math::Vector direction
Direction in world space (for directional & spot lights)
Definition: light.h:66
float spotIntensity
Intensity of spotlight (0 = uniform; 128 = most intense)
Definition: light.h:77
float attenuation2
Quadratic attenuation factor.
Definition: light.h:72
Namespace for (new) graphics code.
Definition: app.h:49
LightType type
Type of light source.
Definition: light.h:56
Vector struct and related functions.
3D (3x1) vector
Definition: vector.h:52
RGBA color.
Definition: color.h:38
Light()
Constructor; calls LoadDefault()
Definition: light.h:80
float attenuation0
Constant attenuation factor.
Definition: light.h:68
Color diffuse
Color of diffuse light.
Definition: light.h:60
void LoadDefault()
Loads default values.
Definition: light.h:86