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

Implement --warp command-line arguments

This commit is contained in:
Jack Andersen
2018-10-17 18:51:59 -10:00
parent 8d839d8a17
commit f433821320
10 changed files with 115 additions and 36 deletions

View File

@@ -39,34 +39,19 @@ void CFogVolumePlaneShader::CommitResources(size_t capacity)
void CFogVolumePlaneShader::addFan(const zeus::CVector3f* verts, int numVerts)
{
if (numVerts == 3)
zeus::CMatrix4f proj = CGraphics::GetPerspectiveProjectionMatrix(true);
zeus::CVector4f vert0 = proj * zeus::CVector4f(CGraphics::g_GXModelView * verts[0]);
if (m_verts.size())
{
zeus::CMatrix4f proj = CGraphics::GetPerspectiveProjectionMatrix(true);
zeus::CVector4f vert0 = proj * zeus::CVector4f(CGraphics::g_GXModelView * verts[0]);
if (m_verts.size())
{
m_verts.push_back(m_verts.back());
m_verts.push_back(vert0);
}
m_verts.push_back(vert0);
m_verts.push_back(proj * zeus::CVector4f(CGraphics::g_GXModelView * verts[1]));
m_verts.push_back(proj * zeus::CVector4f(CGraphics::g_GXModelView * verts[2]));
m_verts.push_back(m_verts.back());
}
else if (numVerts == 4)
{
zeus::CMatrix4f proj = CGraphics::GetPerspectiveProjectionMatrix(true);
zeus::CVector4f vert0 = proj * zeus::CVector4f(CGraphics::g_GXModelView * verts[0]);
if (m_verts.size())
{
m_verts.push_back(m_verts.back());
m_verts.push_back(vert0);
}
m_verts.push_back(vert0);
m_verts.push_back(proj * zeus::CVector4f(CGraphics::g_GXModelView * verts[1]));
m_verts.push_back(proj * zeus::CVector4f(CGraphics::g_GXModelView * verts[3]));
m_verts.push_back(proj * zeus::CVector4f(CGraphics::g_GXModelView * verts[2]));
if (m_verts.size() & 1)
m_verts.push_back(vert0);
}
TriFanToStrip<zeus::CVector4f> fanToStrip(m_verts);
fanToStrip.AddVert(vert0);
for (int i = 1; i < numVerts; ++i)
fanToStrip.AddVert(proj * zeus::CVector4f(CGraphics::g_GXModelView * verts[i]));
}
void CFogVolumePlaneShader::draw(int pass)