--- /dev/null
+* Documentation
+** Clarify axis orientation (X, Y, Z) for AI assistants and developers
+Add a coordinate system diagram to the documentation.
+
+* Add 3D mouse support
+
+* Demos
+** Add more math formula examples to "Mathematical formulas" demo
+** Allow manual thread count specification in performance test demo
+By default, suggest using half of the available CPU cores.
+
+** Rename shaded polygon demo to "Shape Gallery" or "Shape Library"
+Extend it to display all available primitive shapes with labels,
+documenting each shape and its parameters.
+
+* Performance
+** Benchmark optimal CPU core count
+Determine the ideal number of threads for rendering.
+
+** Autodetect optimal thread count
+Use half of available cores by default, but benchmark first to find
+the sweet spot.
+
+** Developer tool: visualize render segment boundaries
+Draw borders around render segments to show which thread renders which
+area. Allow dynamic segment size adjustment to balance CPU load evenly
+between threads.
+
+** Investigate additional performance optimizations
+Focus on critical pixel fill loops:
+- Textured polygon
+- Flat polygon
+- Line
+- Billboard
+
+* Features
+** Add quaternion math to replace or supplement current rotor system
+** Add polygon reduction based on view distance (LOD)
+** Add object fading based on view distance
+Goal: make it easier to distinguish nearby objects from distant ones.
+
+** Add support for constructive solid geometry (CSG) boolean operations
+** Describe how shading works
+
+Make separate demo about that with shaded spheres and some light
+sources.
+
+Make dedicated tutorial about shading algorithm with screenshot and
+what are available parameters.
+
+** Add shadow casting
+
++ Note: Maybe skip this and go straight for: [[id:bcea8a81-9a9d-4daa-a273-3cf4340b769b][raytraced global
+ illumination]].
+
+Study how shadows are done. Evaluate realtime shadows vs pre-baked
+shadows.
+
+** Add raytraced global illumination support
+:PROPERTIES:
+:ID: bcea8a81-9a9d-4daa-a273-3cf4340b769b
+:END:
+
+- Raytracing must have configurable ray bounce count.
+- Raytracing results should be cached and cache must be updated
+ on-demand or when light sources or geometry changes.
+
+** Move TODO from index.org into current file
+** Add dynamic resolution support
++ When there are fast-paced scenes, dynamically and temporarily reduce
+ image resolution if needed to maintain desired FPS.
+
+* Add clickable vertexes
+
+Circular areas with radius. Can be visible, partially transparent or
+invisible.
+
+Use them in 3D graph demo. Clicking on vertexes should place marker
+and information billboard showing values at given XYZ location.
+
+Add formula textbox display on top of 3D graph.
+- Consider making separate formula explorer app where formula will be
+ editable and there will be gallery of pre-vetted formulas.
+ - make this app under Sixth parent project.
+ - Consider integrating with FriCAS or similar CAS software so that
+ formula parsing and computation happens there.
+
+* Bugs
+** Fix text rendering outside thread-specific drawing area
+Occurs when text is forward-oriented.
+* Study and apply where applicable
++ Read this as example, and apply improvements/fixes where applicable:
+ http://blog.rogach.org/2015/08/how-to-create-your-own-simple-3d-render.html
+
++ Improve triangulation. Read: https://ianthehenry.com/posts/delaunay/
[[https://www3.svjatoslav.eu/projects/javainspect/][JavaInspect]] utility)
- Study [[https://www3.svjatoslav.eu/projects/sixth-3d-demos/][demo applications]].
-* Future ideas
-:PROPERTIES:
-:CUSTOM_ID: future-ideas
-:ID: 2258231b-007d-42d3-9ba9-a9957a0dfc56
-:END:
-
-+ Read this as example, and apply improvements/fixes where applicable:
- http://blog.rogach.org/2015/08/how-to-create-your-own-simple-3d-render.html
-
-+ Improve triangulation. Read: https://ianthehenry.com/posts/delaunay/
-
-+ Partial region/frame repaint: when only one small object changed on
- the scene, it would be faster to re-render that specific area.
-
- + Once partial rendering works, it would be easy to add multi-core
- rendering support. So that each core renders its own region of
- the screen.
-
-+ Anti-aliasing. Would improve text readability. If antialiasing is
- too expensive for every frame, it could be used only for last frame
- before animations become still and waiting for user input starts.
-
-** Render only visible polygons
-:PROPERTIES:
-:CUSTOM_ID: render-only-visible-polygons
-:ID: c32d839a-cfa8-4aec-a8e0-8c9e7ebb8bba
-:END:
-
-Very high-level idea description:
-
-+ This would significantly reduce RAM <-> CPU traffic.
-
-+ General algorithm description:
- + For each horizontal scanline:
- + sort polygon edges from left to right
- + while iterating and drawing pixels over screen X axis (left to
- right) track next appearing/disappearing polygons.
- + For each polygon edge update Z sorted active polygons list.
- + Only draw pixel from the top-most polygon.
- + Only if polygon area is transparent/half-transparent add
- colors from the polygons below.
-
-+ As a bonus, this would allow to track which polygons are really
- visible in the final scene for each frame.
-
- + Such information allows further optimizations:
-
- + Dynamic geometry simplification:
- + Dynamically detect and replace invisible objects from the
- scene with simplified bounding box.
-
- + Dynamically replace bounding box with actual object once it
- becomes visible.
- + Dynamically unload unused textures from RAM.