glVertex  5.5.2
All Classes Files Functions Enumerations Friends Macros
glvertex_light.h
Go to the documentation of this file.
1 // (c) by Stefan Roettger, licensed under MIT license
2 
5 #ifndef GLVERTEX_LIGHT_H
6 #define GLVERTEX_LIGHT_H
7 
8 #include "glvertex_core.h"
9 
12 {
13 public:
14 
16  : light_(0,0,1,0),
17  camera_light_(true),
18  Ia_(1), Id_(1), Is_(1),
19  falloff_(1,0,0)
20  {}
21 
23  void setDirection(vec3f direction, bool camera_light = true)
24  {
25  light_ = vec4f(direction, 0);
26  camera_light_ = camera_light;
27  }
28 
30  void setPosition(vec3f position, bool camera_light = true)
31  {
32  light_ = vec4f(position, 1);
33  camera_light_ = camera_light;
34  }
35 
37  void setLightVector(vec4f light, bool camera_light = true)
38  {
39  light_ = light;
40  camera_light_ = camera_light;
41  }
42 
45  {
46  return(light_);
47  }
48 
50  bool isCameraLight() const
51  {
52  return(camera_light_);
53  }
54 
56  void setAmbientColor(vec3f color)
57  {
58  Ia_ = color;
59  }
60 
63  {
64  return(Ia_);
65  }
66 
68  void setDiffuseColor(vec3f color)
69  {
70  Id_ = color;
71  }
72 
75  {
76  return(Id_);
77  }
78 
80  void setSpecularColor(vec3f color)
81  {
82  Is_ = color;
83  }
84 
87  {
88  return(Is_);
89  }
90 
92  void setIntensityFalloff(vec3f falloff)
93  {
94  falloff_ = falloff;
95  }
96 
99  {
100  return(falloff_);
101  }
102 
104  void setLightSourceParameters(vec3f Ia = vec3f(1), vec3f Id = vec3f(1), vec3f Is = vec3f(1),
105  vec3f falloff = vec3f(1,0,0))
106  {
107  Ia_ = Ia;
108  Id_ = Id;
109  Is_ = Is;
110 
111  falloff_ = falloff;
112  }
113 
116  vec3f &falloff) const
117  {
118  Ia = Ia_;
119  Id = Id_;
120  Is = Is_;
121 
122  falloff = falloff_;
123  }
124 
126  void begin()
127  {
128  prev_light_ = lglGetLightVector();
129  lglGetLightSourceParameters(prev_Ia_, prev_Id_, prev_Is_, prev_falloff_);
130 
131  lglLightVector(light_, camera_light_);
132  lglLightSourceParameters(Ia_, Id_, Is_, falloff_);
133  }
134 
136  void end()
137  {
138  lglLightVector(prev_light_);
139  lglLightSourceParameters(prev_Ia_, prev_Id_, prev_Is_, prev_falloff_);
140  }
141 
142 protected:
143 
144  vec4f light_;
145  bool camera_light_;
146  vec3f Ia_, Id_, Is_;
147  vec3f falloff_;
148 
149  vec4f prev_light_;
150  vec3f prev_Ia_, prev_Id_, prev_Is_;
151  vec3f prev_falloff_;
152 };
153 
156 {
157 public:
158 
159  lgl_Material()
160  : ka_(0.1f), kd_(0.7f), ks_(0.2f),
161  exponent_(30)
162  {}
163 
165  void setAmbientColor(vec3f color)
166  {
167  ka_ = color;
168  }
169 
172  {
173  return(ka_);
174  }
175 
177  void setDiffuseColor(vec3f color)
178  {
179  kd_ = color;
180  }
181 
184  {
185  return(kd_);
186  }
187 
190  {
191  ks_ = color;
192  }
193 
196  {
197  return(ks_);
198  }
199 
201  void setExponent(float exponent)
202  {
203  exponent_ = exponent;
204  }
205 
207  float getExponent() const
208  {
209  return(exponent_);
210  }
211 
213  void setMaterialParameters(vec3f ka = vec3f(0.1f), vec3f kd = vec3f(0.7f), vec3f ks = vec3f(0.2f),
214  float exponent = 30)
215  {
216  ka_ = ka;
217  kd_ = kd;
218  ks_ = ks;
219 
220  exponent_ = exponent;
221  }
222 
225  float &exponent) const
226  {
227  ka = ka_;
228  kd = kd_;
229  ks = ks_;
230 
231  exponent = exponent_;
232  }
233 
235  void begin()
236  {
237  lglGetMaterialParameters(prev_ka_, prev_kd_, prev_ks_, prev_exponent_);
238  lglMaterialParameters(ka_, kd_, ks_, exponent_);
239  }
240 
242  void end()
243  {
244  lglMaterialParameters(prev_ka_, prev_kd_, prev_ks_, prev_exponent_);
245  }
246 
247 protected:
248 
249  vec3f ka_, kd_, ks_;
250  float exponent_;
251 
252  vec3f prev_ka_, prev_kd_, prev_ks_;
253  float prev_exponent_;
254 };
255 
256 #endif
lgl_LightSource::getIntensityFalloff
vec3f getIntensityFalloff() const
get intensity falloff
Definition: glvertex_light.h:98
vec3f
3D float vector
Definition: glslmath.h:584
lglMaterialParameters
void lglMaterialParameters(vec3f ka=vec3f(0.1f), vec3f kd=vec3f(0.7f), vec3f ks=vec3f(0.2f), float exponent=30)
set material parameters
Definition: glvertex_api.h:758
lgl_Material::getMaterialParameters
void getMaterialParameters(vec3f &ka, vec3f &kd, vec3f &ks, float &exponent) const
get the material parameters
Definition: glvertex_light.h:224
lgl_LightSource::setAmbientColor
void setAmbientColor(vec3f color)
set ambient light source intensity
Definition: glvertex_light.h:56
lgl_Material
Blinn-Phong material.
Definition: glvertex_light.h:155
lglGetLightSourceParameters
void lglGetLightSourceParameters(vec3f &Ia, vec3f &Id, vec3f &Is, vec3f &falloff)
get light source parameters
Definition: glvertex_api.h:753
lgl_LightSource::getAmbientColor
vec3f getAmbientColor() const
get ambient light source intensity
Definition: glvertex_light.h:62
lgl_LightSource::setLightSourceParameters
void setLightSourceParameters(vec3f Ia=vec3f(1), vec3f Id=vec3f(1), vec3f Is=vec3f(1), vec3f falloff=vec3f(1, 0, 0))
set the light source parameters
Definition: glvertex_light.h:104
lglGetLightVector
vec4f lglGetLightVector()
get light vector (in camera coordinates)
Definition: glvertex_api.h:732
lgl_LightSource::getLightVector
vec3f getLightVector() const
get light vector
Definition: glvertex_light.h:44
lgl_LightSource::begin
void begin()
activate light source
Definition: glvertex_light.h:126
lgl_LightSource::getLightSourceParameters
void getLightSourceParameters(vec3f &Ia, vec3f &Id, vec3f &Is, vec3f &falloff) const
get the light source parameters
Definition: glvertex_light.h:115
lgl_Material::begin
void begin()
activate material
Definition: glvertex_light.h:235
lgl_LightSource::end
void end()
deactivate light source
Definition: glvertex_light.h:136
lgl_Material::setMaterialParameters
void setMaterialParameters(vec3f ka=vec3f(0.1f), vec3f kd=vec3f(0.7f), vec3f ks=vec3f(0.2f), float exponent=30)
set the material parameters
Definition: glvertex_light.h:213
lgl_Material::setDiffuseColor
void setDiffuseColor(vec3f color)
set diffuse material reflectance
Definition: glvertex_light.h:177
lglGetMaterialParameters
void lglGetMaterialParameters(vec3f &ka, vec3f &kd, vec3f &ks, float &exponent)
get material parameters
Definition: glvertex_api.h:763
lgl_Material::end
void end()
deactivate material
Definition: glvertex_light.h:242
lgl_LightSource::setLightVector
void setLightVector(vec4f light, bool camera_light=true)
set light vector
Definition: glvertex_light.h:37
lglLightSourceParameters
void lglLightSourceParameters(vec3f Ia=vec3f(1), vec3f Id=vec3f(1), vec3f Is=vec3f(1), vec3f falloff=vec3f(1, 0, 0))
set light source parameters
Definition: glvertex_api.h:748
lgl_Material::setSpecularColor
void setSpecularColor(vec3f color)
set specular material reflectance
Definition: glvertex_light.h:189
glvertex_core.h
lgl_Material::getDiffuseColor
vec3f getDiffuseColor() const
get diffuse material reflectance
Definition: glvertex_light.h:183
lgl_LightSource::setIntensityFalloff
void setIntensityFalloff(vec3f falloff)
set intensity falloff
Definition: glvertex_light.h:92
vec4f
4D float vector
Definition: glslmath.h:961
lgl_LightSource::setDiffuseColor
void setDiffuseColor(vec3f color)
set diffuse light source intensity
Definition: glvertex_light.h:68
lgl_Material::setExponent
void setExponent(float exponent)
set specular exponent
Definition: glvertex_light.h:201
lgl_Material::setAmbientColor
void setAmbientColor(vec3f color)
set ambient material reflectance
Definition: glvertex_light.h:165
lgl_LightSource::getDiffuseColor
vec3f getDiffuseColor() const
get diffuse light source intensity
Definition: glvertex_light.h:74
lgl_Material::getExponent
float getExponent() const
get specular exponent
Definition: glvertex_light.h:207
lgl_Material::getSpecularColor
vec3f getSpecularColor() const
get specular material reflectance
Definition: glvertex_light.h:195
lgl_LightSource::getSpecularColor
vec3f getSpecularColor() const
get specular light source intensity
Definition: glvertex_light.h:86
lglLightVector
void lglLightVector(vec4f light=vec4f(0, 0, 1, 0), bool camera_light=true)
set light vector
Definition: glvertex_api.h:728
lgl_LightSource::isCameraLight
bool isCameraLight() const
is the light source a camera light?
Definition: glvertex_light.h:50
lgl_LightSource::setDirection
void setDirection(vec3f direction, bool camera_light=true)
set light direction
Definition: glvertex_light.h:23
lgl_LightSource
Blinn-Phong light source.
Definition: glvertex_light.h:11
lgl_Material::getAmbientColor
vec3f getAmbientColor() const
get ambient material reflectance
Definition: glvertex_light.h:171
lgl_LightSource::setSpecularColor
void setSpecularColor(vec3f color)
set specular light source intensity
Definition: glvertex_light.h:80
lgl_LightSource::setPosition
void setPosition(vec3f position, bool camera_light=true)
set light position
Definition: glvertex_light.h:30