From edc565c2b82e3c189aa88f48a408492b4ff60e49 Mon Sep 17 00:00:00 2001 From: Paul Duncan Date: Sat, 13 May 2017 22:10:36 -0400 Subject: switch from gles 3.2 to gl core 4.5, to real compute shader, and bump workgroup size to 128 --- main.c | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index cc4976d..04eb4ce 100644 --- a/main.c +++ b/main.c @@ -32,7 +32,7 @@ // use compute shader to update particles? // (if false, map the buffer and populate it on the cpu) -#define USE_COMPUTE_SHADER false +#define USE_COMPUTE_SHADER true // enable gl debug #define USE_GL_DEBUG false @@ -41,7 +41,7 @@ #define NUM_PARTICLES 1024 // size of compute shader workgroups -#define WORKGROUP_SIZE 1 +#define WORKGROUP_SIZE 128 typedef struct { const GLuint type; @@ -85,11 +85,10 @@ typedef struct { " mediump vec4 colors[" S(NUM_PARTICLES) "];\n" \ "};\n" -#if 0 // real compute shader static const char cs_src[] = - "#version 320 es\n" + "#version 450 core\n" #if USE_GL_DEBUG "#pragma debug(on)\n" #endif /* USE_GL_DEBUG */ @@ -101,20 +100,24 @@ cs_src[] = "void main() {\n" " mediump uint i = gl_GlobalInvocationID.x;\n" " positions[i] += 0.016 * velocities[i];\n" + "\n" + " if (positions[i].x > 1.1) {\n" + " positions[i].x -= 2.2;\n" + " } else if (positions[i].x < -1.1) {\n" + " positions[i].x += 2.2;\n" + " }\n" + "\n" + " if (positions[i].y > 1.1) {\n" + " positions[i].y -= 2.2;\n" + " } else if (positions[i].y < -1.1) {\n" + " positions[i].y += 2.2;\n" + " }\n" "}\n"; -#endif /* 0 */ - -// empty compute shader -static const char -cs_src[] = - "#version 320 es\n" - "layout(local_size_x = " S(WORKGROUP_SIZE) ") in;\n" - "void main() {}\n"; // vertex shader static const char vs_src[] = - "#version 320 es\n" + "#version 450 core\n" "\n" PARTICLE_BUFFER "\n" @@ -129,7 +132,7 @@ vs_src[] = // fragment shader static const char fs_src[] = - "#version 320 es\n" + "#version 450 core\n" "\n" PARTICLE_BUFFER "\n" @@ -451,20 +454,20 @@ ctx_init(context_t * const ctx) { // set gl context majory version hint if (SDL_GL_SetAttribute( SDL_GL_CONTEXT_PROFILE_MASK, - SDL_GL_CONTEXT_PROFILE_ES + SDL_GL_CONTEXT_PROFILE_CORE ) < 0) { LOG_C("SDL_GL_SetAttribute() failed: %s", SDL_GetError()); exit(EXIT_FAILURE); } // set gl context majory version hint - if (SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3) < 0) { + if (SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4) < 0) { LOG_C("SDL_GL_SetAttribute() failed: %s", SDL_GetError()); exit(EXIT_FAILURE); } // set gl context minor version hint - if (SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2) < 0) { + if (SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 5) < 0) { LOG_C("SDL_GL_SetAttribute() failed: %s", SDL_GetError()); exit(EXIT_FAILURE); } -- cgit v1.2.3