Skip to content

Commit

Permalink
[jak2] fge=0 at the start of warp (#2740)
Browse files Browse the repository at this point in the history
The warp giftags don't set PRE and seem to rely on fogging being
disabled at the start.
  • Loading branch information
water111 committed Jun 17, 2023
1 parent 6e779d1 commit 01cb9ef
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 10 deletions.
2 changes: 1 addition & 1 deletion game/graphics/opengl_renderer/Warp.cpp
Expand Up @@ -12,7 +12,7 @@ void Warp::render(DmaFollower& dma, SharedRenderState* render_state, ScopedProfi
render_state->render_fb_x, render_state->render_fb_y,
render_state->render_fb);
render_state->texture_pool->move_existing_to_vram(m_warp_src_tex, m_tbp);
m_generic->render_in_mode(dma, render_state, prof, Generic2::Mode::NORMAL);
m_generic->render_in_mode(dma, render_state, prof, Generic2::Mode::WARP);
}

void Warp::init_textures(TexturePool& tex_pool, GameVersion version) {
Expand Down
8 changes: 6 additions & 2 deletions game/graphics/opengl_renderer/foreground/Generic2.cpp
Expand Up @@ -60,6 +60,7 @@ void Generic2::render_in_mode(DmaFollower& dma,
auto p = prof.make_scoped_child("dma");
switch (mode) {
case Mode::NORMAL:
case Mode::WARP:
if (render_state->version == GameVersion::Jak1) {
process_dma_jak1(dma, render_state->next_bucket);
} else {
Expand All @@ -80,10 +81,13 @@ void Generic2::render_in_mode(DmaFollower& dma,
auto p = prof.make_scoped_child("setup");
switch (mode) {
case Mode::NORMAL:
setup_draws(true);
setup_draws(true, true);
break;
case Mode::LIGHTNING:
setup_draws(false);
setup_draws(false, true);
break;
case Mode::WARP:
setup_draws(true, false);
break;
default:
ASSERT_NOT_REACHED();
Expand Down
6 changes: 3 additions & 3 deletions game/graphics/opengl_renderer/foreground/Generic2.h
Expand Up @@ -11,7 +11,7 @@ class Generic2 {
u32 num_buckets = 800);
~Generic2();

enum class Mode { NORMAL, LIGHTNING };
enum class Mode { NORMAL, LIGHTNING, WARP };

void render_in_mode(DmaFollower& dma,
SharedRenderState* render_state,
Expand All @@ -33,7 +33,7 @@ class Generic2 {
static_assert(sizeof(Vertex) == 32);

private:
void determine_draw_modes(bool enable_at);
void determine_draw_modes(bool enable_at, bool default_fog);
void build_index_buffer();
void link_adgifs_back_to_frags();
void draws_to_buckets();
Expand All @@ -42,7 +42,7 @@ class Generic2 {
void process_dma_jak1(DmaFollower& dma, u32 next_bucket);
void process_dma_lightning(DmaFollower& dma, u32 next_bucket);
void process_dma_jak2(DmaFollower& dma, u32 next_bucket);
void setup_draws(bool enable_at);
void setup_draws(bool enable_at, bool default_fog);
void do_draws(SharedRenderState* render_state, ScopedProfilerNode& prof);
void do_draws_for_alpha(SharedRenderState* render_state,
ScopedProfilerNode& prof,
Expand Down
8 changes: 4 additions & 4 deletions game/graphics/opengl_renderer/foreground/Generic2_Build.cpp
Expand Up @@ -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(bool enable_at) {
void Generic2::setup_draws(bool enable_at, bool default_fog) {
if (m_next_free_frag == 0) {
return;
}
m_gs = GsState();
link_adgifs_back_to_frags();
process_matrices();
determine_draw_modes(enable_at);
determine_draw_modes(enable_at, default_fog);
draws_to_buckets();
final_vertex_update();
build_index_buffer();
Expand All @@ -26,7 +26,7 @@ void Generic2::setup_draws(bool enable_at) {
* 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(bool enable_at) {
void Generic2::determine_draw_modes(bool enable_at, bool default_fog) {
// initialize draw mode
DrawMode current_mode;
current_mode.set_at(enable_at);
Expand All @@ -37,7 +37,7 @@ void Generic2::determine_draw_modes(bool enable_at) {
current_mode.set_depth_test(GsTest::ZTest::GEQUAL);
current_mode.set_depth_write_enable(!m_drawing_config.zmsk);
current_mode.set_alpha_blend(DrawMode::AlphaBlend::SRC_SRC_SRC_SRC);
m_gs.set_fog_flag(true);
m_gs.set_fog_flag(default_fog);

u32 tbp = -1;

Expand Down

0 comments on commit 01cb9ef

Please sign in to comment.