summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-02 12:43:34 +0100
committerskal <pascal.massimino@gmail.com>2026-02-02 12:43:34 +0100
commit81fe477f786eb7333524fa33af36d28283dd5275 (patch)
treec01e3a870dfa11d974ee9aada1e0197323063afa /doc
parent7af1f3853905bc1616df0d1e2d728a80f7004c71 (diff)
docs: Reorganize 3D.md and integrate tasks
- Moved 3D.md into the doc/ directory to centralize documentation. - Updated README.md to reflect the new location of 3D.md. - Captured the action items from 3D.md (visual debug mode, Blender exporter) and added them as a new task (#18) in the PROJECT_CONTEXT.md roadmap.
Diffstat (limited to 'doc')
-rw-r--r--doc/3D.md50
1 files changed, 50 insertions, 0 deletions
diff --git a/doc/3D.md b/doc/3D.md
new file mode 100644
index 0000000..e944cbe
--- /dev/null
+++ b/doc/3D.md
@@ -0,0 +1,50 @@
+# 3D system and rendering pipeline
+
+This sub-project describe how the 3D worlds are going to be rendered.
+We want a camera to move around moving and dynamic objects.
+These objects can be need a physics and collision system.
+
+## the idea
+
+Each object has:
+ * a bounding box or capsule
+ * a BVH is maintained while these move around physically (or not)
+ * to render a frame we cull these bounding volumes
+ * at rendering time, the bounding box or sphere is turned into a quad or triangle
+ fan and a shader associated with the object is called (after proper world-object-camera transformations)
+ * each object can be queries for:
+ a) ray-object intersection ("return the distance from the object at this point P in this direction D")
+ b) Signed Distance Field ("what is the minimum distance to the object from this point P?")
+
+So in the end, we'll
+ a) move the camera and lights along paths
+ b) transform the bounding volumes and cull for visible boxes
+ c) project them
+ d) call the objects' respective shaders for rendering
+
+We want to use shadow maps, so multi-passes is expected.
+
+## debugging features
+
+The assist the visual debugging, we need a 'visual_debug' mode (code to be
+removed with STRIP_ALL) that:
+
+ a) draws a wireframe around the bounding volumes (box, etc.)
+ b) draw the trajectories (camera, objects, ...)
+ c) show the collision points
+ d) displays the ray/object intersection interactively
+ e) show the lights (direction, cone, ...), display their shadow-map in 3d and on-screen (2d).
+
+This must be captured and tracked as a sub-task
+
+
+## future step
+
+Have an exporter from Blender modelling software. That would be a converter
+from simple blender-exported files to our internal format (as an asset for
+our AssetManager or as c++ code directly)
+
+## latter improvement
+
+How to handle transparency? Multi-Ray-casting?
+We need to think about the lighting strategy.