summaryrefslogtreecommitdiff
path: root/3D.md
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-01 10:51:15 +0100
committerskal <pascal.massimino@gmail.com>2026-02-01 10:51:15 +0100
commit8bdc4754647c9c6691130fa91d51fee93c5fc88f (patch)
tree2cfd7f72a21541c488ea48629eef47a6774fc2c4 /3D.md
parent7905abd9f7ad35231289e729b42e3ad57a943ff5 (diff)
feat: Implement 3D system and procedural texture manager
- Extended mini_math.h with mat4 multiplication and affine transforms. - Implemented TextureManager for runtime procedural texture generation and GPU upload. - Added 3D system components: Camera, Object, Scene, and Renderer3D. - Created test_3d_render mini-demo for interactive 3D verification. - Fixed WebGPU validation errors regarding depthSlice and unimplemented WaitAny.
Diffstat (limited to '3D.md')
-rw-r--r--3D.md35
1 files changed, 35 insertions, 0 deletions
diff --git a/3D.md b/3D.md
new file mode 100644
index 0000000..b5b767c
--- /dev/null
+++ b/3D.md
@@ -0,0 +1,35 @@
+# 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.
+
+## 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?