Batching - fallback for 2d skinning with unrigged polys.
In the legacy renderer unrigged polys would display with no transform applied, whereas the software skinning didn't deal with these at all (outputted them with position zero). This PR simply copies the source to destination verts and replicates the legacy behaviour.
This commit is contained in:
parent
39826d3a94
commit
3c68a6d37f
1 changed files with 15 additions and 9 deletions
|
@ -1881,17 +1881,23 @@ PREAMBLE(bool)::_software_skin_poly(RasterizerCanvas::Item::CommandPolygon *p_po
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// software transform with combined matrix?
|
|
||||||
if (p_fill_state.transform_mode != TM_NONE) {
|
|
||||||
for (int n = 0; n < num_verts; n++) {
|
|
||||||
Vector2 &dst_pos = pTemps[n];
|
|
||||||
_software_transform_vertex(dst_pos, p_fill_state.transform_combined);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} // if bone format matches
|
} // if bone format matches
|
||||||
else {
|
else {
|
||||||
// not supported
|
// not rigged properly, just copy the verts directly
|
||||||
|
for (int n = 0; n < num_verts; n++) {
|
||||||
|
const Vector2 &src_pos = p_poly->points[n];
|
||||||
|
Vector2 &dst_pos = pTemps[n];
|
||||||
|
|
||||||
|
dst_pos = src_pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// software transform with combined matrix?
|
||||||
|
if (p_fill_state.transform_mode != TM_NONE) {
|
||||||
|
for (int n = 0; n < num_verts; n++) {
|
||||||
|
Vector2 &dst_pos = pTemps[n];
|
||||||
|
_software_transform_vertex(dst_pos, p_fill_state.transform_combined);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// output to the batch verts
|
// output to the batch verts
|
||||||
|
|
Loading…
Reference in a new issue