mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-03 17:38:25 +02:00
draw: don't apply flatshading to clipped tris with <3 verts
If a triangle was completely culled by clipping, we would still try to fix up its provoking vertex.
This commit is contained in:
parent
1b15a3cafd
commit
8b597b4ea4
1 changed files with 19 additions and 18 deletions
|
|
@ -321,27 +321,28 @@ do_clip_tri( struct draw_stage *stage,
|
|||
|
||||
/* If flat-shading, copy provoking vertex color to polygon vertex[0]
|
||||
*/
|
||||
if (clipper->flat) {
|
||||
if (stage->draw->rasterizer->flatshade_first) {
|
||||
if (inlist[0] != header->v[0]) {
|
||||
assert(tmpnr < MAX_CLIPPED_VERTICES + 1);
|
||||
inlist[0] = dup_vert(stage, inlist[0], tmpnr++);
|
||||
copy_colors(stage, inlist[0], header->v[0]);
|
||||
if (n >= 3) {
|
||||
if (clipper->flat) {
|
||||
if (stage->draw->rasterizer->flatshade_first) {
|
||||
if (inlist[0] != header->v[0]) {
|
||||
assert(tmpnr < MAX_CLIPPED_VERTICES + 1);
|
||||
inlist[0] = dup_vert(stage, inlist[0], tmpnr++);
|
||||
copy_colors(stage, inlist[0], header->v[0]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (inlist[0] != header->v[2]) {
|
||||
assert(tmpnr < MAX_CLIPPED_VERTICES + 1);
|
||||
inlist[0] = dup_vert(stage, inlist[0], tmpnr++);
|
||||
copy_colors(stage, inlist[0], header->v[2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (inlist[0] != header->v[2]) {
|
||||
assert(tmpnr < MAX_CLIPPED_VERTICES + 1);
|
||||
inlist[0] = dup_vert(stage, inlist[0], tmpnr++);
|
||||
copy_colors(stage, inlist[0], header->v[2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Emit the polygon as triangles to the setup stage:
|
||||
*/
|
||||
if (n >= 3)
|
||||
|
||||
/* Emit the polygon as triangles to the setup stage:
|
||||
*/
|
||||
emit_poly( stage, inlist, n, header );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue