diff --git a/shaders/frag.glsl b/shaders/frag.glsl index 2e0adeb..562f429 100644 --- a/shaders/frag.glsl +++ b/shaders/frag.glsl @@ -4,8 +4,7 @@ uniform float iTime; uniform vec2 iResolution; uniform sampler2D frame0; in vec2 vUV; -out vec4 fragColor; -layout(location = 0) out vec4 fragColor2; +layout(location = 0) out vec4 fragColor; void main() { vec2 uv0 = vUV.st; @@ -14,5 +13,4 @@ void main() { vec3 color = vec3(vUV, sin(iTime * 0.5) * 0.5 + 0.5); color *= 1 - step(cos(iTime) * 0.1 + 0.5,length(uv1)); fragColor = vec4(color, 1.0); - fragColor2 = vec4(color, 1.0); } \ No newline at end of file diff --git a/src/constants.h b/src/constants.h index 05efc93..0e2d851 100644 --- a/src/constants.h +++ b/src/constants.h @@ -4,7 +4,7 @@ #define CONSTANTS_H static char *vertex_shader_text = - "#version 330\n" + "#version 460\n" "uniform mat4 mvp;\n" "in vec2 vPos;\n" "out vec2 vUV;\n" @@ -14,6 +14,16 @@ static char *vertex_shader_text = " vUV = vPos;\n" "}\n"; +static char *output_fragment_shader_text = + "#version 460\n" + "in vec2 vUV;\n" + "out vec4 fragColor;\n" + "uniform sampler2D frame0\n" + "void main()\n" + "{\n" + " fragColor = vec4(texture(frame0, vUV).xyz, 1.0);\n" + "}\n"; + static const Vertex vertices[6] = {{{0.0f, 0.0f}}, {{0.0f, 1.0f}}, {{1.0f, 1.0f}}, {{0.0f, 0.0f}}, {{1.0f, 1.0f}}, {{1.0f, 0.0f}}}; diff --git a/src/shaders.c b/src/shaders.c index 0f9c035..8ec7adb 100644 --- a/src/shaders.c +++ b/src/shaders.c @@ -103,6 +103,11 @@ ShaderProgram init_program(File fragment_shader, Context context) { program.error |= !compile_shader( program.fragment_shader, fragment_shader.path, fragment_shader.content); + program.output_fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); + program.error |= + !compile_shader(program.output_fragment_shader, + "internal fragment shader", output_fragment_shader_text); + if (program.error) { return program; } @@ -111,6 +116,7 @@ ShaderProgram init_program(File fragment_shader, Context context) { program.program = glCreateProgram(); glAttachShader(program.program, program.vertex_shader); glAttachShader(program.program, program.fragment_shader); + glAttachShader(program.program, program.output_fragment_shader); glLinkProgram(program.program); // create uniforms pointers diff --git a/src/types.h b/src/types.h index d0a3920..2590836 100644 --- a/src/types.h +++ b/src/types.h @@ -34,6 +34,7 @@ typedef struct ShaderProgram { GLuint vertex_shader; GLuint fragment_shader; + GLuint output_fragment_shader; GLuint mvp_location; GLuint itime_location;