Max 5 API Reference
00001 // jit.gl.shader.h 00002 // 00003 // author: jkc 00004 // � 2004 cycling '74 00005 00006 #ifndef JIT_GL_SHADER_H 00007 #define JIT_GL_SHADER_H 00008 00009 // -------------------------------------------------------------------------------- 00010 00011 #include "jit.common.h" 00012 #include "jit.xml.h" 00013 00014 #include "jit.gl.h" 00015 #include "jit.gl.cache.h" 00016 #include "jit.gl.texture.h" 00017 #include "jit.gl.shader.param.h" 00018 #include "jit.gl.shader.program.h" 00019 00020 #include "jit.vecmath.h" 00021 00022 #include <math.h> 00023 00024 /*************************************************************************/ 00025 00026 #ifdef __cplusplus 00027 extern "C" { 00028 #endif 00029 00030 #if C74_PRAGMA_STRUCT_PACKPUSH 00031 #pragma pack(push, 2) 00032 #elif C74_PRAGMA_STRUCT_PACK 00033 #pragma pack(2) 00034 #endif 00035 00036 /****************************************************************************/ 00037 00038 #define JIT_SYM_IF(x) ((x) && (x) != _jit_sym_nothing && (x)->s_name) 00039 #define JIT_SYM_SAFECSTR(x) ((JIT_SYM_IF(x)) ? (x)->s_name : "<null>" ) 00040 00041 #define JIT_GL_SHADER_INVALID (0) 00042 #define JIT_GL_SHADER_VALID ((void*)1) 00043 #define JIT_GL_MAX_TEXTUREUNITS (8) 00044 00045 #define JIT_MAX_PROGAM_PARAMS (8) 00046 00047 // -------------------------------------------------------------------------------- 00048 00049 //extern struct t_jit_gl_shader_cg_data; 00050 00051 typedef struct _jit_gl_shader 00052 { 00053 t_object ob; // jitter object 00054 void *ob3d; // jitter ob3d 00055 void *bound; // jitter ob3d currently bound to 00056 t_symbol *targetname; // name of ob3d currently bound to 00057 t_symbol *shader; // name of shader 00058 t_symbol *filename; // filename of shader xml description file 00059 t_jit_xml_document *shaderxml; // shader xml description file 00060 t_jit_gl_shader_program *program[3]; // language dependent shader programs 00061 long programcount; // number of programs initialized 00062 t_jit_gl_shader_param *loadparam[256];// initial cached shader params from commandline 00063 long loadparamcount; // number of specified load params from commandline 00064 t_symbol *prefer; // name of preferred language 00065 t_symbol *language; // name of language used 00066 long changed; // changed flag 00067 long pending; // pending flag for delayed read 00068 void *handle; // holder for handle 00069 void *context; // holder for compiler context (for Cg) 00070 t_symbol *backend; // name of backend (for compiling GLSL with CG, etc) 00071 long stateflags; // flags for getting parent ob3d state 00072 long verbose; // flag for enabling verbose output 00073 void *texture[JIT_GL_MAX_TEXTUREUNITS]; //made void * so that other texture objects like t_jit_gl_cubemap can be here too 00074 long texturemanage[JIT_GL_MAX_TEXTUREUNITS]; //flag for if shader owns the texture object 00075 long texturecount; // number of texture attr elems 00076 unsigned long timestamp; // timestamp for jxs file 00077 t_symbol *compiler; // name of compiler to use (for GLSL, CG) 00078 void *runtime; // holder for runtime compiler (for Ashli) 00079 void *id; // opengl specific id for shader 00080 00081 t_jit_gl_shader_param *loadprogramparam[JIT_MAX_PROGAM_PARAMS]; // initial cached shader program params from commandline 00082 long loadprogramparamcount; // number of specified load program params from commandline 00083 00084 } t_jit_gl_shader; 00085 00086 // -------------------------------------------------------------------------------- 00087 00088 extern const unsigned char *pb_jit_gl_extensions; 00089 00090 extern t_symbol *ps_jit_gl_bind; 00091 extern t_symbol *ps_jit_gl_unbind; 00092 extern t_symbol *ps_jit_gl_drawto; 00093 ; 00094 extern t_symbol *ps_jit_gl_mesh; 00095 extern t_symbol *ps_jit_gl_mesh_get_cache; 00096 00097 extern t_symbol *ps_jit_gl_shader_texture; 00098 extern t_symbol *ps_jit_gl_texture; 00099 extern t_symbol *ps_jit_gl_texture_width; 00100 extern t_symbol *ps_jit_gl_texture_height; 00101 extern t_symbol *ps_jit_gl_texture_depth; 00102 00103 extern t_symbol *ps_jit_gl_shader_language_auto; 00104 extern t_symbol *ps_jit_gl_shader_language_glsl; 00105 extern t_symbol *ps_jit_gl_shader_language_arb; 00106 extern t_symbol *ps_jit_gl_shader_language_nv; 00107 extern t_symbol *ps_jit_gl_shader_language_cg; 00108 extern t_symbol *ps_jit_gl_shader_backend_glsl; 00109 extern t_symbol *ps_jit_gl_shader_backend_asm; 00110 extern t_symbol *ps_jit_gl_shader_backend_cg; 00111 extern t_symbol *ps_jit_gl_shader_bind; 00112 extern t_symbol *ps_jit_gl_shader_count; 00113 extern t_symbol *ps_jit_gl_shader_transform; 00114 extern t_symbol *ps_jit_gl_shader_state; 00115 extern t_symbol *ps_jit_gl_shader_args; 00116 extern t_symbol *ps_jit_gl_shader_profile; 00117 extern t_symbol *ps_jit_gl_shader_entry; 00118 extern t_symbol *ps_jit_gl_shader_target; 00119 extern t_symbol *ps_jit_gl_shader_program; 00120 extern t_symbol *ps_jit_gl_shader_param; 00121 extern t_symbol *ps_jit_gl_shader_language; 00122 extern t_symbol *ps_jit_gl_shader_version; 00123 extern t_symbol *ps_jit_gl_shader_source; 00124 extern t_symbol *ps_jit_gl_shader_assembly; 00125 extern t_symbol *ps_jit_gl_shader_params; 00126 extern t_symbol *ps_jit_gl_shader_object; 00127 00128 // shader managed state parameters 00129 extern t_symbol *ps_jit_gl_shader_state_modelview_matrix; 00130 extern t_symbol *ps_jit_gl_shader_state_projection_matrix; 00131 extern t_symbol *ps_jit_gl_shader_state_modelview_projection_matrix; 00132 extern t_symbol *ps_jit_gl_shader_state_normal_matrix; 00133 extern t_symbol *ps_jit_gl_shader_state_texture_matrix; 00134 extern t_symbol *ps_jit_gl_shader_state_texture0_matrix; 00135 extern t_symbol *ps_jit_gl_shader_state_texture1_matrix; 00136 extern t_symbol *ps_jit_gl_shader_state_texture2_matrix; 00137 extern t_symbol *ps_jit_gl_shader_state_texture3_matrix; 00138 extern t_symbol *ps_jit_gl_shader_state_texture4_matrix; 00139 extern t_symbol *ps_jit_gl_shader_state_texture5_matrix; 00140 extern t_symbol *ps_jit_gl_shader_state_texture6_matrix; 00141 extern t_symbol *ps_jit_gl_shader_state_texture7_matrix; 00142 00143 // ob3d parent managed state parameters 00144 extern t_symbol *ps_jit_gl_shader_state_position; 00145 extern t_symbol *ps_jit_gl_shader_state_normal; 00146 extern t_symbol *ps_jit_gl_shader_state_tangent; 00147 extern t_symbol *ps_jit_gl_shader_state_bitangent; 00148 extern t_symbol *ps_jit_gl_shader_state_vertex_attr; 00149 extern t_symbol *ps_jit_gl_shader_state_edgeflag; 00150 extern t_symbol *ps_jit_gl_shader_state_blendweight; 00151 extern t_symbol *ps_jit_gl_shader_state_color0; 00152 extern t_symbol *ps_jit_gl_shader_state_color1; 00153 extern t_symbol *ps_jit_gl_shader_state_ambient; 00154 extern t_symbol *ps_jit_gl_shader_state_diffuse; 00155 extern t_symbol *ps_jit_gl_shader_state_specular; 00156 extern t_symbol *ps_jit_gl_shader_state_emission; 00157 extern t_symbol *ps_jit_gl_shader_state_fogcoord; 00158 extern t_symbol *ps_jit_gl_shader_state_texcoord; 00159 extern t_symbol *ps_jit_gl_shader_state_texcoord0; 00160 extern t_symbol *ps_jit_gl_shader_state_texcoord1; 00161 extern t_symbol *ps_jit_gl_shader_state_texcoord2; 00162 extern t_symbol *ps_jit_gl_shader_state_texcoord3; 00163 extern t_symbol *ps_jit_gl_shader_state_texcoord4; 00164 extern t_symbol *ps_jit_gl_shader_state_texcoord5; 00165 extern t_symbol *ps_jit_gl_shader_state_texcoord6; 00166 extern t_symbol *ps_jit_gl_shader_state_texcoord7; 00167 extern t_symbol *ps_jit_gl_shader_state_texunit0; 00168 extern t_symbol *ps_jit_gl_shader_state_texunit1; 00169 extern t_symbol *ps_jit_gl_shader_state_texunit2; 00170 extern t_symbol *ps_jit_gl_shader_state_texunit3; 00171 extern t_symbol *ps_jit_gl_shader_state_texunit4; 00172 extern t_symbol *ps_jit_gl_shader_state_texunit5; 00173 extern t_symbol *ps_jit_gl_shader_state_texunit6; 00174 extern t_symbol *ps_jit_gl_shader_state_texunit7; 00175 00176 extern t_symbol *ps_jit_gl_shader_state_camera_position; 00177 extern t_symbol *ps_jit_gl_shader_state_camera_direction; 00178 00179 extern t_symbol *ps_jit_gl_shader_state_light_position; 00180 extern t_symbol *ps_jit_gl_shader_state_light0_position; 00181 extern t_symbol *ps_jit_gl_shader_state_light1_position; 00182 extern t_symbol *ps_jit_gl_shader_state_light2_position; 00183 extern t_symbol *ps_jit_gl_shader_state_light3_position; 00184 extern t_symbol *ps_jit_gl_shader_state_light4_position; 00185 extern t_symbol *ps_jit_gl_shader_state_light5_position; 00186 extern t_symbol *ps_jit_gl_shader_state_light6_position; 00187 extern t_symbol *ps_jit_gl_shader_state_light7_position; 00188 00189 extern t_symbol *ps_jit_gl_shader_state_light_direction; 00190 extern t_symbol *ps_jit_gl_shader_state_light0_direction; 00191 extern t_symbol *ps_jit_gl_shader_state_light1_direction; 00192 extern t_symbol *ps_jit_gl_shader_state_light2_direction; 00193 extern t_symbol *ps_jit_gl_shader_state_light3_direction; 00194 extern t_symbol *ps_jit_gl_shader_state_light4_direction; 00195 extern t_symbol *ps_jit_gl_shader_state_light5_direction; 00196 extern t_symbol *ps_jit_gl_shader_state_light6_direction; 00197 extern t_symbol *ps_jit_gl_shader_state_light7_direction; 00198 00199 extern t_symbol *ps_jit_gl_shader_state_light_ambient; 00200 extern t_symbol *ps_jit_gl_shader_state_light0_ambient; 00201 extern t_symbol *ps_jit_gl_shader_state_light1_ambient; 00202 extern t_symbol *ps_jit_gl_shader_state_light2_ambient; 00203 extern t_symbol *ps_jit_gl_shader_state_light3_ambient; 00204 extern t_symbol *ps_jit_gl_shader_state_light4_ambient; 00205 extern t_symbol *ps_jit_gl_shader_state_light5_ambient; 00206 extern t_symbol *ps_jit_gl_shader_state_light6_ambient; 00207 extern t_symbol *ps_jit_gl_shader_state_light7_ambient; 00208 00209 extern t_symbol *ps_jit_gl_shader_state_light_diffuse; 00210 extern t_symbol *ps_jit_gl_shader_state_light0_diffuse; 00211 extern t_symbol *ps_jit_gl_shader_state_light1_diffuse; 00212 extern t_symbol *ps_jit_gl_shader_state_light2_diffuse; 00213 extern t_symbol *ps_jit_gl_shader_state_light3_diffuse; 00214 extern t_symbol *ps_jit_gl_shader_state_light4_diffuse; 00215 extern t_symbol *ps_jit_gl_shader_state_light5_diffuse; 00216 extern t_symbol *ps_jit_gl_shader_state_light6_diffuse; 00217 extern t_symbol *ps_jit_gl_shader_state_light7_diffuse; 00218 00219 extern t_symbol *ps_jit_gl_shader_state_light_specular; 00220 extern t_symbol *ps_jit_gl_shader_state_light0_specular; 00221 extern t_symbol *ps_jit_gl_shader_state_light1_specular; 00222 extern t_symbol *ps_jit_gl_shader_state_light2_specular; 00223 extern t_symbol *ps_jit_gl_shader_state_light3_specular; 00224 extern t_symbol *ps_jit_gl_shader_state_light4_specular; 00225 extern t_symbol *ps_jit_gl_shader_state_light5_specular; 00226 extern t_symbol *ps_jit_gl_shader_state_light6_specular; 00227 extern t_symbol *ps_jit_gl_shader_state_light7_specular; 00228 00229 extern t_symbol *ps_jit_gl_shader_state_light_cutoff; 00230 extern t_symbol *ps_jit_gl_shader_state_light0_cutoff; 00231 extern t_symbol *ps_jit_gl_shader_state_light1_cutoff; 00232 extern t_symbol *ps_jit_gl_shader_state_light2_cutoff; 00233 extern t_symbol *ps_jit_gl_shader_state_light3_cutoff; 00234 extern t_symbol *ps_jit_gl_shader_state_light4_cutoff; 00235 extern t_symbol *ps_jit_gl_shader_state_light5_cutoff; 00236 extern t_symbol *ps_jit_gl_shader_state_light6_cutoff; 00237 extern t_symbol *ps_jit_gl_shader_state_light7_cutoff; 00238 00239 extern t_symbol *ps_jit_gl_shader_state_light_exponent; 00240 extern t_symbol *ps_jit_gl_shader_state_light0_exponent; 00241 extern t_symbol *ps_jit_gl_shader_state_light1_exponent; 00242 extern t_symbol *ps_jit_gl_shader_state_light2_exponent; 00243 extern t_symbol *ps_jit_gl_shader_state_light3_exponent; 00244 extern t_symbol *ps_jit_gl_shader_state_light4_exponent; 00245 extern t_symbol *ps_jit_gl_shader_state_light5_exponent; 00246 extern t_symbol *ps_jit_gl_shader_state_light6_exponent; 00247 extern t_symbol *ps_jit_gl_shader_state_light7_exponent; 00248 00249 // texture managed state parameters 00250 extern t_symbol *ps_jit_gl_shader_state_texdim; 00251 extern t_symbol *ps_jit_gl_shader_state_texdim0; 00252 extern t_symbol *ps_jit_gl_shader_state_texdim1; 00253 extern t_symbol *ps_jit_gl_shader_state_texdim2; 00254 extern t_symbol *ps_jit_gl_shader_state_texdim3; 00255 extern t_symbol *ps_jit_gl_shader_state_texdim4; 00256 extern t_symbol *ps_jit_gl_shader_state_texdim5; 00257 extern t_symbol *ps_jit_gl_shader_state_texdim6; 00258 extern t_symbol *ps_jit_gl_shader_state_texdim7; 00259 00260 // matrix transform methods 00261 extern t_symbol *ps_jit_gl_shader_transform_identity; 00262 extern t_symbol *ps_jit_gl_shader_transform_transpose; 00263 extern t_symbol *ps_jit_gl_shader_transform_inverse; 00264 extern t_symbol *ps_jit_gl_shader_transform_inversetranspose; 00265 00266 // compiler parameter 00267 extern t_symbol *ps_jit_gl_shader_compiler_auto; 00268 extern t_symbol *ps_jit_gl_shader_compiler_native; 00269 extern t_symbol *ps_jit_gl_shader_compiler_internal; 00270 00271 //for texture finding/binding 00272 extern t_symbol *ps_jit_gl_shader_name; 00273 extern t_symbol *ps_jit_gl_shader_glid; 00274 00275 // flags -- default: all flags off. 00276 #define JIT_GL_SHADER_NEEDS_MODELVIEW_MATRIX 1 << 0 00277 #define JIT_GL_SHADER_NEEDS_PROJECTION_MATRIX 1 << 1 00278 #define JIT_GL_SHADER_NEEDS_MODELVIEW_PROJECTION_MATRIX 1 << 2 00279 #define JIT_GL_SHADER_NEEDS_TEXTURE_MATRIX 1 << 3 00280 #define JIT_GL_SHADER_NEEDS_NORMAL_MATRIX 1 << 4 00281 #define JIT_GL_SHADER_NEEDS_POSITION 1 << 5 00282 #define JIT_GL_SHADER_NEEDS_NORMAL 1 << 6 00283 #define JIT_GL_SHADER_NEEDS_TANGENT 1 << 7 00284 #define JIT_GL_SHADER_NEEDS_BITANGENT 1 << 8 00285 #define JIT_GL_SHADER_NEEDS_BLENDWEIGHT 1 << 9 00286 #define JIT_GL_SHADER_NEEDS_COLOR0 1 << 10 00287 #define JIT_GL_SHADER_NEEDS_COLOR1 1 << 11 00288 #define JIT_GL_SHADER_NEEDS_DIFFUSE 1 << 12 00289 #define JIT_GL_SHADER_NEEDS_SPECULAR 1 << 13 00290 #define JIT_GL_SHADER_NEEDS_FOGCOORD 1 << 14 00291 #define JIT_GL_SHADER_NEEDS_TEXCOORD0 1 << 15 00292 #define JIT_GL_SHADER_NEEDS_TEXCOORD1 1 << 16 00293 #define JIT_GL_SHADER_NEEDS_TEXCOORD2 1 << 17 00294 #define JIT_GL_SHADER_NEEDS_TEXCOORD3 1 << 18 00295 #define JIT_GL_SHADER_NEEDS_TEXCOORD4 1 << 19 00296 #define JIT_GL_SHADER_NEEDS_TEXCOORD5 1 << 20 00297 #define JIT_GL_SHADER_NEEDS_TEXCOORD6 1 << 21 00298 #define JIT_GL_SHADER_NEEDS_TEXCOORD7 1 << 22 00299 00300 // ... 00301 00302 // -------------------------------------------------------------------------------- 00303 00304 t_jit_err jit_gl_shader_init(void); 00305 00306 t_jit_gl_shader *jit_gl_shader_new(t_symbol * dest_name); 00307 void jit_gl_shader_free(t_jit_gl_shader *x); 00308 00309 t_jit_err jit_gl_shader_setattr_file(t_jit_gl_shader *x, void *attr, long argc, t_atom *argv); 00310 t_jit_err jit_gl_shader_setattr_shader(t_jit_gl_shader *x, void *attr, long argc, t_atom *argv); 00311 t_jit_err jit_gl_shader_setattr_prefer(t_jit_gl_shader *x, void *attr, long argc, t_atom *argv); 00312 t_jit_err jit_gl_shader_setattr_compiler(t_jit_gl_shader *x, void *attr, long argc, t_atom *argv); 00313 00314 t_jit_err jit_gl_shader_read_jxs(t_jit_gl_shader *x, t_symbol *s, long argc, t_atom *argv); 00315 t_jit_err jit_gl_shader_draw(t_jit_gl_shader *x); 00316 t_jit_err jit_gl_shader_dest_changed(t_jit_gl_shader *x); 00317 t_jit_err jit_gl_shader_setparam(t_jit_gl_shader *x, t_symbol *s, long argc, t_atom *argv); 00318 t_jit_err jit_gl_shader_parse_target(t_symbol *target, t_symbol **targettype, long *targetid); 00319 t_jit_err jit_gl_shader_setup_program_params(t_jit_gl_shader *x); 00320 00321 t_jit_err jit_gl_shader_setprogram_param(t_jit_gl_shader *x, t_symbol *s, long argc, t_atom *argv); 00322 00323 t_jit_err jit_gl_shader_bind(t_jit_gl_shader *x, t_symbol *s, int argc, t_atom *argv); 00324 t_jit_err jit_gl_shader_unbind(t_jit_gl_shader *x, t_symbol *s, int argc, t_atom *argv); 00325 00326 t_jit_err jit_gl_shader_getparamlist(t_jit_gl_shader *x, void *s, long argc, t_atom *argv, t_atom *rv); 00327 t_jit_err jit_gl_shader_getparam_method(t_jit_gl_shader *x, void *s, long argc, t_atom *argv, t_atom *rv); 00328 00329 t_jit_err jit_gl_shader_link(t_jit_gl_shader *x); 00330 t_jit_err jit_gl_shader_compile(t_jit_gl_shader *x); 00331 t_jit_err jit_gl_shader_disable(t_jit_gl_shader *x); 00332 t_jit_err jit_gl_shader_dispose(t_jit_gl_shader *x); 00333 t_jit_err jit_gl_shader_destroy(t_jit_gl_shader *x); 00334 t_jit_err jit_gl_shader_flush_cache(t_jit_gl_shader *x); 00335 00336 t_jit_err jit_gl_shader_set_general_state_param(t_jit_gl_shader *x); 00337 t_jit_err jit_gl_shader_assign_general_state_to_param(t_jit_gl_shader *x, t_jit_gl_shader_param *param); 00338 t_jit_err jit_gl_shader_set_matrix_state_param(t_jit_gl_shader *x); 00339 t_jit_err jit_gl_shader_assign_matrix_state_to_param(t_jit_gl_shader_param *param); 00340 t_jit_err jit_gl_shader_apply_matrix_transform_to_param(t_jit_gl_shader_param *param); 00341 t_jit_err jit_gl_shader_set_texture_state_param(t_jit_gl_shader *x); 00342 t_jit_err jit_gl_shader_get_texture_dim(t_jit_gl_shader *x, long n, GLfloat *width, GLfloat *height, GLfloat *depth); 00343 t_jit_err jit_gl_shader_get_flag_from_state(t_symbol *state, long *flag); 00344 t_jit_err jit_gl_shader_dump(t_jit_gl_shader *x, t_symbol *s, long argc, t_atom *argv); 00345 t_jit_err jit_gl_shader_dump_program_params(t_jit_gl_shader *x, t_jit_gl_shader_program *p); 00346 00347 t_jit_gl_shader_program *jit_gl_shader_get_program_by_type(t_jit_gl_shader *x, t_symbol *type); 00348 t_jit_gl_shader_program *jit_gl_shader_get_program_by_name(t_jit_gl_shader *x, t_symbol *name); 00349 t_jit_gl_shader_program *jit_gl_shader_get_program_by_profile(t_jit_gl_shader *x, t_symbol *profile); 00350 t_jit_gl_shader_program *jit_gl_shader_get_program_by_filename(t_jit_gl_shader *x, t_symbol *filename); 00351 00352 t_jit_err jit_gl_shader_load_program( 00353 t_jit_gl_shader *x, t_symbol *lang, t_symbol *name, 00354 t_symbol *filename, t_symbol *pgmtype, long precompiled, 00355 const char *source, long length, t_symbol *profile, t_symbol *entry); 00356 00357 00358 t_jit_err jit_gl_shader_set_geometry_shader_parameters(t_jit_gl_shader *x, long vertices_out, t_symbol *input_type, t_symbol *output_type); 00359 00360 t_jit_err jit_gl_shader_load_program_from_file(t_jit_gl_shader *x, t_jit_gl_shader_program *program); 00361 t_jit_err jit_gl_shader_load_source_from_mem(t_jit_gl_shader *x, const char *source, long length, t_handle texthandle, long *textsize, unsigned long *timestamp); 00362 t_jit_err jit_gl_shader_load_source_from_file(t_jit_gl_shader *x, t_symbol *s, t_handle texthandle, long *textsize, unsigned long *timestamp); 00363 00364 t_jit_err jit_gl_shader_recalc(t_jit_gl_shader *x); 00365 t_jit_err jit_gl_shader_dest_closing(t_jit_gl_shader *x); 00366 t_jit_err jit_gl_shader_post_log(const char *log); 00367 00368 t_jit_err jit_gl_shader_texture_passthru_enable(long rectangle); 00369 t_jit_err jit_gl_shader_texture_passthru_disable(); 00370 00371 // -------------------------------------------------------------------------------- 00372 00373 long jit_str_begins_with(const char *test, const char *pattern); 00374 00375 /****************************************************************************/ 00376 00377 #if C74_PRAGMA_STRUCT_PACKPUSH 00378 #pragma pack(pop) 00379 #elif C74_PRAGMA_STRUCT_PACK 00380 #pragma pack() 00381 #endif 00382 00383 #ifdef __cplusplus 00384 } 00385 #endif 00386 00387 /****************************************************************************/ 00388 00389 #endif // JIT_GL_SHADER_H
Copyright © 2008, Cycling '74