A 2D/3D game engine
Go to file
2024-03-23 21:16:30 +00:00
dependencies change coordinate system to Z-up 2023-09-19 13:53:19 +01:00
doc Add test models and try to improve player controller 2024-03-14 19:37:44 +00:00
include Begin adding shadow mapping and a few vulkan fixes 2024-03-23 21:16:30 +00:00
res/engine Begin adding shadow mapping and a few vulkan fixes 2024-03-23 21:16:30 +00:00
screenshots Better screenshot 2024-03-19 11:54:05 +00:00
src Begin adding shadow mapping and a few vulkan fixes 2024-03-23 21:16:30 +00:00
test Begin adding shadow mapping and a few vulkan fixes 2024-03-23 21:16:30 +00:00
.clang-format Cleanup libs; change clangformat 2023-10-02 12:54:37 +01:00
.gitattributes upload blender files with git lfs 2023-05-29 15:55:33 +01:00
.gitignore ignore aps files 2023-02-19 18:29:25 +00:00
.gitmodules remove freetype, begin font code 2023-05-14 14:40:16 +01:00
CMakeLists.txt change version 2024-03-19 11:58:40 +00:00
config.h.in begin changing style 2023-04-29 15:22:25 +01:00
README.md change version 2024-03-19 11:58:40 +00:00
Rendering Plan.txt optimise ecs; build static mesh render lists 2023-08-22 23:41:08 +01:00

engine v0.2.0

a random game engine thing. Now finally with ECS!

A screenshot

TO DO LIST

vulkan/device.cpp: report what is missing when a device fails to be found. Only select physical device 0 to simplify code.

Add support for multiple lights.

Add support for simple shadow mapping.

  • cascaded shadow mapping

Support animations.

  • skinned meshes / morph targets

At some point, add game controller support. Make sure it works well with the InputManager class.

(Was implemented in the past) For font rendering, put all ASCII characters in one large texture and use 'instancing' (and uniform buffer objects?) to reduce draw calls.

DONE

For mesh rendering, give every mesh-renderer a ShaderMaterial which, depending on the shader, defines how the mesh reacts to light and also stores a reference to its texture(s). -- Also make a model loader that works with multiple meshes (by creating many objects).

The engine needs an event/message system, this will be helpful for collision detection. Also helpful for general gameplay logic.

The entire vulkan backend needs redesigning without so many classes

Place all instances of a particular component in contiguous memory: I.e., a scene holds many std::vectors, one for each type of component. These vectors are looped through every frame. This should optimise things by improving the memory layout of the program, significantly reducing cache misses.

Implemented glTF file loader

Added a PBR shader with albedo, normal, metallic, roughness, and AO textures

Added the BVH AABB tree made in Summer to start a much better Collision system.

The CameraControllerSystem now uses raycasting to enable FPS-style player movement.