summaryrefslogtreecommitdiff
path: root/src/daw.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/daw.c')
-rw-r--r--src/daw.c176
1 files changed, 9 insertions, 167 deletions
diff --git a/src/daw.c b/src/daw.c
index f49e508..c6553ab 100644
--- a/src/daw.c
+++ b/src/daw.c
@@ -41,9 +41,6 @@
Instance* GLOBAL_PLATFORM = NULL;
-#define DEFAULT_CAMERA { .pos = {3, 0, 0}, .dir = {1, 1, 1}, }
-static Camera default_camera = DEFAULT_CAMERA;
-
input_callback_t* callbacks[128];
usize callbacks_len;
@@ -152,82 +149,10 @@ Instance* engine_init(const char* windowtitle, i32 windowWidth, i32 windowHeight
return p;
}
-// TODO: MOVE TO RENDERING
-static f32 default_quad[8] = {
- -1.0f, -1.0f,
- 1.0f, -1.0f,
- 1.0f, 1.0f,
- -1.0f, 1.0f,
-};
-
-static f32 default_quad_uv[8] = {
- 0.f, 0.f,
- 1.f, 0.f,
- 1.f, 1.f,
- 0.f, 1.f,
-};
-
-static u8 default_quad_ibo[6] = {
- 0, 1, 2,
- 2, 3, 0,
-};
-
-// TODO: CREATE DEFAULT SHADERBUFF
-#define COUNT(a) sizeof(a) / sizeof(a[0])
-static ShaderBuffer shaderbuf[3] = {
- SHADERBUFFER_NEW(f32, COUNT(default_quad), 2, default_quad, ShaderBuffer_AccessFrequency_static | ShaderBuffer_AccessType_draw | ShaderBuffer_Type_vertexPosition),
- SHADERBUFFER_NEW(f32, COUNT(default_quad_uv), 2, default_quad_uv, ShaderBuffer_AccessFrequency_static | ShaderBuffer_AccessType_draw),
- SHADERBUFFER_NEW(u8, COUNT(default_quad_ibo), 3, default_quad_ibo, ShaderBuffer_AccessFrequency_static | ShaderBuffer_AccessType_draw | ShaderBuffer_Type_vertexIndex),
-};
-#undef COUNT
-
-static const char* default_quad_shader_vertex_src =
-"#version 330 core\n"
-"\n"
-"layout(location = 0) in vec2 vertexPosition_modelspace;\n"
-"layout(location = 1) in vec2 vertexUV;\n"
-"\n"
-"out vec2 UV;\n"
-"\n"
-"void main() {\n"
-" gl_Position = vec4(vertexPosition_modelspace, 0, 1);\n"
-"\n"
-" UV = vertexUV;\n"
-"}";
-
-static const char* default_quad_shader_fragment_src =
-"#version 330 core\n"
-"\n"
-"// Ouput data\n"
-"in vec2 UV;\n"
-"out vec3 color;\n"
-"\n"
-"uniform sampler2D textureSampler;\n"
-"\n"
-"void main() {\n"
-" color = texture(textureSampler, UV).rgb;\n"
-"}";
-
-
-void framebuffer_size_callback_default(ivec3* dst,ivec2 src) {
- glm_ivec2_copy(src, *dst);
-}
-
-void camera_reset_callback_default(Camera* dst, void* state, ivec2 src) {
- r_reset_camera(dst, src);
-}
-
-
i32 engine_run(Instance* p, StateType initial_state, void* state_arg) {
- // TODO: MOVE TO INIT
- Shader default_quad_shaders[] = {
- compile_shader(default_quad_shader_vertex_src, Shader_Vertex),
- compile_shader(default_quad_shader_fragment_src, Shader_Fragment),
- (Shader){0},
- };
- default_quad_shaders[2] = compose_shader(default_quad_shaders, 2);
+ Shader default_quad_shader = init_default_shader();
RenderObject default_quad_renderobject;
if (p == NULL) {
@@ -245,52 +170,13 @@ i32 engine_run(Instance* p, StateType initial_state, void* state_arg) {
{
u64 state_init_time = get_time();
State_init(state, p->window, mem, state_arg);
- if (!w->render_targets) {
- // Create only 1 additional framebuffer, in addition to the default
- // one. This is used to render a texture that is represented as a quad
- // on the default framebuffer.
- ivec2 wsz;
- window_get_size(&wsz);
- u32 t[] = {
- BUFFERPARAMETER_SET_PARAMETER(BUFFERPARAMETER_SET_TYPE(0, BufferType_texture), BUFFERPARAMETER_FMT_RGB8),
- // The depth buffer could also be a texture like so:
- // BUFFERPARAMETER_SET_PARAMETER(
- // BUFFERPARAMETER_SET_TYPE(0, BufferType_texture),
- // BUFFERPARAMETER_FMT_DEPTH32
- // ),
- BUFFERPARAMETER_SET_PARAMETER(BUFFERPARAMETER_SET_TYPE(0, BufferType_render), BUFFERPARAMETER_FMT_DEPTH32F),
- };
- FramebufferParameters p[] = {
- {.num_textures = 1, .num_renderbuffers = 1, .dimensions = {wsz[0], wsz[1], 0}},
- };
- window_init_renderstack(w, 1, sizeof(t) / sizeof(t[0]), p, t);
-
- w->render_targets->framebuffer_size_callback[0] = &framebuffer_size_callback_default;
- w->render_targets->camera_reset_callback[0] = &camera_reset_callback_default;
- w->render_targets->cam[0] = &default_camera;
-
- window_reset_cameras(w, mem, w->render_targets);
- }
-
- u32 first_texture = 0;
-
- for (usize i = 0; i < w->render_targets->buffer_len; i++) {
- if (BUFFERPARAMETER_GET_TYPE(w->render_targets->buffer_parameters[i]) == BufferType_texture) {
- first_texture = w->render_targets->buffer[i];
- break;
- }
- }
-
- default_quad_renderobject = RenderObject_new(
- // Shader
- &default_quad_shaders[2],
- // Texture
- first_texture,
- // Vertices
- shaderbuf,
- sizeof(shaderbuf) / sizeof(ShaderBuffer)
- );
+ r_reset_pipeline(w);
+ // TODO: Both the shader & renderobject should only be created here if it is
+ // overwritten in Instance->Window.
+ // TODO: Add default quad & renderobject to Instance->Window. Should allow
+ // for customization.
+ default_quad_renderobject = init_default_renderobject(w, default_quad_shader);
INFO("Initializing state \"%s\" took %.1fns", StateTypeStr[state],
(get_time() - state_init_time));
@@ -346,53 +232,9 @@ i32 engine_run(Instance* p, StateType initial_state, void* state_arg) {
{
u64 state_init_time = get_time();
State_init(state, p->window, mem, retval);
- if (!w->render_targets) {
- // Create only 1 additional framebuffer, in addition to the default
- // one. This is used to render a texture that is represented as a quad
- // on the default framebuffer.
- ivec2 wsz;
- window_get_size(&wsz);
- u32 t[] = {
- BUFFERPARAMETER_SET_PARAMETER(BUFFERPARAMETER_SET_TYPE(0, BufferType_texture), BUFFERPARAMETER_FMT_RGB8),
-
- // The depth buffer could also be a texture like so:
- // BUFFERPARAMETER_SET_PARAMETER(
- // BUFFERPARAMETER_SET_TYPE(0, BufferType_texture),
- // BUFFERPARAMETER_FMT_DEPTH32
- // ),
- BUFFERPARAMETER_SET_PARAMETER(BUFFERPARAMETER_SET_TYPE(0, BufferType_render), BUFFERPARAMETER_FMT_DEPTH32F),
- };
- FramebufferParameters p[] = {
- {.num_textures = 1, .num_renderbuffers = 1, .dimensions = {wsz[0], wsz[1], 0}},
- };
- window_init_renderstack(w, 1, sizeof(t) / sizeof(t[0]), p, t);
-
- // TODO set if null ..?
- w->render_targets->framebuffer_size_callback[0] = &framebuffer_size_callback_default;
- w->render_targets->camera_reset_callback[0] = &camera_reset_callback_default;
- w->render_targets->cam[0] = &default_camera;
-
- window_reset_cameras(w, mem, w->render_targets);
- }
- u32 first_texture = 0;
-
- for (usize i = 0; i < w->render_targets->buffer_len; i++) {
- if (BUFFERPARAMETER_GET_TYPE(w->render_targets->buffer_parameters[i]) == BufferType_texture) {
- first_texture = w->render_targets->buffer[i];
- break;
- }
- }
-
- default_quad_renderobject = RenderObject_new(
- // Shader
- &default_quad_shaders[2],
- // Texture
- first_texture, /*TODO*/
- // Vertices
- shaderbuf,
- sizeof(shaderbuf) / sizeof(ShaderBuffer)
- );
+ r_reset_pipeline(w);
+ default_quad_renderobject = init_default_renderobject(w, default_quad_shader);
INFO("Initializing state \"%s\" took %.1fns", StateTypeStr[state],
(get_time() - state_init_time));