DI-Guy SDK Documentation  13.5
diguyOsgGraphicsShaderProgram Class Reference

#include <diguyOsgGraphicsShaderProgram.h>

Inheritance diagram for diguyOsgGraphicsShaderProgram:
diguyGraphicsShaderProgram

Public Member Functions

 diguyOsgGraphicsShaderProgram (void *internal_data)
 
 ~diguyOsgGraphicsShaderProgram ()
 
virtual int load_vertex_shader_source (const char *filename)
 This function will be called by DI-Guy when it is time for the vertex part of this shader to be loaded and compiled. More...
 
virtual int load_pixel_shader_source (const char *filename)
 This function is the pixel shader (AKA fragment shader in OpenGL) equivalent of load_vertex_shader_source(). More...
 
virtual int link ()
 This function will be called by DI-Guy when it is time for the shader program to be linked. More...
 
osg::Program * get_program ()
 
osg::StateSet * get_state_set ()
 
- Public Member Functions inherited from diguyGraphicsShaderProgram
const char * get_name ()
 Returns: name of the shader This pointer will never be NULL. More...
 
const char * get_vertex_shader_filename ()
 Returns: the vertex filename of the shader This pointer will never be NULL. More...
 
const char * get_pixel_shader_filename ()
 Returns: the pixel shader filename of the shader This pointer will never be NULL. More...
 
diguyGraphicsShaderProgramType get_shader_type ()
 Returns: program type of the shader; see diguyGraphicsShaderProgramType. More...
 
const char * get_shader_version ()
 Returns: shader version. More...
 
diguyGraphicsShaderQualityLevel get_quality_level ()
 Returns: the quality level type of the shader; see diguyGraphicsShaderQualityLevel. More...
 
void derive_diguy_shader_source_filename (char *result, int result_max_len, const char *shader_base_name, const char *shader_language, const char *shader_type, int include_diguy_default_shader_directory, const char *shader_subdirectory=NULL)
 This function derives filenames for shader programs from the provided information. More...
 
void print_shader_info_to_log ()
 Prints information about the shader to the log. More...
 
int load ()
 Forces the underlying shader to load. More...
 
virtual int reload ()
 Forces the underlying shader to reload. Returns 0 on success. More...
 
int get_use_shared_library ()
 Indicates that a shared library (typically diguy_shared_library.glsl) should be prepended to the current shader code. More...
 
void set_use_shared_library (int value)
 
void set_vertex_shader_source_code (const char *shader_source)
 Sets the source code to use for creating a diguy shader program, bypasses file loading. More...
 
void set_pixel_shader_source_code (const char *shader_source)
 Sets the source code to use for creating a diguy shader program, bypasses file loading. More...
 
int set_textures_used_bitmask (int texture_bitmask)
 Sets a bit mask consisting of diguyTextureMapMasks or'd together to specify what textures should bind when this shader is active. More...
 
int get_textures_used_bitmask ()
 Returns: the current or'd together list of diguyTextureMapMasks that this shader attempts to bind. More...
 
virtual int get_loaded ()
 Returns whether the shader has been loaded. More...
 
virtual int get_linked ()
 Returns whether the shader has been linked. More...
 
virtual int get_valid ()
 Returns whether shader is valid. More...
 
virtual int bind ()
 This function will be called by DI-Guy when this program is being bound for rendering. More...
 
virtual int unbind ()
 In general variables that were set in bind() should be unset or unbound here. More...
 
virtual int bind_link_matrices (int num_matrices, const float *mat_data)
 This function will be called by DI-Guy when the matrix data of a character's links needs to be sent to the graphics card. More...
 
virtual int bind_color_array (int num_colors, const float *color_data)
 This function will be called by DI-Guy when the color data of a character's links needs to be sent to the graphics card. More...
 
virtual int bind_uniform_with_location (int location, const char *name, int value_size, float *float_values)
 These functions will be called by DI-Guy when there is a shader uniform that needs to be updated and sent to the graphics card. More...
 
virtual int bind_uniform_with_location (int location, const char *name, int value_size, int *int_values)
 
virtual int get_attrib_bind_location (const char *name)
 This function will be called by DI-Guy when core code is attempting to identify the capabilities of the end users shader. More...
 
virtual int get_uniform_bind_location (const char *name)
 This function will be called by DI-Guy when core code is attempting to identify the capabilities of the end users shader. More...
 
virtual int get_gl_program_object ()
 This function will be called by DI-Guy when core code is attempting to identify send shader low level data Return -1 to disable any functionality. More...
 
virtual int get_vertex_attrib_location () const
 subclass to support particle rendering via abstract interface More...
 
virtual int get_color_attrib_location () const
 
virtual int get_normal_attrib_location () const
 
virtual int get_texture_attrib_location () const
 
int get_num_additional_feature_names ()
 Returns: Number of additional feature strings that this program can support. More...
 
const char * get_additional_feature_name (int index)
 Returns: Name of feature at index in the list. More...
 
int has_additional_feature (const char *name)
 Returns: 0 or 1 if the shader supports this feature. More...
 
int get_num_variables ()
 
const char * get_variable_name_at_index (int index)
 
int has_variable (const char *name)
 
const char * get_variable_type (const char *name)
 
int set_variable_float (const char *name, float value, int set_current=1, int set_initial=0, int create=0)
 
int set_variable_vec2 (const char *name, float x, float y, int set_current=1, int set_initial=0, int create=0)
 
int set_variable_vec3 (const char *name, float x, float y, float z, int set_current=1, int set_initial=0, int create=0)
 
int set_variable_vec4 (const char *name, float x, float y, float z, float w, int set_current=1, int set_initial=0, int create=0)
 
int set_variable_int (const char *name, int value, int set_current=1, int set_initial=0, int create=0)
 
int get_variable_float (const char *name, float *value, int get_current=1)
 
int get_variable_vec2 (const char *name, float *x, float *y, int get_current=1)
 
int get_variable_vec3 (const char *name, float *x, float *y, float *z, int get_current=1)
 
int get_variable_vec4 (const char *name, float *r, float *g, float *b, float *a, int get_current=1)
 
int get_variable_int (const char *name, int *value, int get_current=1)
 
virtual void set_apply_matrices_flag (int apply_matrices_flag)
 
virtual void set_textures_enabled (int enabled)
 
virtual int bind_matrix (int bind_location, const float *mat)
 
bdiShaderProgramget_internal_data ()
 

Protected Attributes

char m_vertex_shader_filename [512]
 
char m_fragment_shader_filename [512]
 
osg::ref_ptr< osg::Program > m_program
 
osg::ref_ptr< osg::Shader > m_vertex_shader
 
osg::ref_ptr< osg::Shader > m_fragment_shader
 
osg::ref_ptr< osg::StateSet > m_state_set
 

Additional Inherited Members

- Static Public Member Functions inherited from diguyGraphicsShaderProgram
static int get_transposed_matrix_data ()
 Returns: The value specified in bdiGraphicsInitGraphicsAPI.transpose_shader_matrices. More...
 
static int get_use_4x3_shader_matrix_data ()
 Returns: The value specified in bdiGraphicsInitGraphicsAPI.use_4x3_shader_matrices. More...
 
- Protected Member Functions inherited from diguyGraphicsShaderProgram
 diguyGraphicsShaderProgram (void *internal_data)
 A protected constructor. More...
 
virtual ~diguyGraphicsShaderProgram ()
 A protected destructor. More...
 

Constructor & Destructor Documentation

diguyOsgGraphicsShaderProgram::diguyOsgGraphicsShaderProgram ( void *  internal_data)
diguyOsgGraphicsShaderProgram::~diguyOsgGraphicsShaderProgram ( )

Member Function Documentation

int diguyOsgGraphicsShaderProgram::load_vertex_shader_source ( const char *  filename_base)
virtual

This function will be called by DI-Guy when it is time for the vertex part of this shader to be loaded and compiled.

The utility function derive_diguy_shader_source_filename() can be used to convert the passed filename_base to an actual filename.

For example, assume that m_vertex_shader_filename is a character array of 512 bytes. The following function call would derive an appropriate vertex shader filename:

511,
filename_base,
"glsl",
"vert",
1);

This function is called during the Build Stage.

Returns:

0 to indicate load was successful, -1 otherwise

Immediate Mode:

Immediate mode renderers usually do override this function.

Scene Graph:

Scene graph renderers usually do override this function.

Callable From:

  • N/A (automatically called by DI-Guy Graphics API during the Build Stage)

Reimplemented from diguyGraphicsShaderProgram.

int diguyOsgGraphicsShaderProgram::load_pixel_shader_source ( const char *  filename_base)
virtual

This function is the pixel shader (AKA fragment shader in OpenGL) equivalent of load_vertex_shader_source().

Reimplemented from diguyGraphicsShaderProgram.

int diguyOsgGraphicsShaderProgram::link ( )
virtual

This function will be called by DI-Guy when it is time for the shader program to be linked.

This function is called during the Build Stage after the load_vertex_shader_source() and load_pixel_shader_source() functions.

Once the link has successfully completed shader variable bind indices can be looked up.

Returns:

0 to indicate link was successful, -1 otherwise

Immediate Mode:

Immediate mode renderers usually do override this function.

Scene Graph:

Scene graph renderers can override this function.

Callable From:

  • N/A (automatically called by DI-Guy Graphics API during the Build Stage)

Reimplemented from diguyGraphicsShaderProgram.

osg::Program* diguyOsgGraphicsShaderProgram::get_program ( )
inline
osg::StateSet* diguyOsgGraphicsShaderProgram::get_state_set ( )
inline

Member Data Documentation

char diguyOsgGraphicsShaderProgram::m_vertex_shader_filename[512]
protected
char diguyOsgGraphicsShaderProgram::m_fragment_shader_filename[512]
protected
osg::ref_ptr<osg::Program> diguyOsgGraphicsShaderProgram::m_program
protected
osg::ref_ptr<osg::Shader> diguyOsgGraphicsShaderProgram::m_vertex_shader
protected
osg::ref_ptr<osg::Shader> diguyOsgGraphicsShaderProgram::m_fragment_shader
protected
osg::ref_ptr<osg::StateSet> diguyOsgGraphicsShaderProgram::m_state_set
protected

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