14 #ifndef __diguyGraphicsShaderProgram_H
15 #define __diguyGraphicsShaderProgram_H
21 #define CPLUSPLUS_ONLY
33 class bdiShaderProgram;
127 const char* get_name();
134 const char* get_vertex_shader_filename();
141 const char* get_pixel_shader_filename();
155 const char* get_shader_version();
194 void derive_diguy_shader_source_filename(
char* result,
196 const char* shader_base_name,
197 const char* shader_language,
198 const char* shader_type,
199 int include_diguy_default_shader_directory,
200 const char* shader_subdirectory = NULL);
207 void print_shader_info_to_log();
221 virtual int reload();
226 int get_use_shared_library();
227 void set_use_shared_library(
int value);
231 void set_vertex_shader_source_code(
const char * shader_source);
235 void set_pixel_shader_source_code(
const char * shader_source);
252 int set_textures_used_bitmask(
int texture_bitmask);
261 int get_textures_used_bitmask();
276 #ifdef CPLUSPLUS_ONLY
316 virtual int load_vertex_shader_source(
const char* filename_base);
324 virtual int load_pixel_shader_source(
const char* filename_base);
370 virtual int get_loaded();
383 virtual int get_linked();
396 virtual int get_valid();
457 virtual int unbind();
487 virtual int bind_link_matrices(
int num_matrices,
488 const float* mat_data);
504 virtual int bind_color_array(
int num_colors,
505 const float* color_data);
532 virtual int bind_uniform_with_location(
int location,
535 float* float_values);
537 virtual int bind_uniform_with_location(
int location,
552 virtual int get_attrib_bind_location(
const char* name);
563 virtual int get_uniform_bind_location(
const char* name);
574 virtual int get_gl_program_object();
577 virtual int get_vertex_attrib_location()
const;
578 virtual int get_color_attrib_location()
const;
579 virtual int get_normal_attrib_location()
const;
580 virtual int get_texture_attrib_location()
const;
595 int get_num_additional_feature_names();
598 const char * get_additional_feature_name(
int index);
601 int has_additional_feature(
const char * name);
615 static int get_transposed_matrix_data();
623 static int get_use_4x3_shader_matrix_data();
641 int get_num_variables();
642 const char* get_variable_name_at_index(
int index);
643 int has_variable(
const char* name);
644 const char* get_variable_type(
const char* name);
646 int set_variable_float(
const char* name,
float value,
int set_current = 1,
int set_initial = 0,
int create = 0);
647 int set_variable_vec2(
const char* name,
float x,
float y,
int set_current = 1,
int set_initial = 0,
int create = 0);
648 int set_variable_vec3(
const char* name,
float x,
float y,
float z,
int set_current = 1,
int set_initial = 0,
int create = 0);
649 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);
650 int set_variable_int(
const char* name,
int value,
int set_current = 1,
int set_initial = 0,
int create = 0);
652 int get_variable_float(
const char* name,
float* value,
int get_current = 1);
653 int get_variable_vec2(
const char* name,
float* x,
float* y,
int get_current = 1);
654 int get_variable_vec3(
const char* name,
float* x,
float* y,
float* z,
int get_current = 1);
655 int get_variable_vec4(
const char* name,
float* r,
float* g,
float* b,
float* a,
int get_current = 1);
656 int get_variable_int(
const char* name,
int* value,
int get_current = 1);
669 virtual void set_apply_matrices_flag(
int apply_matrices_flag){;}
670 virtual void set_textures_enabled(
int enabled){;}
672 virtual int bind_matrix(
int bind_location,
const float* mat){
return 0; }
685 #ifdef CPLUSPLUS_ONLY
687 bdiShaderProgram* get_internal_data() {
return m_internal_data;}
708 bdiShaderProgram* m_internal_data;
710 friend class bdiShaderProgram;
711 friend class bdiGeometryFactory;
A class that represents the unique per-character shader object.
Definition: diguyGraphicsShaderInstance.h:55
Definition: diguyGraphicsShaderProgram.h:49
Definition: diguyGraphicsShaderProgram.h:52
Definition: diguyGraphicsShaderProgram.h:48
Definition: diguyGraphicsShaderProgram.h:72
Definition: diguyGraphicsShaderProgram.h:53
Definition: diguyGraphicsShaderProgram.h:71
Definition: diguyGraphicsShaderProgram.h:50
A class that represents a shared material.
Definition: diguyGraphicsMaterial.h:42
Definition: diguyGraphicsShaderProgram.h:73
diguyGraphicsShaderProgramType
This enumeration lists the types of shader programs that DI-Guy might request.
Definition: diguyGraphicsShaderProgram.h:69
diguyGraphicsShaderQualityLevel
This enumeration lists the quality level of various shader programs that DI-Guy might create...
Definition: diguyGraphicsShaderProgram.h:46
This class is a simple structure for transmitting diguy lights down to the uniform buffer system this...
Definition: diguyViewLight.h:36
A class that represents the unique per-character non-shared joint of a character. A diguyCharacter is...
Definition: diguyGraphicsLink.h:47
Definition: diguyViewFog.h:35
This class implements shader programs for use with DI-Guy character graphics.
Definition: diguyGraphicsShaderProgram.h:96
Definition: diguyGraphicsShaderProgram.h:74
Definition: diguyGraphicsShaderProgram.h:51