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
5f718ff966
Add common type aliases
2025-02-11 00:25:21 +10:00