mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-07-23 06:10:03 -06:00
remove templates
seems to just make things sliiightly slower on my machine
This commit is contained in:
@ -741,8 +741,8 @@ void SoftRenderer::RenderShadowMaskScanline(RendererPolygon* rp, s32 y)
|
|||||||
interp_start = &rp->SlopeR.Interp;
|
interp_start = &rp->SlopeR.Interp;
|
||||||
interp_end = &rp->SlopeL.Interp;
|
interp_end = &rp->SlopeL.Interp;
|
||||||
|
|
||||||
rp->SlopeR.EdgeParams<true>(&l_edgelen, &l_edgecov);
|
rp->SlopeR.EdgeParams(&l_edgelen, &l_edgecov, true);
|
||||||
rp->SlopeL.EdgeParams<true>(&r_edgelen, &r_edgecov);
|
rp->SlopeL.EdgeParams(&r_edgelen, &r_edgecov, true);
|
||||||
|
|
||||||
std::swap(xstart, xend);
|
std::swap(xstart, xend);
|
||||||
std::swap(wl, wr);
|
std::swap(wl, wr);
|
||||||
@ -773,8 +773,8 @@ void SoftRenderer::RenderShadowMaskScanline(RendererPolygon* rp, s32 y)
|
|||||||
interp_start = &rp->SlopeL.Interp;
|
interp_start = &rp->SlopeL.Interp;
|
||||||
interp_end = &rp->SlopeR.Interp;
|
interp_end = &rp->SlopeR.Interp;
|
||||||
|
|
||||||
rp->SlopeL.EdgeParams<false>(&l_edgelen, &l_edgecov);
|
rp->SlopeL.EdgeParams(&l_edgelen, &l_edgecov, false);
|
||||||
rp->SlopeR.EdgeParams<false>(&r_edgelen, &r_edgecov);
|
rp->SlopeR.EdgeParams(&r_edgelen, &r_edgecov, false);
|
||||||
|
|
||||||
// CHECKME: edge fill rules for unswapped opaque shadow mask polygons
|
// CHECKME: edge fill rules for unswapped opaque shadow mask polygons
|
||||||
if ((GPU.GPU3D.RenderDispCnt & ((1<<4)|(1<<5))) || ((polyalpha < 31) && (GPU.GPU3D.RenderDispCnt & (1<<3))) || wireframe)
|
if ((GPU.GPU3D.RenderDispCnt & ((1<<4)|(1<<5))) || ((polyalpha < 31) && (GPU.GPU3D.RenderDispCnt & (1<<3))) || wireframe)
|
||||||
@ -970,8 +970,8 @@ void SoftRenderer::RenderPolygonScanline(RendererPolygon* rp, s32 y)
|
|||||||
interp_start = &rp->SlopeR.Interp;
|
interp_start = &rp->SlopeR.Interp;
|
||||||
interp_end = &rp->SlopeL.Interp;
|
interp_end = &rp->SlopeL.Interp;
|
||||||
|
|
||||||
rp->SlopeR.EdgeParams<true>(&l_edgelen, &l_edgecov);
|
rp->SlopeR.EdgeParams(&l_edgelen, &l_edgecov, true);
|
||||||
rp->SlopeL.EdgeParams<true>(&r_edgelen, &r_edgecov);
|
rp->SlopeL.EdgeParams(&r_edgelen, &r_edgecov, true);
|
||||||
|
|
||||||
std::swap(xstart, xend);
|
std::swap(xstart, xend);
|
||||||
std::swap(wl, wr);
|
std::swap(wl, wr);
|
||||||
@ -1008,8 +1008,8 @@ void SoftRenderer::RenderPolygonScanline(RendererPolygon* rp, s32 y)
|
|||||||
interp_start = &rp->SlopeL.Interp;
|
interp_start = &rp->SlopeL.Interp;
|
||||||
interp_end = &rp->SlopeR.Interp;
|
interp_end = &rp->SlopeR.Interp;
|
||||||
|
|
||||||
rp->SlopeL.EdgeParams<false>(&l_edgelen, &l_edgecov);
|
rp->SlopeL.EdgeParams(&l_edgelen, &l_edgecov, false);
|
||||||
rp->SlopeR.EdgeParams<false>(&r_edgelen, &r_edgecov);
|
rp->SlopeR.EdgeParams(&r_edgelen, &r_edgecov, false);
|
||||||
|
|
||||||
// edge fill rules for unswapped opaque edges:
|
// edge fill rules for unswapped opaque edges:
|
||||||
// * right edge is filled if slope > 1
|
// * right edge is filled if slope > 1
|
||||||
|
@ -348,12 +348,11 @@ private:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<bool swapped>
|
constexpr void EdgeParams_XMajor(s32* length, s32* coverage, bool swapped) const
|
||||||
constexpr void EdgeParams_XMajor(s32* length, s32* coverage) const
|
|
||||||
{
|
{
|
||||||
// only do length calc for right side when swapped as it's
|
// only do length calc for right side when swapped as it's
|
||||||
// only needed for aa calcs, as actual line spans are broken
|
// only needed for aa calcs, as actual line spans are broken
|
||||||
if constexpr (!swapped || side)
|
if (!swapped || side)
|
||||||
{
|
{
|
||||||
if (side ^ Negative)
|
if (side ^ Negative)
|
||||||
*length = (dx >> 18) - ((dx-Increment) >> 18);
|
*length = (dx >> 18) - ((dx-Increment) >> 18);
|
||||||
@ -379,11 +378,10 @@ private:
|
|||||||
|
|
||||||
*coverage = startcov;
|
*coverage = startcov;
|
||||||
|
|
||||||
if constexpr (swapped) *length = 1;
|
if (swapped) *length = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<bool swapped>
|
constexpr void EdgeParams_YMajor(s32* length, s32* coverage, bool swapped) const
|
||||||
constexpr void EdgeParams_YMajor(s32* length, s32* coverage) const
|
|
||||||
{
|
{
|
||||||
*length = 1;
|
*length = 1;
|
||||||
|
|
||||||
@ -405,13 +403,12 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template<bool swapped>
|
constexpr void EdgeParams(s32* length, s32* coverage, bool swapped) const
|
||||||
constexpr void EdgeParams(s32* length, s32* coverage) const
|
|
||||||
{
|
{
|
||||||
if (XMajor)
|
if (XMajor)
|
||||||
return EdgeParams_XMajor<swapped>(length, coverage);
|
return EdgeParams_XMajor(length, coverage, swapped);
|
||||||
else
|
else
|
||||||
return EdgeParams_YMajor<swapped>(length, coverage);
|
return EdgeParams_YMajor(length, coverage, swapped);
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 Increment;
|
s32 Increment;
|
||||||
|
Reference in New Issue
Block a user