Skip to content

sckzor/SckzEngine

Repository files navigation

SckzEngine

A Vulkan graphics engine by Sckzor

Link to current branch's todo list

Goals for the engine

  1. Learn to write extremely high performance code
  2. Learn to implement advanced graphics features
  3. Make a game that is fun to play

Timeline for the engine

  • June '21 - Have the basic engine working including more advanced lighting and animation

    • April 30, '21 - FBOs / Swapchain
    • May 31, '21 - Memory Manager / GUIs / Particles
    • June 31, '21 - Animation / More Lighting / Shadows

Progress on the engine

1st Priority

  • 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!)

2nd Priority

  • 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!

3rd Priority

  • 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.

Known issues and bugs

  • 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.

Build tools

  • 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

Latest Valgrind results

==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

Cube map notes

      +-----+
      | -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.

Image (click for video) of the Engine in action

SckzEngine Demonstration Video

About

SckzEngine is a Vulkan based 3D engine by Sckzor

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published