Support GPU Primitives as constexpr
This commit is contained in:
@@ -145,16 +145,15 @@ namespace JabyEngine {
|
||||
uint16_t padded2; // g
|
||||
|
||||
constexpr POLY_FT3() = default;
|
||||
constexpr POLY_FT3(const Vertex (&verticies)[3], const PagePosition (&page_pos)[3], TPage tpage, PageClut clut, Color24 color = Color24::Grey()) :
|
||||
color(color), code(IdentityCode),
|
||||
vertex0(verticies[0]), page0(page_pos[0]), page_clut(clut),
|
||||
vertex1(verticies[1]), page1(page_pos[1]), tpage(tpage),
|
||||
vertex2(verticies[2]), page2(page_pos[2]) {}
|
||||
constexpr POLY_FT3(const Vertex (&verticies)[3], const PagePosition (&page_pos)[3], TPage tpage, PageClut clut, Color24 color = Color24::Grey()) : POLY_FT3({
|
||||
{verticies[0], page_pos[0]},
|
||||
{verticies[1], page_pos[1]},
|
||||
{verticies[2], page_pos[2]}}, tpage, clut, color) {}
|
||||
constexpr POLY_FT3(const VertexEx (&vertices_ex)[3], TPage tpage, PageClut clut, Color24 color) :
|
||||
color(color), code(IdentityCode),
|
||||
vertex0(vertices_ex[0].position), page0(vertices_ex[0].page), page_clut(clut),
|
||||
vertex1(vertices_ex[1].position), page1(vertices_ex[1].page), tpage(tpage),
|
||||
vertex2(vertices_ex[2].position), page2(vertices_ex[2].page) {}
|
||||
vertex2(vertices_ex[2].position), page2(vertices_ex[2].page), padded2(0) {}
|
||||
};
|
||||
|
||||
struct POLY_G3 : public internal::IsPrimitive, public internal::CodeInterface<POLY_G3> {
|
||||
@@ -175,14 +174,14 @@ namespace JabyEngine {
|
||||
Vertex vertex2; // f
|
||||
|
||||
constexpr POLY_G3() = default;
|
||||
constexpr POLY_G3(const Vertex (&verticies)[3], const Color24 (&color)[3]) :
|
||||
color0(color[0]), code(IdentityCode), vertex0(verticies[0]),
|
||||
color1(color[1]), vertex1(verticies[1]),
|
||||
color2(color[2]), vertex2(verticies[2]) {}
|
||||
constexpr POLY_G3(const Vertex (&verticies)[3], const Color24 (&color)[3]) : POLY_G3({
|
||||
{verticies[0], color[0]},
|
||||
{verticies[1], color[1]},
|
||||
{verticies[2], color[2]}}) {}
|
||||
constexpr POLY_G3(const VertexEx (&verticies_ex)[3]) :
|
||||
color0(verticies_ex[0].color), code(IdentityCode), vertex0(verticies_ex[0].position),
|
||||
color1(verticies_ex[1].color), vertex1(verticies_ex[1].position),
|
||||
color2(verticies_ex[2].color), vertex2(verticies_ex[2].position) {}
|
||||
color1(verticies_ex[1].color), pad1(0), vertex1(verticies_ex[1].position),
|
||||
color2(verticies_ex[2].color), pad2(0), vertex2(verticies_ex[2].position) {}
|
||||
};
|
||||
|
||||
struct POLY_GT3 : public internal::IsPrimitive, public internal::CodeInterface<POLY_GT3> {
|
||||
@@ -199,25 +198,25 @@ namespace JabyEngine {
|
||||
PagePosition page0; // c
|
||||
PageClut page_clut; // c
|
||||
Color24 color1; // d
|
||||
uint8_t padded1; // d
|
||||
uint8_t pad1; // d
|
||||
Vertex vertex1; // e
|
||||
PagePosition page1; // f
|
||||
TPage tpage; // f
|
||||
Color24 color2; // g
|
||||
uint8_t padded2; // g
|
||||
uint8_t pad2; // g
|
||||
Vertex vertex2; // h
|
||||
PagePosition page2; // i
|
||||
uint16_t padded3; // i
|
||||
uint16_t pad3; // i
|
||||
|
||||
constexpr POLY_GT3() = default;
|
||||
constexpr POLY_GT3(const Vertex (&verticies)[3], const PagePosition (&page_pos)[3], const Color24 (&color)[3], TPage tpage, PageClut clut) :
|
||||
color0(color[0]), code(IdentityCode), vertex0(verticies[0]), page0(page_pos[0]), page_clut(clut),
|
||||
color1(color[1]), vertex1(verticies[1]), page1(page_pos[1]), tpage(tpage),
|
||||
color2(color[2]), vertex2(verticies[2]), page2(page_pos[2]) {}
|
||||
constexpr POLY_GT3(const Vertex (&verticies)[3], const PagePosition (&page_pos)[3], const Color24 (&color)[3], TPage tpage, PageClut clut) : POLY_GT3({
|
||||
{verticies[0], page_pos[0], color[0]},
|
||||
{verticies[1], page_pos[1], color[1]},
|
||||
{verticies[2], page_pos[2], color[2]}}, tpage, clut) {}
|
||||
constexpr POLY_GT3(const VertexEx (&verticies_ex)[3], TPage tpage, PageClut clut) :
|
||||
color0(verticies_ex[0].color), code(IdentityCode), vertex0(verticies_ex[0].position), page0(verticies_ex[0].page), page_clut(clut),
|
||||
color1(verticies_ex[1].color), vertex1(verticies_ex[1].position), page1(verticies_ex[1].page), tpage(tpage),
|
||||
color2(verticies_ex[2].color), vertex2(verticies_ex[2].position), page2(verticies_ex[2].page) {}
|
||||
color1(verticies_ex[1].color), pad1(0), vertex1(verticies_ex[1].position), page1(verticies_ex[1].page), tpage(tpage),
|
||||
color2(verticies_ex[2].color), pad2(0), vertex2(verticies_ex[2].position), page2(verticies_ex[2].page), pad3(0) {}
|
||||
};
|
||||
|
||||
|
||||
@@ -266,24 +265,23 @@ namespace JabyEngine {
|
||||
TPage tpage; // e
|
||||
Vertex vertex2; // f
|
||||
PagePosition page2; // g
|
||||
uint16_t padded2; // g
|
||||
uint16_t pad2; // g
|
||||
Vertex vertex3; // h
|
||||
PagePosition page3; // i
|
||||
uint16_t padded3; // i
|
||||
uint16_t pad3; // i
|
||||
|
||||
constexpr POLY_FT4() = default;
|
||||
constexpr POLY_FT4(const Vertex (&verticies)[4], const PagePosition (&page_pos)[4], TPage tpage, PageClut clut, Color24 color) :
|
||||
color(color), code(IdentityCode),
|
||||
vertex0(verticies[0]), page0(page_pos[0]), page_clut(clut),
|
||||
vertex1(verticies[1]), page1(page_pos[1]), tpage(tpage),
|
||||
vertex2(verticies[2]), page2(page_pos[2]),
|
||||
vertex3(verticies[3]), page3(page_pos[3]) {}
|
||||
constexpr POLY_FT4(const Vertex (&verticies)[4], const PagePosition (&page_pos)[4], TPage tpage, PageClut clut, Color24 color) : POLY_FT4({
|
||||
{verticies[0], page_pos[0]},
|
||||
{verticies[1], page_pos[1]},
|
||||
{verticies[2], page_pos[2]},
|
||||
{verticies[3], page_pos[3]}}, tpage, clut, color) {}
|
||||
constexpr POLY_FT4(const VertexEx (&vertices_ex)[4], TPage tpage, PageClut clut, Color24 color = Color24::Grey()) :
|
||||
color(color), code(IdentityCode),
|
||||
vertex0(vertices_ex[0].position), page0(vertices_ex[0].page), page_clut(clut),
|
||||
vertex1(vertices_ex[1].position), page1(vertices_ex[1].page), tpage(tpage),
|
||||
vertex2(vertices_ex[2].position), page2(vertices_ex[2].page),
|
||||
vertex3(vertices_ex[3].position), page3(vertices_ex[3].page) {}
|
||||
vertex2(vertices_ex[2].position), page2(vertices_ex[2].page), pad2(0),
|
||||
vertex3(vertices_ex[3].position), page3(vertices_ex[3].page), pad3(0) {}
|
||||
constexpr POLY_FT4(const AreaI16& area, const PagePosition& texture_pos, TPage tpage, PageClut clut, Color24 color) : POLY_FT4({
|
||||
{area.position, texture_pos},
|
||||
{area.position.move(area.size.width, 0), texture_pos.move(area.size.width, 0)},
|
||||
@@ -311,16 +309,17 @@ namespace JabyEngine {
|
||||
Vertex vertex3; // h
|
||||
|
||||
constexpr POLY_G4() = default;
|
||||
constexpr POLY_G4(const Vertex (&verticies)[4], const Color24 (&color)[4]) :
|
||||
color0(color[0]), code(IdentityCode), vertex0(verticies[0]),
|
||||
color1(color[1]), vertex1(verticies[1]),
|
||||
color2(color[2]), vertex2(verticies[2]),
|
||||
color3(color[3]), vertex3(verticies[3]) {}
|
||||
constexpr POLY_G4(const Vertex (&verticies)[4], const Color24 (&color)[4]) : POLY_G4({
|
||||
{verticies[0], color[0]},
|
||||
{verticies[1], color[1]},
|
||||
{verticies[2], color[2]},
|
||||
{verticies[3], color[3]}
|
||||
}) {}
|
||||
constexpr POLY_G4(const VertexEx (&verticies_ex)[4]) :
|
||||
color0(verticies_ex[0].color), code(IdentityCode), vertex0(verticies_ex[0].position),
|
||||
color1(verticies_ex[1].color), vertex1(verticies_ex[1].position),
|
||||
color2(verticies_ex[2].color), vertex2(verticies_ex[2].position),
|
||||
color3(verticies_ex[3].color), vertex3(verticies_ex[3].position) {}
|
||||
color1(verticies_ex[1].color), pad1(0), vertex1(verticies_ex[1].position),
|
||||
color2(verticies_ex[2].color), pad2(0), vertex2(verticies_ex[2].position),
|
||||
color3(verticies_ex[3].color), pad3(0), vertex3(verticies_ex[3].position) {}
|
||||
constexpr POLY_G4(const AreaI16& area, const Color24 (&color)[4]) : POLY_G4({
|
||||
{area.position, color[0]},
|
||||
{area.position.move(area.size.width, 0), color[1]},
|
||||
@@ -339,32 +338,33 @@ namespace JabyEngine {
|
||||
PagePosition page0; // c
|
||||
PageClut page_clut; // c
|
||||
Color24 color1; // d
|
||||
uint8_t padded1; // d
|
||||
uint8_t pad1; // d
|
||||
Vertex vertex1; // e
|
||||
PagePosition page1; // f
|
||||
TPage tpage; // f
|
||||
Color24 color2; // g
|
||||
uint8_t padded2; // g
|
||||
uint8_t pad2; // g
|
||||
Vertex vertex2; // h
|
||||
PagePosition page2; // i
|
||||
uint16_t padded3; // i
|
||||
uint16_t pad3; // i
|
||||
Color24 color3; // j
|
||||
uint8_t padded4; // j
|
||||
uint8_t pad4; // j
|
||||
Vertex vertex3; // k
|
||||
PagePosition page3; // l
|
||||
uint16_t padded5; // l
|
||||
uint16_t pad5; // l
|
||||
|
||||
constexpr POLY_GT4() = default;
|
||||
constexpr POLY_GT4(const Vertex (&verticies)[4], const PagePosition (&page_pos)[4], const Color24 (&color)[4], TPage tpage, PageClut clut) :
|
||||
color0(color[0]), code(IdentityCode), vertex0(verticies[0]), page0(page_pos[0]), page_clut(clut),
|
||||
color1(color[1]), vertex1(verticies[1]), page1(page_pos[1]), tpage(tpage),
|
||||
color2(color[2]), vertex2(verticies[2]), page2(page_pos[2]),
|
||||
color3(color[3]), vertex3(verticies[3]), page3(page_pos[3]) {}
|
||||
constexpr POLY_GT4(const Vertex (&verticies)[4], const PagePosition (&page_pos)[4], const Color24 (&color)[4], TPage tpage, PageClut clut) : POLY_GT4({
|
||||
{verticies[0], page_pos[0], color[0]},
|
||||
{verticies[1], page_pos[1], color[1]},
|
||||
{verticies[2], page_pos[2], color[2]},
|
||||
{verticies[3], page_pos[3], color[3]},
|
||||
}, tpage, clut) {}
|
||||
constexpr POLY_GT4(const VertexEx (&verticies_ex)[4], TPage tpage, PageClut clut) :
|
||||
color0(verticies_ex[0].color), code(IdentityCode), vertex0(verticies_ex[0].position), page0(verticies_ex[0].page), page_clut(clut),
|
||||
color1(verticies_ex[1].color), vertex1(verticies_ex[1].position), page1(verticies_ex[1].page), tpage(tpage),
|
||||
color2(verticies_ex[2].color), vertex2(verticies_ex[2].position), page2(verticies_ex[2].page),
|
||||
color3(verticies_ex[3].color), vertex3(verticies_ex[3].position), page3(verticies_ex[3].page) {}
|
||||
color1(verticies_ex[1].color), pad1(0), vertex1(verticies_ex[1].position), page1(verticies_ex[1].page), tpage(tpage),
|
||||
color2(verticies_ex[2].color), pad2(0), vertex2(verticies_ex[2].position), page2(verticies_ex[2].page), pad3(0),
|
||||
color3(verticies_ex[3].color), pad4(0), vertex3(verticies_ex[3].position), page3(verticies_ex[3].page), pad5(0) {}
|
||||
constexpr POLY_GT4(const AreaI16& area, const PagePosition& texture_pos, TPage tpage, PageClut clut, const Color24 (&color)[4]) : POLY_GT4({
|
||||
{area.position, texture_pos, color[0]},
|
||||
{area.position.move(area.size.width, 0), texture_pos.move(area.size.width, 0), color[1]},
|
||||
|
Reference in New Issue
Block a user