Pioneer
src
graphics
opengl
SphereImpostorMaterial.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
#ifndef _GL2_SPHEREIMPOSTORMATERIAL_H
4
#define _GL2_SPHEREIMPOSTORMATERIAL_H
5
/*
6
* Billboard sphere impostor
7
*/
8
#include "
MaterialGL.h
"
9
#include "
Program.h
"
10
#include "
libs.h
"
11
namespace
Graphics
{
12
13
namespace
OGL {
14
15
class
SphereImpostorMaterial
:
public
Material
{
16
public
:
17
Program
*
CreateProgram
(
const
MaterialDescriptor
&)
override
18
{
19
return
new
Program
(
"billboard_sphereimpostor"
,
""
);
20
}
21
22
virtual
void
Apply
()
override
23
{
24
OGL::Material::Apply
();
25
m_program
->
sceneAmbient
.
Set
(
m_renderer
->
GetAmbientColor
());
26
27
//Light uniform parameters
28
for
(Uint32 i = 0; i <
m_renderer
->
GetNumLights
(); i++) {
29
const
Light
&
Light
=
m_renderer
->
GetLight
(i);
30
m_program
->
lights
[i].
diffuse
.
Set
(
Light
.
GetDiffuse
());
31
m_program
->
lights
[i].
specular
.
Set
(
Light
.
GetSpecular
());
32
const
vector3f
&pos =
Light
.
GetPosition
();
33
m_program
->
lights
[i].
position
.
Set
(pos.
x
, pos.
y
, pos.
z
, (
Light
.
GetType
() ==
Light::LIGHT_DIRECTIONAL
? 0.f : 1.f));
34
}
35
}
36
};
37
}
// namespace OGL
38
}
// namespace Graphics
39
#endif
MaterialGL.h
Program.h
Graphics::Light
Definition:
Light.h:14
Graphics::Light::GetPosition
const vector3f & GetPosition() const
Definition:
Light.h:30
Graphics::Light::LIGHT_DIRECTIONAL
@ LIGHT_DIRECTIONAL
Definition:
Light.h:19
Graphics::Light::GetType
LightType GetType() const
Definition:
Light.h:29
Graphics::Light::GetDiffuse
const Color & GetDiffuse() const
Definition:
Light.h:31
Graphics::Light::GetSpecular
const Color & GetSpecular() const
Definition:
Light.h:32
Graphics::MaterialDescriptor
Definition:
Material.h:57
Graphics::OGL::Material
Definition:
MaterialGL.h:26
Graphics::OGL::Material::m_renderer
RendererOGL * m_renderer
Definition:
MaterialGL.h:41
Graphics::OGL::Material::Apply
virtual void Apply() override
Definition:
MaterialGL.cpp:11
Graphics::OGL::Material::m_program
Program * m_program
Definition:
MaterialGL.h:40
Graphics::OGL::Program
Definition:
Program.h:23
Graphics::OGL::Program::lights
UniformLight lights[4]
Definition:
Program.h:65
Graphics::OGL::Program::sceneAmbient
Uniform sceneAmbient
Definition:
Program.h:57
Graphics::OGL::SphereImpostorMaterial
Definition:
SphereImpostorMaterial.h:15
Graphics::OGL::SphereImpostorMaterial::CreateProgram
Program * CreateProgram(const MaterialDescriptor &) override
Definition:
SphereImpostorMaterial.h:17
Graphics::OGL::SphereImpostorMaterial::Apply
virtual void Apply() override
Definition:
SphereImpostorMaterial.h:22
Graphics::OGL::Uniform::Set
void Set(int)
Definition:
Uniform.cpp:20
Graphics::RendererOGL::GetNumLights
virtual Uint32 GetNumLights() const override final
Definition:
RendererGL.h:93
Graphics::Renderer::GetLight
const Light & GetLight(const Uint32 idx) const
Definition:
Renderer.h:104
Graphics::Renderer::GetAmbientColor
const Color & GetAmbientColor() const
Definition:
Renderer.h:111
vector3< float >
vector3::y
T y
Definition:
vector3.h:18
vector3::x
T x
Definition:
vector3.h:18
vector3::z
T z
Definition:
vector3.h:18
libs.h
Graphics
Definition:
Background.h:13
Graphics::OGL::Program::UniformLight::position
Uniform position
Definition:
Program.h:63
Graphics::OGL::Program::UniformLight::diffuse
Uniform diffuse
Definition:
Program.h:61
Graphics::OGL::Program::UniformLight::specular
Uniform specular
Definition:
Program.h:62
Generated by
1.9.1