From 8256efa7c8e4e5b206a820bcc0a9fb65a1625dde Mon Sep 17 00:00:00 2001 From: h4570 Date: Sat, 12 Dec 2020 14:10:50 +0100 Subject: [PATCH 1/2] switched zbuffer to 24bit mode --- src/engine/modules/renderer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/engine/modules/renderer.cpp b/src/engine/modules/renderer.cpp index 9b55597..02cadff 100644 --- a/src/engine/modules/renderer.cpp +++ b/src/engine/modules/renderer.cpp @@ -203,19 +203,19 @@ void Renderer::allocateBuffers(float t_screenW, float t_screenH) frameBuffers[0].width = (u16)t_screenW; frameBuffers[0].height = (u16)t_screenH; frameBuffers[0].mask = 0; - frameBuffers[0].psm = GS_PSM_32; + frameBuffers[0].psm = GS_PSM_24; frameBuffers[0].address = graph_vram_allocate((u16)t_screenW, (u16)t_screenH, frameBuffers[0].psm, GRAPH_ALIGN_PAGE); frameBuffers[1].width = (u16)t_screenW; frameBuffers[1].height = (u16)t_screenH; frameBuffers[1].mask = 0; - frameBuffers[1].psm = GS_PSM_32; + frameBuffers[1].psm = GS_PSM_24; frameBuffers[1].address = graph_vram_allocate((u16)t_screenW, (u16)t_screenH, frameBuffers[1].psm, GRAPH_ALIGN_PAGE); zBuffer.enable = DRAW_ENABLE; zBuffer.mask = 0; zBuffer.method = ZTEST_METHOD_GREATER_EQUAL; - zBuffer.zsm = GS_ZBUF_32; + zBuffer.zsm = GS_ZBUF_24; zBuffer.address = graph_vram_allocate((u16)t_screenW, (u16)t_screenH, zBuffer.zsm, GRAPH_ALIGN_PAGE); PRINT_LOG("Framebuffers, zBuffer set and allocated!"); From 3dd51607f0eab05be370c8ef31c87b2fe444ba69 Mon Sep 17 00:00:00 2001 From: h4570 Date: Sat, 12 Dec 2020 14:12:30 +0100 Subject: [PATCH 2/2] refactored viewproj matrix calcs a bit --- src/engine/include/modules/vif_sender.hpp | 1 - src/engine/modules/vif_sender.cpp | 10 +++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/engine/include/modules/vif_sender.hpp b/src/engine/include/modules/vif_sender.hpp index 467e111..a3e1e36 100644 --- a/src/engine/include/modules/vif_sender.hpp +++ b/src/engine/include/modules/vif_sender.hpp @@ -41,7 +41,6 @@ private: packet2_t *currPacket; u8 context; packet2_t *matricesPacket __attribute__((aligned(64))); - MATRIX localWorld, localScreen; VECTOR position, rotation; u32 vertCount; }; diff --git a/src/engine/modules/vif_sender.cpp b/src/engine/modules/vif_sender.cpp index 3135e09..771b05f 100644 --- a/src/engine/modules/vif_sender.cpp +++ b/src/engine/modules/vif_sender.cpp @@ -71,12 +71,12 @@ void VifSender::uploadMicroProgram() void VifSender::sendMatrices(const RenderData &t_renderData, const Vector3 &t_position, const Vector3 &t_rotation) { - vec3ToNative(position, t_position, 1.0F); - vec3ToNative(rotation, t_rotation, 1.0F); - create_local_world(localWorld, position, rotation); - create_local_screen(localScreen, localWorld, t_renderData.worldView->data, t_renderData.perspective->data); + Matrix viewProj = Matrix(); + viewProj.rotation(t_rotation); // model matrix + viewProj.translate(t_position); // model matrix + viewProj *= *t_renderData.worldView * *t_renderData.perspective; // viewproj = model * (view * projection) packet2_reset(matricesPacket, false); - packet2_utils_vu_add_unpack_data(matricesPacket, 0, &localScreen, 8, 0); + packet2_utils_vu_add_unpack_data(matricesPacket, 0, &viewProj.data, 8, 0); packet2_utils_vu_add_end_tag(matricesPacket); dma_channel_wait(DMA_CHANNEL_VIF1, 0); dma_channel_send_packet2(matricesPacket, DMA_CHANNEL_VIF1, 1);