master uint/magnolia / include / renderer / test_block.h
 1#ifndef TEST_BLOCK_H
 2#define TEST_BLOCK_H
 3
 4#include "renderer/renderer.h"
 5
 6#define RGBA(r, g, b, a) (((u32)(r)) | ((u32)(g) << 8) | ((u32)(b) << 16) | ((u32)(a) << 24))
 7
 8MGMesh block_mesh_create(void);
 9
10static const MGVertex vtc[24] = {
11	/* north: -z */
12	{ 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, RGBA(255, 0, 0, 255) },
13	{ 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, RGBA(255, 0, 0, 255) },
14	{ 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, RGBA(255, 0, 0, 255) },
15	{ 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, RGBA(255, 0, 0, 255) },
16
17	/* south: +z */
18	{ 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, RGBA(0, 255, 0, 255) },
19	{ 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, RGBA(0, 255, 0, 255) },
20	{ 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, RGBA(0, 255, 0, 255) },
21	{ 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, RGBA(0, 255, 0, 255) },
22
23	/* west: -x */
24	{ 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, RGBA(0, 0, 255, 255) },
25	{ 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, RGBA(0, 0, 255, 255) },
26	{ 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, RGBA(0, 0, 255, 255) },
27	{ 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, RGBA(0, 0, 255, 255) },
28
29	/* east: +x */
30	{ 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, RGBA(255, 255, 0, 255) },
31	{ 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, RGBA(255, 255, 0, 255) },
32	{ 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, RGBA(255, 255, 0, 255) },
33	{ 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, RGBA(255, 255, 0, 255) },
34
35	/* bottom: -y */
36	{ 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, RGBA(255, 0, 255, 255) },
37	{ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, RGBA(255, 0, 255, 255) },
38	{ 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, RGBA(255, 0, 255, 255) },
39	{ 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, RGBA(255, 0, 255, 255) },
40
41	/* top: +y */
42	{ 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, RGBA(0, 255, 255, 255) },
43	{ 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, RGBA(0, 255, 255, 255) },
44	{ 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, RGBA(0, 255, 255, 255) },
45	{ 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, RGBA(0, 255, 255, 255) }
46};
47
48/* clang-format off */
49static const u16 idc[36] = {
50	0,  1,  2,  0,  2,  3,
51	4,  5,  6,  4,  6,  7,
52	8,  9,  10, 8,  10, 11,
53	12, 13, 14, 12, 14, 15,
54	16, 17, 18, 16, 18, 19,
55	20, 21, 22, 20, 22, 23,
56};
57/* clang-format on */
58
59MGMesh block_mesh_create(void)
60{
61	MGMeshDesc desc = { vtc, 24, idc, 36 };
62	return renderer_mesh_create(&desc);
63}
64
65#endif /* TEST_BLOCK_H */