scg3  0.6
scg::MaterialCore Class Reference

A core to set material properties for lighting to be applied to subsequent geometry. More...

#include "MaterialCore.h"

Inheritance diagram for scg::MaterialCore:
[legend]
Collaboration diagram for scg::MaterialCore:
[legend]

Public Member Functions

 MaterialCore ()
 
virtual ~MaterialCore ()
 
MaterialCoresetEmission (const glm::vec4 &color)
 
MaterialCoresetAmbient (const glm::vec4 &color)
 
MaterialCoresetAmbientAndDiffuse (const glm::vec4 &color)
 
MaterialCoresetDiffuse (const glm::vec4 &color)
 
MaterialCoresetSpecular (const glm::vec4 &color)
 
MaterialCoresetShininess (GLfloat shininess)
 
void init ()
 
virtual void render (RenderState *renderState)
 
virtual void renderPost (RenderState *renderState)
 
- Public Member Functions inherited from scg::Core
 Core ()
 
virtual ~Core ()=0
 

Static Public Member Functions

static MaterialCoreSP create ()
 

Static Public Attributes

static const size_t FLOAT_SIZE = 4
 
static const size_t VEC4_SIZE = 16
 
static const size_t EMISSION_OFFSET = 0
 
static const size_t AMBIENT_OFFSET = 16
 
static const size_t DIFFUSE_OFFSET = 32
 
static const size_t SPECULAR_OFFSET = 48
 
static const size_t SHININESS_OFFSET = 64
 
static const size_t BUFFER_SIZE = 80
 

Protected Attributes

GLuint ubo_
 
GLint uboOld_
 
glm::vec4 emission_
 
glm::vec4 ambient_
 
glm::vec4 diffuse_
 
glm::vec4 specular_
 
GLfloat shininess_
 

Detailed Description

A core to set material properties for lighting to be applied to subsequent geometry.

The material properties are stored in a uniform buffer object (UBO), which is bound in render().

Definition at line 44 of file MaterialCore.h.

Constructor & Destructor Documentation

◆ MaterialCore()

scg::MaterialCore::MaterialCore ( )

Constructor.

◆ ~MaterialCore()

virtual scg::MaterialCore::~MaterialCore ( )
virtual

Destructor.

Member Function Documentation

◆ create()

static MaterialCoreSP scg::MaterialCore::create ( )
static

Create shared pointer.

Examples
scg3_minimal_example.cpp, and scg3_table_scene_example.cpp.

◆ init()

void scg::MaterialCore::init ( )

Initialize material, i.e., create uniform buffer object (UBO).

◆ render()

virtual void scg::MaterialCore::render ( RenderState renderState)
virtual

Render material, i.e., bind uniform buffer object (UBO).

Implements scg::Core.

◆ renderPost()

virtual void scg::MaterialCore::renderPost ( RenderState renderState)
virtual

Render material after traversing sub-tree, i.e., restore previous material state.

Reimplemented from scg::Core.

◆ setAmbient()

MaterialCore* scg::MaterialCore::setAmbient ( const glm::vec4 &  color)

Set ambient RGBA color.

Returns
this pointer for method chaining

◆ setAmbientAndDiffuse()

MaterialCore* scg::MaterialCore::setAmbientAndDiffuse ( const glm::vec4 &  color)

Set ambient and diffuse RGBA colors.

Returns
this pointer for method chaining

◆ setDiffuse()

MaterialCore* scg::MaterialCore::setDiffuse ( const glm::vec4 &  color)

Set diffuse RGBA color.

Returns
this pointer for method chaining

◆ setEmission()

MaterialCore* scg::MaterialCore::setEmission ( const glm::vec4 &  color)

Set emissive RGBA color.

Returns
this pointer for method chaining

◆ setShininess()

MaterialCore* scg::MaterialCore::setShininess ( GLfloat  shininess)

Set shininess (i.e., specular exponent).

Returns
this pointer for method chaining

◆ setSpecular()

MaterialCore* scg::MaterialCore::setSpecular ( const glm::vec4 &  color)

Set specular RGBA color.

Returns
this pointer for method chaining

Member Data Documentation

◆ ambient_

glm::vec4 scg::MaterialCore::ambient_
protected

Definition at line 131 of file MaterialCore.h.

◆ AMBIENT_OFFSET

const size_t scg::MaterialCore::AMBIENT_OFFSET = 16
static

Definition at line 120 of file MaterialCore.h.

◆ BUFFER_SIZE

const size_t scg::MaterialCore::BUFFER_SIZE = 80
static

Definition at line 124 of file MaterialCore.h.

◆ diffuse_

glm::vec4 scg::MaterialCore::diffuse_
protected

Definition at line 132 of file MaterialCore.h.

◆ DIFFUSE_OFFSET

const size_t scg::MaterialCore::DIFFUSE_OFFSET = 32
static

Definition at line 121 of file MaterialCore.h.

◆ emission_

glm::vec4 scg::MaterialCore::emission_
protected

Definition at line 130 of file MaterialCore.h.

◆ EMISSION_OFFSET

const size_t scg::MaterialCore::EMISSION_OFFSET = 0
static

Definition at line 119 of file MaterialCore.h.

◆ FLOAT_SIZE

const size_t scg::MaterialCore::FLOAT_SIZE = 4
static

Definition at line 117 of file MaterialCore.h.

◆ shininess_

GLfloat scg::MaterialCore::shininess_
protected

Definition at line 134 of file MaterialCore.h.

◆ SHININESS_OFFSET

const size_t scg::MaterialCore::SHININESS_OFFSET = 64
static

Definition at line 123 of file MaterialCore.h.

◆ specular_

glm::vec4 scg::MaterialCore::specular_
protected

Definition at line 133 of file MaterialCore.h.

◆ SPECULAR_OFFSET

const size_t scg::MaterialCore::SPECULAR_OFFSET = 48
static

Definition at line 122 of file MaterialCore.h.

◆ ubo_

GLuint scg::MaterialCore::ubo_
protected

Definition at line 128 of file MaterialCore.h.

◆ uboOld_

GLint scg::MaterialCore::uboOld_
protected

Definition at line 129 of file MaterialCore.h.

◆ VEC4_SIZE

const size_t scg::MaterialCore::VEC4_SIZE = 16
static

Definition at line 118 of file MaterialCore.h.


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