1 #ifndef SRC_WX_GLSL_H_ 2 #define SRC_WX_GLSL_H_ 3 4 #define MAX_PREV 7 5 6 #define MAX_SHADERS 20 7 #define MAX_TEXTURES 20 8 #define MAX_PARAMETERS 100 9 10 #define MAX_USER_SHADERS 20 11 //#define SDL2_SHADER_DEBUG 12 13 struct shader_scale { 14 int mode[2]; 15 float value[2]; 16 }; 17 18 struct shader_state { 19 float input_size[2]; 20 float input_texture_size[2]; 21 float output_texture_size[2]; 22 float output_size[2]; 23 float tex_coords[8]; 24 }; 25 26 struct shader_vbo { 27 int vertex_coord; 28 int tex_coord; 29 int color; 30 }; 31 32 struct shader_texture { 33 int id; 34 int width; 35 int height; 36 int type; 37 int internal_format; 38 int format; 39 int min_filter; 40 int mag_filter; 41 int wrap_mode; 42 void* data; 43 int mipmap; 44 }; 45 46 struct shader_lut_texture { 47 char name[50]; 48 struct shader_texture texture; 49 }; 50 51 struct shader_fbo { 52 int id; 53 struct shader_texture texture; 54 int srgb; 55 int mipmap_input; 56 }; 57 58 struct shader_prev { 59 struct shader_fbo fbo; 60 struct shader_vbo vbo; 61 }; 62 63 struct shader_input { 64 int texture; 65 int input_size; 66 int texture_size; 67 int tex_coord; 68 }; 69 70 struct shader_uniforms { 71 int mvp_matrix; 72 int vertex_coord; 73 int tex_coord; 74 int color; 75 76 int texture; 77 int input_size; 78 int texture_size; 79 int output_size; 80 81 int frame_count; 82 int frame_direction; 83 84 struct shader_input orig; 85 struct shader_input pass[MAX_SHADERS]; 86 struct shader_input prev_pass[MAX_SHADERS]; 87 struct shader_input prev[MAX_PREV]; 88 89 int parameters[MAX_PARAMETERS]; 90 int lut_textures[MAX_TEXTURES]; 91 }; 92 93 struct shader_program { 94 int vertex_shader; 95 int fragment_shader; 96 int id; 97 }; 98 99 struct shader_parameter { 100 char id[64]; 101 char description[64]; 102 float default_value; 103 float value; 104 float min; 105 float max; 106 float step; 107 }; 108 109 struct shader_pass { 110 int active; 111 char alias[64]; 112 int vertex_array; 113 int frame_count_mod; 114 struct shader_program program; 115 struct shader_uniforms uniforms; 116 struct shader_fbo fbo; 117 struct shader_vbo vbo; 118 struct shader_state state; 119 struct shader_scale scale; 120 }; 121 122 struct glsl_shader { 123 int active; 124 char name[64]; 125 126 int num_passes; 127 struct shader_pass passes[MAX_SHADERS]; 128 129 int num_lut_textures; 130 struct shader_lut_texture lut_textures[MAX_TEXTURES]; 131 132 int num_parameters; 133 struct shader_parameter parameters[MAX_PARAMETERS]; 134 135 struct shader_pass prev_scene; 136 struct shader_prev prev[MAX_PREV+1]; 137 138 int last_prev_update; 139 int has_prev; 140 141 float shader_refresh_rate; 142 143 int input_filter_linear; 144 }; 145 146 typedef struct glsl_t { 147 int num_shaders; 148 struct glsl_shader shaders[MAX_USER_SHADERS]; 149 struct shader_pass scene; 150 struct shader_pass final_pass; 151 struct shader_pass fs_color; 152 #ifdef SDL2_SHADER_DEBUG 153 struct shader_pass debug; 154 #endif 155 int srgb; 156 } glsl_t; 157 158 #endif 159