mirror of https://github.com/AxioDL/metaforce.git
Properly-scaled fog rendering
This commit is contained in:
parent
a910ddd912
commit
e7a339344d
|
@ -91,8 +91,8 @@ void ViewManager::ParticleView::draw(boo::IGraphicsCommandQueue *gfxQ)
|
|||
boo::SWindowRect windowRect = m_vm.m_mainWindow->getWindowFrame();
|
||||
float aspect = windowRect.size[0] / float(windowRect.size[1]);
|
||||
|
||||
CGraphics::SetPerspective(55.0, aspect, 1.f, 15.f);
|
||||
CGraphics::SetFog(ERglFogMode::PerspExp, 10.f, 15.f, zeus::CColor::skRed);
|
||||
CGraphics::SetPerspective(55.0, aspect, 0.1f, 1000.f);
|
||||
CGraphics::SetFog(ERglFogMode::PerspExp, 7.f, 15.f, zeus::CColor::skRed);
|
||||
//CGraphics::SetFog(ERglFogMode::PerspExp, 10.f + std::sin(m_theta) * 5.f, 15.f + std::sin(m_theta) * 5.f, zeus::CColor::skRed);
|
||||
zeus::CFrustum frustum;
|
||||
frustum.updatePlanes(CGraphics::g_GXModelView, zeus::SProjPersp(55.0, aspect, 0.1f, 1000.f));
|
||||
|
|
|
@ -71,16 +71,14 @@ void CGraphics::SetFog(ERglFogMode mode, float startz, float endz, const zeus::C
|
|||
{
|
||||
if (mode == ERglFogMode::None)
|
||||
{
|
||||
g_Fog.m_start = 1.f;
|
||||
g_Fog.m_start = 4096.f;
|
||||
}
|
||||
else
|
||||
{
|
||||
float projRange = g_Proj.x18_far - g_Proj.x14_near;
|
||||
float userRange = endz - startz;
|
||||
|
||||
g_Fog.m_color = color;
|
||||
g_Fog.m_start = (startz - g_Proj.x14_near) / projRange;
|
||||
g_Fog.m_rangeScale = projRange / userRange;
|
||||
g_Fog.m_start = startz;
|
||||
g_Fog.m_rangeScale = 1.f / userRange;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -188,8 +188,8 @@ public:
|
|||
struct CFogState
|
||||
{
|
||||
zeus::CColor m_color;
|
||||
float m_rangeScale = 4096.f;
|
||||
float m_start = 1.f;
|
||||
float m_rangeScale = 1.f;
|
||||
float m_start = 4096.f;
|
||||
};
|
||||
|
||||
static CProjectionState g_Proj;
|
||||
|
|
|
@ -54,8 +54,7 @@ static const char* LightingGLSL =
|
|||
static const char* MainPostGLSL =
|
||||
"vec4 MainPostFunc(vec4 colorIn)\n"
|
||||
"{\n"
|
||||
" float fogZ = (vtf.mvPos.z - fog.start) * fog.rangeScale;\n"
|
||||
" return vec4(fogZ, fogZ, fogZ, 1.0);\n"
|
||||
" float fogZ = (-vtf.mvPos.z - fog.start) * fog.rangeScale;\n"
|
||||
" return mix(fog.color, colorIn, clamp(exp2(-8.0 * fogZ), 0.0, 1.0));\n"
|
||||
"}\n"
|
||||
"\n";
|
||||
|
|
2
hecl
2
hecl
|
@ -1 +1 @@
|
|||
Subproject commit 200706dc92e9a458b18da295eff60f9711964556
|
||||
Subproject commit 16eaa99c0af151404fc431f9adc76fc4739e86fc
|
Loading…
Reference in New Issue