Public Member Functions | Static Public Attributes | Private Attributes | List of all members
SP::SPShader Class Reference
Inheritance diagram for SP::SPShader:
Inheritance graph

Public Member Functions

 SPShader (const std::string &name, const std::function< void(SPShader *)> &init_func, bool transparent_shader=false, int drawing_priority=0, bool use_alpha_channel=false, bool use_tangents=false, const std::array< bool, 6 > &srgb={{ true, true, false, false, false, false }})
bool hasShader (RenderPass rp)
GLuint getShaderProgram (RenderPass rp)
void use (RenderPass rp=RP_1ST)
void unuse (RenderPass rp=RP_1ST)
void addShaderFile (const std::string &name, GLint shader_type, RenderPass rp=RP_1ST)
void linkShaderFiles (RenderPass rp=RP_1ST)
void addAllTextures (RenderPass rp=RP_1ST)
void addAllUniforms (RenderPass rp=RP_1ST)
void addCustomPrefilledTextures (SamplerType st, GLuint texture_type, const std::string &name, std::function< GLuint()> func, RenderPass rp=RP_1ST)
void bindPrefilledTextures (RenderPass rp=RP_1ST) const
void bindTextures (const std::array< GLuint, 6 > &tex, RenderPass rp=RP_1ST) const
void addBasicUniforms (RenderPass rp=RP_1ST)
const std::string & getName () const
SPUniformAssignergetUniformAssigner (const std::string &name, RenderPass rp=RP_1ST) const
void setUniformsPerObject (SPPerObjectUniform *sppou, std::vector< SPUniformAssigner * > *ua_used, RenderPass rp=RP_1ST)
void setUseFunction (std::function< void()> func, RenderPass rp=RP_1ST)
void setUnuseFunction (std::function< void()> func, RenderPass rp=RP_1ST)
bool isTransparent () const
bool useAlphaChannel () const
int getDrawingPriority () const
bool samplerLess (RenderPass rp=RP_1ST) const
void unload ()
void init ()
bool isSrgbForTextureLayer (unsigned layer) const
bool useTangents () const
bool hasTextureLayer (unsigned layer)
- Public Member Functions inherited from SP::SPPerObjectUniform
void addAssignerFunction (const std::string &name, std::function< void(SPUniformAssigner *)> func)
void removeAssignerFunction (const std::string &name)
bool hasUniform (const std::string &name) const
bool assignUniform (const std::string &name, SPUniformAssigner *ua) const
bool isEmpty () const

Static Public Attributes

static bool m_sp_shader_debug = false
static std::map< std::string, std::pair< unsigned, SamplerType > > m_prefilled_names

Private Attributes

std::string m_name
std::vector< std::shared_ptr< GLuint > > m_shader_files
GLuint m_program [RP_COUNT]
std::map< unsigned, unsigned > m_samplers [RP_COUNT]
std::vector< std::tuple< unsigned, std::string, SamplerType, GLuint > > m_prefilled_samplers [RP_COUNT]
std::unordered_map< std::string, SPUniformAssigner * > m_uniforms [RP_COUNT]
std::unordered_map< std::string, std::function< GLuint()> > m_custom_prefilled_getter [RP_COUNT]
std::function< void()> m_use_function [RP_COUNT]
std::function< void()> m_unuse_function [RP_COUNT]
const std::function< void(SPShader *)> m_init_function
const int m_drawing_priority
const bool m_transparent_shader
const bool m_use_alpha_channel
const bool m_use_tangents
const std::array< bool, 6 > m_srgb

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