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

107 lines
3.9 KiB
Text
Raw Normal View History

2019-05-12 18:06:09 +02:00
features:
2020-06-19 12:46:42 +02:00
- Replace assets with completely original ones, rerender images/animations.
2020-06-17 19:23:25 +02:00
- Add optional functions (macro defs.) that get called during various rendering
steps, to e.g. be able to analyze and visualize rendering step by step.
- Benchmarking in test.c.
- Test on big endien.
2019-08-30 03:19:51 +02:00
- Optional OpenGL acceleration, perhaps a separate header file with the same
2019-09-14 20:03:49 +02:00
API. How this can work:
Have a new accelerated render scene function that in the first pass uses OGL
to render info about pixels (barycentric, depth, ...) to a 2D "screen" array
(g buffer), then in the second pass loop over these pixels and on each
rendered pixel call the user pixel funct. Basically deferred rendering in
which the first pass is done with OGL.
2019-08-30 03:19:51 +02:00
2019-06-21 21:29:51 +02:00
- Helper functions for e.g. retrieving and caching UV coords etc. Maybe these
2019-06-24 20:49:00 +02:00
should be in a separate file? DONE
2019-06-21 21:29:51 +02:00
2019-06-24 14:42:43 +02:00
- objtool: An option to parse material groups and generate an array of
2019-06-24 18:00:26 +02:00
per-triangle material indices. DONE
2019-06-24 14:42:43 +02:00
2019-06-23 00:38:32 +02:00
- PC == 2 (and possibly 1) could likely be accelerated by not using interpolate
functions, but rather FastLerStates for the values recomputed after each
2019-06-23 16:01:03 +02:00
row segment. DONE (doesn't work
for PC == 2,
tried)
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-20 02:06:19 +02:00
- function to map one point in 3D space to screen, along with size (for mapping
2019-06-22 22:11:37 +02:00
billboards/sprites etc.) DONE
2019-06-20 02:06:19 +02:00
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
2019-06-22 22:11:37 +02:00
determination in triangle drawing. DONE
2019-06-10 20:02:57 +02:00
- Check (and possibly fix) if any barycentric coord ever exceeds the range
2019-06-22 22:11:37 +02:00
<0,255> due to rounding errors etc. DONE
2019-06-10 20:02:57 +02:00
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-22 22:11:37 +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
2019-06-24 20:49:00 +02:00
- game-like demo (GTA-style, Quake style etc.) DONE
2019-06-12 15:53:12 +02:00
- offline HQ (lerp texuring, normal mapping, reflections, ...) rendering
2019-06-24 20:49:00 +02:00
to PPM image file DONE
2019-06-27 21:56:34 +02:00
- test offline rendering of a high-poly model (see how very small tris
are rendered)
2019-06-12 15:53:12 +02:00
2019-05-16 21:07:11 +02:00
- drawModel: create an option that would use a cache to not transform the same
2019-06-24 21:14:42 +02:00
point twice DONE (doesn't work, tried)
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:
repeated:
- valgrind (and similar) checks
- optimize
- write tests/benchmarks