Commit Graph

53 Commits

Author SHA1 Message Date
8d4128cbc5 Add temporary color blend attachment to any pipelines
Temorarily added a color blend attachment to all pipelines created. This
is because, for now atleast, all pipelines are created using the
swapchain render pass, meaning they need atleast one color blend
attachment.
2025-04-30 17:36:23 +10:00
22f9878d38 Add RenderPass creation to RenderDriver::create_swapchain() 2025-04-30 17:21:46 +10:00
771363bbfe Fix Window CLOSED event when using more than one window
Fixed an issue where if there were more than one window, when they were
closed, the CLOSED event would trigger but the window count did not
decrease. This happened because after the window was destroyed the
DestroyNotify event was triggered, which when looked up in the m_windows
map, reinserted itself with default initialization.
2025-04-30 02:52:29 +10:00
e710b80f36 Move ShaderStage and name into Shader struct
These fields will eventually be determined automatically but for now it
makes more sense to pass them as arguements to RenderDriver::create_shader.
2025-04-23 00:25:15 +10:00
74eba7266e Add VertexAttribute and VertexBinding to GraphicsPipelineParams 2025-04-23 00:08:35 +10:00
4bcabdebd1 Add RenderDriver::create_render_pass() stub 2025-04-22 19:00:36 +10:00
8d398b9c00 Started implementing Pipeline system for RenderDriver 2025-04-22 13:04:14 +10:00
c7249eeb62 Add create/destroy_shader functions to RenderDriver 2025-04-18 22:27:15 +10:00
47a07ea6a8 Add create/resize/destroy_swapchain functions to RenderDriver 2025-04-18 20:43:17 +10:00
b23d2d9c3c Add Vec2, Vec3 and Vec4 structs (incomplete) 2025-04-17 02:07:40 +10:00
1f43f629e2 Add pragma.h header for various long pragma definitions
e.g. NOVA_BEGIN/END_ALLOW_ANONYMOUS_TYPES
2025-04-17 02:00:33 +10:00
4c6712e2fe Redefine ID types to be actual pointers
Redefined various ID types to be aliases of pointers instead of casting
a uintptr_t to the needed pointer.

e.g. SurfaceID = Surface*
2025-04-16 23:46:00 +10:00
b003eca687 Rename WindowAPI::WIN32 to WindowAPI::WINDOWS
Renamed to avoid conflict with WIN32 macro when compiling on Windows.
2025-04-13 10:06:23 +10:00
859547570b Rename local parameter variables to use p_ prefix 2025-04-13 10:04:53 +10:00
8efa200e9e Add _check_device_capabilities stub function 2025-04-12 20:39:16 +10:00
930bba636e Check surface support when choosing device 2025-04-12 20:27:30 +10:00
6cbf8df17a Add get_api() and get_api_name() to WindowDriver 2025-04-12 10:32:30 +10:00
1849593dfc Detect window resize events and update editor main 2025-04-12 10:11:48 +10:00
6e1393ce64 Add basic surface handling to RenderDriver and WindowDriver
This will likely require significant rework but it will do for now. A
considerations worth thinking about:

- What happends when the WindowDriver destroys a window, what happens to
  the corresponding surface?
2025-04-10 17:53:48 +10:00
536a1e8773 Misc fixes 2025-04-08 22:10:07 +10:00
6055ae1ebc Add WindowDriver::beep function 2025-04-08 18:55:27 +10:00
9ab1b306b3 Rename RenderDriver::create_device to RenderDriver::select_device 2025-04-08 18:43:06 +10:00
608af1b866 Moved RenderDriver/WindorDriver init code to static create functions 2025-04-08 18:24:33 +10:00
286dd0fb0e Add basic Window creation to X11WindowDriver 2025-04-05 07:07:54 +10:00
5e7c94ba8f Rename SystemDriver to WindowDriver and removed LinuxSystemDriver
Hopefully the last time I change my mind on what I want these to be
called. Reason behind this change is to minimize scope of a single
module. The WindowDriver should really only handle stuff related to
windows. If we need OS level functionality (e.g. get_os_name), that
should be the responsibility of the OS driver (or whatever that ends
being called). Remember, composition over inheritance.
2025-04-03 04:47:22 +10:00
595f8a26de Add get_surface_extension to WaylandSystemDriver 2025-03-31 22:35:58 +10:00
6a77722ff5 Use preprocessor to exclude platform specify code instead of cmake 2025-03-31 22:17:35 +10:00
e76927f847 Add get_surface_extension to WindowsSystemDriver 2025-03-28 23:40:09 +10:00
34291215f1 Update .clang-format fixing include order 2025-03-28 23:10:10 +10:00
a6962bfba8 Add get_surface_extension to X11SystenDriver 2025-03-28 22:30:03 +10:00
d64b283319 Add DX12RenderDriver class stub 2025-03-28 18:51:46 +10:00
40cfa9901e Conditionally compile different drivers 2025-03-28 18:36:37 +10:00
211eb9a1d6 Add LinuxSystemDriver and WaylandSystemDriver classes 2025-03-28 14:57:38 +10:00
f727261a84 Rename Renderer::create to Renderer::init
All functions that the create/destroy a global static singleton should
use the names init and shutdown, while any static functions that
return/take a new object should use the names create and destroy.

e.g.
void Renderer::init() and void Renderer::shutdown()
Window* Window::create() and void Window::destroy(Window* window)
2025-03-28 13:46:59 +10:00
8eb5a39c4c Add System, SystemDriver, Win32SystemDriver and X11SystemDriver classes 2025-03-28 13:36:24 +10:00
773a08799b Add various size_t to u32 casts for MSVC 2025-03-27 15:13:03 +10:00
4e47c97539 Move VulkanRenderDriver::_pick_device to RenderDevice::choose_device 2025-03-27 15:07:24 +10:00
e1392f6f8e Add RenderDevice::AUTO for create_device() 2025-03-19 21:57:32 +10:00
f968d0cb22 Add get_api_name() and get_api_version_string() 2025-03-19 20:11:44 +10:00
76b0e87f28 Add various assertions throughout renderer 2025-03-16 12:58:15 +10:00
ee2637cd36 Add RenderDriver::create_device() 2025-03-16 00:15:24 +10:00
f979b782cc Add RenderDevice struct and driver accessor functions 2025-03-15 18:01:57 +10:00
d91275c393 Create VkInstance in VulkanRenderDriver 2025-03-15 15:17:42 +10:00
d381a87a75 Add SDL3 dependency 2025-03-15 15:17:10 +10:00
a8f8555612 Add NOVA_FUNC_NAME macro 2025-03-14 20:41:03 +10:00
69a5605a6f Switch to new logging system 2025-03-13 16:50:54 +10:00
0d080e01b5 Fix _format_func_name with static (or other) qualifiers 2025-03-13 16:42:11 +10:00
c3e91e48a8 Add spdlog dependency and Debug class 2025-03-13 01:13:42 +10:00
8a635cc15f Simplify static Renderer class implementation 2025-03-07 22:12:01 +10:00
3009a4c6d9 Add basic Renderer and RenderDriver classes 2025-02-12 00:59:35 +10:00