this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Updated test shaders and reorganized them. Removed version headers from test shaders and added load_shader() in common.c that adds a header appropriate to the GLSL (ES) version.

+78 -149
+2 -2
demos/3d/main.c
··· 154 154 if (image == NULL) 155 155 return -1; 156 156 157 - v = GPU_LoadShader(GPU_VERTEX_SHADER, "3d/untextured.vert"); 158 - f = GPU_LoadShader(GPU_FRAGMENT_SHADER, "3d/untextured.frag"); 157 + v = GPU_LoadShader(GPU_VERTEX_SHADER, "data/shaders/untextured.vert"); 158 + f = GPU_LoadShader(GPU_FRAGMENT_SHADER, "data/shaders/untextured.frag"); 159 159 p = GPU_LinkShaders(v, f); 160 160 161 161 glUseProgram(p);
+1 -1
demos/3d/untextured.frag demos/data/shaders/untextured.frag
··· 1 - #version 110 1 + #version 120 2 2 3 3 varying vec4 color; 4 4
+1 -1
demos/3d/untextured.vert demos/data/shaders/untextured.vert
··· 1 - #version 110 1 + #version 120 2 2 3 3 attribute vec3 gpu_Vertex; 4 4 attribute vec4 gpu_Color;
+58
demos/common/common.c
··· 94 94 printCurrentRenderer(); 95 95 return screen; 96 96 } 97 + 98 + 99 + // Loads a shader and prepends version/compatibility info before compiling it 100 + Uint32 load_shader(GPU_ShaderEnum shader_type, const char* filename) 101 + { 102 + SDL_RWops* rwops; 103 + Uint32 shader; 104 + char* source; 105 + int header_size, file_size; 106 + const char* header = ""; 107 + GPU_Renderer* renderer = GPU_GetCurrentRenderer(); 108 + 109 + // Open file 110 + rwops = SDL_RWFromFile(filename, "rb"); 111 + if(rwops == NULL) 112 + { 113 + GPU_PushErrorCode("load_shader", GPU_ERROR_FILE_NOT_FOUND, "Shader file \"%s\" not found", filename); 114 + return 0; 115 + } 116 + 117 + // Get file size 118 + file_size = SDL_RWseek(rwops, 0, SEEK_END); 119 + SDL_RWseek(rwops, 0, SEEK_SET); 120 + 121 + // Get size from header 122 + if(renderer->shader_language == GPU_LANGUAGE_GLSL) 123 + { 124 + if(renderer->shader_version >= 120) 125 + header = "#version 120\n"; 126 + else 127 + header = "#version 110\n"; // Maybe this is good enough? 128 + } 129 + else if(renderer->shader_language == GPU_LANGUAGE_GLSLES) 130 + header = "#version 100\nprecision mediump int;\nprecision mediump float;\n"; 131 + 132 + header_size = strlen(header); 133 + 134 + // Allocate source buffer 135 + source = (char*)malloc(sizeof(char)*(header_size + file_size + 1)); 136 + 137 + // Prepend header 138 + strcpy(source, header); 139 + 140 + // Read in source code 141 + SDL_RWread(rwops, source + strlen(source), 1, file_size); 142 + source[header_size + file_size] = '\0'; 143 + 144 + GPU_LogError("\n\nSOURCE AFTER: %s\n\n", source); 145 + 146 + // Compile the shader 147 + shader = GPU_CompileShader(shader_type, source); 148 + 149 + // Clean up 150 + free(source); 151 + SDL_RWclose(rwops); 152 + 153 + return shader; 154 + }
+1
demos/common/common.h
··· 6 6 void printRenderers(void); 7 7 void printCurrentRenderer(void); 8 8 GPU_Target* initialize_demo(int argc, char** argv, Uint16 w, Uint16 h); 9 + Uint32 load_shader(GPU_ShaderEnum shader_type, const char* filename); 9 10 10 11 #endif
+5 -5
tests/multitexture/main.c
··· 7 7 const char* vertex_shader_file; 8 8 const char* fragment_shader_file; 9 9 10 - vertex_shader_file = "multitexture/test.vert"; 11 - fragment_shader_file = "multitexture/test.frag"; 10 + vertex_shader_file = "data/shaders/multitexture.vert"; 11 + fragment_shader_file = "data/shaders/multitexture.frag"; 12 12 13 - *v = GPU_LoadShader(GPU_VERTEX_SHADER, vertex_shader_file); 13 + *v = load_shader(GPU_VERTEX_SHADER, vertex_shader_file); 14 14 15 15 if(!*v) 16 16 GPU_LogError("Failed to load vertex shader: %s\n", GPU_GetShaderMessage()); 17 17 18 - *f = GPU_LoadShader(GPU_FRAGMENT_SHADER, fragment_shader_file); 18 + *f = load_shader(GPU_FRAGMENT_SHADER, fragment_shader_file); 19 19 20 20 if(!*f) 21 21 GPU_LogError("Failed to load fragment shader: %s\n", GPU_GetShaderMessage()); ··· 30 30 } 31 31 32 32 { 33 - GPU_ShaderBlock block = GPU_LoadShaderBlock(*p, "gpu_Vertex", "gpu_TexCoord", "gpu_Color", "modelViewProjection"); 33 + GPU_ShaderBlock block = GPU_LoadShaderBlock(*p, "gpu_Vertex", "gpu_TexCoord", "gpu_Color", "gpu_ModelViewProjectionMatrix"); 34 34 GPU_ActivateShaderProgram(*p, &block); 35 35 36 36 return block;
-2
tests/multitexture/test.frag tests/data/shaders/multitexture.frag
··· 1 - #version 120 2 - 3 1 varying vec4 color; 4 2 varying vec2 texCoord; 5 3
+2 -4
tests/multitexture/test.vert tests/data/shaders/multitexture.vert
··· 1 - #version 120 2 - 3 1 attribute vec3 gpu_Vertex; 4 2 attribute vec2 gpu_TexCoord; 5 3 attribute vec4 gpu_Color; 6 - uniform mat4 modelViewProjection; 4 + uniform mat4 gpu_ModelViewProjectionMatrix; 7 5 8 6 varying vec4 color; 9 7 varying vec2 texCoord; ··· 12 10 { 13 11 color = gpu_Color; 14 12 texCoord = vec2(gpu_TexCoord); 15 - gl_Position = modelViewProjection * vec4(gpu_Vertex, 1.0); 13 + gl_Position = gpu_ModelViewProjectionMatrix * vec4(gpu_Vertex, 1.0); 16 14 }
+3 -17
tests/shader-attributes/main.c
··· 5 5 6 6 GPU_ShaderBlock load_shaders(Uint32* v, Uint32* f, Uint32* p) 7 7 { 8 - GPU_Renderer* renderer = GPU_GetCurrentRenderer(); 9 - const char* vertex_shader_file; 10 - const char* fragment_shader_file; 11 - if(renderer->shader_version < 130) 12 - { 13 - vertex_shader_file = "shader-attributes/test.vert"; 14 - fragment_shader_file = "shader-attributes/test.frag"; 15 - } 16 - else 17 - { 18 - vertex_shader_file = "shader-attributes/test3.vert"; 19 - fragment_shader_file = "shader-attributes/test3.frag"; 20 - } 21 - 22 - *v = GPU_LoadShader(GPU_VERTEX_SHADER, vertex_shader_file); 8 + *v = load_shader(GPU_VERTEX_SHADER, "data/shaders/shader-attributes.vert"); 23 9 24 10 if(!*v) 25 11 GPU_LogError("Failed to load vertex shader: %s\n", GPU_GetShaderMessage()); 26 12 27 - *f = GPU_LoadShader(GPU_FRAGMENT_SHADER, fragment_shader_file); 13 + *f = load_shader(GPU_FRAGMENT_SHADER, "data/shaders/shader-attributes.frag"); 28 14 29 15 if(!*f) 30 16 GPU_LogError("Failed to load fragment shader: %s\n", GPU_GetShaderMessage()); ··· 39 25 } 40 26 41 27 { 42 - GPU_ShaderBlock block = GPU_LoadShaderBlock(*p, "gpu_Vertex", "gpu_TexCoord", NULL, "modelViewProjection"); 28 + GPU_ShaderBlock block = GPU_LoadShaderBlock(*p, "gpu_Vertex", "gpu_TexCoord", NULL, "gpu_ModelViewProjectionMatrix"); 43 29 GPU_ActivateShaderProgram(*p, &block); 44 30 45 31 return block;
-2
tests/shader-attributes/test.frag tests/data/shaders/time_mod.frag
··· 1 - #version 120 2 - 3 1 varying vec4 color; 4 2 varying vec2 texCoord; 5 3
+2 -4
tests/shader-attributes/test.vert tests/data/shaders/shader-attributes.vert
··· 1 - #version 120 2 - 3 1 attribute vec3 gpu_Vertex; 4 2 attribute vec2 gpu_TexCoord; 5 3 attribute vec4 gpu_Color; 6 - uniform mat4 modelViewProjection; 4 + uniform mat4 gpu_ModelViewProjectionMatrix; 7 5 8 6 varying vec4 color; 9 7 varying vec2 texCoord; ··· 12 10 { 13 11 color = gpu_Color; 14 12 texCoord = vec2(gpu_TexCoord); 15 - gl_Position = modelViewProjection * vec4(gpu_Vertex, 1.0); 13 + gl_Position = gpu_ModelViewProjectionMatrix * vec4(gpu_Vertex, 1.0); 16 14 }
-19
tests/shader-attributes/test3.frag
··· 1 - #ifdef GL_ES 2 - #version 100 3 - precision mediump int; 4 - precision mediump float; 5 - #else 6 - #version 120 7 - #endif 8 - 9 - varying vec4 color; 10 - varying vec2 texCoord; 11 - 12 - uniform sampler2D tex; 13 - uniform float time; 14 - 15 - void main(void) 16 - { 17 - vec4 fcolor = vec4(0.5*(1 + vec3(sin(time), sin(time/5), sin(time/3))), color.a); 18 - gl_FragColor = texture2D(tex, texCoord) * fcolor; 19 - }
-22
tests/shader-attributes/test3.vert
··· 1 - #ifdef GL_ES 2 - #version 100 3 - precision mediump int; 4 - precision mediump float; 5 - #else 6 - #version 120 7 - #endif 8 - 9 - attribute vec3 gpu_Vertex; 10 - attribute vec2 gpu_TexCoord; 11 - attribute vec4 gpu_Color; 12 - uniform mat4 modelViewProjection; 13 - 14 - varying vec4 color; 15 - varying vec2 texCoord; 16 - 17 - void main(void) 18 - { 19 - color = gpu_Color; 20 - texCoord = vec2(gpu_TexCoord); 21 - gl_Position = modelViewProjection * vec4(gpu_Vertex, 1.0); 22 - }
-2
tests/shader/blue_sprites.vert tests/data/shaders/blue_sprites.vert
··· 1 - #version 120 2 - 3 1 varying vec4 color; 4 2 5 3 void main(void)
+3 -17
tests/shader/main.c
··· 5 5 6 6 GPU_ShaderBlock load_shaders(Uint32* v, Uint32* f, Uint32* p) 7 7 { 8 - GPU_Renderer* renderer = GPU_GetCurrentRenderer(); 9 - const char* vertex_shader_file; 10 - const char* fragment_shader_file; 11 - if(renderer->shader_version < 130) 12 - { 13 - vertex_shader_file = "shader/test.vert"; 14 - fragment_shader_file = "shader/test.frag"; 15 - } 16 - else 17 - { 18 - vertex_shader_file = "shader/test3.vert"; 19 - fragment_shader_file = "shader/test3.frag"; 20 - } 21 - 22 - *v = GPU_LoadShader(GPU_VERTEX_SHADER, vertex_shader_file); 8 + *v = load_shader(GPU_VERTEX_SHADER, "data/shaders/time_mod.vert"); 23 9 24 10 if(!*v) 25 11 GPU_LogError("Failed to load vertex shader: %s\n", GPU_GetShaderMessage()); 26 12 27 - *f = GPU_LoadShader(GPU_FRAGMENT_SHADER, fragment_shader_file); 13 + *f = load_shader(GPU_FRAGMENT_SHADER, "data/shaders/time_mod.frag"); 28 14 29 15 if(!*f) 30 16 GPU_LogError("Failed to load fragment shader: %s\n", GPU_GetShaderMessage()); ··· 39 25 } 40 26 41 27 { 42 - GPU_ShaderBlock block = GPU_LoadShaderBlock(*p, "gpu_Vertex", "gpu_TexCoord", "gpu_Color", "modelViewProjection"); 28 + GPU_ShaderBlock block = GPU_LoadShaderBlock(*p, "gpu_Vertex", "gpu_TexCoord", "gpu_Color", "gpu_ModelViewProjectionMatrix"); 43 29 GPU_ActivateShaderProgram(*p, &block); 44 30 45 31 return block;
-2
tests/shader/pass_color.frag tests/data/shaders/pass_color.frag
··· 1 - #version 120 2 - 3 1 varying vec4 color; 4 2 5 3 void main(void)
-2
tests/shader/test.frag tests/data/shaders/shader-attributes.frag
··· 1 - #version 120 2 - 3 1 varying vec4 color; 4 2 varying vec2 texCoord; 5 3
-2
tests/shader/test.vert tests/data/shaders/time_mod.vert
··· 1 - #version 120 2 - 3 1 attribute vec3 gpu_Vertex; 4 2 attribute vec2 gpu_TexCoord; 5 3 attribute vec4 gpu_Color;
-19
tests/shader/test3.frag
··· 1 - #ifdef GL_ES 2 - #version 100 3 - precision mediump int; 4 - precision mediump float; 5 - #else 6 - #version 120 7 - #endif 8 - 9 - varying vec4 color; 10 - varying vec2 texCoord; 11 - 12 - uniform sampler2D tex; 13 - uniform float time; 14 - 15 - void main(void) 16 - { 17 - vec4 fcolor = vec4(0.5*(1 + vec3(sin(time), sin(time/5), sin(time/3))), color.a); 18 - gl_FragColor = texture2D(tex, texCoord) * fcolor; 19 - }
-22
tests/shader/test3.vert
··· 1 - #ifdef GL_ES 2 - #version 100 3 - precision mediump int; 4 - precision mediump float; 5 - #else 6 - #version 120 7 - #endif 8 - 9 - attribute vec3 gpu_Vertex; 10 - attribute vec2 gpu_TexCoord; 11 - attribute vec4 gpu_Color; 12 - uniform mat4 modelViewProjection; 13 - 14 - varying vec4 color; 15 - varying vec2 texCoord; 16 - 17 - void main(void) 18 - { 19 - color = gpu_Color; 20 - texCoord = vec2(gpu_TexCoord); 21 - gl_Position = modelViewProjection * vec4(gpu_Vertex, 1.0); 22 - }
-2
tests/shader/texture_color_mod.frag tests/data/shaders/texture_color_mod.frag
··· 1 - #version 120 2 - 3 1 varying vec4 color; 4 2 varying vec2 texCoord; 5 3
-2
tests/shader/texture_color_mod.vert tests/data/shaders/texture_color_mod.vert
··· 1 - #version 120 2 - 3 1 varying vec4 color; 4 2 varying vec2 texCoord; 5 3