first commit

This commit is contained in:
2024-08-24 00:47:58 -04:00
commit f6ef842a28
400 changed files with 43479 additions and 0 deletions

View File

@ -0,0 +1,31 @@
#pragma once
#include "../../engine/renderer.h"
#include "../../engine/texture.h"
typedef enum Flip
{
FLIP_NONE,
FLIP_HORIZONTAL,
FLIP_VERTICAL,
FLIP_HORIZONTAL_VERTICAL
} Flip;
typedef enum Origin
{
ORIGIN_CENTER,
ORIGIN_TOP_LEFT,
ORIGIN_TOP,
ORIGIN_TOP_RIGHT,
ORIGIN_RIGHT,
ORIGIN_BOTTOM_RIGHT,
ORIGIN_BOTTOM,
ORIGIN_BOTTOM_LEFT,
ORIGIN_LEFT,
} Origin;
typedef struct Postprocessing
{
vec4 color;
vec4 colorCover;
} Postprocessing;

44
src/game/render/buffer.c Normal file
View File

@ -0,0 +1,44 @@
#include "buffer.h"
void
buffer_draw(Renderer* renderer, Shader* shader, RendererBuffer buffer, Postprocessing* postprocessing)
{
mat4 model;
mat4 projection;
mat4 view;
vec2 size;
vec3 position;
Texture* texture;
glm_vec2_zero(size);
glm_vec3_zero(position);
glm_mat4_identity(model);
size[0] = renderer->bufferSizes[buffer][0];
size[1] = renderer->bufferSizes[buffer][1];
position[2] *= BUFFER_Z_INCREMENT;
glm_translate(model, position);
camera_projection_get(&renderer->camera[buffer], projection);
camera_view_get(&renderer->camera[buffer], view);
glDisable(GL_DEPTH_TEST);
texture_quad_draw
(
&renderer->fboTextures[buffer],
renderer,
shader,
(f32*)TEXTURE_QUAD_UV_MIN_DEFAULT,
(f32*)TEXTURE_QUAD_UV_MAX_DEFAULT,
model,
view,
projection,
size,
postprocessing->color,
postprocessing->colorCover,
FLIP_HORIZONTAL_VERTICAL
);
}

8
src/game/render/buffer.h Normal file
View File

@ -0,0 +1,8 @@
#pragma once
#include "postprocessing.h"
#include "texture_quad.h"
#define BUFFER_Z_INCREMENT 0.0f
void buffer_draw(Renderer* renderer, Shader* shader, RendererBuffer buffer, Postprocessing* postprocessing);

View File

@ -0,0 +1,8 @@
#include "postprocessing.h"
void
postprocessing_init(Postprocessing* postprocessing, vec4 color, vec4 colorCover)
{
glm_vec4_copy(color, postprocessing->color);
glm_vec4_copy(colorCover, postprocessing->colorCover);
}

View File

@ -0,0 +1,5 @@
#pragma once
#include "RENDER_COMMON.h"
void postprocessing_init(Postprocessing* postprocessing, vec4 color, vec4 colorCover);

View File

@ -0,0 +1,97 @@
#include "texture_quad.h"
void
texture_quad_draw
(
Texture* texture,
Renderer* renderer,
Shader* shader,
vec2 uvMin,
vec2 uvMax,
mat4 model,
mat4 view,
mat4 projection,
vec2 size,
vec4 color,
vec4 colorCover,
Flip flip
)
{
f32 vertices[4][5];
u32 indices[2][3] = {{1, 2, 3}, {0, 1, 3}};
f32 verticiesFlipNone[4][5] =
{
{0.0f, 0.0f, 0.0f, uvMin[0], uvMin[1]},
{0.0f, size[1], 0.0f, uvMin[0], uvMax[1]},
{size[0], size[1], 0.0f, uvMax[0], uvMax[1]},
{size[0], 0.0f, 0.0f, uvMax[0], uvMin[1]}
};
f32 verticiesFlipHorizontal[4][5] =
{
{size[0], 0.0f, 0.0f, uvMin[0], uvMin[1]},
{size[0], size[1], 0.0f, uvMin[0], uvMax[1]},
{0.0f, size[1], 0.0f, uvMax[0], uvMax[1]},
{0.0f, 0.0f, 0.0f, uvMax[0], uvMin[1]}
};
f32 verticiesFlipVertical[4][5] =
{
{size[0], size[1], 0.0f, uvMin[0], uvMin[1]},
{size[0], 0.0f, 0.0f, uvMin[0], uvMax[1]},
{0.0f, 0.0f, 0.0f, uvMax[0], uvMax[1]},
{0.0f, size[1], 0.0f, uvMax[0], uvMin[1]}
};
f32 verticiesFlipHorizontalVertical[4][5] =
{
{0.0f, size[1], 0.0f, uvMin[0], uvMin[1]},
{0.0f, 0.0f, 0.0f, uvMin[0], uvMax[1]},
{size[0], 0.0f, 0.0f, uvMax[0], uvMax[1]},
{size[0], size[1], 0.0f, uvMax[0], uvMin[1]}
};
switch (flip)
{
case FLIP_HORIZONTAL:
memcpy(vertices, verticiesFlipHorizontal, sizeof(vertices));
break;
case FLIP_VERTICAL:
memcpy(vertices, verticiesFlipVertical, sizeof(vertices));
break;
case FLIP_HORIZONTAL_VERTICAL:
memcpy(vertices, verticiesFlipHorizontalVertical, sizeof(vertices));
break;
case FLIP_NONE:
default:
memcpy(vertices, verticiesFlipNone, sizeof(vertices));
break;
}
vao_bind(&renderer->vao);
vbo_bind(&renderer->vbo);
vbo_buffer(&renderer->vbo, sizeof(vertices), vertices);
vbo_bind(&renderer->ebo);
vbo_buffer(&renderer->ebo, sizeof(indices), indices);
vertex_attribute_set(0, 3, GL_FLOAT, 5 * sizeof(f32), 0);
vertex_attribute_set(1, 2, GL_FLOAT, 5 * sizeof(f32), 3 * sizeof(f32));
renderer_shader_use(renderer, shader);
shader_uniform_mat4_set(shader, TEXTURE_QUAD_UNIFORM_PROJECTION, projection);
shader_uniform_mat4_set(shader, TEXTURE_QUAD_UNIFORM_VIEW, view);
shader_uniform_mat4_set(shader, TEXTURE_QUAD_UNIFORM_MODEL, model);
shader_uniform_vec2_set(shader, TEXTURE_QUAD_UNIFORM_SIZE, size);
shader_uniform_vec4_set(shader, TEXTURE_QUAD_UNIFORM_COLOR, color);
shader_uniform_vec4_set(shader, TEXTURE_QUAD_UNIFORM_COLOR_COVER, colorCover);
shader_uniform_texture_set(shader, TEXTURE_QUAD_UNIFORM_TEXTURE, texture, 0);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
vao_unbind();
}

View File

@ -0,0 +1,35 @@
#pragma once
#include "RENDER_COMMON.h"
#define TEXTURE_QUAD_UNIFORM_COLOR "u_color"
#define TEXTURE_QUAD_UNIFORM_COLOR_COVER "u_colorCover"
#define TEXTURE_QUAD_UNIFORM_TRANSFORM "u_transform"
#define TEXTURE_QUAD_UNIFORM_MODEL "u_model"
#define TEXTURE_QUAD_UNIFORM_VIEW "u_view"
#define TEXTURE_QUAD_UNIFORM_PROJECTION "u_projection"
#define TEXTURE_QUAD_UNIFORM_SIZE "u_size"
#define TEXTURE_QUAD_UNIFORM_TEXTURE "u_texture"
void texture_quad_draw
(
Texture* texture,
Renderer* renderer,
Shader* shader,
vec2 uvMin,
vec2 uvMax,
mat4 model,
mat4 view,
mat4 projection,
vec2 size,
vec4 color,
vec4 colorCover,
Flip flip
);
#define TEXTURE_QUAD_COLOR_DEFAULT (f32*)OPAQUE
static const vec2 TEXTURE_QUAD_UV_MIN_DEFAULT = {0.0f, 0.0f};
static const vec2 TEXTURE_QUAD_UV_MAX_DEFAULT = {1.0f, 1.0f};
static const Flip TEXTURE_QUAD_FLIP_DEFAULT = FLIP_NONE;
static const Origin TEXTURE_QUAD_ORIGIN_DEFAULT = ORIGIN_TOP_LEFT;