Add codegen for rt column drawers

This commit is contained in:
Magnus Norddahl 2016-10-07 06:40:29 +02:00
commit 8c259f50b1
7 changed files with 289 additions and 134 deletions

View file

@ -10,6 +10,7 @@ enum class DrawColumnVariant
FillAddClamp,
FillSubClamp,
FillRevSubClamp,
DrawCopy,
Draw,
DrawAdd,
DrawTranslated,
@ -23,13 +24,21 @@ enum class DrawColumnVariant
DrawRevSubClampTranslated
};
enum class DrawColumnMethod
{
Normal,
Rt1,
Rt4
};
class DrawColumnCodegen : public DrawerCodegen
{
public:
void Generate(DrawColumnVariant variant, SSAValue args, SSAValue thread_data);
void Generate(DrawColumnVariant variant, DrawColumnMethod method, SSAValue args, SSAValue thread_data);
private:
void Loop(DrawColumnVariant variant, bool isSimpleShade);
void Loop(DrawColumnVariant variant, DrawColumnMethod method, bool isSimpleShade);
SSAVec4i ProcessPixel(SSAInt sample_index, SSAVec4i bgcolor, DrawColumnVariant variant, bool isSimpleShade);
SSAInt ColormapSample(SSAInt frac);
SSAInt TranslateSample(SSAInt frac);
SSAVec4i Shade(SSAInt palIndex, bool isSimpleShade);