From 2cb70d7b169eb13064b9adb3d63095ccb70d3ef7 Mon Sep 17 00:00:00 2001 From: Dynamitos Date: Thu, 14 Oct 2021 11:29:08 +0200 Subject: [PATCH] Create WRITEUP.md --- WRITEUP.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 WRITEUP.md diff --git a/WRITEUP.md b/WRITEUP.md new file mode 100644 index 0000000..81ef4f2 --- /dev/null +++ b/WRITEUP.md @@ -0,0 +1,25 @@ +# Seele Engine + +Seele is a Proof-of-Concept 3D render engine using Vulkan as it's primary graphics API, but other APIs could also be implemented. +The focus of the project is to make the renderer use as many of the system resources as efficiently as possible to maximize the framerate +while minimizing resource usage. +It does this by being designed to support multithreading for more recent APIs, like DX12 or Vulkan, while still providing an interface that could be implemented by an +API that doesn't support it, like OpenGL. These APIs would suffer a significant performance loss, but would still work correctly. + +## Custom containers and other utilities + +Some of the basic containers are reimplemented, mostly not for any particular feature, but because that makes them more customizable and extendable for future uses and +performance optimizations, like serialization for example. Due to them occuring in the code samples later, they will be quickly mentioned here. + +- `Array`: A heap-array backed dynamically resizable container, like `std::vector` +- `StaticArray`: A static-array backed non-resizable container, like `std::array` +- `Map`: A key-value splay-tree associative container, like `std::map` +- `UniquePtr`: A smart pointer claiming ownership of an object, like `std::unique_pointer` +- `RefPtr`: A reference counting smart pointer, similar to `std::shared_pointer`, with a few differences: + - global pointer-based reference counting + - this means a `RefPtr` can be constructed from a raw pointer and will retain its reference count correctly + - for example if you construct `RefPtr ptr = new HelloWorld();`, and in the constructor of HelloWorld create `RefPtr` + - `UPHelloWorld`, the same as `UniquePtr` +