From 4aaf60204360adadf8e7fcc04cae6e03d83440a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miloslav=20=C4=8C=C3=AD=C5=BE?= Date: Thu, 18 Jun 2020 12:58:58 +0000 Subject: [PATCH 1/5] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a280bc7..4b529fb 100644 --- a/README.md +++ b/README.md @@ -39,12 +39,13 @@ PC (SDL, offline rendering, terminal): - **Different drawing strategies** to choose from: none, z-buffer (none, full, reduced), triangle sorting (back-to-front, fron-to-back with stencil buffer). - Triangles provide **barycentric coordinates**, thanks to which practically anything that can be achieved with OpenGL can be achieved (texturing, shading, normal-mapping, texture fitering, transparency, PBR, shadow mapping, MIP mapping, ...). - **Top-left rasterization rule**, pixels of adjacent triangles don't overlap or have holes (just like in OpenGL). -- **Tested on multiple platforms** (PC, Pokitto, Gamebuino META). +- **Tested on multiple platforms** (little endian PC, Pokitto and Gamebuino META embedded consoles, big endian PowerPC emulator). +- **Extremely portable** due to no dependencies, no float, no build systems, low HW requirements, endian independence etc. - **Many compile-time options** to tune the performance vs quality. - **Similar to OpenGL** in principle, but simpler, easier to use, with higher-level features. - **Tools** (Python scripts) for converting 3D models and textures to C array format used by the library. - **Well commented** and formatted code. Automatic documentation (comments + provided Doxyfile). -- Completely **free of legal restrictions**, do literally anything you want. +- Completely **free of legal restrictions**, public domain, do literally anything you want. **NOTE**: Backwards compatibility isn't a goal of this libraray. It is meant to be an as-is set of tools that the users is welcome to adjust for their From 9c06c7dee4aadeeea113ad15f06281821314c0c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miloslav=20=C4=8C=C3=AD=C5=BE?= Date: Thu, 18 Jun 2020 13:05:03 +0000 Subject: [PATCH 2/5] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4b529fb..61cfab3 100644 --- a/README.md +++ b/README.md @@ -57,8 +57,9 @@ interface. - **No scenegraph** (object parenting), just a scene list. Parenting can still be achieved by using cutom transform matrices. - Though performance is high, due to multiplatformness it **probably can't match platform-specific rasterizers written in assembly**. - There is **no far plane**. -- There is **no subpixel accuracy**. -- There is a near plane, but a **proper culling by it (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 model not very close to the camera, but e.g. 3D environments may suffer from artifacts. +- There is **no subpixel accuracy** (PS1 style graphics). +- There is **no antialiasing**, but you can still achieve it by supersampling (render in higher resolution and downscale) or filters like FXAA. +- There is a near plane but a **proper culling by it (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 model not very close to the camera, but e.g. 3D environments may suffer from artifacts. - Due to the limitations of 32bit integer arithmetics, some types of movement (particularly camera) **may look jerky, and artifact may appear** in specific situations. ## how to use From 54c1d37491186a2a2eab5617d9f70390cbb66e50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miloslav=20=C4=8C=C3=AD=C5=BE?= Date: Thu, 18 Jun 2020 13:11:52 +0000 Subject: [PATCH 3/5] Update README.md --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 61cfab3..eb15aba 100644 --- a/README.md +++ b/README.md @@ -81,14 +81,15 @@ The basic philosophy is: - Use the provided Python tools to convert your model and textures to C arrays, include them in your program and set up the scene struct. - Init the 3D models and the scene with provided init functions (`S3L_init*`), set the position of the camera. -- Call `S3L_drawScene` on the scene to perform the frame rendering. This will cause the - library to start calling the `S3L_PIXEL_FUNCTION` in order to draw the frame. You can of course +- Call `S3L_newFrame` to prepare for rendering, then call `S3L_drawScene` on the scene to perform the frame rendering. + This will cause the library to start rendering and calling the `S3L_PIXEL_FUNCTION` in order to draw the frame. You can of course modify the function or write a similar one of your own using the more low-level functions which are also provided. - Fixed point arithmetics is used as a principle, but there is no abstraction above it, everything is simply an integer (`S3L_Unit` type). The space is considered to be a dense grid, and what would normally be a 1.0 float value is an int value equal to `S3L_FRACTIONS_PER_UNIT` units. Numbers are normalized by this - constant, so e.g. the sin function returns a value from `-S3L_FRACTIONS_PER_UNIT` to `S3L_FRACTIONS_PER_UNIT`. + constant, so e.g. the sin function returns a value from `-S3L_FRACTIONS_PER_UNIT` to `S3L_FRACTIONS_PER_UNIT`. You have to + pass numbers of this format to the library functions, but of course you may chooe to use floats in other places of your program. ## tips/troubleshooting From adf825ebeaf22fa9dad77656d542ac12b504cf9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miloslav=20=C4=8C=C3=AD=C5=BE?= Date: Thu, 18 Jun 2020 13:15:49 +0000 Subject: [PATCH 4/5] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index eb15aba..0a6807c 100644 --- a/README.md +++ b/README.md @@ -104,10 +104,12 @@ The basic philosophy is: ## license -Everything is CC0 1.0 (public domain, https://creativecommons.org/publicdomain/zero/1.0/) + a waiver of all other IP rights (including patents). +Everything in this repository is CC0 1.0 (public domain, https://creativecommons.org/publicdomain/zero/1.0/) + a waiver of all other IP rights (including patents and trademarks). The art used in demos is either my own released under CC0 or someone else's released under CC0. -Please support free software and free culture by using free licenses and/or waivers. +This project is made out of love and to be truly helpful to everyone, not for any self interest. I want it to forever stay completely in the public domain, not owned by anyone. + +This is not mandatory but please consider supporting free software and free culture by using free licenses and/or waivers. If you'd like to support me or just read something about me and my projects, visit my site: [www.tastyfish.cz](http://www.tastyfish.cz/). From 7bc817f858e5bbcae347e1fa3021c9e382bb2190 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miloslav=20=C4=8C=C3=AD=C5=BE?= Date: Fri, 19 Jun 2020 10:46:42 +0000 Subject: [PATCH 5/5] Update todo.txt --- todo.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/todo.txt b/todo.txt index 2c0e307..20159e1 100644 --- a/todo.txt +++ b/todo.txt @@ -1,5 +1,7 @@ features: +- Replace assets with completely original ones, rerender images/animations. + - 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.