[jak2] fix alpha test in lightning (#2204)

fixes the lightning fade out effect seen when jak touches the electric
gate.
This commit is contained in:
water111 2023-02-09 19:51:28 -05:00 committed by GitHub
parent a02a75525d
commit e41ca8903e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 7 deletions

View file

@ -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();
}
}
{

View file

@ -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,

View file

@ -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);