-
Notifications
You must be signed in to change notification settings - Fork 0
Description
This is an approximate list of things that I will be working on in this build. So a lot of things can be changed as well as with 0.4.0 update.
From this build, I decided to change the numbering of the Force versions, since the engine is still far from ideal, or to say a full-fledged release, it will be better when the version numbering will be the year of release and the release number, so most likely I will release both minor and major updates in a mix.
So next versions will be like: 2025.b1, 2025.b2, 2025.b4f2 or 2026.b6f3 where b marks for build and f for bugfix.
The problem with OpenGL is that it is becoming obsolete every year and does not support new graphics updates, as its replacement, Vulkan, is already available. Force is about to start developing a 3D renderer like VERY soon, which will primarily support DirectX11 and potentially DirectX12 in the future. I will keep OpenGL around as long as the renderer does not become too large and my hardware supports Vulkan/DirectX12 specifications. As soon as this becomes possible, I will completely abandon OpenGL. Because making complex rendering pipelines such as HDRP is impossible to abstract all of this and because of driver/vendor different implementations of OpenGL that on some may run or on some validate a error.
💯 Mafor Renderer API Refactoring:
Since 2021 when i first integrate support for OpenGL, and later DirectX and all renderers, i never techincally improve or refact the renderer, its was raw, my old-write style, and when i looked at it before refactoring my eyes was just blown off. I always had a plan to sit down, take my time, and rewrite the hole renderer, before even thinking about to moving to 3D at the end of the year, in December i suppose, but when i integrade proper Font system for editor, and especially ABC's textures in the Font asset thumbnails, my eyes just can't process what i was seeing. The first problem was with Textures API, between renderers, some texture feature was working on OpenGL, but not working on DirectX. Next, I decided to check what exactly worked on DirectX and what worked on OpenGL. And as it turned out, 90 percent of the textures in DirectX (filtering, samplers) didn't work at all. On the other hand, OpenGL was a bit easier, but again, for example, (mipmapping generation didn't work, or .jpg textures were stretched and rendered incorrectly). And that was just the tip of the iceberg, as it turned out that Uniform Buffers, Vertex Buffers, and Index Buffers also had a lot of problems, one of which was that the editor's grid was completely broken on DirectX 10/11, but it worked on OpenGL. Therefore, I decided to take a break from the editor and focus on a complete, global refactoring of the renderer. In essence, I wrote it from scratch, as I had to modify all the related files and introduce several new concepts. So what going on here:
- FIxed Uniform/Constant Buffers.
- Fixed Index and Vertex Buffers.
- Reworked Context System.
- Reworked Shader System.
- Reworked Textures API.
- Reworked Framebuffers API.
- Fixed bugs with DirectX 10/11 Grid.
- Fixed bugs with DirectX 10/11 Samplers.
- Fixed bugs with DirectX 10 Blending.
- Fixed bugs with OpenGL .jpeg textures and mipmapping.
- Support for DSA vs Bind-to-Edit model for OpenGL.
- Support for Debug Layers on DirectX 10, DirectX 11.
- Support for Texture Cubes on DirectX 10, DirectX 11.
- Restore the completly broken OpenGL 3.3.
- Integrate support for dealing with Multiple Render Targets (Attachments).
- Integrate new concept of Pipelines. Which replaces old static RenderCmd.
- Integrate new concept of RenderPasses.
- Rewrite Renderer2D, RendererUI, Basic Renderer (3D).
Global Force 2025.b1 complete tasks:
-
Complete new Sprite & SpriteRenderer System. Rework tiling, and add atlases control.
-
Complete UI Button and UI Image, UI Text Components.
-
Finish build system and make user opportunity to build final executable applications from projects on Windows.
-
First major rendering refactoring and improvements since end of 2021.
-
Release first preview.
-
Release Nave 1.0.5.
-
Complete Undo-Redo system witch are done on 90%.
-
Migrate to new latest beta of Premake5.
-
Due to technical upgrades to VisualStudio 17.14.0 migrate Force from C++17 to C++20.
-
Rework project system in case of BuildEnvironment.
-
Rework the presets system and fix multiple crashes.
-
Rework the prefab system which was completle unsable + Undo Redo now works in Prefab Editor.
-
Final AssetManager Implementation. Release final asset managment global update witch fixes importing, creating, saving assets by properly using Importers API.
- Audio. Draw a complete diagram from witch Audio System are consist (AudioClip, AudioSource, AudioData, AudioAsset) make sure witch part allocate memory (Buffered, Streamed audios) and redo this hole system, witch will work with Undo-Redo. Audio in 0.4.0 is most weakest part now. Audio assets can leak memory because of 1.5 year redoing audio system every time. Also in Editor-to-Play mode audio also leak memory in Buffered Audios.
-
Textures and Audio RefCounting System + Resources Loading System via Force.Resources API.
-
Font. Font refactoring, the same as with audios. Text rendering component are work good, but with font asset and loading default fonts there are few flaws.
-
Graphics: Texture API. (Fixed: all this bugs + many more). Rework hole OpenGL, Directx11, DirectX10 Textures API. FIx multiple bugs with texture rendering, wrong filtering, and not working properly mipmapping and filtering on DIrectX11/10.
- Graphics: Uniform Buffer API: Perspective Grid (Fixed). Oh for god sake. This stupid bug with DirectX pipeline in Force witch break grid shader, while in OpenGL all works fine. In DirectX also renders the same grid because shader is the same only HLSL but it just starts to glitch and then dissappears. I try to fix this bug over a month but no progress at all.
- Graphics: OpenGL Release Build: Most deadly bug that was wil Force since 0.3.3 or maybe early. Undefined behaviour with OpenGL data somewhere or uninitialied memory lead to this monstosity.
- Optional: Update Force's Dear ImGui WIP 1.88 to 1.91 or higher. Im putting this into list because update ImGui for Force is not that simple, i.e Force was modify some features of ImGui in imgui.h/cpp like 5 times. In addition all backends especially for Win32 was completely rewrited. And i think that a lot of stuff need to be checked in Force new GUI library witch based on ImGui.
Update: Force will never update ImGui anymore, because it techincal reason, and basically all GUI what need for Editor already there. Maybe in future when ImGui adds something major as Tables API.
