mirror of
https://github.com/open-goal/jak-project
synced 2026-07-26 06:37:29 -04:00
[graphics] add missing blend used in final boss fight (#1406)
This commit is contained in:
@@ -184,8 +184,8 @@ class Generic2 : public BucketRenderer {
|
||||
u32 dma_tags = 0;
|
||||
} m_stats;
|
||||
|
||||
static constexpr int ALPHA_MODE_COUNT = 6;
|
||||
bool m_alpha_draw_enable[ALPHA_MODE_COUNT] = {true, true, true, true, true, true};
|
||||
static constexpr int ALPHA_MODE_COUNT = 7;
|
||||
bool m_alpha_draw_enable[ALPHA_MODE_COUNT] = {true, true, true, true, true, true, true};
|
||||
|
||||
struct {
|
||||
GLuint vao;
|
||||
|
||||
@@ -155,10 +155,12 @@ void Generic2::determine_draw_modes() {
|
||||
} else if (a == GsAlpha::BlendMode::SOURCE && b == GsAlpha::BlendMode::ZERO_OR_FIXED &&
|
||||
c == GsAlpha::BlendMode::DEST && d == GsAlpha::BlendMode::DEST) {
|
||||
current_mode.set_alpha_blend(DrawMode::AlphaBlend::SRC_0_DST_DST);
|
||||
} else if (a == GsAlpha::BlendMode::SOURCE && b == GsAlpha::BlendMode::ZERO_OR_FIXED &&
|
||||
c == GsAlpha::BlendMode::ZERO_OR_FIXED && d == GsAlpha::BlendMode::DEST) {
|
||||
current_mode.set_alpha_blend(DrawMode::AlphaBlend::SRC_0_FIX_DST);
|
||||
} else {
|
||||
// unsupported blend: a 0 b 2 c 2 d 1
|
||||
// lg::error("unsupported blend: a {} b {} c {} d {}", (int)a, (int)b, (int)c, (int)d);
|
||||
// ASSERT(false);
|
||||
fmt::print("unsupported blend: a {} b {} c {} d {}\n", (int)a, (int)b, (int)c, (int)d);
|
||||
// ASSERT(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,7 +152,10 @@ void Generic2::setup_opengl_for_draw_mode(const DrawMode& draw_mode,
|
||||
// (Cs - 0) * Ad + Cd
|
||||
glBlendFunc(GL_DST_ALPHA, GL_ONE);
|
||||
glBlendEquation(GL_FUNC_ADD);
|
||||
color_mult = 0.5f; // HACK, should probably be 0.5
|
||||
color_mult = 0.5f;
|
||||
} else if (draw_mode.get_alpha_blend() == DrawMode::AlphaBlend::SRC_0_FIX_DST) {
|
||||
glBlendEquation(GL_FUNC_ADD);
|
||||
glBlendFuncSeparate(GL_ONE, GL_ONE, GL_ONE, GL_ZERO);
|
||||
} else {
|
||||
ASSERT(false);
|
||||
}
|
||||
@@ -296,9 +299,10 @@ void Generic2::do_draws(SharedRenderState* render_state, ScopedProfilerNode& pro
|
||||
|
||||
opengl_bind_and_setup_proj(render_state);
|
||||
constexpr DrawMode::AlphaBlend alpha_order[ALPHA_MODE_COUNT] = {
|
||||
DrawMode::AlphaBlend::SRC_SRC_SRC_SRC, DrawMode::AlphaBlend::SRC_DST_SRC_DST,
|
||||
DrawMode::AlphaBlend::SRC_0_SRC_DST, DrawMode::AlphaBlend::ZERO_SRC_SRC_DST,
|
||||
DrawMode::AlphaBlend::SRC_DST_FIX_DST, DrawMode::AlphaBlend::SRC_0_DST_DST,
|
||||
DrawMode::AlphaBlend::SRC_0_FIX_DST, DrawMode::AlphaBlend::SRC_SRC_SRC_SRC,
|
||||
DrawMode::AlphaBlend::SRC_DST_SRC_DST, DrawMode::AlphaBlend::SRC_0_SRC_DST,
|
||||
DrawMode::AlphaBlend::ZERO_SRC_SRC_DST, DrawMode::AlphaBlend::SRC_DST_FIX_DST,
|
||||
DrawMode::AlphaBlend::SRC_0_DST_DST,
|
||||
};
|
||||
|
||||
for (int i = 0; i < ALPHA_MODE_COUNT; i++) {
|
||||
|
||||
Reference in New Issue
Block a user