1
0
Fork 0
mirror of https://git.coom.tech/drummyfish/small3dlib.git synced 2024-11-21 20:39:57 +01:00
small3dlib/todo.txt

88 lines
2.7 KiB
Text
Raw Normal View History

2019-05-12 18:06:09 +02:00
features:
2019-05-28 19:14:27 +02:00
- presets that can be optionally selected and will configure other constants
(e.g. a "low memory sort strategy" will turn z-buffer off and turn
back-to-front sorting on).
2019-05-26 20:00:28 +02:00
2019-06-04 21:48:58 +02:00
- function for computing normals and lighting
2019-05-26 20:00:28 +02:00
- triangle sorting:
2019-06-02 19:56:33 +02:00
- back-to-front (slower, better memory efficiency) DONE
- front-to-back (faster, but needs 1bit stencil buffer) DONE
2019-05-26 20:00:28 +02:00
2019-06-04 21:48:58 +02:00
- function to set/clear stencil buffer -- can be useful
2019-06-10 20:15:04 +02:00
- Optimize persp. correction!
2019-06-10 20:02:57 +02:00
- Create and use the same function for determining CW/CCW AND left/right vertex
determination in triangle drawing.
- Check (and possibly fix) if any barycentric coord ever exceeds the range
<0,255> due to rounding errors etc.
2019-06-03 13:08:08 +02:00
- dithered barycentric interpolation function that is faster than normal
interpolation -- it will randomly picky one of three values, with greater
probabilities at greater coords
2019-06-02 19:56:33 +02:00
- option to disable baycentric coordinates computing DONE
2019-05-30 20:20:18 +02:00
2019-05-26 20:00:28 +02:00
- Z-buffer:
- full DONE
- reduced (resolution and precision) DONE
- more reduced (4-bit)
2019-05-12 18:06:09 +02:00
2019-06-02 19:56:33 +02:00
- MipMapping? Add triangle size to pixelInfo. DONE
2019-05-29 18:09:59 +02:00
2019-05-12 18:06:09 +02:00
- perspective correction modes:
2019-05-23 15:57:32 +02:00
- none DONE
- full DONE
2019-06-12 15:53:12 +02:00
- approximate DONE
2019-05-12 18:06:09 +02:00
- predefined 3D shapes:
2019-05-23 15:57:32 +02:00
- cube DONE
2019-05-12 18:06:09 +02:00
- sphere
- cylinder
- pyramid
- plane
- Depth computation during rasterization -- this should be an optional thing,
specified with a define (S3L_COMPUTE_DEPTH), which may be turned on
automatically for some modes (e.g. Z-buffer). It should be computed by the
2019-06-02 19:56:33 +02:00
fast lerp and passed in the PixelInfo struct. DONE
2019-06-12 15:53:12 +02:00
2019-06-02 19:56:33 +02:00
- Python tool to convert obj to C array DONE
2019-06-12 15:53:12 +02:00
- Python tool to convert texture images to C array DONE
- create demos:
- model viewer DONE
- game-like demo (GTA-style, Quake style etc.)
- offline HQ (lerp texuring, normal mapping, reflections, ...) rendering
to PPM image file
2019-05-16 21:07:11 +02:00
- drawModel: create an option that would use a cache to not transform the same
point twice
2019-06-12 15:53:12 +02:00
2019-05-21 19:51:32 +02:00
- Optional rendering stats (FPS, rendered triangles, ...).
2019-06-12 15:53:12 +02:00
2019-06-05 22:19:37 +02:00
- profiling functions for optimization
2019-05-12 18:06:09 +02:00
bugs:
2019-06-12 23:41:44 +02:00
- Determining CW/CCW for a triangle is not 100% exact, sometimes leaves holes
in models (some very thin triangles)!
2019-06-09 01:46:10 +02:00
2019-06-11 15:49:37 +02:00
- Barycentric coodinates can get wrong in these ways:
- Any of them can exceed the range <0,511>
- b0 + b1 can be > 511, which causes b2 (= 511 - b0 - b1) to be negative!
2019-06-14 02:02:11 +02:00
- Depth artifacts with PC != 0, can be seen very well in the HQ offline demo.
2019-06-14 04:19:38 +02:00
This appear at bigger depths, which makes the reciprocal values more
imprecise.
2019-06-14 02:02:11 +02:00
2019-05-12 18:06:09 +02:00
repeated:
- valgrind (and similar) checks
- optimize
- write tests/benchmarks