occlusion: fix frustum culling bug

This commit is contained in:
Bixilon 2022-05-08 16:38:05 +02:00
parent 246adc2708
commit 9b76c54e54
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
2 changed files with 6 additions and 11 deletions

View File

@ -362,5 +362,4 @@ class BlockSectionDataProvider(
return -1 // Broken("Can not get index for occlusion culling $`in` -> $out!")
}
}
}

View File

@ -301,6 +301,7 @@ class WorldVisibilityGraph(
return ret
}
@Synchronized
private fun calculateGraph() {
if (!RenderConstants.OCCLUSION_CULLING_ENABLED) {
return
@ -335,7 +336,7 @@ class WorldVisibilityGraph(
for (direction in Directions.VALUES) {
val nextPosition = chunkPosition + direction
val nextChunk = getChunk(nextPosition) ?: continue
val nextVisibility = graph.getVisibility(chunkPosition)
val nextVisibility = graph.getVisibility(nextPosition)
checkSection(graph, nextPosition, cameraSectionIndex, nextChunk, nextVisibility, direction, direction.vector, 0, true)
}
@ -361,17 +362,12 @@ class WorldVisibilityGraph(
if (sections == null) {
continue
}
val visibility = BooleanArray(maxIndex + 1)
var chunkVisible = false
for ((sectionIndex, visible) in sections.withIndex()) {
if (!visible) {
for (section in sections) {
if (!section) {
continue
}
visibility[sectionIndex] = true
chunkVisible = true
}
if (chunkVisible) {
this.visibilities[Vec2i(chunkX + chunkMin.x, chunkY + chunkMin.y)] = visibility
this.visibilities[Vec2i(chunkX + chunkMin.x, chunkY + chunkMin.y)] = sections
break
}
}
}