mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-08 06:50:22 -04:00
camera matrices: always use dynamic far plane
Now the far plane is always dynamically calculated according to the current view distance and not the maximum render distance. This should reduce precision loss artifacts and improve performance (the frustum now does view distance clipping)
This commit is contained in:
parent
8829385e52
commit
74574b7952
@ -14,11 +14,8 @@
|
||||
package de.bixilon.minosoft.gui.rendering.camera
|
||||
|
||||
import de.bixilon.kotlinglm.vec3.Vec3
|
||||
import de.bixilon.minosoft.data.world.World
|
||||
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||
|
||||
object CameraDefinition {
|
||||
const val NEAR_PLANE = 0.01f
|
||||
const val FAR_PLANE = World.MAX_RENDER_DISTANCE * ProtocolDefinition.SECTION_LENGTH.toFloat()
|
||||
val CAMERA_UP_VEC3 = Vec3(0.0f, 1.0f, 0.0f)
|
||||
}
|
||||
|
@ -22,7 +22,6 @@ import de.bixilon.kotlinglm.vec3.Vec3
|
||||
import de.bixilon.kutil.avg.FloatAverage
|
||||
import de.bixilon.minosoft.gui.rendering.RenderContext
|
||||
import de.bixilon.minosoft.gui.rendering.camera.CameraDefinition.CAMERA_UP_VEC3
|
||||
import de.bixilon.minosoft.gui.rendering.camera.CameraDefinition.FAR_PLANE
|
||||
import de.bixilon.minosoft.gui.rendering.camera.CameraDefinition.NEAR_PLANE
|
||||
import de.bixilon.minosoft.gui.rendering.camera.frustum.Frustum
|
||||
import de.bixilon.minosoft.gui.rendering.camera.shaking.CameraShaking
|
||||
@ -96,7 +95,7 @@ class MatrixHandler(
|
||||
|
||||
private fun calculateProjectionMatrix(fov: Float, screenDimensions: Vec2 = context.window.sizef) {
|
||||
val fog = camera.fogManager.state
|
||||
var far = FAR_PLANE
|
||||
var far = (connection.world.view.viewDistance + 1) * ProtocolDefinition.SECTION_LENGTH.toFloat()
|
||||
if (fog.enabled) {
|
||||
far = fog.end * (1.0f / 0.7f) + 2.0f // y axis is weighted differently
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user