mirror of
https://github.com/open-goal/jak-project
synced 2026-05-29 16:45:10 -04:00
[jak2] fge=0 at the start of warp (#2740)
The warp giftags don't set PRE and seem to rely on fogging being disabled at the start.
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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 {
|
||||
@@ -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();
|
||||
|
||||
@@ -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,
|
||||
@@ -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();
|
||||
@@ -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,
|
||||
|
||||
@@ -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();
|
||||
@@ -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);
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user