diff --git a/game/graphics/opengl_renderer/foreground/Generic2.cpp b/game/graphics/opengl_renderer/foreground/Generic2.cpp index 4c255d7aa..7d6b1694e 100644 --- a/game/graphics/opengl_renderer/foreground/Generic2.cpp +++ b/game/graphics/opengl_renderer/foreground/Generic2.cpp @@ -94,7 +94,16 @@ void Generic2::render_in_mode(DmaFollower& dma, // the next pass is to look at all of that data, and figure out the best order to draw it // using OpenGL auto p = prof.make_scoped_child("setup"); - setup_draws(); + switch (mode) { + case Mode::NORMAL: + setup_draws(true); + break; + case Mode::LIGHTNING: + setup_draws(false); + break; + default: + ASSERT_NOT_REACHED(); + } } { diff --git a/game/graphics/opengl_renderer/foreground/Generic2.h b/game/graphics/opengl_renderer/foreground/Generic2.h index a5e9114cc..8b30d0fbd 100644 --- a/game/graphics/opengl_renderer/foreground/Generic2.h +++ b/game/graphics/opengl_renderer/foreground/Generic2.h @@ -39,7 +39,7 @@ class Generic2 : public BucketRenderer { static_assert(sizeof(Vertex) == 32); private: - void determine_draw_modes(); + void determine_draw_modes(bool enable_at); void build_index_buffer(); void link_adgifs_back_to_frags(); void draws_to_buckets(); @@ -47,7 +47,7 @@ class Generic2 : public BucketRenderer { void process_matrices(); void process_dma(DmaFollower& dma, u32 next_bucket); void process_dma_lightning(DmaFollower& dma, u32 next_bucket); - void setup_draws(); + void setup_draws(bool enable_at); void do_draws(SharedRenderState* render_state, ScopedProfilerNode& prof); void do_draws_for_alpha(SharedRenderState* render_state, ScopedProfilerNode& prof, diff --git a/game/graphics/opengl_renderer/foreground/Generic2_Build.cpp b/game/graphics/opengl_renderer/foreground/Generic2_Build.cpp index d7cadb214..185f1dd9e 100644 --- a/game/graphics/opengl_renderer/foreground/Generic2_Build.cpp +++ b/game/graphics/opengl_renderer/foreground/Generic2_Build.cpp @@ -4,14 +4,14 @@ * Main function to set up Generic2 draw lists. * This function figures out which vertices belong to which draw settings. */ -void Generic2::setup_draws() { +void Generic2::setup_draws(bool enable_at) { if (m_next_free_frag == 0) { return; } m_gs = GsState(); link_adgifs_back_to_frags(); process_matrices(); - determine_draw_modes(); + determine_draw_modes(enable_at); draws_to_buckets(); final_vertex_update(); build_index_buffer(); @@ -26,10 +26,10 @@ void Generic2::setup_draws() { * settings, the tbp (texture vram address), and the "vertex flags" that need to be set for each * vertex. This information is used in later steps. */ -void Generic2::determine_draw_modes() { +void Generic2::determine_draw_modes(bool enable_at) { // initialize draw mode DrawMode current_mode; - current_mode.set_at(true); + current_mode.set_at(enable_at); current_mode.set_alpha_test(DrawMode::AlphaTest::GEQUAL); current_mode.set_aref(0x26); current_mode.set_alpha_fail(GsTest::AlphaFail::FB_ONLY);