- Fixed Documentation for Consistency

- Added more documentation, predominantly in the Math Library
This commit is contained in:
2025-06-16 01:48:31 -04:00
parent 096e82f47a
commit db7d52c86c
28 changed files with 861 additions and 538 deletions

View File

@@ -81,7 +81,12 @@ as-needed basis.
Implement headers related to memory allocation in C++.
* Smart Pointers
* Unique Pointer
* Shared Pointer
- Memory Allocation
- Allocation
-
@@ -128,13 +133,19 @@ fennec should be able to use Doxygen and LaTeX externally. Consider including bi
- ODS
- CSV
- Graphics Formats
- BMP
- JPG
- PNG
- TIFF
- DDS
- Wavefront OBJ
- FBX
- Textures
- BMP
- DDS
- JPG
- PNG
- TIFF
- Vectors
- OTF
- SVG
- TTF
- Models
- FBX
- Wavefront OBJ
**MAYBE**
* Compilation (`fproc/code`)
@@ -183,6 +194,8 @@ in their operation order:
### Frame
- **Physics**
- Physics Interpolation
- **Graphics**
- See [Stages](#stages-gfx3d)
- **Audio**
@@ -214,6 +227,27 @@ implementations than I could write.
## 2D Graphics (`gfx2d`)
Links:
- https://en.wikipedia.org/wiki/Quadtree
- https://developer.nvidia.com/gpugems/gpugems3/part-iv-image-effects/chapter-25-rendering-vector-art-gpu
Object Structure. The mesh is implicit data.
### Structures (`gfx2d`)
For the 2d rendering framework, Materials need to be rendered independently because we have
no size constraints for images. This disallows us from using a meta-shader like in
the 3d rendering framework.
```c++
struct Object
{
vec2 location, scale; // A matrix would be 36 bytes, this is instead 20 bytes
float rotation;
}
```
- BVH
- Quadtree
- Leaf Size and Tree Depth should be calculated by the scene, constraints are as follows:
@@ -238,6 +272,10 @@ implementations than I could write.
- Adjust Buffer Size using the counts
- Insert using another atomic buffer
- Translucent objects will be sorted. We can cheat by using a z-index instead of a z-coordinate.
This will allow us to sort objects as they are created. We can still bulk render each z-index,
with meshes and objects being grouped by material.
@@ -305,6 +343,8 @@ Cubemaps may only be `1:1`, I would be concerned if you are using any other rati
Documentation should provide guidelines on categories of Art Assets and the resolution of textures to use.
Textures are identified by an 8-bit integer and 16-bit integer.
- `int8` → the texture buffer
- `int16` → the layer in the buffer
Artists should be informed on the texture structure of the engine and its limitations.
However, these principles should be followed in other game engines as these are
@@ -333,8 +373,8 @@ Unless otherwise specified, each stage will be run on the GPU.
- Scene Edge
- Insertions and Updates are done on the CPU
- Nodes
- Start Index 32-bits
- Object Count 32-bits
- Start Index `int32`
- Object Count `int32`
- Objects
- Buffer of Object IDs grouped by Octree Node
- Leaf Culling
@@ -348,16 +388,16 @@ Unless otherwise specified, each stage will be run on the GPU.
a bias towards a specific corner of the filter.
- Perform a preprocessing step on the CPU to erase duplicate elements and fix the buffer continuity.
- Let the duplicates be rendered.
- Generate the Culled Object Buffer by copying objects from the Object Buffer
- Generate the Culled Object Buffer with the respective object IDs
- Adjust Buffer Size using the counts
- Insert using another atomic buffer
- Insert by reusing the count buffer, clipped to only contain used meshes
Debug View: Object ID, Mesh ID, LOD
- Visibility
- Buffer `(15 Bpp, 120 bpp) [1920x1080] ≈ 39.4MB`
- 24-Bit Depth Buffer
- RGB32I Visiblity Info
- Depth Buffer → `D24`
- Visibility Info → `RGB32I`
- R = Object ID
- G = Mesh ID
- B = Material ID
@@ -367,13 +407,13 @@ Debug View: Object ID, Mesh ID, LOD
Debug View: Visibility Buffer
* G-Buffer Pass `(17 Bpp, 136 bpp) [1920x1080] ≈ 35.3MB`
* Depth - Stencil → D24_S8
* Depth - Stencil → `D24_S8`
* S → used to represent the lighting model.
* Diffuse → RGBA8
* Diffuse → `RGBA8`
* A → Ambient Occlusion
* Emission → RGB8
* Normal → RGB8
* Specular → RGB8
* Emission → `RGB8`
* Normal → `RGB8`
* Specular → `RGB8`
* R → Roughness
* G → Specularity (sometimes called the Metallicness)
* B → Index of Refraction (IOR)
@@ -381,9 +421,9 @@ Debug View: Visibility Buffer
Debug View: Depth, Stencil, Diffuse, Emission, Normal, Specularity
- Deferred Lighting Pass `(10 Bpp, 80 bpp) [1920x1080] ≈ 2 x 16.3MB + 8.3MB ≈ 24.6MB`
- Depth Buffer → D24
- Lighting Buffer → RGB16 (w/ Mipmapping when Bloom or DoF are enabled)
- Stencil Buffer $rarr; S8
- Depth Buffer → `D24`
- Lighting Buffer → `RGB16` (w/ Mipmapping when Bloom or DoF are enabled)
- Stencil Buffer $rarr; `S8`
- Generate Dynamic Shadows
- Generate Dynamic Reflections (Optional)
- SSAO (Optional)