+void DPSOFTRAST_Draw_Span_MultiplyBuffers(const DPSOFTRAST_State_Draw_Span *span, float *out4f, const float *ina4f, const float *inb4f)
+{
+ int x, startx = span->startx, endx = span->endx;
+ for (x = startx;x < endx;x++)
+ {
+ out4f[x*4+0] = ina4f[x*4+0] * inb4f[x*4+0];
+ out4f[x*4+1] = ina4f[x*4+1] * inb4f[x*4+1];
+ out4f[x*4+2] = ina4f[x*4+2] * inb4f[x*4+2];
+ out4f[x*4+3] = ina4f[x*4+3] * inb4f[x*4+3];
+ }
+}
+
+void DPSOFTRAST_Draw_Span_AddBuffers(const DPSOFTRAST_State_Draw_Span *span, float *out4f, const float *ina4f, const float *inb4f)
+{
+ int x, startx = span->startx, endx = span->endx;
+ for (x = startx;x < endx;x++)
+ {
+ out4f[x*4+0] = ina4f[x*4+0] + inb4f[x*4+0];
+ out4f[x*4+1] = ina4f[x*4+1] + inb4f[x*4+1];
+ out4f[x*4+2] = ina4f[x*4+2] + inb4f[x*4+2];
+ out4f[x*4+3] = ina4f[x*4+3] + inb4f[x*4+3];
+ }
+}
+
+void DPSOFTRAST_Draw_Span_MixBuffers(const DPSOFTRAST_State_Draw_Span *span, float *out4f, const float *ina4f, const float *inb4f)
+{
+ int x, startx = span->startx, endx = span->endx;
+ float a, b;
+ for (x = startx;x < endx;x++)
+ {
+ a = 1.0f - inb4f[x*4+3];
+ b = inb4f[x*4+3];
+ out4f[x*4+0] = ina4f[x*4+0] * a + inb4f[x*4+0] * b;
+ out4f[x*4+1] = ina4f[x*4+1] * a + inb4f[x*4+1] * b;
+ out4f[x*4+2] = ina4f[x*4+2] * a + inb4f[x*4+2] * b;
+ out4f[x*4+3] = ina4f[x*4+3] * a + inb4f[x*4+3] * b;
+ }
+}
+