GamEngine
- 42 Devlogs
- 230 Total hours
GamEngine is a high-performance C++/Vulkan 3D game engine focused on modern GPU-driven rendering and scalable rendering techniques.
GamEngine is a high-performance C++/Vulkan 3D game engine focused on modern GPU-driven rendering and scalable rendering techniques.
I mainly working on bug fixing. Now VSM and GTAO are fully stable, TAA still needs some love. I was also working on fbx model importer. On the image you can see Amazon Lumberyard Bistro which has 2.7M triangles with 140FPS. I have to work on fps stability while moving camera and make glass shader/object.
I was trying to made my version of DDGI but it was unstable, so I made this disabled. Full DDGI would be impossible for my gpu so I used Brixelizer GI from FidelityFX SDK from AMD. It looks good and stable. Image is capyured on intel sponza which has 2.7M traingles - 13x more than original sponza so my engine scale well.
I was working on Ray Traced Contact Shadows and DDGI. Ray traced shadows works well without droping fps that much. Currently my DDGI is bugged - its very dark. The image is taken with RTCS, DGGI disabled
Successfully optimized GTAO and VSM, 40FPS gain and more stable 1% low
I was working on game optimization, editor functionalities and standalone game building. I successfully optimized GTAO and VSM a little. GTAO still have some halo around some objects and VSM are not full stable. I added option build game in editor. I have to optimize editor a little and add some more functionalities. On the first image you can see nvidia nsight graphics profiler and on the second one standalone game build running in 160 after few seconds. This is decent score for rtx 3050.
I was trying to fix shadows but it didint go well, so I gave up and started refactoring code for better readibiliy. On the image you can see broken verin of shadows, dont worry I went back to working ones. I fixed few smaller nearly invisible shadows bugs, so I didint waste myy time. Now I will focus on optimatization and graphics effet
I started migration to dynamic rendering, so rendering pipeline would be much easier for user. I also made custom title bar. Im in process of improving UI. I found two bugs - in certains camera angle shadows/AO or something doesnt work correctly. Second - some random patterns may occur while looking into sky inside sponza
I made water system but it look horrible and performance isnt great, so i focused next on large models importing. Big models are now devided into meshlets. On the image you can see very popular benchmark scene, its called crytek sponza. I think that 170FPS in this stage is good
I am working on water system. I decided to make something diffrent that normal water commonly used in every modern engine. I want to make virtual water system which is inspired by VSM. More technical details I will provide in devlog when I finish my water system. I dont have any working water image so I just upload some engine footage.
PS. It might be much more optimize than normal water.
I was working on water system and improving GTAO. While testing I found weird little horizontal strips on shadows. I thought it was my WSM bug so I was trying to fix it. After I checked all possible bugs i realized that I could downgrade GTAO by linear interpolation. I fixed it and now works fine. Water currently has implemented SSR and simple Gernster waves. On the images you can see clip levels and virutal pages shown in shadow debug mode
I was working on editor optimatization and bug fixes. Editor launch time jumped from ~7seconds to 1.5 seconds if editor has cache, otherwise 4.3 seconds. Launching editor no more cause vulkan errors. I also added IBL and reflects. I also bugged shadows a little.
I was working on finishing render graph. I also optimized editor - in huge scenes it will have more stable 60FPS. I optimized game mode - 1% low are higher now
I was mainly working on models and textures compression. Textures are now compressed into BC7 format. I also added remdergraph so user dont have to make it manually.
Today I was working on game optimatization and little shadows improvements. I was mainly working on game profiler as you can see in the image
Last 2 days I was working on editor functionalities. I added built-in powersheell terminal. I also added shadergraph which currently is doesnt want to compile properly
I was working on UX in editor. Then I found bug which I couldnt fix for 3 hours. Bug was caused my matrix decompose floating point
Today I was working on optimatization, code quality and better model imports. fps jumped from ~400 to ~430.
I was working on game optimzatization. I made jump from around 200FPS to 400. There is still a lot more things to optimize.
I was working on optimizing grass system. I added wind component and optimized colission with other objects. Thanks to optimatization FPS jumped from ~250 to ~320. I also modified scene saving system - binary file as main file and .terrains failes as terrain data. I added Editor layout to AppData so editor rembeber your last layout
Today i was adding missing tests. I also updated terrain sculping system - you can now sculp all terrain at once if multiple instances. I added some utils and deleted fps limit in play mode.
Today I was working on better shadow implemenatation. I implemented VSM shadows - smiliar are used in UE5. I think its looks good
Today I was working on code quality and better terrain sculping tools. I added grass painting. I also added some nice shader to grass - A rolling ball leaves a trail in the grass. Check it out!
I was working on terrain sculping. I was inspired by unity system generator so I wanted to make something smiliar. Now there is only one brush but i will extend possibilities of my system.
Added gltf models importing with editor asset manager. Imported gameobject has his unique mesh collider.
I was fixing my physics system. I fixed some bugs and created new ones. First new bug is sphere bouning up on first contact. 2 bug is cube lifting up another cube. I’m happy that I removed object shaking
Today I was mainly working on code quality and project refactorization. When I was testing scenes with various of configuration I found some type of physics bug - Objects are shaking for some reason, you can see this in attached video
last 1.25h I was adding cube physics, imo it look very satisfying.
I was working on realistic sphere physics. I think it looks good enough. I was also working on tests. Fixed bug when ramp after start/stop was changing her location.
I added simple gravity and colliders. I also reorganized code a little - I make high level API so user dont have to use Vulkan and SDL directly.
Added Color picker, and updated window reloading while adding MSAA or new color. Now you can easily change color in editor
I made object scriptable!
I messed something up and m editor wasnt responding I couldt click anything. I was trying to fix it almost 5 hours. What I fixed? - vulkan and SDL were recreating while turning MSAA on and GPU was loosing context
The editor has been significantly improved and now looks much better.
The editor no longer depends on the Windows API, which means it should work on both Windows and Linux.
The original goal was to use only:
These are all standard components that come with a typical Vulkan development setup.
After further research, Dear ImGui was also added.
It is currently the only third-party dependency.
Focus will now shift to expanding the editor’s functionality.
I made basic editor. Now looks like terrible but I will make it better
Added movement, you can move by using wasd, scroll and RMB
I was trying to add .glb models importer but this is very hard to do without third parties dependencies and i messed up something - Tree looks flat(second attachment).
After many failed attempts I decided to start making particle system, as you can see it looks good. It is also optimized.
FPS drop which you can see on video is caused by cmake compilation in background.
I hope you like my particles :)
All of this is made in C++ and the Vulkan SDK.
Focused on two main things:
Cube made of 30×30×30 (27 000) smaller cubes + HUD with rendered font.
All of this is made in C++ and the Vulkan SDK.
On the image you can see a cube made from 30×30×30 smaller cubes, each one casting a shadow.
In the bottom-left corner you can see the canvas.
All of this is made in C++ and the Vulkan SDK.
Added Engine Math based on glm. Optimized multi object drawing. Made better project structure
Added shadows, game objects, engine vectors and matrixs, standaole camera, position and transforms
I have reorganized code. I added MSAA and rotaing cube!
I finished my previus project so now i can have two concurrent - this and c++/cuda custom llm. Successfully rendered triangle :) Its only about ~1000 lines of code. I used offical tutorial for start.