mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
Provoking vertex (software transform): Simpler solution
Simply rotate each primitive in the index buffer to simulate a different provoking vertex. Since at this point we have already generated a plain primitive index buffer, it's easy to manipulate like this. An even better solution would be to generate rotated index buffers directly during decode, although that code is super critical and does not need more complexity.. We could now also enable this for hardware transform but I'm leaving that for later.
This commit is contained in:
1 parent
6b1e57a840
commit
096985f51f
7 files changed
+63
-74
No files matched your search
@@ -405,11 +405,13 @@ void DrawEngineVulkan::DoFlush() {
|
||||
// do not respect scissor rects.
|
||||
params.allowClear = framebufferManager_->UseBufferedRendering();
|
||||
params.allowSeparateAlphaClear = false;
|
||||
if (renderManager->GetVulkanContext()->GetDeviceFeatures().enabled.provokingVertex.provokingVertexLast) {
|
||||
// We can get the OpenGL behavior, no need for workarounds.
|
||||
params.provokingVertexLast = true;
|
||||
} else {
|
||||
params.provokingVertexLast = false;
|
||||
|
||||
if (gstate.getShadeMode() == GE_SHADE_FLAT) {
|
||||
if (!renderManager->GetVulkanContext()->GetDeviceFeatures().enabled.provokingVertex.provokingVertexLast) {
|
||||
// If we can't have the hardware do it, we need to rotate the index buffer to simulate a different provoking vertex.
|
||||
// We do this before line expansion etc.
|
||||
IndexBufferProvokingLastToFirst(prim, inds, vertexCount);
|
||||
}
|
||||
}
|
||||
params.flippedY = true;
|
||||
params.usesHalfZ = true;
|
||||
|
||||
Reference in new issue
Block a user