commit 9f15095
shrub
·
2026-07-30 14:12:56 +0000 UTC
parent fca4c34
clang format and license
17 files changed,
+194,
-177
A
LICENSE
+12,
-0
1@@ -0,0 +1,12 @@
2+AlignEscapedNewlines: DontAlign
3+AlignTrailingComments: false
4+BreakBeforeBraces: Linux
5+ColumnLimit: 0
6+Cpp11BracedListStyle: false
7+IndentCaseLabels: false
8+IndentPPDirectives: None
9+IndentWidth: 8
10+PointerAlignment: Left
11+SortIncludes: false
12+TabWidth: 8
13+UseTab: ForIndentation
A
LICENSE
+13,
-0
1@@ -0,0 +1,13 @@
2+Copyright (c) the magnolia contributors
3+
4+Permission to use, copy, modify, and distribute this software for any
5+purpose with or without fee is hereby granted, provided that the above
6+copyright notice and this permission notice appear in all copies.
7+
8+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+1,
-2
1@@ -11,7 +11,7 @@ typedef struct {
2
3 float fov;
4 float near; /* near plane */
5- float far; /* far plane */
6+ float far; /* far plane */
7 } MGCamera;
8
9 /* initialise camera at `pos` */
10@@ -36,4 +36,3 @@ MGMat4 camera_get_view(const MGCamera* cam);
11 MGMat4 camera_get_proj(const MGCamera* cam, float aspect);
12
13 #endif /* CLIENT_CAMERA_H */
14-
+1,
-2
1@@ -41,7 +41,7 @@ MGVec4 MG_V4(float x, float y, float z, float w);
2 MGVec3 MG_AddV3(MGVec3 left, MGVec3 right);
3 MGVec3 MG_SubV3(MGVec3 left, MGVec3 right);
4 MGVec3 MG_MulV3F(MGVec3 left, float right);
5-float MG_DotV3(MGVec3 left, MGVec3 right);
6+float MG_DotV3(MGVec3 left, MGVec3 right);
7 MGVec3 MG_Cross(MGVec3 left, MGVec3 right);
8 MGVec3 MG_NormV3(MGVec3 vec);
9
10@@ -53,4 +53,3 @@ MGMat4 MG_Perspective_RH_NO(float fov_y, float aspect, float near_z, float far_z
11 MGMat4 MG_LookAt_RH(MGVec3 eye, MGVec3 center, MGVec3 up);
12
13 #endif /* MGMATH_H */
14-
+6,
-6
1@@ -17,13 +17,13 @@ typedef struct {
2 } MGVidBE;
3
4 typedef struct {
5- MGWindow* win;
6- MGVidBE vbe;
7+ MGWindow* win;
8+ MGVidBE vbe;
9 const char* title;
10- i32 x;
11- i32 y;
12- i32 width;
13- i32 height;
14+ i32 x;
15+ i32 y;
16+ i32 width;
17+ i32 height;
18 } MGContext;
19
20 /* get drawable screen size. usually different due to hi-dpi options
+7,
-8
1@@ -6,10 +6,10 @@
2 #include "platform/platform.h"
3
4 typedef u32 MGMesh;
5-#define MGMESH_INVALID ((MGMesh) 0)
6+#define MGMESH_INVALID ((MGMesh)0)
7
8 typedef u32 MGTexture;
9-#define MGTEXTURE_INVALID ((MGTexture) 0)
10+#define MGTEXTURE_INVALID ((MGTexture)0)
11
12 typedef struct {
13 float x;
14@@ -19,14 +19,14 @@ typedef struct {
15 float u;
16 float v;
17
18- u32 col;
19+ u32 col;
20 } MGVertex;
21
22 typedef struct {
23- const MGVertex* vtc; /* vertices */
24- u32 vtcc; /* vertices count */
25- const u16* idc; /* indecies */
26- u32 idcc; /* indecies count */
27+ const MGVertex* vtc; /* vertices */
28+ u32 vtcc; /* vertices count */
29+ const u16* idc; /* indecies */
30+ u32 idcc; /* indecies count */
31 } MGMeshDesc;
32
33 /* create renderer with chosen context
34@@ -58,4 +58,3 @@ MGTexture renderer_texture_load(const char* path);
35 void renderer_texture_destroy(MGTexture id);
36
37 #endif /* RENDERER_H */
38-
+30,
-30
1@@ -4,52 +4,52 @@
2 #include "renderer/renderer.h"
3
4 #define RGBA(r, g, b, a) ( \
5- ((u32)(r) ) | \
6- ((u32)(g) << 8) | \
7- ((u32)(b) << 16) | \
8- ((u32)(a) << 24) \
9-)
10+ ((u32)(r)) | \
11+ ((u32)(g) << 8) | \
12+ ((u32)(b) << 16) | \
13+ ((u32)(a) << 24))
14
15 MGMesh block_mesh_create(void);
16
17 static const MGVertex vtc[24] = {
18 /* north: -z */
19- {0.0f, 0.0f, 0.0f, 0.0f, 1.0f, RGBA(255, 0, 0, 255)},
20- {0.0f, 1.0f, 0.0f, 0.0f, 0.0f, RGBA(255, 0, 0, 255)},
21- {1.0f, 1.0f, 0.0f, 1.0f, 0.0f, RGBA(255, 0, 0, 255)},
22- {1.0f, 0.0f, 0.0f, 1.0f, 1.0f, RGBA(255, 0, 0, 255)},
23+ { 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, RGBA(255, 0, 0, 255) },
24+ { 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, RGBA(255, 0, 0, 255) },
25+ { 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, RGBA(255, 0, 0, 255) },
26+ { 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, RGBA(255, 0, 0, 255) },
27
28 /* south: +z */
29- {1.0f, 0.0f, 1.0f, 0.0f, 1.0f, RGBA(0, 255, 0, 255)},
30- {1.0f, 1.0f, 1.0f, 0.0f, 0.0f, RGBA(0, 255, 0, 255)},
31- {0.0f, 1.0f, 1.0f, 1.0f, 0.0f, RGBA(0, 255, 0, 255)},
32- {0.0f, 0.0f, 1.0f, 1.0f, 1.0f, RGBA(0, 255, 0, 255)},
33+ { 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, RGBA(0, 255, 0, 255) },
34+ { 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, RGBA(0, 255, 0, 255) },
35+ { 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, RGBA(0, 255, 0, 255) },
36+ { 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, RGBA(0, 255, 0, 255) },
37
38 /* west: -x */
39- {0.0f, 0.0f, 1.0f, 0.0f, 1.0f, RGBA(0, 0, 255, 255)},
40- {0.0f, 1.0f, 1.0f, 0.0f, 0.0f, RGBA(0, 0, 255, 255)},
41- {0.0f, 1.0f, 0.0f, 1.0f, 0.0f, RGBA(0, 0, 255, 255)},
42- {0.0f, 0.0f, 0.0f, 1.0f, 1.0f, RGBA(0, 0, 255, 255)},
43+ { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, RGBA(0, 0, 255, 255) },
44+ { 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, RGBA(0, 0, 255, 255) },
45+ { 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, RGBA(0, 0, 255, 255) },
46+ { 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, RGBA(0, 0, 255, 255) },
47
48 /* east: +x */
49- {1.0f, 0.0f, 0.0f, 0.0f, 1.0f, RGBA(255, 255, 0, 255)},
50- {1.0f, 1.0f, 0.0f, 0.0f, 0.0f, RGBA(255, 255, 0, 255)},
51- {1.0f, 1.0f, 1.0f, 1.0f, 0.0f, RGBA(255, 255, 0, 255)},
52- {1.0f, 0.0f, 1.0f, 1.0f, 1.0f, RGBA(255, 255, 0, 255)},
53+ { 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, RGBA(255, 255, 0, 255) },
54+ { 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, RGBA(255, 255, 0, 255) },
55+ { 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, RGBA(255, 255, 0, 255) },
56+ { 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, RGBA(255, 255, 0, 255) },
57
58 /* bottom: -y */
59- {0.0f, 0.0f, 1.0f, 0.0f, 1.0f, RGBA(255, 0, 255, 255)},
60- {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, RGBA(255, 0, 255, 255)},
61- {1.0f, 0.0f, 0.0f, 1.0f, 0.0f, RGBA(255, 0, 255, 255)},
62- {1.0f, 0.0f, 1.0f, 1.0f, 1.0f, RGBA(255, 0, 255, 255)},
63+ { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, RGBA(255, 0, 255, 255) },
64+ { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, RGBA(255, 0, 255, 255) },
65+ { 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, RGBA(255, 0, 255, 255) },
66+ { 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, RGBA(255, 0, 255, 255) },
67
68 /* top: +y */
69- {0.0f, 1.0f, 0.0f, 0.0f, 1.0f, RGBA(0, 255, 255, 255)},
70- {0.0f, 1.0f, 1.0f, 0.0f, 0.0f, RGBA(0, 255, 255, 255)},
71- {1.0f, 1.0f, 1.0f, 1.0f, 0.0f, RGBA(0, 255, 255, 255)},
72- {1.0f, 1.0f, 0.0f, 1.0f, 1.0f, RGBA(0, 255, 255, 255)}
73+ { 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, RGBA(0, 255, 255, 255) },
74+ { 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, RGBA(0, 255, 255, 255) },
75+ { 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, RGBA(0, 255, 255, 255) },
76+ { 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, RGBA(0, 255, 255, 255) }
77 };
78
79+/* clang-format off */
80 static const u16 idc[36] = {
81 0, 1, 2, 0, 2, 3,
82 4, 5, 6, 4, 6, 7,
83@@ -58,6 +58,7 @@ static const u16 idc[36] = {
84 16, 17, 18, 16, 18, 19,
85 20, 21, 22, 20, 22, 23,
86 };
87+/* clang-format on */
88
89 MGMesh block_mesh_create(void)
90 {
91@@ -66,4 +67,3 @@ MGMesh block_mesh_create(void)
92 }
93
94 #endif /* TEST_BLOCK_H */
95-
+1,
-2
1@@ -8,7 +8,7 @@
2 #include "renderer/test_block.h"
3
4 typedef struct {
5- MGMesh mesh;
6+ MGMesh mesh;
7 MGTexture texture;
8 } Block;
9
10@@ -100,4 +100,3 @@ void test_scene_destroy(void)
11 }
12
13 #endif /* TEST_SCENE_H */
14-
+5,
-6
1@@ -3,14 +3,13 @@
2
3 #include <stdint.h>
4
5-typedef int8_t i8;
6-typedef int16_t i16;
7-typedef int32_t i32;
8-typedef int64_t i64;
9-typedef uint8_t u8;
10+typedef int8_t i8;
11+typedef int16_t i16;
12+typedef int32_t i32;
13+typedef int64_t i64;
14+typedef uint8_t u8;
15 typedef uint16_t u16;
16 typedef uint32_t u32;
17 typedef uint64_t u64;
18
19 #endif /* TYPES_H */
20-
+16,
-17
1@@ -2,39 +2,38 @@
2 #define UTIL_H
3
4 typedef enum { /* TODO: rename to MG_EC_... */
5- MG_ERR_EXIT_SUCCESS,
6- MG_ERR_EXIT_FAILURE,
7+ MG_ERR_EXIT_SUCCESS,
8+ MG_ERR_EXIT_FAILURE,
9
10- MG_ERR_SDL_INIT,
11- MG_ERR_SDL_CREATE_WIN,
12+ MG_ERR_SDL_INIT,
13+ MG_ERR_SDL_CREATE_WIN,
14
15- MG_ERR_GL_CTX_CREATE,
16- MG_ERR_GL_CTX_ACTIVATE,
17+ MG_ERR_GL_CTX_CREATE,
18+ MG_ERR_GL_CTX_ACTIVATE,
19
20- MG_ERR_SHADER_CREATE,
21+ MG_ERR_SHADER_CREATE,
22
23- MG_ERR_PIPELINE_CREATE,
24+ MG_ERR_PIPELINE_CREATE,
25
26- MG_ERR_MESH_CREATE,
27+ MG_ERR_MESH_CREATE,
28
29- MG_ERR_TEXTURE_LOAD,
30- MG_ERR_TEXTURE_CREATE,
31- MG_ERR_SAMPLER_CREATE,
32- MG_ERR_VIEW_CREATE,
33+ MG_ERR_TEXTURE_LOAD,
34+ MG_ERR_TEXTURE_CREATE,
35+ MG_ERR_SAMPLER_CREATE,
36+ MG_ERR_VIEW_CREATE,
37
38- MG_ERR_REN_CREATE,
39+ MG_ERR_REN_CREATE,
40
41- MG_ERR_LAST
42+ MG_ERR_LAST
43 } MGErrorCodes;
44
45 typedef enum {
46 LOG_INF, /* info */
47 LOG_ERR, /* error */
48- LOG_DBG /* debug */
49+ LOG_DBG /* debug */
50 } LogType;
51
52 void mg_die(MGErrorCodes ec, const char* fmt, ...);
53 void mg_log(LogType lt, const char* fmt, ...);
54
55 #endif /* UTIL_H */
56-
+0,
-1
1@@ -70,4 +70,3 @@ MGMat4 camera_get_proj(const MGCamera* cam, float aspect)
2 {
3 return MG_Perspective_RH_NO(cam->fov, aspect, cam->near, cam->far);
4 }
5-
+7,
-4
1@@ -8,9 +8,13 @@
2 #include "renderer/test_scene.h"
3
4 static MGContext ctx = {
5- NULL, {NULL},
6+ NULL,
7+ { NULL },
8 "Magnolia",
9- 0, 0, 1024, 768,
10+ 0,
11+ 0,
12+ 1024,
13+ 768,
14 };
15
16 static void input(void)
17@@ -49,7 +53,7 @@ static void input(void)
18 move = MG_MulV3F(move, 4.0f * dt); /* arbritrary movement speed */
19 camera_move(&cam, move);
20 SDL_GetRelativeMouseState(&mx, &my);
21- camera_rotate(&cam, mx * sensitivity, -my*sensitivity);
22+ camera_rotate(&cam, mx * sensitivity, -my * sensitivity);
23 }
24
25 int main(void)
26@@ -77,4 +81,3 @@ int main(void)
27 platform_shutdown(&ctx);
28 return MG_ERR_EXIT_SUCCESS;
29 }
30-
+3,
-5
1@@ -168,9 +168,7 @@ MGMat4 MG_Perspective_RH_NO(float fov_y, float aspect, float near_z, float far_z
2 MGMat4 MG_LookAt_RH(MGVec3 eye, MGVec3 center, MGVec3 up)
3 {
4 return mg_from_hmm_m4(HMM_LookAt_RH(
5- mg_to_hmm_v3(eye),
6- mg_to_hmm_v3(center),
7- mg_to_hmm_v3(up)
8- ));
9+ mg_to_hmm_v3(eye),
10+ mg_to_hmm_v3(center),
11+ mg_to_hmm_v3(up)));
12 }
13-
+6,
-7
1@@ -14,7 +14,7 @@ void platform_get_drawable_size(MGContext* ctx, i32* width, i32* height)
2
3 void platform_init(MGContext* ctx)
4 {
5- (void) ctx;
6+ (void)ctx;
7 if (SDL_Init(SDL_INIT_VIDEO) != 0)
8 mg_die(MG_ERR_SDL_INIT, "SDL_Init failed: %s", SDL_GetError());
9
10@@ -22,7 +22,7 @@ void platform_init(MGContext* ctx)
11 /* TODO: OpenGL specifis */
12 SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
13 SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
14- SDL_GL_SetAttribute( SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
15+ SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
16 SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
17 SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
18 #endif
19@@ -33,7 +33,7 @@ i32 platform_poll(MGContext* ctx)
20 {
21 SDL_Event ev;
22 while (SDL_PollEvent(&ev)) {
23- switch(ev.type) {
24+ switch (ev.type) {
25 case SDL_QUIT:
26 return 0;
27
28@@ -86,15 +86,14 @@ void platform_shutdown(MGContext* ctx)
29
30 void platform_window_create(MGContext* ctx)
31 {
32- u32 flags = SDL_WINDOW_RESIZABLE|SDL_WINDOW_ALLOW_HIGHDPI;
33+ u32 flags = SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI;
34 #ifdef MG_RENDERER_SOKOL
35 flags |= SDL_WINDOW_OPENGL;
36 #endif
37
38 ctx->win = SDL_CreateWindow(
39- ctx->title, ctx->x, ctx->y, ctx->width, ctx->height,
40- flags
41- );
42+ ctx->title, ctx->x, ctx->y, ctx->width, ctx->height,
43+ flags);
44
45 if (!ctx->win)
46 mg_die(MG_ERR_SDL_CREATE_WIN, "Failed to create window: %s", SDL_GetError());
+26,
-25
1@@ -23,35 +23,35 @@
2
3 typedef struct {
4 MGVertex* vtc; /* vertices */
5- u16* idc; /* indices */
6- u32 ic; /* index count */
7- i8 used;
8+ u16* idc; /* indices */
9+ u32 ic; /* index count */
10+ i8 used;
11 } RendererMesh;
12
13 typedef struct {
14 u8* pixels;
15 i32 width;
16 i32 height;
17- i8 used;
18+ i8 used;
19 } RendererTexture;
20
21 typedef struct {
22- MGContext* ctx;
23- i8 pass; /* basically a bool; in
24- render pass or not */
25+ MGContext* ctx;
26+ i8 pass; /* basically a bool; in
27+ render pass or not */
28
29 SDL_Texture* screen_texture;
30- u32* framebuffer;
31- i32 width;
32- i32 height;
33+ u32* framebuffer;
34+ i32 width;
35+ i32 height;
36
37- RendererMesh meshes[MAX_MESHES];
38+ RendererMesh meshes[MAX_MESHES];
39 RendererTexture textures[MAX_TEXTURES];
40
41- RendererMesh* active_mesh;
42+ RendererMesh* active_mesh;
43 RendererTexture* active_texture;
44- u32 active_triangle;
45- i32 tri_uvs[6];
46+ u32 active_triangle;
47+ i32 tri_uvs[6];
48 } RendererState;
49
50 typedef struct {
51@@ -110,12 +110,11 @@ static void create_screen_texture(i32 width, i32 height)
52 SDL_DestroyTexture(ren.screen_texture);
53
54 ren.screen_texture = SDL_CreateTexture(
55- ren.ctx->vbe.renderer,
56- SDL_PIXELFORMAT_RGBA8888,
57- SDL_TEXTUREACCESS_STREAMING,
58- width,
59- height
60- );
61+ ren.ctx->vbe.renderer,
62+ SDL_PIXELFORMAT_RGBA8888,
63+ SDL_TEXTUREACCESS_STREAMING,
64+ width,
65+ height);
66
67 if (!ren.screen_texture)
68 mg_die(MG_ERR_REN_CREATE, "Failed to create small3dlib texture: %s", SDL_GetError());
69@@ -244,10 +243,12 @@ static u32 sample_texture(const RendererMesh* mesh, const RendererTexture* textu
70
71 x = (barycentric[0] * ren.tri_uvs[0] +
72 barycentric[1] * ren.tri_uvs[2] +
73- barycentric[2] * ren.tri_uvs[4]) / (S3L_F / 8);
74+ barycentric[2] * ren.tri_uvs[4]) /
75+ (S3L_F / 8);
76 y = (barycentric[0] * ren.tri_uvs[1] +
77 barycentric[1] * ren.tri_uvs[3] +
78- barycentric[2] * ren.tri_uvs[5]) / (S3L_F / 8);
79+ barycentric[2] * ren.tri_uvs[5]) /
80+ (S3L_F / 8);
81
82 x %= texture->width;
83 y %= texture->height;
84@@ -365,7 +366,7 @@ MGMesh renderer_backend_mesh_create(const MGMeshDesc* desc)
85 if (!mesh->vtc || !mesh->idc) {
86 free(mesh->vtc);
87 free(mesh->idc);
88- *mesh = (RendererMesh){0};
89+ *mesh = (RendererMesh){ 0 };
90 mg_log(LOG_ERR, "Failed to allocate mesh data");
91 return MGMESH_INVALID;
92 }
93@@ -444,7 +445,7 @@ void renderer_backend_mesh_destroy(MGMesh id)
94
95 free(mesh->idc);
96 free(mesh->vtc);
97- *mesh = (RendererMesh){0};
98+ *mesh = (RendererMesh){ 0 };
99 }
100
101 MGTexture renderer_backend_texture_load(const char* path)
102@@ -495,5 +496,5 @@ void renderer_backend_texture_destroy(MGTexture id)
103 return;
104
105 stbi_image_free(texture->pixels);
106- *texture = (RendererTexture){0};
107+ *texture = (RendererTexture){ 0 };
108 }
+60,
-61
1@@ -13,26 +13,26 @@
2 typedef struct {
3 sg_buffer vb; /* vertex buffer */
4 sg_buffer ib; /* index buffer */
5- u32 ic; /* index count */
6- i8 used;
7+ u32 ic; /* index count */
8+ i8 used;
9 } RendererMesh;
10
11 typedef struct {
12 sg_image image;
13- sg_view view;
14- i8 used;
15+ sg_view view;
16+ i8 used;
17 } RendererTexture;
18
19 typedef struct {
20 MGContext* ctx;
21- i8 pass; /* basically a bool; in
22- render pass or not */
23+ i8 pass; /* basically a bool; in
24+ render pass or not */
25
26- sg_shader shader;
27+ sg_shader shader;
28 sg_pipeline pipeline;
29- sg_sampler sampler;
30+ sg_sampler sampler;
31
32- RendererMesh meshes[MAX_MESHES];
33+ RendererMesh meshes[MAX_MESHES];
34 RendererTexture textures[MAX_MESHES];
35 } RendererState;
36
37@@ -48,40 +48,40 @@ static void sokol_log(const char* tag, u32 level, u32 item, const char* msg, u32
38 static RendererState ren;
39 /* TODO: textures */
40 static const char* vsdr =
41-"#version 410\n"
42-"layout(location=0) in vec3 position;\n"
43-"layout(location=1) in vec2 texcoord0;\n"
44-"layout(location=2) in vec4 color0;\n"
45-"\n"
46-"uniform mat4 mvp;\n"
47-"\n"
48-"out vec2 uv;\n"
49-"out vec4 colour;\n"
50-"\n"
51-"void main(void)\n"
52-"{\n"
53-" gl_Position = mvp * vec4(position, 1.0);\n"
54-" uv = texcoord0;\n"
55-" colour = color0;\n"
56-"}\n";
57+ "#version 410\n"
58+ "layout(location=0) in vec3 position;\n"
59+ "layout(location=1) in vec2 texcoord0;\n"
60+ "layout(location=2) in vec4 color0;\n"
61+ "\n"
62+ "uniform mat4 mvp;\n"
63+ "\n"
64+ "out vec2 uv;\n"
65+ "out vec4 colour;\n"
66+ "\n"
67+ "void main(void)\n"
68+ "{\n"
69+ " gl_Position = mvp * vec4(position, 1.0);\n"
70+ " uv = texcoord0;\n"
71+ " colour = color0;\n"
72+ "}\n";
73 static const char* fsdr =
74-"#version 410\n"
75-"in vec2 uv;\n"
76-"in vec4 colour;\n"
77-"\n"
78-"uniform sampler2D tex;\n"
79-"\n"
80-"out vec4 frag_colour;\n"
81-"\n"
82-"void main(void)\n"
83-"{\n"
84-" frag_colour = texture(tex, uv);\n"
85-"}\n";
86+ "#version 410\n"
87+ "in vec2 uv;\n"
88+ "in vec4 colour;\n"
89+ "\n"
90+ "uniform sampler2D tex;\n"
91+ "\n"
92+ "out vec4 frag_colour;\n"
93+ "\n"
94+ "void main(void)\n"
95+ "{\n"
96+ " frag_colour = texture(tex, uv);\n"
97+ "}\n";
98
99 static void create_pipelines(void)
100 {
101- sg_shader_desc shader_desc = {0};
102- sg_pipeline_desc pipeline_desc = {0};
103+ sg_shader_desc shader_desc = { 0 };
104+ sg_pipeline_desc pipeline_desc = { 0 };
105
106 /* shader descriptor */
107 shader_desc.vertex_func.source = vsdr;
108@@ -92,8 +92,8 @@ static void create_pipelines(void)
109 shader_desc.uniform_blocks[0].stage = SG_SHADERSTAGE_VERTEX;
110 shader_desc.uniform_blocks[0].size = sizeof(float) * 16; /* size of mvp matrix */
111 shader_desc.uniform_blocks[0].layout = SG_UNIFORMLAYOUT_STD140;
112- shader_desc.uniform_blocks[0] .glsl_uniforms[0].glsl_name = "mvp";
113- shader_desc.uniform_blocks[0] .glsl_uniforms[0].type = SG_UNIFORMTYPE_MAT4;
114+ shader_desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "mvp";
115+ shader_desc.uniform_blocks[0].glsl_uniforms[0].type = SG_UNIFORMTYPE_MAT4;
116
117 /* textures */
118 shader_desc.views[0].texture.stage = SG_SHADERSTAGE_FRAGMENT;
119@@ -129,7 +129,7 @@ static void create_pipelines(void)
120
121 static void create_sampler(void)
122 {
123- sg_sampler_desc desc = {0};
124+ sg_sampler_desc desc = { 0 };
125
126 desc.min_filter = SG_FILTER_NEAREST;
127 desc.mag_filter = SG_FILTER_NEAREST;
128@@ -151,17 +151,16 @@ static void sokol_log(const char* tag, u32 level, u32 item, const char* msg, u32
129 type = level <= 1 ? LOG_ERR : LOG_DBG;
130
131 mg_log(
132- type, "%s: %s [%s:%u]",
133- tag ? tag : "Sokol",
134- msg ? msg : "No message",
135- file ? file : "Unknown",
136- ln
137- );
138+ type, "%s: %s [%s:%u]",
139+ tag ? tag : "Sokol",
140+ msg ? msg : "No message",
141+ file ? file : "Unknown",
142+ ln);
143 }
144
145 void renderer_backend_create(MGContext* ctx)
146 {
147- sg_desc desc = {0};
148+ sg_desc desc = { 0 };
149
150 ren.ctx = ctx;
151 ren.pass = 0;
152@@ -182,7 +181,7 @@ void renderer_backend_create(MGContext* ctx)
153
154 void renderer_backend_begin(void)
155 {
156- sg_pass pass = {0};
157+ sg_pass pass = { 0 };
158 i32 width;
159 i32 height;
160
161@@ -250,7 +249,7 @@ void renderer_backend_destroy(void)
162
163 MGMesh renderer_backend_mesh_create(const MGMeshDesc* desc)
164 {
165- sg_buffer_desc buffer_desc = {0};
166+ sg_buffer_desc buffer_desc = { 0 };
167 RendererMesh* mesh;
168 u32 id;
169
170@@ -275,7 +274,7 @@ MGMesh renderer_backend_mesh_create(const MGMeshDesc* desc)
171 mesh->vb = sg_make_buffer(&buffer_desc);
172
173 /* index buffer */
174- buffer_desc = (sg_buffer_desc){0};
175+ buffer_desc = (sg_buffer_desc){ 0 };
176 buffer_desc.usage.vertex_buffer = false;
177 buffer_desc.usage.index_buffer = true;
178 buffer_desc.usage.immutable = true;
179@@ -291,7 +290,7 @@ MGMesh renderer_backend_mesh_create(const MGMeshDesc* desc)
180 if (sg_query_buffer_state(mesh->ib) == SG_RESOURCESTATE_VALID)
181 sg_destroy_buffer(mesh->ib);
182
183- *mesh = (RendererMesh){0};
184+ *mesh = (RendererMesh){ 0 };
185 mg_log(LOG_ERR, "Failed to create mesh buffers");
186 return MGMESH_INVALID;
187 }
188@@ -305,7 +304,7 @@ void renderer_backend_mesh_draw(MGMesh mesh, MGTexture texture, const MGMat4* mv
189 {
190 RendererMesh* rmesh;
191 RendererTexture* rtexture;
192- sg_bindings bindings = {0};
193+ sg_bindings bindings = { 0 };
194 sg_range uniforms;
195
196 if (!ren.pass || !mvp)
197@@ -351,13 +350,13 @@ void renderer_backend_mesh_destroy(MGMesh id)
198 sg_destroy_buffer(mesh->ib);
199 sg_destroy_buffer(mesh->vb);
200
201- *mesh = (RendererMesh){0};
202+ *mesh = (RendererMesh){ 0 };
203 }
204
205 MGTexture renderer_backend_texture_load(const char* path)
206 {
207- sg_image_desc image_desc = {0};
208- sg_view_desc view_desc = {0};
209+ sg_image_desc image_desc = { 0 };
210+ sg_view_desc view_desc = { 0 };
211 RendererTexture* texture;
212 stbi_uc* pixels;
213 int width;
214@@ -390,12 +389,12 @@ MGTexture renderer_backend_texture_load(const char* path)
215 image_desc.height = height;
216 image_desc.pixel_format = SG_PIXELFORMAT_RGBA8;
217 image_desc.data.mip_levels[0].ptr = pixels;
218- image_desc.data.mip_levels[0].size =width * height * 4;
219+ image_desc.data.mip_levels[0].size = width * height * 4;
220
221 texture->image = sg_make_image(&image_desc);
222 stbi_image_free(pixels);
223 if (sg_query_image_state(texture->image) != SG_RESOURCESTATE_VALID) {
224- *texture = (RendererTexture){0};
225+ *texture = (RendererTexture){ 0 };
226 mg_log(LOG_ERR, "Failed to create texture: %s", path);
227 return MGTEXTURE_INVALID;
228 }
229@@ -405,7 +404,7 @@ MGTexture renderer_backend_texture_load(const char* path)
230
231 if (sg_query_view_state(texture->view) != SG_RESOURCESTATE_VALID) {
232 sg_destroy_image(texture->image);
233- *texture = (RendererTexture){0};
234+ *texture = (RendererTexture){ 0 };
235 mg_log(LOG_ERR, "Failed to create texture view: %s", path);
236 return MGTEXTURE_INVALID;
237 }
238@@ -430,5 +429,5 @@ void renderer_backend_texture_destroy(MGTexture id)
239 sg_destroy_view(texture->view);
240 sg_destroy_image(texture->image);
241
242- *texture = (RendererTexture){0};
243+ *texture = (RendererTexture){ 0 };
244 }
+0,
-1
1@@ -47,4 +47,3 @@ void mg_log(LogType lt, const char* fmt, ...)
2 vlog(fd, fmt, ap);
3 va_end(ap);
4 }
5-