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-2016, Daniel Roux, EPSITEC SA & TerranovaTeam
4  * http://epsitec.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 {
36 
42 {
43  LIGHT_POINT,
44  LIGHT_SPOT,
45  LIGHT_DIRECTIONAL
46 };
47 
54 struct Light
55 {
57  LightType type = LIGHT_POINT;
59  Color ambient = Color(0.4f, 0.4f, 0.4f);
61  Color diffuse = Color(0.8f, 0.8f, 0.8f);
63  Color specular = Color(1.0f, 1.0f, 1.0f);
65  Math::Vector position = Math::Vector(0.0f, 0.0f, 0.0f);
67  Math::Vector direction = Math::Vector(0.0f, 0.0f, 1.0f);
69  float attenuation0 = 1.0f;
71  float attenuation1 = 0.0f;
73  float attenuation2 = 0.0f;
75  float spotAngle = Math::PI/2.0f;
77  float spotIntensity = 0.0f;
78 
80  void LoadDefault()
81  {
82  *this = Light();
83  }
84 };
85 
86 
87 } // namespace Gfx
88 
LightType
Type of light in 3D scene.
Definition: light.h:41
Math::Vector position
Position in world space (for point & spot lights)
Definition: light.h:65
Color specular
Color of specular light.
Definition: light.h:63
const float PI
PI.
Definition: const.h:48
Properties of light in 3D scene.
Definition: light.h:54
float spotAngle
Angle of spotlight cone (0-PI/2 radians)
Definition: light.h:75
Color structs and related functions.
float attenuation1
Linear attenuation factor.
Definition: light.h:71
Color ambient
Color of ambient light.
Definition: light.h:59
Math::Vector direction
Direction in world space (for directional & spot lights)
Definition: light.h:67
float spotIntensity
Intensity of spotlight (0 = uniform; 128 = most intense)
Definition: light.h:77
float attenuation2
Quadratic attenuation factor.
Definition: light.h:73
Namespace for (new) graphics code.
Definition: app.h:49
LightType type
Type of light source.
Definition: light.h:57
Vector struct and related functions.
3D (3x1) vector
Definition: vector.h:53
RGBA color.
Definition: color.h:39
float attenuation0
Constant attenuation factor.
Definition: light.h:69
Color diffuse
Color of diffuse light.
Definition: light.h:61
void LoadDefault()
Loads default values.
Definition: light.h:80