diff --git a/engine/inc/renderer/core/gs/renderer_core_gs.hpp b/engine/inc/renderer/core/gs/renderer_core_gs.hpp index be7cf92..bfad7e3 100644 --- a/engine/inc/renderer/core/gs/renderer_core_gs.hpp +++ b/engine/inc/renderer/core/gs/renderer_core_gs.hpp @@ -28,6 +28,8 @@ class RendererCoreGS { void flipBuffers(); + void enableZTests(); + private: constexpr static float gsCenter = 4096.0F; constexpr static float screenCenter = gsCenter / 2.0F; diff --git a/engine/src/renderer/3d/pipeline/minecraft/minecraft_pipeline.cpp b/engine/src/renderer/3d/pipeline/minecraft/minecraft_pipeline.cpp index 1414cf7..e50d2c7 100644 --- a/engine/src/renderer/3d/pipeline/minecraft/minecraft_pipeline.cpp +++ b/engine/src/renderer/3d/pipeline/minecraft/minecraft_pipeline.cpp @@ -60,6 +60,9 @@ void MinecraftPipeline::setLod() { void MinecraftPipeline::onUse() { spamBuffers = new McpipBlock**[spamBuffersCount]; spamCounts = new u32[spamBuffersCount]; + + rendererCore->gs.enableZTests(); + manager.allocateOnUse(); manager.uploadVU1Programs(); diff --git a/engine/src/renderer/core/gs/renderer_core_gs.cpp b/engine/src/renderer/core/gs/renderer_core_gs.cpp index 71eb91d..5f02405 100644 --- a/engine/src/renderer/core/gs/renderer_core_gs.cpp +++ b/engine/src/renderer/core/gs/renderer_core_gs.cpp @@ -89,6 +89,15 @@ void RendererCoreGS::allocateBuffers() { TYRA_LOG("Framebuffers, zBuffer set and allocated!"); } +void RendererCoreGS::enableZTests() { + packet2_reset(zTestPacket, false); + packet2_update(zTestPacket, + draw_enable_tests(zTestPacket->base, 0, &zBuffer)); + packet2_update(zTestPacket, draw_finish(zTestPacket->next)); + dma_channel_wait(DMA_CHANNEL_GIF, 0); + dma_channel_send_packet2(zTestPacket, DMA_CHANNEL_GIF, true); +} + void RendererCoreGS::initDrawingEnvironment() { packet2_t* packet2 = packet2_create(20, P2_TYPE_NORMAL, P2_MODE_NORMAL, 0); packet2_update(packet2, draw_setup_environment(packet2->base, 0, frameBuffers,