Fix new blend mode

This commit is contained in:
Magnus Norddahl 2016-11-30 08:51:39 +01:00
parent a7a779dd31
commit 34bf581957
2 changed files with 11 additions and 1 deletions

View File

@ -106,6 +106,7 @@ extern "C"
void TriDrawNormal8_10_SSE2(const TriDrawTriangleArgs *, WorkerThreadData *);
void TriDrawNormal8_11_SSE2(const TriDrawTriangleArgs *, WorkerThreadData *);
void TriDrawNormal8_12_SSE2(const TriDrawTriangleArgs *, WorkerThreadData *);
void TriDrawNormal8_13_SSE2(const TriDrawTriangleArgs *, WorkerThreadData *);
void TriDrawNormal32_0_SSE2(const TriDrawTriangleArgs *, WorkerThreadData *);
void TriDrawNormal32_1_SSE2(const TriDrawTriangleArgs *, WorkerThreadData *);
void TriDrawNormal32_2_SSE2(const TriDrawTriangleArgs *, WorkerThreadData *);
@ -133,6 +134,7 @@ extern "C"
void TriFillNormal8_10_SSE2(const TriDrawTriangleArgs *, WorkerThreadData *);
void TriFillNormal8_11_SSE2(const TriDrawTriangleArgs *, WorkerThreadData *);
void TriFillNormal8_12_SSE2(const TriDrawTriangleArgs *, WorkerThreadData *);
void TriFillNormal8_13_SSE2(const TriDrawTriangleArgs *, WorkerThreadData *);
void TriFillNormal32_0_SSE2(const TriDrawTriangleArgs *, WorkerThreadData *);
void TriFillNormal32_1_SSE2(const TriDrawTriangleArgs *, WorkerThreadData *);
void TriFillNormal32_2_SSE2(const TriDrawTriangleArgs *, WorkerThreadData *);
@ -286,6 +288,7 @@ Drawers::Drawers()
TriDrawNormal8.push_back(TriDrawNormal8_10_SSE2);
TriDrawNormal8.push_back(TriDrawNormal8_11_SSE2);
TriDrawNormal8.push_back(TriDrawNormal8_12_SSE2);
TriDrawNormal8.push_back(TriDrawNormal8_13_SSE2);
TriDrawNormal32.push_back(TriDrawNormal32_0_SSE2);
TriDrawNormal32.push_back(TriDrawNormal32_1_SSE2);
TriDrawNormal32.push_back(TriDrawNormal32_2_SSE2);
@ -299,6 +302,7 @@ Drawers::Drawers()
TriDrawNormal32.push_back(TriDrawNormal32_10_SSE2);
TriDrawNormal32.push_back(TriDrawNormal32_11_SSE2);
TriDrawNormal32.push_back(TriDrawNormal32_12_SSE2);
TriDrawNormal32.push_back(TriDrawNormal32_13_SSE2);
TriFillNormal8.push_back(TriFillNormal8_0_SSE2);
TriFillNormal8.push_back(TriFillNormal8_1_SSE2);
TriFillNormal8.push_back(TriFillNormal8_2_SSE2);
@ -312,6 +316,7 @@ Drawers::Drawers()
TriFillNormal8.push_back(TriFillNormal8_10_SSE2);
TriFillNormal8.push_back(TriFillNormal8_11_SSE2);
TriFillNormal8.push_back(TriFillNormal8_12_SSE2);
TriFillNormal8.push_back(TriFillNormal8_13_SSE2);
TriFillNormal32.push_back(TriFillNormal32_0_SSE2);
TriFillNormal32.push_back(TriFillNormal32_1_SSE2);
TriFillNormal32.push_back(TriFillNormal32_2_SSE2);
@ -325,6 +330,7 @@ Drawers::Drawers()
TriFillNormal32.push_back(TriFillNormal32_10_SSE2);
TriFillNormal32.push_back(TriFillNormal32_11_SSE2);
TriFillNormal32.push_back(TriFillNormal32_12_SSE2);
TriFillNormal32.push_back(TriFillNormal32_13_SSE2);
TriDrawSubsector8.push_back(TriDrawSubsector8_0_SSE2);
TriDrawSubsector8.push_back(TriDrawSubsector8_1_SSE2);
TriDrawSubsector8.push_back(TriDrawSubsector8_2_SSE2);
@ -338,6 +344,7 @@ Drawers::Drawers()
TriDrawSubsector8.push_back(TriDrawSubsector8_10_SSE2);
TriDrawSubsector8.push_back(TriDrawSubsector8_11_SSE2);
TriDrawSubsector8.push_back(TriDrawSubsector8_12_SSE2);
TriDrawSubsector8.push_back(TriDrawSubsector8_13_SSE2);
TriDrawSubsector32.push_back(TriDrawSubsector32_0_SSE2);
TriDrawSubsector32.push_back(TriDrawSubsector32_1_SSE2);
TriDrawSubsector32.push_back(TriDrawSubsector32_2_SSE2);
@ -351,6 +358,7 @@ Drawers::Drawers()
TriDrawSubsector32.push_back(TriDrawSubsector32_10_SSE2);
TriDrawSubsector32.push_back(TriDrawSubsector32_11_SSE2);
TriDrawSubsector32.push_back(TriDrawSubsector32_12_SSE2);
TriDrawSubsector32.push_back(TriDrawSubsector32_13_SSE2);
TriFillSubsector8.push_back(TriFillSubsector8_0_SSE2);
TriFillSubsector8.push_back(TriFillSubsector8_1_SSE2);
TriFillSubsector8.push_back(TriFillSubsector8_2_SSE2);
@ -364,6 +372,7 @@ Drawers::Drawers()
TriFillSubsector8.push_back(TriFillSubsector8_10_SSE2);
TriFillSubsector8.push_back(TriFillSubsector8_11_SSE2);
TriFillSubsector8.push_back(TriFillSubsector8_12_SSE2);
TriFillSubsector8.push_back(TriFillSubsector8_13_SSE2);
TriFillSubsector32.push_back(TriFillSubsector32_0_SSE2);
TriFillSubsector32.push_back(TriFillSubsector32_1_SSE2);
TriFillSubsector32.push_back(TriFillSubsector32_2_SSE2);
@ -377,6 +386,7 @@ Drawers::Drawers()
TriFillSubsector32.push_back(TriFillSubsector32_10_SSE2);
TriFillSubsector32.push_back(TriFillSubsector32_11_SSE2);
TriFillSubsector32.push_back(TriFillSubsector32_12_SSE2);
TriFillSubsector32.push_back(TriFillSubsector32_13_SSE2);
TriStencil = TriStencil_SSE2;
TriStencilClose = TriStencilClose_SSE2;
}

View File

@ -165,5 +165,5 @@ SSAVec4i DrawerCodegen::blend_add_srccolor_oneminussrccolor(SSAVec4i fg, SSAVec4
{
SSAVec4i fgcolor = fg + (fg >> 7); // 255 -> 256
SSAVec4i inv_fgcolor = SSAVec4i(256) - fgcolor;
return fg + (bg * inv_fgcolor + 128) >> 8;
return fg + ((bg * inv_fgcolor + 128) >> 8);
}