diff --git a/README.md b/README.md index fdeef2c..81faad0 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,38 @@ 3D software rasterizer for (not only) resource-limited computers. -If you like this, you may also like my similar project: [raycastlib](https://gitlab.com/drummyfish/raycastlib). \ No newline at end of file +If you like this, you may also like my similar project: [raycastlib](https://gitlab.com/drummyfish/raycastlib). + +## eye-candy previews + +TODO + +## features + +- Very fast, small and efficient. +- Uses only integer math (32bit). +- No dependencies (uses only stdint standard library), extremely portable. +- Single header, KISS. +- Pure C99, tested to run as C++ as well. +- Still flexible -- pixels are left for you to draw in any way you want with a custom fragment-shader like function. +- Triangles provide barycentric coordinates, thanks to which practically anything that can be achieved with OpenGL can be achieved (texturing, shading, normal-mapping, transparency, PBR, shadow mapping, ...). +- Tested on multiple platforms (PC, Arduboy, Pokitto, Gamebuino META). +- Many compile-time options to tune the performance vs quality. +- Well commented and formatted code. +- Completely free of legal restrictions, do literally everything you want. + +## limitations + +- Though performance is high, due to multiplatformness it can't match platform-specific rasterizers written in assembly. +- Proper near-plane culling (subdividing triangles) is missing. You can either cull whole triangles completely or "push" them by the near plane. These options are okay when drawing a models not very close to the camera, but e.g. 3D environments may suffer from artifacts. +- Due to the limitations of 32bit int arithmetic, some types of movement may be jerky. + +TODO + +## how to use + +TODO + +## tips + +- Seeing buggy triangles flashing in front of the camera? With the limited 32bit arithmetic far-away things may be overflowing. Try to scale down the scene. If you also don't mind it, set `S3L_STRICT_NEAR_CULLING` to `1` -- this should probably solve it. \ No newline at end of file