2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 05:07:43 +00:00

Various rendering fixes

This commit is contained in:
Jack Andersen
2019-03-02 20:19:42 -10:00
parent ca5cf5c77c
commit 8b9f073635
32 changed files with 948 additions and 552 deletions

View File

@@ -63,27 +63,17 @@ void CGraphics::SetAmbientColor(const zeus::CColor& col) {
void CGraphics::SetFog(ERglFogMode mode, float startz, float endz, const zeus::CColor& color) {
g_Fog.m_mode = mode > ERglFogMode::PerspRevExp2 ? ERglFogMode(int(mode) - 8) : mode;
switch (g_Fog.m_mode) {
case ERglFogMode::None: {
g_Fog.m_start = 4096.f;
g_Fog.m_rangeScale = 0.f;
break;
}
case ERglFogMode::PerspRevExp:
case ERglFogMode::PerspRevExp2: {
float userRange = endz - startz;
g_Fog.m_color = color;
g_Fog.m_start = endz;
g_Fog.m_rangeScale = 1.f / userRange;
break;
}
default: {
float userRange = endz - startz;
g_Fog.m_color = color;
g_Fog.m_start = startz;
g_Fog.m_rangeScale = 1.f / userRange;
break;
}
g_Fog.m_color = color;
if (CGraphics::g_Proj.x18_far == CGraphics::g_Proj.x14_near || endz == startz) {
g_Fog.m_A = 0.f;
g_Fog.m_B = 0.5f;
g_Fog.m_C = 0.f;
} else {
float depthrange = CGraphics::g_Proj.x18_far - CGraphics::g_Proj.x14_near;
float fogrange = endz - startz;
g_Fog.m_A = (CGraphics::g_Proj.x18_far * CGraphics::g_Proj.x14_near) / (depthrange * fogrange);
g_Fog.m_B = CGraphics::g_Proj.x18_far / depthrange;
g_Fog.m_C = startz / fogrange;
}
}