Support GPU Primitives as constexpr

This commit is contained in:
2023-05-24 20:55:43 +02:00
parent a16f12a5ce
commit 6d6396ad16
4 changed files with 124 additions and 121 deletions

View File

@@ -11,6 +11,71 @@ enum LBA {
__jabyengine_end_lba_request
};
// Some default values for the objects
static constexpr auto TriangleColor = JabyEngine::GPU::Color24(0x0, 0xFF, 0xFF);
static constexpr auto TriangleArea = JabyEngine::GPU::AreaI16({0, 0}, {64, 64});
static constexpr auto TriangleTPage = JabyEngine::GPU::TPage(320, 0, JabyEngine::GPU::SemiTransparency::B_Half_add_F_Half, JabyEngine::GPU::TexturePageColor::$4bit);
static constexpr auto TriangleClut = JabyEngine::GPU::PageClut(320, 511);
static constexpr auto RectangleColor = JabyEngine::GPU::Color24(0x80, 0x80, 0xFF);
static constexpr auto RectangleArea = JabyEngine::GPU::AreaI16({0, TriangleArea.size.height}, {80, 80});
static constexpr auto RectangleTPage = JabyEngine::GPU::TPage(320, 256, JabyEngine::GPU::SemiTransparency::B_Half_add_F_Half, JabyEngine::GPU::TexturePageColor::$4bit);
static constexpr auto RectangleClut = JabyEngine::GPU::PageClut(320, 510);
static constexpr const JabyEngine::GPU::POLY_F3 triangle1({
{TriangleArea.position.x, TriangleArea.position.y},
{TriangleArea.size.width, TriangleArea.size.height},
{TriangleArea.position.x, TriangleArea.size.height}},
TriangleColor
);
static constexpr const JabyEngine::GPU::POLY_FT3 triangle2({
{TriangleArea.position.x, TriangleArea.position.y},
{TriangleArea.size.width, TriangleArea.position.y},
{TriangleArea.size.width, TriangleArea.size.height}},{
// Texture
{TriangleArea.position.x, TriangleArea.position.y},
{TriangleArea.size.width, TriangleArea.position.y},
{TriangleArea.size.width, TriangleArea.size.height}},
TriangleTPage,
TriangleClut,
JabyEngine::GPU::Color24::Grey()
);
static constexpr const JabyEngine::GPU::POLY_G3 triangle3({
{triangle1.vertex0.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Red()},
{triangle1.vertex1.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Green()},
{triangle1.vertex2.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Blue()}}
);
static constexpr const JabyEngine::GPU::POLY_GT3 triangle4({
{triangle2.vertex0.move(TriangleArea.size.width, 0), triangle2.page0, JabyEngine::GPU::Color24::Red()},
{triangle2.vertex1.move(TriangleArea.size.width, 0), triangle2.page1, JabyEngine::GPU::Color24::Blue()},
{triangle2.vertex2.move(TriangleArea.size.width, 0), triangle2.page2, JabyEngine::GPU::Color24::Green()}},
TriangleTPage,
TriangleClut
);
static constexpr const JabyEngine::GPU::POLY_F4 rectangle1(RectangleArea, RectangleColor);
static constexpr const JabyEngine::GPU::POLY_FT4 rectangle2({
RectangleArea.position.move(RectangleArea.size.width, 0), RectangleArea.size}, {0, 0},
RectangleTPage,
RectangleClut,
JabyEngine::GPU::Color24::Grey()
);
static constexpr const JabyEngine::GPU::POLY_G4 rectangle3(
{RectangleArea.position.move(RectangleArea.size.width*2, 0), RectangleArea.size}, {
JabyEngine::GPU::Color24::Red(),
JabyEngine::GPU::Color24::Blue(),
JabyEngine::GPU::Color24::Green(),
JabyEngine::GPU::Color24::White()});
static constexpr const JabyEngine::GPU::POLY_GT4 rectangle4(
{RectangleArea.position.move(RectangleArea.size.width*3, 0), RectangleArea.size}, {0, 0},
RectangleTPage,
RectangleClut, {
JabyEngine::GPU::Color24::Red(),
JabyEngine::GPU::Color24::Blue(),
JabyEngine::GPU::Color24::Green(),
JabyEngine::GPU::Color24::White()}
);
static void load_assets() {
static const JabyEngine::CDFile Assets[] = {
JabyEngine::CDFileBuilder::simple_tim(LBA::FONT, JabyEngine::SimpleTIM(320, 0, 320, 511)),
@@ -41,70 +106,6 @@ static void load_assets() {
}
void main() {
static constexpr auto TriangleColor = JabyEngine::GPU::Color24(0x0, 0xFF, 0xFF);
static constexpr auto TriangleArea = JabyEngine::GPU::AreaI16({0, 0}, {64, 64});
static constexpr auto TriangleTPage = JabyEngine::GPU::TPage(320, 0, JabyEngine::GPU::SemiTransparency::B_Half_add_F_Half, JabyEngine::GPU::TexturePageColor::$4bit);
static constexpr auto TriangleClut = JabyEngine::GPU::PageClut(320, 511);
static constexpr auto RectangleColor = JabyEngine::GPU::Color24(0x80, 0x80, 0xFF);
static constexpr auto RectangleArea = JabyEngine::GPU::AreaI16({0, TriangleArea.size.height}, {80, 80});
static constexpr auto RectangleTPage = JabyEngine::GPU::TPage(320, 256, JabyEngine::GPU::SemiTransparency::B_Half_add_F_Half, JabyEngine::GPU::TexturePageColor::$4bit);
static constexpr auto RectangleClut = JabyEngine::GPU::PageClut(320, 510);
const JabyEngine::GPU::POLY_F3 triangle1({
{TriangleArea.position.x, TriangleArea.position.y},
{TriangleArea.size.width, TriangleArea.size.height},
{TriangleArea.position.x, TriangleArea.size.height}},
TriangleColor
);
const JabyEngine::GPU::POLY_FT3 triangle2({
{TriangleArea.position.x, TriangleArea.position.y},
{TriangleArea.size.width, TriangleArea.position.y},
{TriangleArea.size.width, TriangleArea.size.height}},{
// Texture
{TriangleArea.position.x, TriangleArea.position.y},
{TriangleArea.size.width, TriangleArea.position.y},
{TriangleArea.size.width, TriangleArea.size.height}},
TriangleTPage,
TriangleClut,
JabyEngine::GPU::Color24::Grey()
);
const JabyEngine::GPU::POLY_G3 triangle3({
{triangle1.vertex0.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Red()},
{triangle1.vertex1.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Green()},
{triangle1.vertex2.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Blue()}}
);
const JabyEngine::GPU::POLY_GT3 triangle4({
{triangle2.vertex0.move(TriangleArea.size.width, 0), triangle2.page0, JabyEngine::GPU::Color24::Red()},
{triangle2.vertex1.move(TriangleArea.size.width, 0), triangle2.page1, JabyEngine::GPU::Color24::Blue()},
{triangle2.vertex2.move(TriangleArea.size.width, 0), triangle2.page2, JabyEngine::GPU::Color24::Green()}},
TriangleTPage,
TriangleClut
);
const JabyEngine::GPU::POLY_F4 rectangle1(RectangleArea, RectangleColor);
const JabyEngine::GPU::POLY_FT4 rectangle2({
RectangleArea.position.move(RectangleArea.size.width, 0), RectangleArea.size}, {0, 0},
RectangleTPage,
RectangleClut,
JabyEngine::GPU::Color24::Grey()
);
const JabyEngine::GPU::POLY_G4 rectangle3(
{RectangleArea.position.move(RectangleArea.size.width*2, 0), RectangleArea.size}, {
JabyEngine::GPU::Color24::Red(),
JabyEngine::GPU::Color24::Blue(),
JabyEngine::GPU::Color24::Green(),
JabyEngine::GPU::Color24::White()});
const JabyEngine::GPU::POLY_GT4 rectangle4(
{RectangleArea.position.move(RectangleArea.size.width*3, 0), RectangleArea.size}, {0, 0},
RectangleTPage,
RectangleClut, {
JabyEngine::GPU::Color24::Red(),
JabyEngine::GPU::Color24::Blue(),
JabyEngine::GPU::Color24::Green(),
JabyEngine::GPU::Color24::White()}
);
load_assets();
while(true) {