summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md26
-rw-r--r--bindgen/BINDGEN.md7
-rw-r--r--docs/project-layout.md6
-rw-r--r--docs/rendering.md10
-rw-r--r--docs/using-celeritas.md10
-rw-r--r--src/core/triggers.h17
-rw-r--r--src/defines.h3
7 files changed, 72 insertions, 7 deletions
diff --git a/README.md b/README.md
index f9ad098..61bbb4f 100644
--- a/README.md
+++ b/README.md
@@ -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)