wip framebuffers
This commit is contained in:
+1
-3
@@ -4,8 +4,7 @@ uniform float iTime;
|
|||||||
uniform vec2 iResolution;
|
uniform vec2 iResolution;
|
||||||
uniform sampler2D frame0;
|
uniform sampler2D frame0;
|
||||||
in vec2 vUV;
|
in vec2 vUV;
|
||||||
out vec4 fragColor;
|
layout(location = 0) out vec4 fragColor;
|
||||||
layout(location = 0) out vec4 fragColor2;
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
vec2 uv0 = vUV.st;
|
vec2 uv0 = vUV.st;
|
||||||
@@ -14,5 +13,4 @@ void main() {
|
|||||||
vec3 color = vec3(vUV, sin(iTime * 0.5) * 0.5 + 0.5);
|
vec3 color = vec3(vUV, sin(iTime * 0.5) * 0.5 + 0.5);
|
||||||
color *= 1 - step(cos(iTime) * 0.1 + 0.5,length(uv1));
|
color *= 1 - step(cos(iTime) * 0.1 + 0.5,length(uv1));
|
||||||
fragColor = vec4(color, 1.0);
|
fragColor = vec4(color, 1.0);
|
||||||
fragColor2 = vec4(color, 1.0);
|
|
||||||
}
|
}
|
||||||
+11
-1
@@ -4,7 +4,7 @@
|
|||||||
#define CONSTANTS_H
|
#define CONSTANTS_H
|
||||||
|
|
||||||
static char *vertex_shader_text =
|
static char *vertex_shader_text =
|
||||||
"#version 330\n"
|
"#version 460\n"
|
||||||
"uniform mat4 mvp;\n"
|
"uniform mat4 mvp;\n"
|
||||||
"in vec2 vPos;\n"
|
"in vec2 vPos;\n"
|
||||||
"out vec2 vUV;\n"
|
"out vec2 vUV;\n"
|
||||||
@@ -14,6 +14,16 @@ static char *vertex_shader_text =
|
|||||||
" vUV = vPos;\n"
|
" vUV = vPos;\n"
|
||||||
"}\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}},
|
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}}, {{0.0f, 0.0f}},
|
||||||
{{1.0f, 1.0f}}, {{1.0f, 0.0f}}};
|
{{1.0f, 1.0f}}, {{1.0f, 0.0f}}};
|
||||||
|
|||||||
@@ -103,6 +103,11 @@ ShaderProgram init_program(File fragment_shader, Context context) {
|
|||||||
program.error |= !compile_shader(
|
program.error |= !compile_shader(
|
||||||
program.fragment_shader, fragment_shader.path, fragment_shader.content);
|
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) {
|
if (program.error) {
|
||||||
return program;
|
return program;
|
||||||
}
|
}
|
||||||
@@ -111,6 +116,7 @@ ShaderProgram init_program(File fragment_shader, Context context) {
|
|||||||
program.program = glCreateProgram();
|
program.program = glCreateProgram();
|
||||||
glAttachShader(program.program, program.vertex_shader);
|
glAttachShader(program.program, program.vertex_shader);
|
||||||
glAttachShader(program.program, program.fragment_shader);
|
glAttachShader(program.program, program.fragment_shader);
|
||||||
|
glAttachShader(program.program, program.output_fragment_shader);
|
||||||
glLinkProgram(program.program);
|
glLinkProgram(program.program);
|
||||||
|
|
||||||
// create uniforms pointers
|
// create uniforms pointers
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ typedef struct ShaderProgram {
|
|||||||
|
|
||||||
GLuint vertex_shader;
|
GLuint vertex_shader;
|
||||||
GLuint fragment_shader;
|
GLuint fragment_shader;
|
||||||
|
GLuint output_fragment_shader;
|
||||||
|
|
||||||
GLuint mvp_location;
|
GLuint mvp_location;
|
||||||
GLuint itime_location;
|
GLuint itime_location;
|
||||||
|
|||||||
Reference in New Issue
Block a user