mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-13 20:14:05 +09:00
diurnal motion on stars
This commit is contained in:
@@ -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
|
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) {
|
fun update(delta: Float) {
|
||||||
|
|||||||
@@ -75,16 +75,24 @@ internal object WeatherMixer : RNGConsumer {
|
|||||||
|
|
||||||
private val shaderBlendMax = App.loadShaderFromClasspath("shaders/blendSkyboxStars.vert", "shaders/blendSkyboxStars.frag")
|
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) {
|
override fun loadFromSave(s0: Long, s1: Long) {
|
||||||
super.loadFromSave(s0, s1)
|
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
|
globalLightOverridden = false
|
||||||
forceTimeAt = null
|
forceTimeAt = null
|
||||||
forceSolarElev = null
|
forceSolarElev = null
|
||||||
forceTurbidity = null
|
forceTurbidity = null
|
||||||
|
|
||||||
|
astrumOffX = s0.and(0xFFFFL).toFloat() / 65535f * starmapTex.regionWidth
|
||||||
|
astrumOffY = s1.and(0xFFFFL).toFloat() / 65535f * starmapTex.regionHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
@@ -222,6 +230,7 @@ internal object WeatherMixer : RNGConsumer {
|
|||||||
starmapTex.texture.bind(1)
|
starmapTex.texture.bind(1)
|
||||||
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // so that batch that comes next will bind any tex to it
|
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.inUse {
|
||||||
batch.shader = shaderBlendMax
|
batch.shader = shaderBlendMax
|
||||||
@@ -230,6 +239,7 @@ internal object WeatherMixer : RNGConsumer {
|
|||||||
shaderBlendMax.setUniformf("drawOffsetSize", App.scr.wf, gH)
|
shaderBlendMax.setUniformf("drawOffsetSize", App.scr.wf, gH)
|
||||||
shaderBlendMax.setUniform2fv("skyboxUV1", uvs, 0, 2)
|
shaderBlendMax.setUniform2fv("skyboxUV1", uvs, 0, 2)
|
||||||
shaderBlendMax.setUniform2fv("skyboxUV2", uvs, 2, 2)
|
shaderBlendMax.setUniform2fv("skyboxUV2", uvs, 2, 2)
|
||||||
|
shaderBlendMax.setUniformf("astrumScroll", astrumOffX, astrumOffY + astrumY)
|
||||||
|
|
||||||
batch.color = Color.WHITE
|
batch.color = Color.WHITE
|
||||||
batch.draw(tex, 0f, gradY, App.scr.wf, gH, 0f, 0f, 1f, 1f)
|
batch.draw(tex, 0f, gradY, App.scr.wf, gH, 0f, 0f, 1f, 1f)
|
||||||
|
|||||||
Reference in New Issue
Block a user