recalculate sun scatter matrix when sky matrix changes

Prevents sun scatter moving with camera
This commit is contained in:
Bixilon 2022-12-06 12:47:00 +01:00
parent 3b9f7172f8
commit 251c257bed
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4

View File

@ -38,9 +38,10 @@ class SunScatterRenderer(
private val mesh = SunScatterMesh(sky.renderWindow)
private var matrix = Mat4()
private var timeUpdate = true
private var skyMatrix = Mat4()
private fun calculateMatrix() {
val matrix = Mat4(sky.matrix)
private fun calculateMatrix(skyMatrix: Mat4) {
val matrix = Mat4(skyMatrix)
matrix.rotateAssign((sun.calculateAngle() + 90.0f).rad, Vec3(0, 0, 1))
@ -88,13 +89,17 @@ class SunScatterRenderer(
shader.use()
if (timeUpdate || weatherLevel > 0.0f) {
if (timeUpdate) {
calculateMatrix()
shader.scatterMatrix = matrix
shader.sunPosition = calculateSunPosition()
timeUpdate = false
}
shader.intensity = (1.0f - weatherLevel) * calculateIntensity(sky.time.progress)
}
val skyMatrix = sky.matrix
if (this.skyMatrix !== skyMatrix) {
calculateMatrix(skyMatrix)
shader.scatterMatrix = matrix
this.skyMatrix = skyMatrix
}
sky.renderSystem.enable(RenderingCapabilities.BLENDING)
sky.renderSystem.setBlendFunction(