sculpto
Classes | Public Member Functions | Static Public Member Functions | List of all members
scl::material_phong Class Reference

#include <material_phong.h>

Inheritance diagram for scl::material_phong:
scl::material

Public Member Functions

const vec3GetSpecular () const
 
const vec3GetDiffuse () const
 
float GetShininess () const
 
bool GetIsSpecularMap () const
 
bool GetIsDiffuseMap () const
 
bool GetIsEmissionMap () const
 
bool GetIsNormalMap () const
 
const shared< texture_2d > & GetDiffuseMapTexture () const
 
const shared< texture_2d > & GetSpecularMapTexture () const
 
const shared< texture_2d > & GetEmissionMapTexture () const
 
const shared< texture_2d > & GetNormalMapTexture () const
 
void SetDiffuse (const vec3 &Diffuse)
 
void SetSpecular (const vec3 &Specular)
 
void SetShininess (float Shininess)
 
void SetDiffuseMapTexture (shared< texture_2d > DiffuseMapTexture)
 
void SetSpecularMapTexture (shared< texture_2d > SpecularMapTexture)
 
void SetEmissionMapTexture (shared< texture_2d > EmissionMapTexture)
 
void SetNormalMapTexture (shared< texture_2d > NormalMapTexture)
 
 material_phong ()=default
 
 material_phong (const material_phong &Other)=default
 
 material_phong (const vec3 &Diffuse, const vec3 &Specular, float Shininess)
 
void Bind () const override
 
void Unbind () const override
 
- Public Member Functions inherited from scl::material
 material (shared< shader_program > Shader)
 
virtual void Bind () const
 
virtual void Unbind () const
 

Static Public Member Functions

static shared< material_phongCreate (const vec3 &Diffuse, const vec3 &Specular, float Shininess)
 
- Static Public Member Functions inherited from scl::material
static shared< materialCreate (shared< shader_program > Shader)
 

Additional Inherited Members

- Public Attributes inherited from scl::material
shared< shader_programShader {}
 

Detailed Description

Material for blin-phong lighting model class.

Definition at line 19 of file material_phong.h.

Constructor & Destructor Documentation

◆ material_phong() [1/3]

scl::material_phong::material_phong ( )
default

Default material for blin-phong lighting model constructor.

◆ material_phong() [2/3]

scl::material_phong::material_phong ( const material_phong Other)
default

Default material data defautl copy constructor.

◆ material_phong() [3/3]

scl::material_phong::material_phong ( const vec3 Diffuse,
const vec3 Specular,
float  Shininess 
)
inline
  • Material for blin-phong lighting model class contructor.
Parameters
Diffuse- Material diffuse lighting coefficient.
Specular- Material specular lighting coefficient.
Shininess- Material shiness exponent lighting coefficient.

Definition at line 159 of file material_phong.h.

159 :
161 {
162 Data.Diffuse = Diffuse;
163 Data.Specular = Specular;
164 Data.Shininess = Shininess;
165
166 DataBuffer = constant_buffer::Create(&Data, sizeof(buffer_data));
167 }
static shared< constant_buffer > Create(u32 Size)
Definition: buffer.cpp:14
material(shared< shader_program > Shader)
Definition: material.h:27
static shared< shader_program > GetPhongGeometryShader()

Member Function Documentation

◆ Bind()

void scl::material_phong::Bind ( ) const
inlineoverridevirtual
  • Bind material to current render stage function.
Parameters
None.
Returns
None.

Reimplemented from scl::material.

Definition at line 175 of file material_phong.h.

176 {
177 if (Shader != nullptr) Shader->Bind();
178 if (DataBuffer != nullptr) DataBuffer->Bind(render_context::BINDING_POINT_MATERIAL_DATA);
179
180 if (DiffuseMapTexture && Data.IsDiffuseMap) DiffuseMapTexture->Bind(render_context::TEXTURE_SLOT_MATERIAL_DIFFUSE);
181 if (SpecularMapTexture && Data.IsSpecularMap) SpecularMapTexture->Bind(render_context::TEXTURE_SLOT_MATERIAL_SPECULAR);
182 if (EmissionMapTexture && Data.IsEmissionMap) EmissionMapTexture->Bind(render_context::TEXTURE_SLOT_MATERIAL_EMISSION_MAP);
183 if (NormalMapTexture && Data.IsNormalMap) NormalMapTexture->Bind(render_context::TEXTURE_SLOT_MATERIAL_NORMAL_MAP);
184 }
shared< shader_program > Shader
Definition: material.h:20
static const int TEXTURE_SLOT_MATERIAL_EMISSION_MAP
static const int TEXTURE_SLOT_MATERIAL_NORMAL_MAP
static const int BINDING_POINT_MATERIAL_DATA
static const int TEXTURE_SLOT_MATERIAL_DIFFUSE
static const int TEXTURE_SLOT_MATERIAL_SPECULAR

◆ Create()

static shared< material_phong > scl::material_phong::Create ( const vec3 Diffuse,
const vec3 Specular,
float  Shininess 
)
inlinestatic
  • Material for blin-phong lighting model class contructor.
Parameters
Specular- Material specular lighting coefficient.
Diffuse- Material diffuse lighting coefficient.
Shininess- Material shiness exponent lighting coefficient.

Definition at line 208 of file material_phong.h.

209 {
210 return CreateShared<material_phong>(Diffuse, Specular, Shininess);
211 }

◆ GetDiffuse()

const vec3 & scl::material_phong::GetDiffuse ( ) const
inline

Material shiness exponent lighting coefficient getter function.

Definition at line 47 of file material_phong.h.

47{ return Data.Diffuse; }

◆ GetDiffuseMapTexture()

const shared< texture_2d > & scl::material_phong::GetDiffuseMapTexture ( ) const
inline

Diffuse map getter function.

Definition at line 61 of file material_phong.h.

61{ return DiffuseMapTexture; }

◆ GetEmissionMapTexture()

const shared< texture_2d > & scl::material_phong::GetEmissionMapTexture ( ) const
inline

Emission map getter function.

Definition at line 65 of file material_phong.h.

65{ return EmissionMapTexture; }

◆ GetIsDiffuseMap()

bool scl::material_phong::GetIsDiffuseMap ( ) const
inline

Flag, showing whether diffuse map passing to shader getter function.

Definition at line 54 of file material_phong.h.

54{ return Data.IsDiffuseMap; }

◆ GetIsEmissionMap()

bool scl::material_phong::GetIsEmissionMap ( ) const
inline

Flag, showing whether normal map passing to shader getter function.

Definition at line 56 of file material_phong.h.

56{ return Data.IsEmissionMap; }

◆ GetIsNormalMap()

bool scl::material_phong::GetIsNormalMap ( ) const
inline

Flag, showing whether normal map passing to shader getter function.

Definition at line 58 of file material_phong.h.

58{ return Data.IsNormalMap; }

◆ GetIsSpecularMap()

bool scl::material_phong::GetIsSpecularMap ( ) const
inline

Flag, showing whether specular map passing to shader getter function.

Definition at line 52 of file material_phong.h.

52{ return Data.IsSpecularMap; }

◆ GetNormalMapTexture()

const shared< texture_2d > & scl::material_phong::GetNormalMapTexture ( ) const
inline

Normal map getter function.

Definition at line 67 of file material_phong.h.

67{ return NormalMapTexture; }

◆ GetShininess()

float scl::material_phong::GetShininess ( ) const
inline

Material diffuse lighting coefficient getter function.

Definition at line 49 of file material_phong.h.

49{ return Data.Shininess; }

◆ GetSpecular()

const vec3 & scl::material_phong::GetSpecular ( ) const
inline

Material for blin-phong lighing model data getter setter functions.

Material specular lighting coefficient getter function.

Definition at line 45 of file material_phong.h.

45{ return Data.Specular; }

◆ GetSpecularMapTexture()

const shared< texture_2d > & scl::material_phong::GetSpecularMapTexture ( ) const
inline

Specular map getter function.

Definition at line 63 of file material_phong.h.

63{ return SpecularMapTexture; }

◆ SetDiffuse()

void scl::material_phong::SetDiffuse ( const vec3 Diffuse)
inline

Diffuse coeffisient setter function.

Definition at line 70 of file material_phong.h.

70 {
71 if (DiffuseMapTexture)
72 {
73 DiffuseMapTexture->Free();
74 DiffuseMapTexture = nullptr;
75 }
76 Data.Diffuse = Diffuse;
77 Data.IsDiffuseMap = false;
78 DataBuffer->Update(&Data, sizeof(Data));
79 }

◆ SetDiffuseMapTexture()

void scl::material_phong::SetDiffuseMapTexture ( shared< texture_2d DiffuseMapTexture)
inline

Diffuse map setter function.

Definition at line 98 of file material_phong.h.

98 {
99 if (!DiffuseMapTexture) return;
100
101 if (this->DiffuseMapTexture) this->DiffuseMapTexture->Free();
102 this->DiffuseMapTexture = DiffuseMapTexture;
103 if (!Data.IsDiffuseMap)
104 {
105 Data.IsDiffuseMap = true;
106 DataBuffer->Update(&Data, sizeof(Data));
107 }
108 }

◆ SetEmissionMapTexture()

void scl::material_phong::SetEmissionMapTexture ( shared< texture_2d EmissionMapTexture)
inline

Emission map setter function.

Definition at line 122 of file material_phong.h.

122 {
123 if (!EmissionMapTexture) return;
124
125 if (this->EmissionMapTexture) this->EmissionMapTexture->Free();
126 this->EmissionMapTexture = EmissionMapTexture;
127 if (!Data.IsEmissionMap)
128 {
129 Data.IsEmissionMap = true;
130 DataBuffer->Update(&Data, sizeof(Data));
131 }
132 }

◆ SetNormalMapTexture()

void scl::material_phong::SetNormalMapTexture ( shared< texture_2d NormalMapTexture)
inline

Normal map setter function.

Definition at line 134 of file material_phong.h.

134 {
135 if (!NormalMapTexture) return;
136
137 if (this->NormalMapTexture) this->NormalMapTexture->Free();
138 this->NormalMapTexture = NormalMapTexture;
139 if (!Data.IsNormalMap)
140 {
141 Data.IsNormalMap = true;
142 DataBuffer->Update(&Data, sizeof(Data));
143 }
144 }

◆ SetShininess()

void scl::material_phong::SetShininess ( float  Shininess)
inline

Shiness exponent setter function.

Definition at line 92 of file material_phong.h.

92 {
93 Data.Shininess = Shininess;
94 DataBuffer->Update(&Data, sizeof(Data));
95 }

◆ SetSpecular()

void scl::material_phong::SetSpecular ( const vec3 Specular)
inline

Specular coefficient setter function.

Definition at line 81 of file material_phong.h.

81 {
82 if (SpecularMapTexture)
83 {
84 SpecularMapTexture->Free();
85 SpecularMapTexture = nullptr;
86 }
87 Data.Specular = Specular;
88 Data.IsSpecularMap = false;
89 DataBuffer->Update(&Data, sizeof(Data));
90 }

◆ SetSpecularMapTexture()

void scl::material_phong::SetSpecularMapTexture ( shared< texture_2d SpecularMapTexture)
inline

Specular map setter function.

Definition at line 110 of file material_phong.h.

110 {
111 if (!SpecularMapTexture) return;
112
113 if (this->SpecularMapTexture) this->SpecularMapTexture->Free();
114 this->SpecularMapTexture = SpecularMapTexture;
115 if (!Data.IsSpecularMap)
116 {
117 Data.IsSpecularMap = true;
118 DataBuffer->Update(&Data, sizeof(Data));
119 }
120 }

◆ Unbind()

void scl::material_phong::Unbind ( ) const
inlineoverridevirtual
  • Unbind material from current render stage function.
Parameters
None.
Returns
None.

Reimplemented from scl::material.

Definition at line 192 of file material_phong.h.

193 {
194 if (Shader != nullptr) Shader->Unbind();
195 if (DataBuffer != nullptr) DataBuffer->Unbind();
196 if (SpecularMapTexture && Data.IsSpecularMap) SpecularMapTexture->Unbind();
197 if (DiffuseMapTexture && Data.IsDiffuseMap) DiffuseMapTexture->Unbind();
198 if (NormalMapTexture && Data.IsNormalMap) NormalMapTexture->Unbind();
199 }

The documentation for this class was generated from the following file: