diff --git a/Source/Engine/Graphics/OcclusionBuffer.cpp b/Source/Engine/Graphics/OcclusionBuffer.cpp index a02d0003a..bcef9c377 100644 --- a/Source/Engine/Graphics/OcclusionBuffer.cpp +++ b/Source/Engine/Graphics/OcclusionBuffer.cpp @@ -806,6 +806,10 @@ void OcclusionBuffer::DrawTriangle2D(const Vector3* vertices) } } + // If culling is reversed, also reverse the middleIsRight assumption + if (cullMode_ == CULL_CW) + middleIsRight = !middleIsRight; + int topY = (int)vertices[top].y_; int middleY = (int)vertices[middle].y_; int bottomY = (int)vertices[bottom].y_; @@ -819,7 +823,6 @@ void OcclusionBuffer::DrawTriangle2D(const Vector3* vertices) Edge topToBottom(gradients, vertices[top], vertices[bottom], topY); Edge middleToBottom(gradients, vertices[middle], vertices[bottom], middleY); - // The triangle is clockwise, so if bottom > middle then middle is right if (middleIsRight) { // Top half diff --git a/Source/Samples/09_MultipleViewports/MultipleViewports.cpp b/Source/Samples/09_MultipleViewports/MultipleViewports.cpp index 2b05228d0..deb4bce20 100644 --- a/Source/Samples/09_MultipleViewports/MultipleViewports.cpp +++ b/Source/Samples/09_MultipleViewports/MultipleViewports.cpp @@ -283,5 +283,5 @@ void MultipleViewports::HandlePostRenderUpdate(StringHash eventType, VariantMap& // If draw debug mode is enabled, draw viewport debug geometry, which will show eg. drawable bounding boxes and skeleton // bones. Disable depth test so that we can see the effect of occlusion if (drawDebug_) - GetSubsystem()->DrawDebugGeometry(true); + GetSubsystem()->DrawDebugGeometry(false); }