Skip to content

Commit

Permalink
chunk meshing: prioritize very close chunks
Browse files Browse the repository at this point in the history
  • Loading branch information
Bixilon committed Feb 8, 2025
1 parent fce6bc2 commit ff68fca
Showing 1 changed file with 4 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import de.bixilon.minosoft.gui.rendering.chunk.queue.QueuePosition
import de.bixilon.minosoft.gui.rendering.chunk.queue.meshing.tasks.MeshPrepareTask
import de.bixilon.minosoft.gui.rendering.chunk.queue.meshing.tasks.MeshPrepareTaskManager
import de.bixilon.minosoft.util.SystemInformation
import kotlin.math.abs

class ChunkMeshingQueue(
private val renderer: ChunkRenderer,
Expand Down Expand Up @@ -71,8 +72,10 @@ class ChunkMeshingQueue(
items += item
}
unlock()
val camera = renderer.cameraChunkPosition
for (item in items) {
val runnable = HeavyPoolRunnable(if (item.chunkPosition == renderer.cameraChunkPosition) ThreadPool.HIGH else ThreadPool.LOW, interruptable = true) // ToDo: Also make neighbour chunks important
val distance = abs(item.chunkPosition.x - camera.x) + abs(item.chunkPosition.y - camera.y)
val runnable = HeavyPoolRunnable(if (distance < 1) ThreadPool.HIGH else ThreadPool.LOW, interruptable = true)
val task = MeshPrepareTask(item.chunkPosition, item.sectionHeight, runnable)
task.runnable.runnable = Runnable { renderer.mesher.tryMesh(item, task, task.runnable) }
tasks += task
Expand Down

0 comments on commit ff68fca

Please sign in to comment.