diff --git a/README.md b/README.md index 2fb945d5caf40d361caba637fa564aabf5d61722..89acc4b9d7004e308fcf4352e0f969dae3845f81 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,50 @@ -# DEngine +# GLTF Scene Viewer -Game engine project by Didgy (Nils Petter Skålerud) +Nils Petter Skålerud #510627 np_skalerud@hotmail.com -How to build: +# Project Description -Windows: -The project can be built as-is on MSVC and MinGW using CMake +A scene loader that allows you inspect scenes loaded from GLTF files. You will be able to fly through this scene with your camera +by using WASD and mouse. -Linux: -Should just be a matter of doing cmake ./ and then make in terminal. Will write detailed +# Key Features -Ubuntu packages required to build: -libglew-dev -libglfw3-dev +* All 3D models will use a homemade Phong shader with support for textures. +* Directional lights +* Textures are loaded in KTX format and use BC7 texture compression with precomputed mipmapping. +* The program is largely built on a homemade ECS (Entity-Component-System) architecture to allow scalability and reusability. +* Homemade ECS-inspired (Entity Component System) architecture to allow high scalability and reusability (can quickly switch the project to i.e a game engine) +* Components (but not custom script components) will be stored contiguously in memory, for maximum cache utilization and iteration speed +* Homemade math library made by Nils Petter Skålerud. The program does not use GLM at all. +* Quaternions for representing rotations +* Homemade Time Manager system +* Homemade Input system for raw input +* Asset Managing, Rendering and Application subsystems will be highly modular and easy to remove/add to the project. +* Object parenting +* Custom scripting framework, to allow gameplay programming +* Homemade rendering front-end interface, for easy implementation of additional rendering APIs i.e Vulkan +* OpenGL UBOs (Uniform Buffer Objects) for common information, such as camera and scene info. +* CMake project structure to allow very simple building on Windows and Linux -NOTE! 32-bit is not supported. +The scene loader will compile for Windows and Linux, 64-bit only. -How to install: -git clone https://github.com/Didgy74/DEngine.git -git submodule init -git submodule update -cmake ./ -make +The marking consideration will be on **Architecture/Framework** +# Dependencies -The engine uses the following libraries: * GLEW * GLFW -* OpenGL -* nlohmann +* nlohmann-json * fx-gltf -* stb_image +* DMath +* DTex +* OpenGL +* CMake + +# Originally planned features +* Normal Textures (for lighting) +* Full Input system for making your own buttons and axes and bind them to raw input. Complete with input callbacks. +* Custom scripting components designed to be stored contiguously in memory, and not rely on polymorphism for higher performance. +* Deferred shading/lighting +* Multiple scenes running on their own threads independently of each other, with their own viewport/window +* Imgui \ No newline at end of file