what am i doing
Arcane
- Joined
- Dec 24, 2018
- Messages
- 1,898
Added cultures to the list of generator stencil options. Learned a bit more about how ImGui popups work and how to close them properly.
Adjusted the cartographer a bit to turn off tile borders and zone borders at certain distances. This was always planned but I didn't get around to it. It improves framerate and those don't need to be drawn when zoomed out (in fact, it looks bad if they are - better this way). I do note that my compute cull function seems to have a subtle logic error somewhere in it: for the most part it's fine but for objects that have multiple instances, if any instance is on the camera all are drawn. So for now that means labels aren't being culled. Low priority but it'll need to be dealt with eventually.
I did some experimentation with async loading for world assets and it mostly worked ok but did give me some Vulkan validation errors when loading finished since I tried to do it with minimal locking, just locking the cartographic layers and skipping them in the render cycle if locked, but - something clearly wasn't entirely right. It didn't cause visible problems, but still. I went back to single-threaded loading for now. I think if I want good async loading of things that have a presence on the renderer I need to look more carefully at the structure of data buffers and/or figure out a better sync point/mechanism for the threads.
I think next I will want to revise the editor brush a bit and add the capacity to paint "one tile", "all tiles in a zone" and "all tiles in [larger scope]" where larger scope could be a state, or a multi-zone region, etc. For now at least all tiles in a zone would be ideal to permit more rapid filling of contents (by the user) and possibly better performance.
Edit: Also, I discovered that I misunderstood the way swapchains work a bit and if I simply check if the window is minimized when drawing before doing ANYTHING Vulkan-related, I don't need to rebuild it. ImGui still needs to have its Render() called, though, and I also allow the Renderer's cartographic subsystem to do any needed mesh merges / object refreshes when Renderer::Draw() is called. Resizing is still on the menu. Of course, most AAA games don't allow free resizing (have to pick a preset in their menu), but IMO being able to just drag and resize a game's window is a mark of professionalism so I do want to support that eventually.
Adjusted the cartographer a bit to turn off tile borders and zone borders at certain distances. This was always planned but I didn't get around to it. It improves framerate and those don't need to be drawn when zoomed out (in fact, it looks bad if they are - better this way). I do note that my compute cull function seems to have a subtle logic error somewhere in it: for the most part it's fine but for objects that have multiple instances, if any instance is on the camera all are drawn. So for now that means labels aren't being culled. Low priority but it'll need to be dealt with eventually.
I did some experimentation with async loading for world assets and it mostly worked ok but did give me some Vulkan validation errors when loading finished since I tried to do it with minimal locking, just locking the cartographic layers and skipping them in the render cycle if locked, but - something clearly wasn't entirely right. It didn't cause visible problems, but still. I went back to single-threaded loading for now. I think if I want good async loading of things that have a presence on the renderer I need to look more carefully at the structure of data buffers and/or figure out a better sync point/mechanism for the threads.
I think next I will want to revise the editor brush a bit and add the capacity to paint "one tile", "all tiles in a zone" and "all tiles in [larger scope]" where larger scope could be a state, or a multi-zone region, etc. For now at least all tiles in a zone would be ideal to permit more rapid filling of contents (by the user) and possibly better performance.
Edit: Also, I discovered that I misunderstood the way swapchains work a bit and if I simply check if the window is minimized when drawing before doing ANYTHING Vulkan-related, I don't need to rebuild it. ImGui still needs to have its Render() called, though, and I also allow the Renderer's cartographic subsystem to do any needed mesh merges / object refreshes when Renderer::Draw() is called. Resizing is still on the menu. Of course, most AAA games don't allow free resizing (have to pick a preset in their menu), but IMO being able to just drag and resize a game's window is a mark of professionalism so I do want to support that eventually.
Last edited: