Trying to learn Vulkan and Haskell hand in hand by doing a 2D engine.
Compile the shaders, generate the atlas and run:
./run.sh
Compile the shaders:
./compile_shaders.sh
Generate the atlas
./generate_atlas.sh
- Separate vertex buffer
- Sepaerate sempaphores per frame
- Use inflight frame with proper flow
- More than one in-flight frame
- Proper synchronization between frames
- Some memory is not properly freed before vulkan instance is destroyed
- Just use VMA
- Basic texture support
- Make the use of required feaures explicit
- Multiple sprites using different textures in one frame
- Use a texture atlas probably? Not sure yet
- Investigate sampler2DArray
- Sprite back-to-front sorting
- Alpha blending?
- Generate Vertex and Index buffers per frame
- Maybe images from the same buffer as well
- Basic static (no animation) sprite
- Sprite bacthing
- Bindless textures
- Buffer device addresses
- GPU driven rendering (DrawIndirect, etc)
- Basic DearImGUI integration
- Somewhat model a single moving light source
- Use normal maps on the static sprite to intract with the light sources
- Use specular maps for more realism
- Think about bloom and glow effects
- Suuport multiple light sources
- 2D global illumination