Overhaul/simplify SWvertex and SWspan attribute handling.
Instead of separate fog/specular/texcoord/varying code, just treat all of them as generic attributes. Simplifies the point/line/triangle functions.
This commit is contained in:
@@ -57,7 +57,7 @@ static void _swsetup_render_line_tri( GLcontext *ctx,
|
||||
SWvertex *v1 = &verts[e1];
|
||||
SWvertex *v2 = &verts[e2];
|
||||
GLchan c[2][4];
|
||||
GLchan s[2][4];
|
||||
GLfloat s[2][4];
|
||||
GLfloat i[2];
|
||||
|
||||
/* cull testing */
|
||||
@@ -71,17 +71,17 @@ static void _swsetup_render_line_tri( GLcontext *ctx,
|
||||
if (ctx->Light.ShadeModel == GL_FLAT) {
|
||||
COPY_CHAN4(c[0], v0->color);
|
||||
COPY_CHAN4(c[1], v1->color);
|
||||
COPY_CHAN4(s[0], v0->specular);
|
||||
COPY_CHAN4(s[1], v1->specular);
|
||||
i[0] = v0->index;
|
||||
i[1] = v1->index;
|
||||
COPY_4V(s[0], v0->attrib[FRAG_ATTRIB_COL1]);
|
||||
COPY_4V(s[1], v1->attrib[FRAG_ATTRIB_COL1]);
|
||||
i[0] = v0->attrib[FRAG_ATTRIB_CI][0];
|
||||
i[1] = v1->attrib[FRAG_ATTRIB_CI][0];
|
||||
|
||||
COPY_CHAN4(v0->color, v2->color);
|
||||
COPY_CHAN4(v1->color, v2->color);
|
||||
COPY_CHAN4(v0->specular, v2->specular);
|
||||
COPY_CHAN4(v1->specular, v2->specular);
|
||||
v0->index = v2->index;
|
||||
v1->index = v2->index;
|
||||
COPY_4V(v0->attrib[FRAG_ATTRIB_COL1], v2->attrib[FRAG_ATTRIB_COL1]);
|
||||
COPY_4V(v1->attrib[FRAG_ATTRIB_COL1], v2->attrib[FRAG_ATTRIB_COL1]);
|
||||
v0->attrib[FRAG_ATTRIB_CI][0] = v2->attrib[FRAG_ATTRIB_CI][0];
|
||||
v1->attrib[FRAG_ATTRIB_CI][0] = v2->attrib[FRAG_ATTRIB_CI][0];
|
||||
}
|
||||
|
||||
if (swsetup->render_prim == GL_POLYGON) {
|
||||
@@ -97,10 +97,10 @@ static void _swsetup_render_line_tri( GLcontext *ctx,
|
||||
if (ctx->Light.ShadeModel == GL_FLAT) {
|
||||
COPY_CHAN4(v0->color, c[0]);
|
||||
COPY_CHAN4(v1->color, c[1]);
|
||||
COPY_CHAN4(v0->specular, s[0]);
|
||||
COPY_CHAN4(v1->specular, s[1]);
|
||||
v0->index = i[0];
|
||||
v1->index = i[1];
|
||||
COPY_4V(v0->attrib[FRAG_ATTRIB_COL1], s[0]);
|
||||
COPY_4V(v1->attrib[FRAG_ATTRIB_COL1], s[1]);
|
||||
v0->attrib[FRAG_ATTRIB_CI][0] = i[0];
|
||||
v1->attrib[FRAG_ATTRIB_CI][0] = i[1];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ static void _swsetup_render_point_tri( GLcontext *ctx,
|
||||
SWvertex *v1 = &verts[e1];
|
||||
SWvertex *v2 = &verts[e2];
|
||||
GLchan c[2][4];
|
||||
GLchan s[2][4];
|
||||
GLfloat s[2][4];
|
||||
GLfloat i[2];
|
||||
|
||||
/* cull testing */
|
||||
@@ -131,18 +131,18 @@ static void _swsetup_render_point_tri( GLcontext *ctx,
|
||||
/* save colors/indexes for v0, v1 vertices */
|
||||
COPY_CHAN4(c[0], v0->color);
|
||||
COPY_CHAN4(c[1], v1->color);
|
||||
COPY_CHAN4(s[0], v0->specular);
|
||||
COPY_CHAN4(s[1], v1->specular);
|
||||
i[0] = v0->index;
|
||||
i[1] = v1->index;
|
||||
COPY_4V(s[0], v0->attrib[FRAG_ATTRIB_COL1]);
|
||||
COPY_4V(s[1], v1->attrib[FRAG_ATTRIB_COL1]);
|
||||
i[0] = v0->attrib[FRAG_ATTRIB_CI][0];
|
||||
i[1] = v1->attrib[FRAG_ATTRIB_CI][0];
|
||||
|
||||
/* copy v2 color/indexes to v0, v1 indexes */
|
||||
COPY_CHAN4(v0->color, v2->color);
|
||||
COPY_CHAN4(v1->color, v2->color);
|
||||
COPY_CHAN4(v0->specular, v2->specular);
|
||||
COPY_CHAN4(v1->specular, v2->specular);
|
||||
v0->index = v2->index;
|
||||
v1->index = v2->index;
|
||||
COPY_4V(v0->attrib[FRAG_ATTRIB_COL1], v2->attrib[FRAG_ATTRIB_COL1]);
|
||||
COPY_4V(v1->attrib[FRAG_ATTRIB_COL1], v2->attrib[FRAG_ATTRIB_COL1]);
|
||||
v0->attrib[FRAG_ATTRIB_CI][0] = v2->attrib[FRAG_ATTRIB_CI][0];
|
||||
v1->attrib[FRAG_ATTRIB_CI][0] = v2->attrib[FRAG_ATTRIB_CI][0];
|
||||
}
|
||||
|
||||
if (ef[e0]) _swrast_Point( ctx, v0 );
|
||||
@@ -153,10 +153,10 @@ static void _swsetup_render_point_tri( GLcontext *ctx,
|
||||
/* restore v0, v1 colores/indexes */
|
||||
COPY_CHAN4(v0->color, c[0]);
|
||||
COPY_CHAN4(v1->color, c[1]);
|
||||
COPY_CHAN4(v0->specular, s[0]);
|
||||
COPY_CHAN4(v1->specular, s[1]);
|
||||
v0->index = i[0];
|
||||
v1->index = i[1];
|
||||
COPY_4V(v0->attrib[FRAG_ATTRIB_COL1], s[0]);
|
||||
COPY_4V(v1->attrib[FRAG_ATTRIB_COL1], s[1]);
|
||||
v0->attrib[FRAG_ATTRIB_CI][0] = i[0];
|
||||
v1->attrib[FRAG_ATTRIB_CI][0] = i[1];
|
||||
}
|
||||
_swrast_flush(ctx);
|
||||
}
|
||||
|
Reference in New Issue
Block a user