Add stencil blend mode as apparently the shaded mode uses indices whiles stencil uses mask/alpha..
This commit is contained in:
parent
e7d64a380a
commit
5e9c9c825d
6 changed files with 33 additions and 12 deletions
|
|
@ -581,10 +581,13 @@ SSAVec4i DrawTriangleCodegen::ProcessPixel32(SSAVec4i bg, SSAInt *varying)
|
|||
fg = Sample32(uvoffset);
|
||||
output = blend_revsub(shade_bgra_simple(fg, currentlight), bg, srcalpha, calc_blend_bgalpha(fg, destalpha));
|
||||
break;
|
||||
case TriBlendMode::Shaded:
|
||||
case TriBlendMode::Stencil:
|
||||
fg = Sample32(uvoffset);
|
||||
output = blend_stencil(shade_bgra_simple(SSAVec4i::unpack(color), currentlight), fg[3], bg, srcalpha, destalpha);
|
||||
break;
|
||||
case TriBlendMode::Shaded:
|
||||
output = blend_stencil(shade_bgra_simple(SSAVec4i::unpack(color), currentlight), Sample8(uvoffset), bg, srcalpha, destalpha);
|
||||
break;
|
||||
case TriBlendMode::TranslateCopy:
|
||||
fg = TranslateSample32(uvoffset);
|
||||
output = blend_copy(shade_bgra_simple(fg, currentlight));
|
||||
|
|
@ -662,6 +665,9 @@ SSAInt DrawTriangleCodegen::ProcessPixel8(SSAInt bg, SSAInt *varying)
|
|||
fg = ToBgra(Shade8(Sample8(uvoffset)));
|
||||
output = ToPal8(blend_revsub(fg, ToBgra(bg), srcalpha, calc_blend_bgalpha(fg, destalpha)));
|
||||
break;
|
||||
case TriBlendMode::Stencil:
|
||||
output = ToPal8(blend_stencil(ToBgra(Shade8(color)), (Sample8(uvoffset) == SSAInt(0)).select(SSAInt(0), SSAInt(256)), ToBgra(bg), srcalpha, destalpha));
|
||||
break;
|
||||
case TriBlendMode::Shaded:
|
||||
output = ToPal8(blend_stencil(ToBgra(Shade8(color)), Sample8(uvoffset), ToBgra(bg), srcalpha, destalpha));
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue