Link to current branch's todo list
- Learn to write extremely high performance code
- Learn to implement advanced graphics features
- Make a game that is fun to play
-
June '21 - Have the basic engine working including more advanced lighting and animation
April 30, '21 - FBOs / SwapchainMay 31, '21 - Memory Manager / GUIs / Particles- June 31, '21 -
Animation / More Lighting/ Shadows
- Basic Vulkan creation and initialization.
- Proper makefile.
- Basic destruction and memory leak prevention.
- Change the "pipeline" class to "graphics pipeline" class and make the pipeline swapable.
- Multiple Object Rendering.
- Memory management.
- The ability to move, scale and rotate objects at will instead of having them just spin as well as adding a camera class.
- Add a render function that allows the scene to be rendered from multiple cameras without having the time advance.
- Simple Lighting.
- Batched Rendering.
- Add sub-allocated buffers.
- FBO filters.
- Add an options for on-demand changes to the swap chain like locked refresh rate and stuff like that.
- Particles.
- Finish the vulkan memory manager.
- Optimize, Optimize, Optimize.
- Simple GUIs.
- Advanced Lighting.
- Bloom / Merge shader.
- Shadows!
- Reflections.
- Skybox.
- FBO Class / Extensible pipelines for unique UBOs
- Audio and SFX in game
- Animation.
- Basic music and sfx support
- Error handling (out the wazoo!)
- Networking support.
- Ray Tracing.
- Video support for cut scenes and similar.
- Adding more classes... maybe. (perhaps this is a bad idea, don't add code you don't need?)
- FORMATING!
- DLSS support, if I can convince NVidia to give me the development materials.
- Add custom system memory managment
- Add custom dynamic system memory structures
- Support for other platorms.
- The sampler does not need to be recreated with every texture, one for all of the textures is fine.
- Some strange bug where if a time.deltatime call is made in the first iteration of the main while loop then the movement/ rotation of an object will just lockup and not move at all?
- Program breaks when the resolution becomes too large because the frame buffer gets bigger than the size of the memory blocks, I need to dynamically choose the size of the buffer based on the screen resolution. (maybe not an issue now?)
- The command pools bleed (but don't leak) memory because they are not garbage collected ever until the end of execution.
- Model should not destroy command buffers probably.
- Due to an unknow issue in the filter and combine files the window resize is broken
- The bloom affect sometimes won't resize with the window... but it does most of the time.
- G++ is required to build the C++ code
- clang-format is needed to format all of the code that you might add
- Valgrind for leak checking the code
- VkTracer is needed for profiling Vulkan command and discovering performance sinks
- RenderDoc for profiling images and stuff
==15983== LEAK SUMMARY:
==15983== definitely lost: 58,608 bytes in 21 blocks
==15983== indirectly lost: 33,199 bytes in 366 blocks
==15983== possibly lost: 72,704 bytes in 1 blocks
==15983== still reachable: 184,876 bytes in 2,306 blocks
==15983== suppressed: 0 bytes in 0 blocks
+-----+
| -x | The arrows represent which way the bottom of the texture points
| v |
+-----+-----+-----+-----+
| +z | -y | -z | +y |
| > | o | < | o |
*-----+-----+-----+-----+
| ^ |
| +x |
+-----+
I believe that all of the "memory leak" is caused by strage behavior of the Vulkan library... The errors though, those were caused by me and I need to fix them at some point.