diurnal motion on stars

This commit is contained in:
minjaesong
2023-08-02 22:44:04 +09:00
parent fb28fd8a76
commit d2b1346252
2 changed files with 13 additions and 2 deletions

View File

@@ -195,6 +195,7 @@ class WorldTime(initTime: Long = 0L) {
val LUNAR_CYCLE: Int = 29 * DAY_LENGTH + 12 * HOUR_SEC + 44 * MINUTE_SEC + 3 // 29 days, 12 hours, 44 minutes, and 3 seconds in-game calendar
const val DIURNAL_MOTION_LENGTH = 86636f
}
fun update(delta: Float) {

View File

@@ -75,16 +75,24 @@ internal object WeatherMixer : RNGConsumer {
private val shaderBlendMax = App.loadShaderFromClasspath("shaders/blendSkyboxStars.vert", "shaders/blendSkyboxStars.frag")
private var astrumOffX = 0f
private var astrumOffY = 0f
override fun loadFromSave(s0: Long, s1: Long) {
super.loadFromSave(s0, s1)
internalReset()
internalReset(s0, s1)
}
fun internalReset() {
fun internalReset() = internalReset(RNG.state0, RNG.state1)
fun internalReset(s0: Long, s1: Long) {
globalLightOverridden = false
forceTimeAt = null
forceSolarElev = null
forceTurbidity = null
astrumOffX = s0.and(0xFFFFL).toFloat() / 65535f * starmapTex.regionWidth
astrumOffY = s1.and(0xFFFFL).toFloat() / 65535f * starmapTex.regionHeight
}
init {
@@ -222,6 +230,7 @@ internal object WeatherMixer : RNGConsumer {
starmapTex.texture.bind(1)
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // so that batch that comes next will bind any tex to it
val astrumY = ((world.worldTime.TIME_T / WorldTime.DIURNAL_MOTION_LENGTH) % 1f) * starmapTex.regionHeight
batch.inUse {
batch.shader = shaderBlendMax
@@ -230,6 +239,7 @@ internal object WeatherMixer : RNGConsumer {
shaderBlendMax.setUniformf("drawOffsetSize", App.scr.wf, gH)
shaderBlendMax.setUniform2fv("skyboxUV1", uvs, 0, 2)
shaderBlendMax.setUniform2fv("skyboxUV2", uvs, 2, 2)
shaderBlendMax.setUniformf("astrumScroll", astrumOffX, astrumOffY + astrumY)
batch.color = Color.WHITE
batch.draw(tex, 0f, gradY, App.scr.wf, gH, 0f, 0f, 1f, 1f)