2019-05-12 18:06:09 +02:00
|
|
|
features:
|
|
|
|
|
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
|