diff --git a/README.md b/README.md index de9cdd9..6b64f3f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,46 @@ -## ouros +# ouros -# initial commit +Ouros is a rudimentary 3D rendering application built with C++ utilizing the Vulkan API for blazing fast rasterization and shading. This is mainly for tinkering around, so don't expect the most performant and clean code. I will be using the amazing Sascha Willems's https://howtovulkan.com/ guide as a platform. +## Some design philosphies: + - Cross platform (Windown & Linux, Debian in my case) + - Minimal external libraries. Some libraries are unavoidable, especially for a project with a large scope. Libraries for window creation, matrix math, and device interfacing are inevitable, but dependency complexity is usually a problem. + - Compartmentalization: units should be separated a part from each other as mushc as possible to reduce codebase complexity. eg, the renderer should be completely separate from a keyboard interface. + - Performance tracking: since Vulkan is absurdly configurable, different options need to be able to be profiled to determine the best option + - Configurability: being able to change things without a rebuild is in general good practice. I like yaml + - Fun: if its a pain to maintain then you're doing it wrong + - shmunguss + +## Roadmap +Below is some steps to organize development plan and future goals, mostly following Sascha's guide. + - [ ] Repo setup + - [ ] Hello world application + - [ ] Window creation (glfw or sdl) + - [ ] Vulkan installation + - [ ] Hello Vulkan: instance creation + - [ ] Device/GPU Setup + - [ ] Graphic pipeline -> swapchain + - [ ] Shaders + - [ ] Hello triangle + - [ ] 3D + - [ ] Texture loader + - [ ] Model Loader + - [ ] Mouse/Keyboard inputs + +Below is beyond Sascha's guide, but available elsewhere on his github. These are more long term ideas. + - [ ] Lighting + - [ ] Shadows (via Shadow Mapping) + - [ ] Compute Shading + - [ ] Raytracing + - [ ] Graphical User Interfacing + - [ ] Post-Processing Effects + - [ ] Procedural Generation + - [ ] Particles + +## Build instructions +TODO: git clone, build/install libraries script, cmake commands, etc. +TODO: identify dependencies and how to install them (vulkan libraries, sdl, glm, etc.) + +## Additional Resources + - https://howtovulkan.com/ + - Will add more as I use them