diff options
-rw-r--r-- | README.md | 26 | ||||
-rw-r--r-- | bindgen/BINDGEN.md | 7 | ||||
-rw-r--r-- | docs/project-layout.md | 6 | ||||
-rw-r--r-- | docs/rendering.md | 10 | ||||
-rw-r--r-- | docs/using-celeritas.md | 10 | ||||
-rw-r--r-- | src/core/triggers.h | 17 | ||||
-rw-r--r-- | src/defines.h | 3 |
7 files changed, 72 insertions, 7 deletions
@@ -40,18 +40,26 @@ All third-party dependencies are licensed under their own license. ## TODO -### Core +#### Engine +- [ ] Shader hot-reloading +- [ ] Cross-platform threadpool +- Strings + - [x] custom fat pointer string type +- [ ] Transform gizmo #### Memory +- [x] Arena allocator + - [x] malloc backed + - [ ] overcommit address-space backed (`VirtualAlloc` & `mmap`) - [x] Pool allocator (typed) - [ ] SoA hot/cold pool allocator (pool for all entities of same type, split into two structs in SoA so we can have hot ,(`VkHandle`and cold `size`, `format` data separated)) #### Scene - [ ] Transform hierarchy / Scene tree - [ ] Transform propagation +- [ ] Asset streaming ### Renderer - - [ ] PBR - [x] Basic implementation using learnopengl - [ ] Implementation using filament as a reference for first in class PBR @@ -60,9 +68,23 @@ All third-party dependencies are licensed under their own license. - [x] Shadowmaps - [ ] PCF - [ ] Cascading shadowmaps (CSM) + - [ ] Point light shadows - [ ] Cel shading - [ ] Terrain + - [ ] Heightmaps +- [ ] Water + - [] water plane - [ ] Animation - [x] Joint and keyframe loading - [ ] Handle multiple animations in one GLTF - [ ] Animation Blending +- [ ] Global illumination (future) + +### RAL +- [x] Buffer/texture creation + +### Logistics + +- [ ] Replace screenshot with one using PBR + skybox + shadows +- [ ] Update website +- [ ] Check licenses of assets currently in `assets` folder
\ No newline at end of file diff --git a/bindgen/BINDGEN.md b/bindgen/BINDGEN.md index 20ba803..57c0f5b 100644 --- a/bindgen/BINDGEN.md +++ b/bindgen/BINDGEN.md @@ -1 +1,8 @@ This is where we host code generation tools for generating bindings to `celeritas-core` in other languages. + +Planned languages are: + +- OCaml (due to fairly different semantics we may have an extra high-level wrapper around the C bindings for convenience) +- Odin +- Zig +- Rust
\ No newline at end of file diff --git a/docs/project-layout.md b/docs/project-layout.md index 3d8f466..9a33e8f 100644 --- a/docs/project-layout.md +++ b/docs/project-layout.md @@ -3,8 +3,10 @@ title: Project Structure --- ``` -deps/ - third-party dependencies -docs/ - these docs you're reading now that get built with mkdocs +assets/ - shaders and bundled assets for examples (must be licensed open) +bindgen/ - bindings generation +deps/ - third-party dependencies +docs/ - these docs you're reading now that get built with mkdocs src/ core/ - core game engine facilities logos/ - diff --git a/docs/rendering.md b/docs/rendering.md index f23fbd1..5b1dfe2 100644 --- a/docs/rendering.md +++ b/docs/rendering.md @@ -3,5 +3,11 @@ Rendering is split into 3 'registers'. 1. **RAL** (Render Abstraction Layer) - thin abstraction over graphics APIs -2. **render** - implements the default renderer and higher-level functions -3. **immediate** - immediate-mode drawing API for things like debug visualisation and UI
\ No newline at end of file +2. **Render** - implements the default renderer and higher-level functions +3. **Immediate** - immediate-mode drawing API for things like debug visualisation and UI + + +## RAL + +- RAL doesn't know what 'meshes' are or 'materials', it purely deals with buffers, textures, pipelines, etc. Those concepts + are left to the `Render` module.
\ No newline at end of file diff --git a/docs/using-celeritas.md b/docs/using-celeritas.md new file mode 100644 index 0000000..ceb3b7c --- /dev/null +++ b/docs/using-celeritas.md @@ -0,0 +1,10 @@ +--- +title: Using Celeritas +--- + +**TL;DR** + +- use the amalgamation header `celeritas.h` that exposes all public functions in a single header + - _you can recreate it with_ `scripts/amalgamation/gen_header.py` +- link the precompiled `core_static` or `core_shared` libraries +- _or_ compile using `xmake build`, the binaries will be in `build/<os>/x64/core_static`, etc
\ No newline at end of file diff --git a/src/core/triggers.h b/src/core/triggers.h new file mode 100644 index 0000000..a9ced17 --- /dev/null +++ b/src/core/triggers.h @@ -0,0 +1,17 @@ +#pragma once +#include "defines.h" + +// Events/signals that get triggered by certain things that happen + +/* +e.g. +collider enters volume (collider) +collider exits volume (collider) + +you could create a custom signal that only triggers when a collider has been inside a volume for 3 seconds +listen for Enter, start timer, if hits 3 -> emit signal. Else, reset state + +Top-level triggers: +level loaded + +*/
\ No newline at end of file diff --git a/src/defines.h b/src/defines.h index 7275a4d..a16d68e 100644 --- a/src/defines.h +++ b/src/defines.h @@ -53,8 +53,9 @@ CORE_DEFINE_HANDLE(Handle); // Untyped handle that can be casted to a strongly t #define PUB // For collecting public APIs to expose in an amalgamation header file -#define MB(x) ((size_t) x * 1000 * 1000) #define KB(x) ((size_t) x * 1000) +#define MB(x) ((size_t) x * 1000 * 1000) +#define GB(x) ((size_t) x * 1000 * 1000 * 1000) // NOTE: The below is now handled in xmake.lua // Platform will inform renderer backend (unless user overrides) |