From 08a5a5f8ac963904d6ba0a8108a3d1867c4785e3 Mon Sep 17 00:00:00 2001 From: milang Date: Sat, 7 Sep 2019 21:23:46 +0200 Subject: [PATCH] restructure headers, and source files --- include/{render => fxengine}/bitmap.h | 0 .../{render/triangle.h => fxengine/face.h} | 18 ++--- include/{render => fxengine}/parameters.h | 6 +- include/fxengine/point.h | 55 +++++++++++++++ include/render/translate.h | 58 +--------------- include/render/zbuffer.h | 2 +- libfxengine.a | Bin 10346 -> 10346 bytes src/{render => }/bitmap.c | 2 +- src/object.c | 64 ------------------ src/{render => }/translate.c | 2 +- src/{render => }/triangle.c | 6 +- src/{render => }/zbuffer.c | 4 +- 12 files changed, 76 insertions(+), 141 deletions(-) rename include/{render => fxengine}/bitmap.h (100%) rename include/{render/triangle.h => fxengine/face.h} (69%) rename include/{render => fxengine}/parameters.h (81%) create mode 100644 include/fxengine/point.h rename src/{render => }/bitmap.c (98%) delete mode 100644 src/object.c rename src/{render => }/translate.c (98%) rename src/{render => }/triangle.c (98%) rename src/{render => }/zbuffer.c (92%) diff --git a/include/render/bitmap.h b/include/fxengine/bitmap.h similarity index 100% rename from include/render/bitmap.h rename to include/fxengine/bitmap.h diff --git a/include/render/triangle.h b/include/fxengine/face.h similarity index 69% rename from include/render/triangle.h rename to include/fxengine/face.h index 6d68446..2e6a4e0 100644 --- a/include/render/triangle.h +++ b/include/fxengine/face.h @@ -1,8 +1,8 @@ -#ifndef RENDER_TRIANGLE_H -#define RENDER_TRIANGLE_H +#ifndef FE_FACE +#define FE_FACE -#include -#include +#include +#include #include /** @@ -25,6 +25,8 @@ struct render_triangle }; typedef struct render_triangle render_triangle; + + /** * @brief Renders a triangle with perspective deformation * @@ -36,11 +38,9 @@ void render_display_triangle(const render_triangle * face); * @brief Clears vram, zbuffer * * @param[in] libprof_channel The libprof channel to be used to count_fps - * @param[in] dh Horizontal direction (rad) - * @param[in] dv Vertical direction (rad) - * @param[in] roulis The roulis (rad) - * @param[in] camera Pointer to the camera */ -void render_update(const uint32_t libprof_channel); +void fe_render_update(const uint32_t libprof_channel); + + #endif diff --git a/include/render/parameters.h b/include/fxengine/parameters.h similarity index 81% rename from include/render/parameters.h rename to include/fxengine/parameters.h index 02cb5bd..8334773 100644 --- a/include/render/parameters.h +++ b/include/fxengine/parameters.h @@ -1,5 +1,5 @@ -#ifndef RENDER_PARAM -#define RENDER_PARAM +#ifndef FE_RENDER_PARAM +#define FE_RENDER_PARAM // Render param @@ -14,4 +14,4 @@ -#endif \ No newline at end of file +#endif diff --git a/include/fxengine/point.h b/include/fxengine/point.h new file mode 100644 index 0000000..bff223f --- /dev/null +++ b/include/fxengine/point.h @@ -0,0 +1,55 @@ +#ifndef FE_POINT +#define FE_POINT + + +#include +#include + +/** + * @brief this struct is a point in 3d, which has coords save as uint32_t + * this is the recommended type for high performance rendering, because the sh3eb-elf architecture + * is 32 bits + * This is also the type used by the rendering triangles. + */ +struct render_integer_position +{ + int32_t x, + y, + z; +}; +typedef struct render_integer_position render_integer_position; + +/** + * @brief this struct is a point in 3d, which has coords save as double + * it is not recommended to use it for high performances rendering, + * because of the sh3eb-elf architecture, which does not support natively floating calculation + */ +struct render_floating_position +{ + double x, + y, + z; +}; +typedef struct render_floating_position render_floating_position; + + +/** + * @brief This is a point which is used for 3d translations and rendering + * integer mode is the best solution to increase perfs, and that's why I didn't have implemented + * the floating_points yet. (Maybe I will never add them) + * To render a triangle, you have to set &point.translated as s1, s2 or even s3 + */ +struct render_integer_point +{ + render_integer_position real; + render_integer_position translated; +}; +typedef struct render_integer_point render_integer_point; + +/** + * mathematics constants + */ +extern const double pi, pi2, pi_sur_2; + + +#endif diff --git a/include/render/translate.h b/include/render/translate.h index 9db18d0..03a3d65 100644 --- a/include/render/translate.h +++ b/include/render/translate.h @@ -1,56 +1,7 @@ #ifndef RENDER_TRANSLATE_H #define RENDER_TRANSLATE_H -#include -#include - -/** - * @brief this struct is a point in 3d, which has coords save as uint32_t - * this is the recommended type for high performance rendering, because the sh3eb-elf architecture is 32 bits - */ -struct render_integer_position -{ - int32_t x, - y, - z; -}; -typedef struct render_integer_position render_integer_position; - -/** - * @brief this struct is a point in 3d, which has coords save as double - * it is not recommended to use it for high performances rendering, because of the sh3eb-elf architecture, which does not support natively floating calculation - */ -struct render_floating_position -{ - double x, - y, - z; -}; -typedef struct render_floating_position render_floating_position; - - -/** - * @brief This is a point which is used for 3d translations and rendering - * integer mode is the best solution to increase perfs, and that's why I didn't have implemented te floating_points yet. - */ -struct render_integer_point -{ - render_integer_position real; - render_integer_position translated; -}; - -typedef struct render_integer_point render_integer_point; - - -// applique la matrice de rotation et les deltas sur les coordonnées d'un point - -/** - * @brief This function rotates and applies perspective on an integer point - * - * @param point The point which needs to be translated - */ -void render_translate(render_integer_point * point); - +#include /** @@ -65,13 +16,6 @@ void render_translate(render_integer_point * point); void render_set(const double dh, const double dv, const double roulis, const render_integer_position * camera); - -/** - * mathematics constants - */ -extern const double pi, pi2, pi_sur_2; - - /** * @brief Sets up an angle mesure between -pi and +pi * diff --git a/include/render/zbuffer.h b/include/render/zbuffer.h index 912223c..89819eb 100644 --- a/include/render/zbuffer.h +++ b/include/render/zbuffer.h @@ -1,7 +1,7 @@ #ifndef RENDER_ZBUFFER #define RENDER_ZBUFFER -#include +#include #include /** FE_zbuffer_clear diff --git a/libfxengine.a b/libfxengine.a index ed83f25bd21e4242324b07f4fe5c4e00822dd25c..c09e718d781537800b474a19fff1fc59316f9285 100644 GIT binary patch delta 80 zcmaDA@G4+}EUSgFg}LcQrG>0OmbroH#fF;vUQpRhutJ&Ef?B{kRx< delta 60 zcmaDA@G4+}EUUSNp{e;srG>1M=c`C>zQ-C0Vfb+`gBh&k InN$le0GAaNHvj+t diff --git a/src/render/bitmap.c b/src/bitmap.c similarity index 98% rename from src/render/bitmap.c rename to src/bitmap.c index e82b06a..7b9ed93 100644 --- a/src/render/bitmap.c +++ b/src/bitmap.c @@ -1,5 +1,5 @@ #include -#include +#include #include #include diff --git a/src/object.c b/src/object.c deleted file mode 100644 index c1433db..0000000 --- a/src/object.c +++ /dev/null @@ -1,64 +0,0 @@ -#include - -#include -#include -#include - -void fxe_object_init(fxe_object * object) -{ - memset(object, 0, sizeof(fxe_object)); -} - - -void fxe_object_set_points(fxe_object * object, render_integer_point * points, uint32_t n, bool copy) -{ - - if (copy) - { - object->points = malloc(n*sizeof(render_integer_point)); - if (!object->points) - return; - memcpy(object->points, points, n*sizeof(render_integer_point)); - //memcpy() - } - - object->p_owner = copy; - object->p_size = n; -} - - -void fxe_object_set_faces(fxe_object * object, render_triangle * faces, uint32_t n, bool copy) -{ - if (copy) - { - object->faces = malloc(n*sizeof(render_integer_point)); - if (!object->faces) - return; - memcpy(object->faces, faces, n*sizeof(render_integer_point)); - } - - object->f_owner = copy; - object->f_size = n; -} - - -void fxe_object_delete(fxe_object * object) -{ - if (object->points && object->p_owner) - free(object->points); - - if (object->faces && object->f_owner) - free(object->faces); - - fxe_object_init(object); -} - - -void fxe_object_display(fxe_object * object) -{ - for (int i = 0; i < object->p_size; i++) - render_translate(&object->points[i]); - - for (int i = 0; i < object->f_size; i++) - render_display_triangle(&object->faces[i]); -} diff --git a/src/render/translate.c b/src/translate.c similarity index 98% rename from src/render/translate.c rename to src/translate.c index 62c8d8f..1ee89a2 100644 --- a/src/render/translate.c +++ b/src/translate.c @@ -1,4 +1,4 @@ -#include +#include #include #include diff --git a/src/render/triangle.c b/src/triangle.c similarity index 98% rename from src/render/triangle.c rename to src/triangle.c index b762cd6..2384b0b 100644 --- a/src/render/triangle.c +++ b/src/triangle.c @@ -1,6 +1,6 @@ -#include -#include -#include +#include +#include +#include #include #ifdef USE_LIBPROF diff --git a/src/render/zbuffer.c b/src/zbuffer.c similarity index 92% rename from src/render/zbuffer.c rename to src/zbuffer.c index 1620ab7..c2d8fab 100644 --- a/src/render/zbuffer.c +++ b/src/zbuffer.c @@ -1,5 +1,5 @@ #include -#include +#include #include #include @@ -22,7 +22,7 @@ static int32_t *zbuffer = (void *)0x88080000 - (((size_char >> 5) << 5) + 1); // gint doesn't provide any prototype for that function which is implemented -/// extern void dma_memset(void *dst, uint32_t l, size_t size); +extern void dma_memset(void *dst, uint32_t l, size_t size); void render_zbuffer_clear() {