[GPU] Fix quads>triangles cvar, primitive type test cases
This commit is contained in:
parent
0846cc026d
commit
e25167d2bc
|
@ -331,7 +331,7 @@ bool PrimitiveProcessor::Process(ProcessingResult& result_out) {
|
||||||
break;
|
break;
|
||||||
case xenos::PrimitiveType::kQuadList:
|
case xenos::PrimitiveType::kQuadList:
|
||||||
if (convert_quad_lists_to_triangle_lists_) {
|
if (convert_quad_lists_to_triangle_lists_) {
|
||||||
host_primitive_type = xenos::PrimitiveType::kQuadList;
|
host_primitive_type = xenos::PrimitiveType::kTriangleList;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -509,6 +509,14 @@ class PrimitiveProcessor {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Triangle fan test cases:
|
||||||
|
// - 4D5307E6 - main menu - game logo, developer logo, backgrounds of the menu
|
||||||
|
// item list (the whole menu and individual items) - no index buffer.
|
||||||
|
// - 4E4D87E6 - terrain - with an index buffer and primitive reset (note that
|
||||||
|
// there, vfetch indices are computed in the vertex shader, involving
|
||||||
|
// floating-point reciprocal, so this case is very sensitive to rounding,
|
||||||
|
// and incorrect geometry may occur not because of vertex grouping issues,
|
||||||
|
// but also due to the behavior of the vertex shader).
|
||||||
// Triangle fans as triangle lists.
|
// Triangle fans as triangle lists.
|
||||||
// Ordered as (v1, v2, v0), (v2, v3, v0) in Direct3D.
|
// Ordered as (v1, v2, v0), (v2, v3, v0) in Direct3D.
|
||||||
// https://docs.microsoft.com/en-us/windows/desktop/direct3d9/triangle-fans
|
// https://docs.microsoft.com/en-us/windows/desktop/direct3d9/triangle-fans
|
||||||
|
@ -565,6 +573,8 @@ class PrimitiveProcessor {
|
||||||
uint32_t source_index_count,
|
uint32_t source_index_count,
|
||||||
const PassthroughIndexTransform& index_transform);
|
const PassthroughIndexTransform& index_transform);
|
||||||
|
|
||||||
|
// Quad list test cases:
|
||||||
|
// - 4D5307E6 - main menu - flying dust on the road - no index buffer.
|
||||||
static constexpr uint32_t GetQuadListTriangleListIndexCount(
|
static constexpr uint32_t GetQuadListTriangleListIndexCount(
|
||||||
uint32_t quad_list_index_count) {
|
uint32_t quad_list_index_count) {
|
||||||
return (quad_list_index_count / 4) * 6;
|
return (quad_list_index_count / 4) * 6;
|
||||||
|
|
Loading…
Reference in New Issue