From ab6761b7339587ec7f83f8d67e935b24b42ba408 Mon Sep 17 00:00:00 2001 From: jacob Date: Mon, 20 Jan 2025 14:26:12 -0600 Subject: [PATCH] formatting --- src/config.h | 2 +- src/game.c | 2 +- src/renderer.h | 4 +-- src/renderer_d3d11.c | 21 +++++-------- src/sprite.c | 8 ++--- src/user.c | 70 +++++++++++++++++++++----------------------- 6 files changed, 49 insertions(+), 58 deletions(-) diff --git a/src/config.h b/src/config.h index e9cd9c4d..e9118300 100644 --- a/src/config.h +++ b/src/config.h @@ -27,7 +27,7 @@ #define DEFAULT_CAMERA_WIDTH (7.0) #define DEFAULT_CAMERA_HEIGHT (DEFAULT_CAMERA_WIDTH / (16.0 / 9.0)) -#define PIXELS_PER_UNIT 256.0 +#define IMAGE_PIXELS_PER_UNIT 256.0 #define GAME_FPS 50.0 #define GAME_TIMESCALE 1 diff --git a/src/game.c b/src/game.c index 8727dc4f..65890a32 100644 --- a/src/game.c +++ b/src/game.c @@ -623,7 +623,7 @@ INTERNAL void game_update(struct game_cmd_array game_cmds) /* Update sprite local xform */ { struct sprite_sheet_slice slice = sprite_sheet_get_slice(sheet, STR("pivot"), ent->animation_frame); - struct v2 sprite_size = v2_div(sheet->frame_size, (f32)PIXELS_PER_UNIT); + struct v2 sprite_size = v2_div(sheet->frame_size, (f32)IMAGE_PIXELS_PER_UNIT); struct v2 dir = v2_mul_v2(sprite_size, slice.dir); f32 rot = v2_angle(dir) + PI / 2; diff --git a/src/renderer.h b/src/renderer.h index 852cbebd..5705e948 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -85,9 +85,7 @@ struct v2i32 renderer_texture_get_size(struct renderer_texture texture); * ========================== */ /* Returns a texture linking to the internal backbuffer. Lifetime is managed by renderer. */ -struct renderer_texture renderer_get_backbuffer_texture(void); - -void renderer_backbuffer_resize(struct v2i32 size); +struct renderer_texture renderer_backbuffer_recreate(struct v2i32 size); void renderer_backbuffer_present(i32 vsync); diff --git a/src/renderer_d3d11.c b/src/renderer_d3d11.c index d0ca1eee..304e082d 100644 --- a/src/renderer_d3d11.c +++ b/src/renderer_d3d11.c @@ -518,11 +518,6 @@ struct renderer_startup_receipt renderer_startup(struct sys_window *window) shader_init(&G.shaders[i], i); } - /* Set backbuffer texture */ - MEMZERO_STRUCT(&G.backbuffer_texture); - IDXGISwapChain_GetBuffer(G.swapchain, 0, &IID_ID3D11Texture2D, (LPVOID *)&G.backbuffer_texture.texture); - G.backbuffer_texture.is_backbuffer = true; - return (struct renderer_startup_receipt) { 0 }; } @@ -824,19 +819,19 @@ struct v2i32 renderer_texture_get_size(struct renderer_texture texture) * Backbuffer * ========================== */ -struct renderer_texture renderer_get_backbuffer_texture(void) +struct renderer_texture renderer_backbuffer_recreate(struct v2i32 size) { struct renderer_texture res = ZI; - res.handle = (u64)&G.backbuffer_texture; - return res; -} -void renderer_backbuffer_resize(struct v2i32 size) -{ - __prof; - ID3D11Texture2D_Release(G.backbuffer_texture.texture); + /* Resize */ + if (G.backbuffer_texture.texture != 0) { + ID3D11Texture2D_Release(G.backbuffer_texture.texture); + } IDXGISwapChain_ResizeBuffers(G.swapchain, 0, size.x, size.y, DXGI_FORMAT_UNKNOWN, 0); IDXGISwapChain_GetBuffer(G.swapchain, 0, &IID_ID3D11Texture2D, (LPVOID *)&G.backbuffer_texture.texture); + + res.handle = (u64)&G.backbuffer_texture; + return res; } void renderer_backbuffer_present(i32 vsync) diff --git a/src/sprite.c b/src/sprite.c index ff116105..22d590ef 100644 --- a/src/sprite.c +++ b/src/sprite.c @@ -235,13 +235,13 @@ struct sprite_startup_receipt sprite_startup(struct renderer_startup_receipt *re /* Init loading sheet */ G.loading_sheet = arena_push_zero(&G.perm_arena, struct sprite_sheet); - G.loading_sheet->image_size = V2(PIXELS_PER_UNIT, PIXELS_PER_UNIT); - G.loading_sheet->frame_size = V2(PIXELS_PER_UNIT, PIXELS_PER_UNIT); + G.loading_sheet->image_size = V2(IMAGE_PIXELS_PER_UNIT, IMAGE_PIXELS_PER_UNIT); + G.loading_sheet->frame_size = V2(IMAGE_PIXELS_PER_UNIT, IMAGE_PIXELS_PER_UNIT); /* Init nil sheet */ G.nil_sheet = arena_push_zero(&G.perm_arena, struct sprite_sheet); - G.nil_sheet->image_size = V2(PIXELS_PER_UNIT, PIXELS_PER_UNIT); - G.nil_sheet->frame_size = V2(PIXELS_PER_UNIT, PIXELS_PER_UNIT); + G.nil_sheet->image_size = V2(IMAGE_PIXELS_PER_UNIT, IMAGE_PIXELS_PER_UNIT); + G.nil_sheet->frame_size = V2(IMAGE_PIXELS_PER_UNIT, IMAGE_PIXELS_PER_UNIT); G.nil_sheet->loaded = true; } arena_set_readonly(&G.perm_arena); diff --git a/src/user.c b/src/user.c index 37d5b59e..b1ba8afe 100644 --- a/src/user.c +++ b/src/user.c @@ -152,7 +152,7 @@ struct user_startup_receipt user_startup(struct work_startup_receipt *work_sr, G.sys_events_arena = arena_alloc(GIGABYTE(64)); world_alloc(&G.world); - G.world_to_ui_xf = XFORM_TRS(.t = V2(0, 0), .r = 0, .s = V2(PIXELS_PER_UNIT, PIXELS_PER_UNIT)); + G.world_to_ui_xf = XFORM_IDENT; G.world_cmd_buffer = renderer_cmd_buffer_alloc(); G.ui_cmd_buffer = renderer_cmd_buffer_alloc(); G.final_cmd_buffer = renderer_cmd_buffer_alloc(); @@ -802,26 +802,29 @@ INTERNAL void user_update(void) if (G.debug_camera) { G.world_to_ui_xf = xform_basis_with_rotation_world(G.world_to_ui_xf, 0); + struct v2 world_cursor = xform_invert_mul_v2(G.world_to_ui_xf, G.ui_cursor); + /* Pan view */ if (G.bind_states[USER_BIND_KIND_PAN].is_held) { if (!G.debug_camera_panning) { - G.debug_camera_pan_start = xform_invert_mul_v2(G.world_to_ui_xf, G.ui_cursor); + G.debug_camera_pan_start = world_cursor; + G.debug_camera_panning = true; } - G.debug_camera_panning = true; - struct v2 offset = v2_sub(G.debug_camera_pan_start, xform_invert_mul_v2(G.world_to_ui_xf, G.ui_cursor)); - G.world_to_ui_xf = xform_translated(G.world_to_ui_xf, v2_neg(offset)); - G.debug_camera_pan_start = xform_invert_mul_v2(G.world_to_ui_xf, G.ui_cursor); + struct v2 offset = v2_neg(v2_sub(G.debug_camera_pan_start, world_cursor)); + G.world_to_ui_xf = xform_translated(G.world_to_ui_xf, offset); + world_cursor = xform_invert_mul_v2(G.world_to_ui_xf, G.ui_cursor); + G.debug_camera_pan_start = world_cursor; } else { G.debug_camera_panning = false; } + /* Zoom view */ i32 input_zooms = G.bind_states[USER_BIND_KIND_ZOOM_IN].num_presses - G.bind_states[USER_BIND_KIND_ZOOM_OUT].num_presses; if (input_zooms != 0) { /* Zoom to cursor */ f32 zoom_rate = 2; f32 zoom = math_pow(zoom_rate, input_zooms); - struct v2 world_cursor = xform_invert_mul_v2(G.world_to_ui_xf, G.ui_cursor); G.world_to_ui_xf = xform_translated(G.world_to_ui_xf, world_cursor); G.world_to_ui_xf = xform_scaled(G.world_to_ui_xf, V2(zoom, zoom)); G.world_to_ui_xf = xform_translated(G.world_to_ui_xf, v2_neg(world_cursor)); @@ -841,14 +844,9 @@ INTERNAL void user_update(void) size = v2_div_v2(size, camera_size); } } - f32 scale = min_f32(size.x, size.y); - - struct trs trs = TRS( - .t = v2_sub(G.ui_center, center), - .r = rot, - .s = V2(scale, scale) - ); + f32 scale_ui = min_f32(size.x, size.y); + struct trs trs = TRS(.t = v2_sub(G.ui_center, center), .r = rot, .s = V2(scale_ui, scale_ui)); struct v2 pivot = center; G.world_to_ui_xf = XFORM_IDENT; G.world_to_ui_xf = xform_translated(G.world_to_ui_xf, pivot); @@ -1598,39 +1596,39 @@ INTERNAL void user_update(void) { __profscope(render); - struct rect target_viewport = RECT_FROM_V2(V2(0, 0), G.ui_size); + struct rect ui_viewport = RECT_FROM_V2(V2(0, 0), G.ui_size); struct rect backbuffer_viewport = RECT_FROM_V2(V2(0, 0), G.screen_size); /* Allocate rt textures */ - struct v2i32 ui_rt_resolution = v2_round_to_int(V2(target_viewport.width + target_viewport.x, target_viewport.height + target_viewport.y)); - struct v2i32 world_rt_resolution = ui_rt_resolution; - struct v2i32 backbuffer_rt_resolution = v2_round_to_int(G.screen_size); + struct v2i32 ui_resolution = v2_round_to_int(ui_viewport.size); + struct v2i32 backbuffer_resolution = v2_round_to_int(backbuffer_viewport.size); + struct v2i32 world_resolution = ui_resolution; + { - /* World rt */ - if (!G.world_texture.handle || !v2i32_eq(renderer_texture_get_size(G.world_texture), world_rt_resolution)) { + /* World texture */ + if (!G.world_texture.handle || !v2i32_eq(renderer_texture_get_size(G.world_texture), world_resolution)) { if (G.world_texture.handle) { renderer_texture_release(G.world_texture); } - G.world_texture = renderer_texture_alloc(RENDERER_TEXTURE_FORMAT_R8G8B8A8_UNORM, RENDERER_TEXTURE_FLAG_TARGET, world_rt_resolution, NULL); + G.world_texture = renderer_texture_alloc(RENDERER_TEXTURE_FORMAT_R8G8B8A8_UNORM, RENDERER_TEXTURE_FLAG_TARGET, world_resolution, NULL); } - /* Ui rt */ - if (!G.ui_texture.handle || !v2i32_eq(renderer_texture_get_size(G.ui_texture), ui_rt_resolution)) { + /* Ui texture */ + if (!G.ui_texture.handle || !v2i32_eq(renderer_texture_get_size(G.ui_texture), ui_resolution)) { if (G.ui_texture.handle) { renderer_texture_release(G.ui_texture); } - G.ui_texture = renderer_texture_alloc(RENDERER_TEXTURE_FORMAT_R8G8B8A8_UNORM, RENDERER_TEXTURE_FLAG_TARGET, ui_rt_resolution, NULL); + G.ui_texture = renderer_texture_alloc(RENDERER_TEXTURE_FORMAT_R8G8B8A8_UNORM, RENDERER_TEXTURE_FLAG_TARGET, ui_resolution, NULL); } - /* Final rt */ - if (!G.final_texture.handle || !v2i32_eq(renderer_texture_get_size(G.final_texture), ui_rt_resolution)) { + /* Final texture */ + if (!G.final_texture.handle || !v2i32_eq(renderer_texture_get_size(G.final_texture), ui_resolution)) { if (G.final_texture.handle) { renderer_texture_release(G.final_texture); } - G.final_texture = renderer_texture_alloc(RENDERER_TEXTURE_FORMAT_R8G8B8A8_UNORM, RENDERER_TEXTURE_FLAG_TARGET, ui_rt_resolution, NULL); + G.final_texture = renderer_texture_alloc(RENDERER_TEXTURE_FORMAT_R8G8B8A8_UNORM, RENDERER_TEXTURE_FLAG_TARGET, ui_resolution, NULL); } - /* Backbuffer rt */ - if (!G.backbuffer_texture.handle || !v2i32_eq(renderer_texture_get_size(G.backbuffer_texture), backbuffer_rt_resolution)) { - renderer_backbuffer_resize(backbuffer_rt_resolution); - G.backbuffer_texture = renderer_get_backbuffer_texture(); + /* Backbuffer texture */ + if (!G.backbuffer_texture.handle || !v2i32_eq(renderer_texture_get_size(G.backbuffer_texture), backbuffer_resolution)) { + G.backbuffer_texture = renderer_backbuffer_recreate(backbuffer_resolution);; } } @@ -1638,14 +1636,14 @@ INTERNAL void user_update(void) /* Draw world texture to final */ { struct draw_texture_params params = DRAW_TEXTURE_PARAMS(.texture = G.world_texture); - struct quad quad = quad_from_rect(RECT_FROM_V2(V2(0, 0), V2_FROM_V2I32(ui_rt_resolution))); + struct quad quad = quad_from_rect(RECT_FROM_V2(V2(0, 0), V2_FROM_V2I32(ui_resolution))); draw_quad_texture(G.final_cmd_buffer, params, quad); } /* Draw ui texture to final */ { struct draw_texture_params params = DRAW_TEXTURE_PARAMS(.texture = G.ui_texture); - struct quad quad = quad_from_rect(RECT_FROM_V2(V2(0, 0), V2_FROM_V2I32(ui_rt_resolution))); + struct quad quad = quad_from_rect(RECT_FROM_V2(V2(0, 0), V2_FROM_V2I32(ui_resolution))); draw_quad_texture(G.final_cmd_buffer, params, quad); } @@ -1672,13 +1670,13 @@ INTERNAL void user_update(void) renderer_texture_clear(G.backbuffer_texture, RGBA_32_F(0, 0, 0, 1)); /* Render to world texture */ - renderer_texture_render(G.world_texture, G.world_cmd_buffer, G.world_to_ui_xf, target_viewport, sprite_frame_scope); + renderer_texture_render(G.world_texture, G.world_cmd_buffer, G.world_to_ui_xf, ui_viewport, sprite_frame_scope); /* Render to UI texture */ - renderer_texture_render(G.ui_texture, G.ui_cmd_buffer, XFORM_IDENT, target_viewport, sprite_frame_scope); + renderer_texture_render(G.ui_texture, G.ui_cmd_buffer, XFORM_IDENT, ui_viewport, sprite_frame_scope); /* Render to final texture */ - renderer_texture_render(G.final_texture, G.final_cmd_buffer, XFORM_IDENT, target_viewport, sprite_frame_scope); + renderer_texture_render(G.final_texture, G.final_cmd_buffer, XFORM_IDENT, ui_viewport, sprite_frame_scope); /* Render to backbuffer */ renderer_texture_render(G.backbuffer_texture, G.backbuffer_cmd_buffer, XFORM_IDENT, backbuffer_viewport, sprite_frame_scope);