Pioneer
GeoSphereMaterial.h
Go to the documentation of this file.
1 // Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #ifndef _OGL_GEOSPHEREMATERIAL_H
5 #define _OGL_GEOSPHEREMATERIAL_H
6 /*
7  * Programs & Materials used by terrain
8  */
9 #include "MaterialGL.h"
10 #include "OpenGLLibs.h"
11 #include "Program.h"
12 
13 namespace Graphics {
14  namespace OGL {
15  class GeoSphereProgram : public Program {
16  public:
17  GeoSphereProgram(const std::string &filename, const std::string &defines);
18 
22  Uniform geosphereAtmosTopRad; // in planet radii
24  Uniform geosphereRadius; // (planet radius)
25  Uniform geosphereInvRadius; // 1.0 / (planet radius)
26 
29 
36 
37  protected:
38  virtual void InitUniforms();
39  };
40 
42  public:
44  virtual Program *CreateProgram(const MaterialDescriptor &) override;
45  virtual void SetProgram(Program *p) override;
46  virtual void Apply() override;
47  virtual void Unapply() override;
48 
49  protected:
50  void SetGSUniforms();
51  // We actually have multiple programs at work here, one compiled for each of the number of shadows.
52  // They are chosen/created based on what the current parameters passed in by the specialParameter0 are.
53  void SwitchShadowVariant();
54  Program *m_programs[4]; // 0 to 3 shadows
56  };
57 
59  public:
61  virtual Program *CreateProgram(const MaterialDescriptor &) override;
62  virtual void Apply() override;
63  };
64 
66  public:
67  virtual Program *CreateProgram(const MaterialDescriptor &) override;
68  virtual void Apply() override;
69  virtual void Unapply() override;
70 
71  protected:
72  void SetGSUniforms();
73  };
74 
75  } // namespace OGL
76 } // namespace Graphics
77 #endif
Definition: Material.h:57
Definition: GeoSphereMaterial.h:15
Uniform shadowCentreZ
Definition: GeoSphereMaterial.h:32
Uniform shadowCentreX
Definition: GeoSphereMaterial.h:30
Uniform geosphereAtmosInvScaleHeight
Definition: GeoSphereMaterial.h:21
Uniform detailScaleLo
Definition: GeoSphereMaterial.h:28
Uniform srad
Definition: GeoSphereMaterial.h:33
virtual void InitUniforms()
Definition: GeoSphereMaterial.cpp:25
GeoSphereProgram(const std::string &filename, const std::string &defines)
Definition: GeoSphereMaterial.cpp:17
Uniform geosphereAtmosFogDensity
Definition: GeoSphereMaterial.h:20
Uniform sdivlrad
Definition: GeoSphereMaterial.h:35
Uniform detailScaleHi
Definition: GeoSphereMaterial.h:27
Uniform geosphereRadius
Definition: GeoSphereMaterial.h:24
Uniform geosphereCenter
Definition: GeoSphereMaterial.h:23
Uniform atmosColor
Definition: GeoSphereMaterial.h:19
Uniform geosphereInvRadius
Definition: GeoSphereMaterial.h:25
Uniform lrad
Definition: GeoSphereMaterial.h:34
Uniform geosphereAtmosTopRad
Definition: GeoSphereMaterial.h:22
Uniform shadowCentreY
Definition: GeoSphereMaterial.h:31
Definition: GeoSphereMaterial.h:58
virtual Program * CreateProgram(const MaterialDescriptor &) override
Definition: GeoSphereMaterial.cpp:186
virtual void Apply() override
Definition: GeoSphereMaterial.cpp:205
GeoSphereSkyMaterial()
Definition: GeoSphereMaterial.cpp:181
Definition: GeoSphereMaterial.h:65
void SetGSUniforms()
Definition: GeoSphereMaterial.cpp:234
virtual Program * CreateProgram(const MaterialDescriptor &) override
Definition: GeoSphereMaterial.cpp:211
virtual void Unapply() override
Definition: GeoSphereMaterial.cpp:226
virtual void Apply() override
Definition: GeoSphereMaterial.cpp:221
Definition: GeoSphereMaterial.h:41
Uint32 m_curNumShadows
Definition: GeoSphereMaterial.h:55
Program * m_programs[4]
Definition: GeoSphereMaterial.h:54
virtual Program * CreateProgram(const MaterialDescriptor &) override
Definition: GeoSphereMaterial.cpp:54
void SwitchShadowVariant()
Definition: GeoSphereMaterial.cpp:166
GeoSphereSurfaceMaterial()
Definition: GeoSphereMaterial.cpp:47
virtual void Apply() override
Definition: GeoSphereMaterial.cpp:86
void SetGSUniforms()
Definition: GeoSphereMaterial.cpp:102
virtual void Unapply() override
Definition: GeoSphereMaterial.cpp:92
virtual void SetProgram(Program *p) override
Definition: GeoSphereMaterial.cpp:80
Definition: MaterialGL.h:26
Definition: Program.h:23
Definition: Uniform.h:21
Definition: Background.h:13